EC-CUBEのカスタマイズ、ネットショップ制作メモ

主にEC-CUBEを利用したネットショップの制作、カスタマイズや独自機能の開発について

ロックオン主催のEC-CUBE3の東京勉強会に参加してきました

毎度ご無沙汰しております。株式会社クロスキューブの佐々木です。
先日、EC-CUBE開発元の株式会社ロックオンの東京オフィスでEC-CUBE3の勉強会が開催されたので、弊社デザイナーの田原と共に参加してきました。
EC-CUBE3東京勉強会風景


先日リリースされたEC-CUBEの新バージョン、EC-CUBE3は、ぱっと見はあまり変わっていませんが裏は大きく変わっています。
PHPフレームワークとしてSilexを採用し、PSRのいくつかに準拠した構造となっています。
DB周りはPEAR::DB2からPDOを使うDoctrineに、テンプレートエンジンはSmartyからTwigに変わり、多くのSymfonyコンポーネントを利用し、車輪の再発明を極力少なくしました。

Doctrineを採用した事により、アプリケーションが吐くSQLも2系よりも素直なものになり、MySQLでのパフォーマンスもだいぶ改善されています。
弊社、株式会社クロスキューブでも、極々微力ですがEC-CUBE3の開発にご協力させて頂きました。*1

今回の勉強会では、中身が大きく変わったEC-CUBE3の現状について、ロックオンの足立さんとEC-CUBE責任者の金さんがお話しをされました。

EC-CUBE3のテンプレートファイルはどこいったの?

EC-CUBE2系では、テンプレートファイルは

/data/Smarty/templates

にありましたが、EC-CUBE3では

/ec-cube/src/Eccube/Resource/template

にあります。
テンプレートエンジンがSmartyからTwigに変わってるので、注意してください。
文法や細かいところは変わりましたが、大きく変わったのは、

<!--{$hoge}-->

が、

{{ hoge }}

<!--{if $hoge}-->

{% if hoge %}

の様に、囲み文字が変わった点ですw
また、2系では、PC用、スマホ用、ガラケー用にそれぞれテンプレートを作成しないといけませんでしたが、EC-CUBE3ではガラケーのサポートは切られ、スマホはレスポンシブで対応となったので、フロントのテーマファイルは1つで済みます。


オリジナルテーマを作りたい方は、デフォルトのテーマを参考に作成されてみてはいかがでしょうか?
テーマを作ってみた方の記事もあります。
EC-CUBE3 用のプレーンな Bootstrap テンプレートをつくってる過程で分かったことなど

EC-CUBE3はもう実戦投入して良いレベル?

さて、僕が一番気になったのがこの点です。過去のバージョンの状況を見ると、EC-CUBE3も、バージョン3.1.3くらいで安定して使える様になるかなぁ?と思っていたので、現状を聞いてみました。
すると、既に株式会社ロックオンではEC-CUBE3を実案件に利用中との事で、もう大丈夫そうです。
とは言え初めての事バージョンだし、何かしら困ったりバグにハマったりしてんじゃないかな?と思って聞いてみたら、
Symfonyコンポーネントの使い方やPSRの方への対応が慣れていないので、そっち覚える方が大変だった」
との事でした。
やはり、レガシーなPHPのコードしか書けない人は置いてかれそうです。

しかし、EC-CUBE3は最初からテストありきで開発されていたので、2系に比べればテストが楽になっており、開発もだいぶ安心してできそうです。

セキュリティは大丈夫なの?

EC-CUBEは過去にちょいちょい脆弱性が出ています。
クライアント企業の方もここを一番心配されるので、EC-CUBE3ではセキュリティテストは行ったのか?外部のセキュリティチェックは入れたのか?を聞きました。

チェックツールで確認済み

ロックオンさん社内ではアプリのセキュリティチェックツールを使ってテストしている様なので、とりあえずは大丈夫そうです。
でも、ツールが検出できない脆弱性もあるので、完全に安心しきってはダメですね。ちゃんと自分で確認しましょう。

また、とあるセキュリティ会社の高名な方が開発コミュニティにいるらしく、その方が個人的に色々チェックしたりしてくれてるそうです。
これは心強いですね。

勉強会中に試そうとしてMySQLを使おうとしたらインストールでコケた

勉強会中に、MySQLでインストールしようとしたらコケました。PDOのMySQLドライバーのsocket周りの設定のアレです。*2
EC-CUBE3でMySQL使ってPDOのSQLSTATE[HY000] [2002]でエラーでインストールできない時
毎回忘れるので、メモっておきました。
具体的には、PDOの初期設定のMySQLのsocketのパスと実際のMySQLのsocketのパスが違っており、IPとかでMySQLサーバのアドレスを設定しても、間違ったパスのsocketでDBに接続しよとして接続できなくてエラーというヤツです。
後でインストーラとか直しておきます。

あと、現時点で同梱されているeccube_install.shにはMySQLでインストールする際のバグがありますので、環境によってはこれ使ってコマンドラインでインストールできません。
MySQLのrootユーザのパスワードが必要で、MySQLのユーザ名とかを指定しても強制的にrootで接続しようとしてコケます。

その他インストールでコケたら下記を参照するか開発コミュニティまで。
EC-CUBE3のインストールでこけたら見る記事

EC-CUBE3の機能カスタマイズの方法は?

基本的にEC-CUBE3では2系の様なカスタマイズではなく、全てをプラグインとして実装する設計です。
ちゃんとプラグインとして実装すれば、バージョンアップの際の手間が大幅に減ります。

プラグインの実装方法は次回にでも詳しく書きますが、とりあえず開発元のロックオンの高橋さんが書いたQutiaの記事があります。
EC-CUBE3プラグイン機構
[Done]EC-CUBE3のプラグインを2日でつくる - 1日目
[Done]EC-CUBE3のプラグインを2日でつくる - 2日目
こちらを参考に始めてみるのが良いと思います。

EC-CUBE3の決済モジュールは?

既に、GMO-PGさんで作られたそうです。
もうすぐEC-CUBE3向けオーナーズストアがオープンする(2015年9月予定)ので、その時にはいくつか揃っているのではないでしょうか?*3
弊社、株式会社クロスキューブにもEC-CUBE3対応決済モジュールのお問合せが来ていますね。

何はともあれEC-CUBE3を使ってみよう!

使ってみましょう。
使わないと細かいところはわかりませんし、使われる事によってプロダクトの品質は向上していきます。
早く使えば早く知見を得られる事になり、競合他社に対してリードを持てます。
今はすぐ使えませんが、多言語版作るのが楽とか、API実装するのが楽とか、ポテンシャルは結構なものです。

EC-CUBE3では正式リリース版以外に、Weekly Buildというものがあり、毎週最新のコードのパッケージがダウンロードできます。
バグ修正もいち早く入っているので、興味がある方は使ってみてください。
EC-CUBEダウンロード | ECサイト構築・リニューアルは「ECオープンプラットフォームEC-CUBE」

弊社、株式会社クロスキューブでも今後はEC-CUBE3をメインに使っているつもりです。
新しいEC-CUBEでネットショップを作ってみたい方は、ぜひお問合せください。

*1:実はアプリの構造がconcrete5と非常に近くなったんですよ

*2:何か毎度これにひっかかってる...

*3:EC-CUBE3の決済モジュールの実装に関するドキュメントをロックオンさんが決済代行会社に販売しているらしいんですが、それが結構なお値段するらしく、評判がよろしくない...でも、しょうがないんですよ、EC-CUBEは無料で使えるから、そういうとこでしかお金稼げないんですよ...きっとちゃんと元取れるから決済代行会社の皆さん、気持ちよく払ってくださいな...