ショッピングサイトの作成と言うものに全く縁がなかったのですが、一度さわっておこうということで、EC-CUBEをやってみた。初心者でもインストーラ付きレンタルサーバーで簡単に構築できるみたいですが、特に公開するあてもないし一通りの挙動を確認したかっただけなのでローカルで。

ダウンロードは公式サイトから。

基本無料なんですが、あちこちに有料商品の購入を誘導できる仕組みがあって、あぁ、ちゃんと利益を確保しながら運営できているんだなと、むしろ安心して無料の恩恵に与ることができる。

で、早速ダウンロードして解凍したものの、自分の良く知っているオープンソースの無料ソフトとは違い「インストール」についての説明が見つけにくい。とりあえず解凍したフォルダを眺めておおよその見当は付くものの、READMEファイルが無い!

で、ぐぐったらとても参考になりそうなページが

http://www.webmasters.jp/faq/entry_000114.html

などをはじめ幾つかありましたので、ありがたくそちらを参考にしながら無事完了。

EC-CUBEのバージョンは2.12.2

気づいたこと

インストールについて

  • ドキュメントらしきものが見当たらないが、ブラウザの対話によりとても簡単にインストールできる。
  • 公開と非公開のディレクトリが分離されているので、それぞれを適当なところへ設置できる。
  • 公開ディレクトリから data ディレクトリを参照するためのパス HTML2DATA_DIR を HTML/define.php で設定すればよい。

データベースについて

  • データベースの設定ファイルへの書き込みはブラウザの対話で行う。最初に空のDBを用意しておけばよい。設定した内容は data/config/config.php と言うファイルに記述される。
  • 作成されるテーブルのプリフィクスは “dtb_” と “mtb_”。(MySQLの場合だと)合計297のテーブルが作成される。
  • テーブル作成のスキーマは HTML/install/sql/ にある。
  • 独自プリフィクスの設定などは難しいかも知れない。どこかにあるのかもしれないが見つけられなかった クエリのテーブル名はすべて直書きされているので多分無理。他のアプリと同居させたい場合はとりあえずこの2つのプリフィクスは既存アプリで避けておいた方がよさそう。一つのDBで複数のEC-CUBEの共存も同じ理由により無理と思われ。
  • docs ディレクトリに素晴らしい参考資料(ER図(論理+物理)、テーブル定義リスト、ダイアグラム図)があってとても幸せになれる。

テンプレートについて

  • テンプレートエンジンとしてSmartyを採用。バージョンは 2.6.26 だった。・・・あの文法をまた思い出さねばならないかと思うとちょっと億劫だな・・・
  • 至れり尽くせりのテンプレートがデフォルトでたくさん用意されていて、ファイル総数なんと297!
  • テンプレートファイルは data/Smarty/templates/テンプレート名/ に保存されている。
  • テンプレートのディレクトリが一つのテーマとして機能しているようだ。(「テーマ」という言葉は使われていないが)
  • テーマはPC用、携帯用、スマホ用、管理画面の4種類用意されている。
  • PC用、携帯用、スマホ用に関してはテーマを切り替えることが可能。管理画面から行う。
  • カスタマイズ用のテーマを追加したい場合は少し手間。いったん既存のテーマを圧縮ファイルでダウンロードして、再度そのファイルをアップロードする。その時適当な「テンプレートコード」と名前を与えることで、PC/携帯/スマホなどに関連づかせる候補にできる。このテンプレートコードがそのままテーマディレクトリの名前になって、アップロードしたファイルがそこに展開される。

フレームワーク的なこと

  • MVCっぽい。けど実際どうなのかまだよく分からない。
  • プロセスディスパッチャは主に”LC_Page”が担当している。これを拡張した “LC_Page_Index” を主に呼び出している模様。
  • ORMっぽいクラスは”SC_Query”と”SC_SelectSql” 。モデルの基底クラスのようなものは見当たらない。
  • ビュークラス”SC_View”
  • コントローラっぽいクラス”SC_Display”。
  • data/class_extends/ には、 data/class/ のカスタマイズ用として、ほぼすべてのクラスの継承クラスがある。
  • data/class/ VS data/class_extends/ がコア VS アプリの関係のようになっているので、カスタマイズする場合は class_extends/ にあるファイルを編集する。オートロードの仕組みはない。
  • class 直下にMVCのファイルが混在しているので、サブディレクトリに分類してほしいなぁ。

その他全般的なこと

  • コメントが日本語なので肩が凝らない!
  • URLリライトは行っていないようなので、見たまんまのディレクトリ/ファイル構造が存在していると思われ。
  • グローバル関数がほとんど使われていないのは気持ちいい(グローバル関数はすべてSmartyやPEARのライブラリによるもので、EC-CUBEのコアではすべてクラスメソッドのようです)
  • クラス(クラスファイル)の構造が見えにくい。
  • 用途が明確なメソッドが多いのでこれはこれでありだと思うけど、クエリの直書きの多さに圧倒される。
  • 株式会社ロックオン(http://www.lockon.co.jp/)が開発している。

ローカルで構築する手順のまとめ

  1. 公式サイトからダウンロード
  2. 解凍したフォルダのうち、”html” と “data” を適当な場所に設置
  3. html/define.php の HTML2DATA_DIR を記述(相対パス)
  4. data/mtb_constants.php で適宜設定を行う(あとで管理画面からも設定できるので後回しでも良さそう)
  5. データベースを用意する(既存のDBと同居させる場合は “dtb_”, “mtb_” の接頭辞のテーブルが無いか確認)
  6. 設置したURL/install/ にアクセスして対話形式でセットアップを行う。
  7. URL/install/index.php を削除

こんな流れで宜しいかと。

雑感

パッと見て、全体的にあまりリファクタリングされていない印象を受けた。けど、そのお陰でコードを追うのが楽に感じる。目の前のコードだけ見ていれば処理の予想が大体つくので、カスタマイズの敷居が低いかもしれない。

そもそも、一般的なネットショップを運営するのであればことさら抽象度の高い洗練されたCMSフレームワークである必要はない。それよりも目の前にある諸々の問題に具体的に対応して行けるかどうかが重要だと思う。

実際開発のコミュニティも活発な感じで、なかなか良さげ。テンプレートエンジンがSmartyでなくて純粋なPHPならさらにハードルが下がると思うのだけど。

機会があれば今後使ってみたい。