EC-CUBE のカスタマイズ その1(インストール)

EC-CUBEをカスタマイズする機会があり、これは記録に残しておいたほうがいいと思いました。システムが継ぎ足されて機能追加されているようで、例えば管理機能では、商品管理と会員管理とではClassの構造も異なっているみたいです。カスタマイズはPHPで行うことを前提としますが、EC-CUBE内で行うケースと、PHPExceltcpdfなどのライブラリを使うためEC-CUBEから外に出したアドオン開発の必要があるケースにも及ぶことを想定します。

それでは、最初にインストールから参りましょう。

ダウンロード

EC-CUBEのダウンロードサイトからzipファイルをダウンロードして解凍します。

バージョンがeccube-2.13.2であれば右図キャプチャのようにいくつものディレクトリとファイルが展開されます。このうちアップロードするのはdataとhtmlの2つのディレクトリだけです。

インストールの前に決めておくこと

インストールする前に、以下の項目を決めておきます。

店名 お店の名前です。後で管理画面から変更できます。
メールアドレス お客様が買物をした時などにメールが送られてきます。
ログインID 管理画面のログインID(初期値)管理画面で追加修正できますが、インストール完了後すぐに使用しますので控えておいたほうがいいです。
パスワード 管理画面のパスワード(初期値)管理画面で修正できますが、インストール完了後すぐに使用しますので控えておいたほうがいいです。
データベースの種類 PostgreSQL か MySQL
あらかじめインストールし、PHPで使用できるようにしておく必要があります。
また、phpPgAdminかphpMyAdminもインストールしておいたほうが便利です。
データベース名 eccube_db(初期値)あらかじめ作成しておきます。
データベースのユーザー名 eccube_db_user(初期値)あらかじめ作成しておきます。
ユーザーのパスワード

データベースの種類ですが、カスタマイズを前提としていますので、ライセンスの違いから私はPostgreSQLを選択しています。PostgreSQLはBSDライセンスですが、MySQLはGPLライセンスです。カスタマイズ部分を配布しないのであれば問題はないとしても、著作権者がOracle社だということで生理的な不安感がある、という程度のことですが。

サーバーへアップロード

htmlとdataディレクトリをドキュメントルートにアップするわけですが、通常通りアップすると、インストールした時にディレクトリやファイルのパーミッションをいくつも変更してやる必要があり、これは実に時間と手間がかかることになります。
これを解決してくれる情報が下街ぶろぐ(東京下街タウン情報)に書かれています。これは大変に助かります。ぜひご参照下さい。

上記サイトではFFFTPを使用して、アップロード時のオプション設定によりディレクトリ単位でパーミッションの設定を予め行っておく、という方法が紹介されています。そのため、サーバーにはvsftpdなどをインストールしておく必要があります。この設定でhtmlとdataをアップします。

PHPExcelやtcpdfなどを使用するためアドオンによるカスタマイズを行う場合、その部分をhtmlディレクトリ内に配置してEC-CUBEのカスタマイズと分けることを想定し、htmlおよびdataの各フォルダごとアップロードすることにいたします。ドキュメントルートの下にhtmlやdataというディレクトリが入りますので、Apacheのエイリアス設定をした方がいいでしょう。

ドメインがhogehoge.jp、ルートディレクトリが/home/ec_testであればhttpd.confに例えば以下の様なエイリアスが切られていることを前提として、書き進めていきます。

Alias /ec_test/ “/home/ec_test/html/”

次のページヘ

EC-CUBE のカスタマイズ その2(EC-CUBEのデータベース構造)

eccube-2.13.2をダウンロードすると、docsフォルダ内に以下の様なデータベースの構造を記したドキュメントがあります。

  1. eccube-diagram.jude
  2. ER-D_Logical.pdf
  3. ER-D_Physical.pdf
  4. table_definition.xls
  5. テーブル定義書(EC-CUBE2.13dev).xlsx

eccube-diagram.judeは、システム内でのアクション(例えば「商品登録」)と使用しているテーブルとの相関マトリックスやE-R図などが全て網羅されたファイルです。astah* communityという無償のUMLモデリングツールで参照できます。astah* communityはここからダウンロードできます。

テーブルにはmtb_で始まるテーブルとdtb_で始まるテーブルとが有ります。

マスタデータ

mtb_で始まるテーブルは全て以下の列より構成されています。

id              smallint (primary key)
name        text
rank          smallint

これらのテーブルは、管理画面において「システム設定」-「マスタデータ管理」でテーブル名を選択して直接メンテナンスが出来ます。

マスタデータ管理

ただし、このデータはdata/cacheにテーブル名.serialというファイル名で保存され、キャッシュとして利用されていますので、メンテナンス後にこの内容を削除する必要があります。そうしないと、いくらメンテナンスしてもシステムには反映されません。削除しても新たにシステムがマスタデータを取得する際にキャッシュします。

新規にmtb_hogehogeを同じ内容で追加すると、他のマスタデータと同様に「マスタデータ管理」でメンテナンスを行うことが出来ます。顧客情報や商品情報に属性を追加したいような場合に利用できます。

顧客情報はdtb_customer、受注情報はdtb_orderとdtb_order_detailというようにわかりやすいのですが、商品情報はやや複雑になっていますので、以下に説明いたします。

次のページヘ

EC-CUBEのカスタマイズ その3(カスタマイズの仕方)

Smartyとプラグイン

EC-CUBEではSmartyというテンプレートエンジンを使用しています。data/Smarty/templates配下に以下のディレクトリが作成されています。

  1. admin
  2. default
  3. mobile
  4. sphone

管理機能はadmin配下に、フロント機能はPC用についてはdefault配下に、携帯電話用についてはmobile配下に、そしてスマホ用はsphone配下に各機能毎に階層化されてtplファイルが配置されています。tplファイルはHTMLにSmarty変数やSmarty関数を埋め込んだもので、検索画面や一覧表示画面といったユーザーインターフェース部分になります。例えばデータベースから検索条件に適合した内容を抽出するサーバー機能のphpプログラムから一覧表示画面のtplファイルに出力することで一覧表示が行われます。抽出機能と画面表示機能を分離することで開発作業の効率化を図るとともに、Smartyの機能で高速化も図られます。

管理機能の会員登録画面のテンプレートはadmin/customer/edit.tplです。その入力確認画面はadmin/customer/edit_confirm.tplです。PC用のフロント機能についてはヘッダー部分がdefault/header.tpl、商品の一覧画面はdefault/products/list.tplとなります。入力項目や表示内容を追加したり修正したりする場合は、テンプレートとして該当するファイルをカスタマイズすることになりますが、直接カスタマイズしたのでは、EC-CUBEのバージョンアップに対応できなくなるばかりでなく、修正箇所がわからなくなりシステムのメンテナンスができなくなってしまう可能性があります。そこでプラグインの機能を使用します。

EC-CUBEのプラグイン

EC-CUBEのプラグインでは次のことが出来ます。

  1. EC-CUBE本体処理へ介入して処理・結果を書き換える。
  2. EC-CUBE本体のテンプレートを変更する。

ここでは画面入出力内容のカスタマイズにプラグインの2の機能を使用します。入出力項目のカスタマイズが必要な場合には、データベースのテーブルへの列追加が必要になるケースがありますので、画面の変更と合わせてテーブルへの列追加もプラグインに組み込み、本番環境への移植も容易にすることを目的とします。

なお、下記「プラグイン仕様書」を参考にされるといいでしょう。

拡張クラスのカスタマイズ

サーバー機能のphpプログラムは、data/class配下に機能的に階層化され登録されています。

管理機能の会員登録についてはpages/admin/customer/LC_Page_Admin_Customer_Edit.phpですが、dtb_customerに関する関数がSC_Customer.phpやhelper/SC_Helper_Customer.phpに記述されています。

直接カスタマイズする場合はこの部分を修正・追加するわけですが、ここでは拡張クラスにカスタマイズ部分を記述するという方式を取ります。

EC-CUBEではdata/class_extends配下にほぼ同じ構成でファイルが登録されています。classと異なるのは、class_extends配下ではディレクトリ名には「_extends」がファイル名には「_Ex」が付けられているくらいです。また、ファイル内容はclass内の同機能のclassを継承しているという宣言があるだけで、中身は空っぽとなっています。カスタマイズしたいclassに記述されている関数を、class_extendsに移植しその内容を修正すると、実行時にはclassの中は元のままでもカスタマイズした内容でプログラムが機能します。

拡張クラスのカスタマイズが推奨されている方式ですが、バージョンアップの際対応しづらいとか、一部正しく機能しない場合があるとか、開発効率が落ちるといった問題があることを承知のうえで、ここでは「元々の機能が保証される」「カスタマイズした内容が明確になる」という理由だけで拡張クラスのカスタマイズ方式としています。直接カスタマイズすることを選択しても構いません。

次回は今回のカスタマイズ内容について解説します。

EC-CUBEのカスタマイズ その4(カスタマイズ内容)

今回のカスタマイズ内容

EC-CUBEでは商品に設定する価格は「通常価格」と「販売価格」とがありますが、「通常価格」は商品の詳細画面に表示されるだけで、どの会員にも一律同じ「販売価格」で商品を提供しています。今回のカスタマイズでは、会員情報に「会員分類」という項目を追加します。

会員分類はmtb_bunruiというマスタファイルを追加し、「1:小売会員」には通常価格で、「2:卸売会員」には販売価格で提供することにします。

今回のカスタマイズ範囲は下記のとおりとします。

[管理機能]

  1. 会員情報(dtb_customer)に会員分類(plg_bunrui)を追加する。
  2. 会員登録画面に会員分類を追加し、リストボックスで選択できるようにする。
  3. 会員マスターの検索条件に会員分類を追加し、リストボックスで選択できるようにする。
  4. 会員検索結果一覧に会員分類を追加する。

[フロント機能]

  1. 卸売会員がログインした場合は販売価格を卸売価格と表示し、商品情報の販売価格で表示する。
  2. 上記以外の場合は商品の通常価格で表示する。
  3. 商品詳細画面では通常価格、販売価格の2重表示を止め、卸売価格もしくは販売価格のみを表示する。

本来は上記以外にも変更すべき箇所はありますが、以上にとどめます。

会員分類マスタの追加

データベースはPostgreSQLを使用し、phpPgAdminで管理することを前提としていますので、phpPgAdminを起動し下記SQLを実行します。

CREATE TABLE mtb_bunrui (
id                                      SMALLINT NOT NULL  DEFAULT 0,
name                                    TEXT DEFAULT '',
rank                                    SMALLINT DEFAULT 0,
PRIMARY KEY (id));
COMMENT ON TABLE mtb_bunrui IS '会員分類マスタ';
COMMENT ON COLUMN mtb_bunrui.id IS '会員分類ID';
COMMENT ON COLUMN mtb_bunrui.name IS '会員分類名称';
COMMENT ON COLUMN mtb_bunrui.rank IS 'ランク';

phpPgAdminを使用する場合、コメントが表示されたほうがわかりやすいので追加しましたが、除外しても結構です。また、MySQLの場合はコメントを付けるSQLは異なりますので、同じく除外して下さい。

会員分類マスタ1

会員分類マスタ2会員分類マスタの登録

マスタ登録は管理画面で行います。「システム設定」-「マスターデータ管理」を選択し、リストボックスから追加した「mtb_bunrui」を選択し、[選択]ボタンをクリックして登録します。

会員分類マスタ3
画面の修正はプラグインで行い、ロジックについては拡張クラスのカスタマイズ方式とします。

次回はプラグインでの画面修正について解説します。

情報発信研修会開催しました

長岡市担い手育成総合支援協議会主催

情報発信研修会

インターネットクラウドサービスの活用

日時:2014年7月25,28,29 19:00~21:30

場所:まちなかキャンパス 501

クラウドサービスのJimdoを使用して、農業従事者の方が経営に役立てるホームページを作成し、情報発信するためのセミナーを開催致しました。クラウドサービスはますますリッチクライアントとなってきており、JimdoもあたかもクライアントアプリのようなUIです。

この時期、枝豆の収穫に追われる農家さんが、疲れを癒やす暇もなく3日間勉強をされました。新規に農業法人を創業させた方も、「なんとか自分たちの新商品を作り出していきたい。ホームページはそのために絶対に必要な手段なんです。」と言われていました。

まちなかキャンパスは長岡市の施設では大変素晴らしい施設ですが、無料で使えるWifiのFreeSpotはかなり回線は細く、電波状態も弱いため、このようなリッチクライアントを大勢で使用するには厳しい環境でした。3日目は私のスマホとWiFiルーターを動員して分散利用したため、比較的問題なく終了させることが出来ました。FreeSpotにはもう少し機能を充実させてもらいたいですね。

RFIDを使用した避難所における受付実証実験とRFIDの利用価値について

2015年9月6日(日) 長岡市青葉台3丁目自主防災会の避難訓練後に、避難所における受付をRFIDタグとリーダーを使用して効率的に行う実証実験を行いました。開発は長岡アイティ事業協同組合有限会社ワタナベプランと共同で無償開発いたしました。

青葉台3丁目町内会長とRFIDリーダー
青葉台3丁目町内会長とRFIDリーダー

机の上の縦長の白い機械がRFIDリーダーライターです。これは東北システムズ・サポート社製のUHF帯RFIDハンディリーダライタ DOTR-910Jです。今回はAndroid端末用の機械としましたので、後方においてあるAndroidスマホとBlueTooth接続して使用しています。

RFIDタグの名札
RFIDタグの名札

これがRFIDタグを貼り付けた名札です。今回は仮名の住民台帳から名刺用紙に名札印刷し、ロール状になっているRFIDを貼り付け、ラミネート加工しカードフォルダーに入れたものと、ビブスに取り付けたものを使用しました。

このRFIDはアンテナ部分も大きく読み取り精度は非常にいいようです。

リーダーの前を通過するだけで受付
リーダーの前を通過するだけで受付

中学生も参加してタグの読取り実証実験を行っています。
NHKも取材に来られ放映されました。

実証実験では100人の受付が皆さんへの説明をしながらでも5分で終了。説明ではモニターやパソコンを使用していますが、受付自体はスマホとリーダーがあれば可能です。

ライフラインの停止した夜間などでも十分に活用できることが実証されました。

この実証実験は国立研究開発法人防災科学技術研究所「イノベーションハブ構築支援事業FS採択」の実験プランで採用され現在実験プランを開発中です。*注「防災イノベーションハブ事業」はJST(国立研究開発法人 科学技術振興機構)のイノベーションハブ構築支援事業において、平成27年度FS課題として選定していた課題から、平成28年度本採択課題とされました。

ユニクロで商品にRFIDを取り付け、試着の管理やレジ精算にまで利活用することになりましたが、今回の実証実験でいろいろと応用できることがわかりました。今回使用したリーダーライターは出力が250mWの特定小電力型ですが、920MHz帯を使用したタイプで、回りこみもあるので特に室内では読み取り感度が高いです。室内試験では7mくらいまで読み取れました。実証実験は屋外でしたが、だいたい1mくらい離れたところを通過してもらうようにしていましたが、5mくらい離れたところから読み取り始めていました。

職員の入退室管理などでも利用できるでしょう。通常はNFCなどを使用していますので、両手がふさがっている場合などリーダーにタッチさせる必要もあって不便ですが、これであればそのまま通過できます。Androidタブレットなどは非常に安価に購入でいますので、在庫管理や生産管理などでもこれまでの専用端末を使用したバーコード読み取りと比べると導入コストを抑えることが出来るでしょう。

施設でのお年寄りの見守りや児童館でのお子さまの入退室管理など広く応用できると思います。

原発はどこ? スマホアプリ制作 暫定公開中

原子力災害発生時の避難計画は遅々として進んでいません。

とりあえず小さなお子様と若い人たちにはまずは30Km以上離れたところに避難してもらうのが一番です。

そこで「原発はどこ?」というスマホアプリを制作しました。

原発はどこ? Ver1.1.1
原発はどこ? Ver1.1.1

アプリを起動すると、まずは22登録してある原発施設から最寄りの原発からの方向と距離が表示され、GoogleMapに表示します。当該原発から半径5km以内は黄色い円、30km以内は赤い円が表示されます。

暫定的にAndroidアプリのパッケージを下記よりダウンロードできるようにしました。お使いになったご感想をお願いします。

なお、気象予報士の方に相談していますが、ここに風の情報なども掲載したいと発展形を考えています。

ダウンロードはこちらから

ダウンロードは コチラ から

更新履歴:2016/03/29  常時GPS監視をして現在地を追跡するように変更(バッテリーは食います)

更新履歴:2016/03/16  UI変更

IoT 試作品開発

長岡市ものづくり未来支援補助金を活用した「IoTによる独居老人見守りシステム」を開発中です。

見守り対象者宅に複数の見守りセンサーを設置し、その生活環境と生体反応から見守りチームに警報をPush通信できるシステムです。筐体デザインは長岡造形大学に依頼し、産学での共同開発となっております。9/15、センサー部分担当者と長岡造形大学土田教授にお会いし3Dプリンターで制作した試作筐体を見せていただきました。(2016-9-16 追加)

また、長岡造形大学プロダクトデザイン学科土田知也教授)のIoT授業で発表された、27名の学生のIoTアイデアの中から12作品を長岡技術科学大学情報・経営システム工学過程湯川高志教授)との合同授業に持ち込み、両学の学生で検討の結果、一作品の試作を決定。デザイン・筐体試作は長岡造形大学プロダクトデザイン学科、センサー・スマホアプリは長岡技術科学大学情報・経営システム工学過程、システム設計・API・Webアプリ開発は当社で現在開発中です。

2つの試作品は10月1日に長岡市で開催される、「オープンソースカンファレンス2016 Nagaoka」にて発表会を開催いたします。この発表会は長岡IoT推進協議会の例会も兼ねております。オープンソースカンファレンスの事前受付はコチラからお願いします。当日会場であるまちなかキャンパス長岡5F交流ルームにて、地元酒屋の厳選した日本酒をたっぷり用意した(ビールも用意)懇親会も開催します。予約申し込みはコチラからお願いします。

気象災害軽減イノベーションハブ事業に参画

昨年制作した災害時の安否確認システムが、国立研究開発法人防災科学技術研究所(以下防災科研)の防災イノベーションハブ事業で実証実験に選ばれ、高度なセキュリティ対策や一時避難場所での安否確認機能などを追加しています。

このシステムは、長岡市青葉台3丁目町内会で2015年9月に実証実験が行われ、2016年から正式に本番運用が開始されています。2015年9月の実証実験の様子はNHKでも放映され、「首都圏防災ナビ」というサイトで「第27回 安否確認はIT技術の活用で」として紹介されています。また、同じくNHKの「MIRAIMAGINE」というサイトでも「ICタグで安否確認 自主防災組織の取り組み」としても紹介されています。

この安否確認システムでは住民にRFIDタグの埋め込まれた名札を配布し(青葉台3丁目では2016年8月に全戸全登録住民に配布)、避難所での受付をRFIDリーダーで短時間に完了できるところがクロースアップされています。実際に2016年9月4日の避難訓練では、避難先の青葉台中学校で265名のチェックインを5分程度で完了させました。

しかし、このシステムの肝は「災害時に安否未確認者を短時間に把握することができる」という部分です。

安否未確認者の把握
安否未確認者の把握

全住民の情報が把握できている場合に限り、安否確認者を入力することで、安否未確認者を捕捉することが出来ます。地震災害などのようになんの前触れもなく突然被災するような災害では、まずは一時避難場所で短時間のうちに安否未確認者を捕捉し救護活動を行うことで人命を救うことが出来ます。

また地震災害で避難所に避難する場合は、ライフラインは完全に途絶します。しかしながら避難所では避難者名簿を作成する必要があります。これを夜間ほとんど灯りのないところで作成、転記することは無理です。しかもそれをFAXかメールで本部に送信することになっていますがFAXは動作しません。

世帯ごとに記入する避難者名簿
世帯ごとに記入する避難者名簿

この避難者名簿に転記・集計
この避難者名簿に転記・集計

これをRFIDによるチェックイン機能は簡単に実現します。

安否確認システムによる避難者名簿
安否確認システムによる避難者名簿

安否未確認者の捕捉
安否未確認者の捕捉

防災科研は本年度、国立研究開発法人科学技術推進機構(JST)が実施する「イノベーションハブ構築支援事業」で「「攻め」の防災に向けた気象災害の能動的軽減を実現するイノベーションハブ」として本採択され、「気象災害軽減イノベーションセンター」を設立しました。これに伴い防災科研長岡雪氷防災研究センターのある長岡を中心とした地域での取り組みを実現すべく長岡サテライトが活動をしており、弊社もその一員として参画しております。

2016年9月23日に「気象災害軽減イノベーションセンター長岡サテライトキックオフシンポジウム」が、長岡震災アーカイブセンター「きおくみらい」にて開催されます。多数のご参加をお願い致します。私も長岡IoT推進協議会の活動報告を行います。

気象災害軽減イノベーションセンター長岡サテライトキックオフシンポジウム

Hello world!

WordPress へようこそ。これは最初の投稿です。編集もしくは削除してブログを始めてください !