Android版のLibreOffice 仕上り具合は?

「Web Application Pack Excel活用在庫管理システム」では、Android端末でのスプレッドシートの取り扱いを試験するために、「Document To Go Full Version」を使いました。これはこれで使えるのですが、やはりLibreOfficeが待ち望まれます。

そこで、開発途上にある現バージョンをインストールしてみました。

http://dev-builds.libreoffice.org/daily/master/Android-ARM@24-Bytemark-Hosting/current/

残念ながらAndroid3.2.1で稼働しているAndroid端末では、アイコンをタップしてもまったく動作しませんでした。
さらなる完成が待ち望まれます。

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
画面の修正はプラグインで行い、ロジックについては拡張クラスのカスタマイズ方式とします。

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