基礎から応用まで ~EC-CUBEカスタマイズの全て~ 序章 【アイピーロジック株式会社】

小髙 知彦

当社は「EC-CUBE」を中心とした、ECソリューション事業を展開しており、これまで数多くの開発実績、カスタマイズ実績、サイト保守実績を積み上げて参りました。また、カスタマイズや保守の他に、EC-CUBE専用メルマガ配信ASP「PostCarrier for EC-CUBE」や、保守監視サービス「らくらくサイト保守」といった自社サービスをはじめ、多数の決済モジュールや、プラグインの豊富な開発実績を有しております。

従業員数20名ほどの当社、現在保守サイト数は30サイト(解約0件)、構築・カスタマイズ実績は100サイト、サービス導入サイトは500サイトを超えました。少数のエンジニアで数多くの実績を上げるためには「品質」と「スピード」を高い水準で維持し続けることが重要となります。

現在、当社で活躍しているエンジニアの9割は、EC-CUBEの開発経験がなく入社しましたが、当社内の研修を経て、一人前のEC-CUBEエンジニアへと成長を遂げました。急速に成長を続けるEC業界において、さらにECの恩恵を享受し易い社会環境を創出すべく、当社の研修内容を全9回に渡り紹介させていただきます。

全9回の研修を実践していただくことで、EC-CUBE主要機能のカスタマイズを独力で行えることを目的としています。

前提条件

【環境】
・EC-CUBEバージョン:2.13.5
・データベース:MySQL

【対象者】
・Webアプリケーション開発経験者(入門レベルで問題ありません)
・SQL経験者(入門レベルで問題ありません)
・EC-CUBEの開発が未経験の方
・EC-CUBE2.13.5動作環境がセットアップ済である

ディレクトリ構造

それでは本題に入ります。今回は、研修メニューに入る前に、EC-CUBEのディレクトリ構造、データベースのテーブル、パラメーターを中心に、EC-CUBEの基本構造について説明させていただきます。

EC-CUBE2.13.5を本家サイトよりダウンロードし解凍すると、「html」と「data」ディレクトリが生成されます。
(その他のディレクトリについては、本記事では取り扱いません。)

▽ EC-CUBE解凍後のディレクトリ



■htmlディレクトリ
ドキュメントルートと呼ばれ、ブラウザから直接アクセスされるPHPプログラムが収められています。
他には、画像ファイル、JavaScriptやスタイルシートなどが収められています。


■dataディレクトリ
htmlディレクトリのPHPから呼び出されるプログラムファイルや、管理画面やデバイス毎のSmartyテンプレートファイルが収められています。


<< Smarty >>
EC-CUBE2系で採用しているPHP用のテンプレートエンジンであり、Smartyを利用することでビジネスロジックとプレゼンテーションロジックを分離しています。MVCモデルの「View」に相当します。

PHPという言語は、プログラム内にHTMLコードを書くことが可能な言語ですが、中規模以上の開発になると、開発作業の明確化が求められます。その際に、プログラマとHTMLコーダーが同じPHPファイルに対して作業を行うというのは、思わぬミスを引き起こしたり、資産管理を困難にします。また、ソースコードの可読性、保守性も著しく低下します。Smartyを利用し、ビジネスロジックとプレゼンテーションロジックを分離することで、開発作業の分担を容易にし、可読性、保守性も向上します。

Smartyは以下のサイトで詳しく説明されています。
http://www.smarty.net/docsv2/ja/

EC-CUBEの動作の流れ

ブラウザからボタンやリンクが押下された際に、どのような順序でプログラムが呼び出されているか、トップページを例に説明します。

①html/index.php
    ↓
②data/class_extends/page_extends/LC_Page_Index_Ex.php
    ↓
③data/class/pages/LC_Page_Index.php
    ↓
④data/class_extends/page_extends/LC_Page_Ex.php
    ↓
⑤data/class/pages/LC_Page.php
    ↓
⑥data/Smarty/templates/default/index.tpl (PCサイト)
   data/Smarty/templates/mobile/index.tpl (携帯サイト)
   data/Smarty/templates/sphone/index.tpl (スマートフォンサイト)

全体的な流れとして、①から順にプログラムの呼び出しや継承が行われています。合計で6つのプログラムが使用されていますが、③と⑤の中では、さらに汎用的なクラスを使用していますので、実質的には6つ以上のプログラムが呼び出されています。

②は③の拡張クラス、④は⑤の拡張クラスになります。③⑤にカスタマイズや機能追加を行いたい場合、メインプログラムに影響を与えず、②④へ編集することが可能な構造となっています。



データベースのテーブル

EC-CUBEのテーブルには、データテーブル(dtbテーブル)とマスターデータ(mtbテーブル)の2種類のテーブルが存在します。


パラメーター

EC-CUBEは様々な定数の値を「パラメーター」という形で定義しています。管理画面の「システム設定 > パラメーター設定」より閲覧、更新が可能となっております。

▽ パラメーター設定画面



パラメーターの情報が格納されているテーブルは「mtb_constants」というテーブルになりますが、「data/cache/mtb_constants.php」にも同様の情報が保存されます。そして実際にEC-CUBEが動作する際に利用されているのは「data/cache/mtb_constants.php」のファイルとなります。

よって、パラメーターを新規に追加したい場合、「mtb_constants」にレコードを追加すると同時に「data/cache/mtb_constants.php」にも同様のパラメーターを追加する必要があります。「data/cache/mtb_constants.php」は、「システム設定 > パラメーター設定」より「この内容で登録する」ボタンを押下することで上書きされますので、以下の手順でパラメーター追加を行うことをオススメします。

①mtb_constants テーブルにレコードを追加
    ↓
②管理画面の「システム設定 > パラメーター設定」を表示し、①で追加したパラメーターが追加されていることを確認
    ↓
③画面最下部「この内容で登録する」ボタンを押下
    ↓
④data/cache/mtb_constants.php に①で追加したパラメーターが定義されていることを確認

次回

今回は、EC-CUBE開発にあたり最低限必要な前提知識についてお話をさせていただきました。次回より弊社研修内容を紹介させていただきます。STEP1としまして「商品カスタマイズ」を紹介させていただきます。


著者

小髙 知彦 (Tomohiko Kodaka)

2000年、システムエンジニアとしてSI企業に新卒入社。オープン系、Web系における大小様々なシステム開発に携わった後、新人教育専任者として約200名のエンジニア育成に勤しむ。退社後、フリーエンジニアを経て、2013年にアイピーロジックに入社。ECサイト構築におけるプロジェクトマネージャー兼EC-CUBEエンジニアの育成責任者としても活躍中。

アイピーロジック株式会社:http://www.iplogic.co.jp/