EC-CUBE3の開発をお手伝いする事となり勉強を始めました。
EC-CUBE3に関して調べた事などを、後で思い出せるように記録していきます。
見出し
所感
ざっくりと2ヶ月ほどやっただけなんですけど所感です。
EC-CUBE3はWordPressと似ている。
WordPressのように非エンジニアでもカスタマイズ出来るような仕組みが管理画面にあります。プラグインも無料・有料でダウンロード出来ます。WordPressは無料の中から選ぶ感覚ですが、EC-CUBE3は有料のものから選ぶ感覚です。いずれにせよ、原則的に自分で開発する事はなく、誰かが開発したプラグインを付ければやりたい事はだいたい出来るという感じです。また、フックポイントが色々な箇所に存在し、これもWordPressのようだと思いました。
WordPressでもそうですが、プラグインだけに頼りきっていくつも使っていると後々問題になってくるようにも感じます。プラグインはあくまでも素の状態に付けた場合に正常に動くようになっています。他の不明なプラグインがある状態では動作は保証されないのではと思います。他のプラグインに影響しないような作りで全てのプラグインが開発されていれば、理想形でプラグインを使う事は出来ると思いますが。この影響度をチェックする事がプラグインだけで開発する事のメインとなるはずです。
プラグインやフレームワークをカスタマイズする。
これは基本的にはバージョンアップ出来なくなってしまうので、継承した形でカスタマイズするのが良いと思いました。もしかすると、フレームワークやプラグインに脆弱性が潜んでおり、どこかのタイミングでバージョンアップを余儀なくされる事もあるかもしれません。
そうなった時に修正箇所をgitなどのバージョン管理をしていれば良いですが、もししていなければ、バージョンアップ後に同じ修正をもう1回手作業でしなければならなくなります。
EC-CUBEを選択するかどうか。
- エンジニアなしでECサイトを構築したい場合。これがたぶん一番理想なのかなと感じています。プラグインを付けたり外したりだけ。だいたいやりたい事は誰かがもう開発しててプラグインとして存在します。無ければやらなければ良いというスタンスが取れる場合。
- エンジニアがいて開発費をかけてECサイトを構築出来る場合。立ち上げでやったり既存機能で良しとするのであれば十分ですが、独自のカスタマイズやマーケティングで開発費をガンガンかけてガチでやっていくのでしたら、EC-CUBEは使用しないで普通のPHPなどのフレームワークで開発した方が、やりたい事がスムーズに出来るはずです。速度パフォーマンス的にも。
- EC-CUBEを選択すれば、土台がもうあるので素早くリリース出来ます。順調にアクセスや売上が増えてきたら将来的にEC-CUBEをやめて、PHPなどのフレームワークで独自開発をする事を検討したら良いと思います。
速度パフォーマンスは汎用とのトレードオフ。
WordPressでもそうですが、速度・WEBパフォーマンスが落ちてしまうのは、管理画面で汎用的に色々カスタマイズ出来たり、プラグインだけで済ませる事が出来るメリットとのトレードオフなので、上に書いたような経営方針によって変えていけば良いと思います。
技術的に覚える事が多い。
これは自分がPHPのフレームワークはCakePHPしかやっていなかったからかもしれませんが、技術的に覚える事が多いように感じました。EC-CUBE3はSymfony2をベースに作られておりましたので、Symfony2の経験があれば覚える事は少ないと思います。一応ざっと挙げると・・・
- Symfony2
- Doctrine(ORM)
- twig(viewテンプレート記法)
- EC-CUBE
全て初だったのでどこの影響で何が動かないかデバッグするのに苦戦しました。配列だらけの古いPHPフレームワークではvar_dumpでゴリ押しすればどうにかなっていましたが、オブジェクトなのでどうやって中身見ようとか非常に勉強になりました。
最後に。
EC-CUBE3開発は一旦終わりましたが、せっかく覚えた事も多くこれからガリガリ書けそうになってきたので、また機会があれば是非実践してみたいです。
個人でECサイトを作る時はBASEやSTORESなどのWEBサービスを使えば良いと思いますが、手数料がかかるのでそういう場合はEC-CUBEで作れますね。ニッチな感じもするのでもしかすると、経験があればクラウドワークスなどで案件が転がっているのかもしれません。未知の世界だったので本当に覚えられて良かったです。ではこの記事は終わります。
以下は覚えた事などですが忙しくて全然書けてなかった・・・
プラグイン開発
https://qiita.com/chihiro-adachi/items/6318642120f67faedf0b
プラグインを「未登録プラグイン」から「独自プラグイン」に変える方法
1 |
<span class="gp">$</span>php app/console plugin:develop <span class="nb">install</span> <span class="nt">--code</span> プラグイン名 |
キャッシュクリア
ルートディレクトリにて
1 |
$ php app/console cache:clear |
QueryBuilder
最後に発行したSQLを確認する
1 |
echo $qb->getQuery()->getSQL(); |
twig
echo “count = ” . $count; をやりたい場合
1 |
count = {{ count }} |
デバッグ
eccube/config.ymlで
1 2 3 4 5 6 |
twig: debug: true my.twig.extension.debug: class: Twig_Extension_Debug tags: - { name: 'twig.extension' } |
index_dev.phpで
1 |
{{dump(hoge}} |
ルーティング
AdminControllerProvider.php
FrontControllerProvider.php
.