伊藤清徳の垂直落下式ムーンサルトプレス

PerlとかPHPとかMySQLとか…がんばっても8割だ。
8 月 29

Filemaker と なでしこプラグインを利用したFTP操作用カスタム関数群の試験公開バージョンを公開します。
今回のバージョンでは、FTP接続/切断とファイル・フォルダのアップロードの操作のみです。

今後、ダウンロードやファイル列挙、パーミッション操作も対応の予定です。

完全に試験公開なので、利用価値はそれほど高くないですが、
ご利用いただけたらと思います。

ダウンロード>>

8 月 27

先般より何名かの方からご要望いただいていた
なでしこプラグインを利用したメール送受信関数群を公開します。

とりあえず、ベータ版での公開とし、
料金体系は支払い強制のないカンパウェアとします。
詳しくは、同梱のReadme.docをご覧下さい。

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

すべてのメール送受信操作はカスタム関数にて実装しています。
必要に応じて、カスタマイズなどをして利用してください。
サンプルアプリケーションデータベースも同梱しています。

利用方法など詳細は、同梱のReadme.docをご覧下さい。
(Readme.docはMS-WORD形式です。お持ちでない方は、OpenOffice.orgなどをご利用ください。)

なお、この関数群に関してはすべてのサポートをいたしません。
自己の責任においてご利用ください。

8 月 8

以前日本においてECサイト構築用のオープンソースシステムは
EC-CUBEが最適解だと書きました。

そのこと自体は揺らぎないと思いますが、
使い込んでいくうちにあれこれと問題にぶち当たるのも事実です。
OSSを使うのに置いては仕方ないです。

EC-CUBEも例外なくこれテストしたんか?
って突っ込みたくなる機能が沢山。
何かと挙動がサーバーによって変わってしまうPHPでできてるから仕方ないですが。
(これだからPHPは、、、)

EC-CUBEに標準でついているCSV登録機能は、
ぶっちゃけほとんど使えないものだと思っていいです。
商品登録は比較的使えるほうですが、
カテゴリ登録などは全くできません。

しかし、多店舗展開が結構常識的となっている今、
EC-CUBEで構築した自社サイトのみでの展開というのは考えにくいので、
外部データソースとやり取りできないのはイタイよ(>_<)
早く直してーーー。

(自分で直そうと思ったけど、
 CSVでのカテゴリ登録のとき呼び出す関数がおかしなものを呼び出しているようなので、
 ヘタに触りたくなかった。)

ってことで、めんどくさいから、
ODBCでローカルDBから直接接続した。
もしかしたら、CSVなんかよりODBCを使ったほうが正解かも。

8 月 7

なでしこプラグインを使って、指定時間になったら、
指定したファイルメーカーのスクリプトを起動するシステムを作ってみました。



なでしこプラグインは8/6になでしこのほとんどの機能に対応するようになり、
また指定スクリプトの実行など、ファイルメーカー用の命令も追加され、
ODBC経由でのFilemakerDB接続機能や、Win32API呼出機能を連携すれば、
MS-ACCESS+VBAとほとんど変わらないデータベースを
Filemakerで作成できるようになりました。

もちろん、Filemaker自体のGUI機能が貧弱だとかいう根本的な問題はどうにもなりませんが、
そこまで考えるのであれば、FilemakerをDBエンジンとして採用する意味がなくなりますから、
その範囲でのお話ではありますが。。。



なでしこプラグインがGUI機能を搭載したことで、
タイマー処理ができるようになったので、
これを利用して作成しました。

簡単に説明すると、1秒おきにタイマー処理をして、時間判定。
時間がきたらスクリプト起動。という仕組みで動いています。
ごく簡単なシステムではありますが、
Filemaker自体がタイマー処理をする機能をもっていないので、
スクリプト起動に限らず、意外に有用な仕組みです。



http://www.agilmente.com/bloguseimages/sample/FileMakerScriptTimer.zip

ここからサンプルをダウンロードできます。
いたっていい加減なフォームとかテーブル構造になってます。
使うときは適宜変更してお使い下さい。

制御機能は、カスタム関数にて実装しています。
詳しくは、同梱のReadMeをご覧下さい。

Advance(Developer)版をお持ちであれば、
カスタム関数をご自由に変更してお使いいただいても構いません。

このファイルを利用したりするのに当たって、
当方では一切の責任を持ちませんので、
この点のみご了承ください。

8 月 6

散々便利だとのたまわっているFilemakerのなでしこプラグイン
早速アップデートされました。

バグ修正とFilemakerで使うに便利な命令が追加されています。
おぉっ!使いやすさがアップしてる。

すごいよなー。
本家なでしこもそうだけど、毎月必ずアップデートが行われて、
それもバグ修正にとどまらず、必ず便利になってる。
見習わなきゃいけない。
くじらさんの足元にもおよばないけど同業のプログラマとして。。。
尊敬しているプログラマのひとりです。くじらさん。

8 月 4

EC-CUBEは日本発のオープンソースECサイト構築ソフトウェアです。

他にもいくつか日本語対応となっている有名OSSがありますが、
日本の事情にあっていない、
開発方法が統一されていないためカスタマイズが極端にしづらい
などなど、はっきり言って、EC-CUBE以外のソフトウェアは、
そこそこの知識がない限り使わないほうがいいものがほとんどです。

EC-CUBEはまだまだバグが多くて困ってしまう点も少なくないですが、
それでも日本の通販事情に合っていますし、
開発が一企業のもとで統合されて進められているので、
非常に使いやすいです。

有償ソフトウェアは別として、
OSSでのECサイト構築の最適解は、
現在のところEC-CUBEといって過言ではないと思います。




ということで、クララオンラインのサーバーへEC-CUBEをインストールしたメモです。

クララオンラインはEC-CUBEのオフィシャルホスティングパートナーですが、
なぜかインストールドキュメントが用意されてません(T_T)

すでにCPIのサーバーへEC-CUBEをインストールした経験がありますが、
それよりは平易でした。

ただし、平易なのは、
・サーバー管理画面に「Plesk」を選択
・OSにRed Hat Enterprise Linux 5を選択

している条件のサーバーのみで、
これ以外の条件では、かなり面倒な作業が待っています。
正直上記以外のサーバーでは、
よっぽど知識がない限り他社サービスを利用するか、
新しいサーバーへ乗り換えることをオススメします。

このページではこの条件で説明します。
またEC-CUBEのバージョンは、2.1.2aを想定した内容です。



■準備編

ECサイトを始めるのならば、当然SSL証明書を取得しておきましょう。
それで、クララオンラインのサーバーのデフォルトでは、
通常通信領域とSSL通信領域が分けられています。
ちょっと面倒なので、一緒にしてしまいましょう。
Pleskにログインし、EC-CUBEをインストールするバーチャルドメインを選択し、
「ホスティング」の「設定」をクリックします。
その画面の中に
「SSL 認証を受けないコンテンツと同じディレクトリに、SSL 認証を受けるコンテンツを設置する」
というチェック項目がありますので、チェックを入れて、「OK」を押します。

その後、そのドメイン用のデータベースを作成します。
MySQLを利用しましょう。



■アップロード
EC-CUBEをダウンロードしたアーカイブを解凍しできたファイルにまず編集を加えます。

・エラー出力するように変更。
クララオンラインサーバーの一部は、デフォルトでPHPのエラーを出力しないようになっています。
なにかと不便ですので、出力するようにします。
「html/.htaccess」を開き最後の行に「php_flag display_errors 1」と入力し、改行を入れて保存します。

・dataディレクトリの位置変更。
クララオンラインサーバーでは、WEB経由で不可視の場所へFTPクライアントを使って、
フォルダを作成したり、アップロードしたりすることができません。
(正しくはできないわけじゃないけど面倒)
ということで、この設定をすることでインストールがラクになるようにします。
「html/define.php」を開き、「define("HTML2DATA_DIR", "/../data/");」を「define("HTML2DATA_DIR", "/data/");」へ変更します。

・dataディレクトリをWEB経由でアクセス不可にする。
上記の設定でインストールはラクになりましたが、
そのままインストールすると危険ですので、
.htaccessファイルでdataディレクトリ配下のファイル・ディレクトリに、
WEB経由でのアクセスを禁止する処置を行います。
テキストエディタを開き、(Windows標準のメモ帳はやめたほうが良い)
「order deny,allow
deny from all

と入力し(最後は改行で終わってください。)dataディレクトリへ「.htaccess」の名前で保存してください。

通常、Windowsは拡張子のみのファイル名では保存できませんが、
terapadなら可能です。
「名前をつけて保存」し
「ファイル名」に「.htaccess」、
「ファイルの種類」は「すべてのファイル」を選択して、
保存すればOKです。

ここまでで、アップロードの前準備は終了。
ではアップロードします。

FTPクライアントで、EC-CUBEを設置したいドメインへ接続します。
「/httpdocs/」の中へ「html」の中身をすべてアップロードします。
次に、「httpdocs/」の中へ「data」というディレクトリを作成し、
その中へ「data」ディレクトリの中身をすべてアップロードします。

他の説明書では、ここでパーミッション設定をしろと書いてある場合が多いですが、
クララオンラインのサーバーはパーミッション設定が結構厳密で、
設定する箇所が多く、説明書どおりのパーミッション設定のみでは設定が足らないので、
インストール作業の時に出たエラーメッセージに従って、設定したほうが良いです。


■インストーラー起動。
WEBブラウザから「install/index.php」へアクセスします。
基本的にインストーラーに従って進むだけですが、
前述の通り、あのファイルのパーミッションをどうこうしろとあれこれ言われます。
これがどうにも面倒な作業なのですが、必要な作業なので粛々とやってくださいね。
わたしは40分もかかってしまいました(-_-;

パーミッション設定し一通りインストーラーの作業が終了したら、
ここで念のため、データベースへの接続を「UTF-8」で行うように設定しておきます。
ローカルの「data/class/SC_DbConn.php」をテキストエディタで開き、
「$this->conn = $objDbConn;」と書かれた次の行へ、「$this->conn->query(’SET NAMES utf8′);」を追記して保存。
サーバーの当該ファイルへ上書きします。

その後、再度WEBブラウザから「install/index.php」へアクセスして、
一通りインストーラーを走らせて下さい。
今度はパーミッション設定は不要です。
最後まで、インストーラーを走らせたらサーバーの「install/index.php」を削除します。

以上で一応のインストール作業は終わりです。



■管理画面
管理画面にログインして各箇所確認していると
「??????」と文字化けを起こしている箇所がある場合があります。

よく原因が分からないのですがこういった場合があります。
データベースを確認しても間違いなくUTF-8でデータ保存がされているにも関わらずです。

そういった場合は、管理画面の「システム設定」→「マスタデータ管理」を開いて、
たとえば、「mtb_status」を選択して、
項目編集せずにそのまま「この内容で保存します」をクリックすると直ります。
面倒ですが、すべてのマスタデータに対してこの作業を行っておいたほうが良いと思います。

ちなみにデータベース確認してUTF-8で保存されていない場合は、
明らかにインストール作業に誤りがあります。

もう一度インストールしなおしましょう。



はい。ここまでで、とりあえず、EC-CUBEが普通に使えるようになります。
これだけで多分2時間くらいは使うと思います。

テンプレートスキンが充実していないEC-CUBEなので、
デザイン作業などはさらに大変な作業でしょう。
Smartyの扱いに慣れていないWEBデザイナーなどはなおさらです。

これを機にPHPのほぼ標準と言っていい、テンプレートエンジンであるSmartyを覚えましょう。


ってことで、以上。簡単に説明しました。
インストーラーはありますが、結構大変な作業だと思います。

EC-CUBEに限らずですが、
インストーラーが整備されたCMSなどのOSSのインストール作業が
「簡単」だと言う人が一部いらっしゃいますが、
大きな間違いです。

特にPHP+MySQLでできたOSS(たとえばEC-CUBEやwordpressなど)は
サーバー条件によりかなり挙動に差があります。
場合によっては、どうにもならないようなセキュリティホールを作ることにもなりかねません。

ぶっちゃけた話、このページの記事も安全なのか自信ありません。
(まだ運用開始もテスト運用もしていないため)
このページの内容を利用する場合は、
必ずテストされた上でのご利用をオススメします。

何万円もしはらうことはなりますが、
自信がないのであれば、お使いのサーバーホスティングサービスにご相談いただいて、
有償のインストールサービスを利用することを強くオススメします。

8 月 2

このところFilemakerのなでしこプラグインが出てから、
楽しくなってしまってなでしこばっか触ってます(^-^;




ということで、なでしことFilemakerの連携を考えてODBC接続してみました。

※このページはなでしこプラグインとFilemakerの連携ではなく、
 本家なでしこアプリケーションとFilemakerの連携を想定していますのでご注意ください。

※ODBC接続は、なでしこプラグインでも使えることを確認しました!!
 これチョ~~~~便利!!!

幸い、なでしこにはADO接続機能が備わっているので、比較的簡単に接続ができます。
以下説明はFilemaker9を想定していますが、8、8.5でもOKだと思
います。(多分)

8、8.5はドライバーのバージョンが異なるので、
なでしこの命令に書き込むドライバーの名前が変わることが分かりました。

8.5では「5.5」の部分を「5.4」とバージョンの番号を書き換えるだけで動作しました。
残念ながら8は持っていないので試してません。


また、以下説明はデフォルトの管理者権限を利用しますので、
ユーザーの設定を細かく行っている場合は、都度設定が必要です。

Filemakerの準備

まずFilemakerデータベースをODBC接続できるようにします。

ODBC接続したいデータベースファイルを開き、
メニュー → ファイル → 共有設定 →ODBC/JDBC
をクリックします。

こんな設定ダイアログが出ます。

「現在開いているファイル」の項目で設定したいファイルが反転されているのをチェックしたら、
「ファイルへのODBC/JDBCアクセス」の項目の
「アクセス権セットによってユーザーを指定」のラジオボタンにチェックを入れます。

ラジオボタンにチェックを入れると自動でこんなダイアログが出ます。
もし、出なかったら、「指定」ボタンを押すと表示されます。
このダイアログの「[完全アクセス]」の左のチェックボックスにチェックを入れ、
「OK」をクリック。

共有設定のダイアログの「OK」も押したら、設定完了です。

ちなみに、FilemakerのODBC接続は、Filemakerが起動している状態で、なおかつ、
ODBCの接続設定をしたファイルを起動しておかなければなりません。
注意してください。
(なんて面倒なんだ!!!)



ODBCドライバのインストール

FilemakerのODBCクライアントのインストールについては、
FilemakerのインストールCDに詳細な説明がありますので、そちらをご覧下さい。
一般的なWindows環境で管理者権限ユーザーを使っているならば、
ドライバ用のインストーラーを走らせるだけでOKなはずです。



なでしこでプログラミング

多くのFilemakerへのODBC接続の説明書は、
windowsのODBC管理ツールを使ってDSNの設定を行うのがよいと書いてありますが、
せっかくプログラミングして、単体アプリケーションとして動かすのだから、
わざわざDSNを設定するのは個人的にどうかなぁって思いますので、
WindowsのODBC管理ツールを使わないプログラミング方法です。


connectstrは『DRIVER=DataDirect 32-BIT SequeLink 5.5;
Host=127.0.0.1;
Port=2399;
ServerDataSource=データソース名;
UID=ユーザー名;
PWD=パスワード;』。

connectstrでADO開く。
sqlは、「INSERT INTO "テーブル名" ( "コラム1" , "コラム2" ) VALUES ( '値1' , '値2' )」
sqlで、SQL実行。
DB閉じる。

1~7行目で、ODBCを介したFilemakerへの接続について定義します。

・1行目
DRIVER=DataDirect 32-BIT SequeLink 5.5
はODBCドライバの名前を定義します。
Filemaker9を利用している場合は、上記の通り「DataDirect 32-BIT SequeLink 5.5」ですが、
Filemaker8.5を利用している場合は、「DataDirect 32-BIT SequeLink 5.4」とする必要があります。
インストールしたODBCドライバのバージョンによって最後の数字が変わりますから、
注意してください。

・2行目
Filemakerが実行されているコンピュータのホストを設定します。
通常であれば「127.0.0.1」か「localhost」で大丈夫なはずです。

・3行目
ポート番号を指定します。
「2399」固定です。

・4行目
「ServerDataSource=データソース名;」
「データソース名」のところに、ODBC接続設定をしたファイル名から拡張子を取り除いたものを指定します。
たとえば「test.fp7」というファイルに接続したい場合は「test」と指定します。

注意しなければならないのは、日本語や半角スペースの入ったファイル名です。
これらのファイル名は、そのまま入れたのではうまく動かず、
ファイル名から拡張子を取り除いたものをUTF-8でURLエンコードし、
さらにエンコードした文字列のアルファベットはすべて大文字でなければならない。
というとっても厄介な仕様になっています。

たとえば「日本語 ですよ.fp7」というファイルに接続するのであれば、

「%E6%97%A5%E6%9C%AC%E8%AA%9E%20%E3%81%A7%E3%81%99%E3%82%88」と指定します。

あまり日本語に関して考慮されたシステムではないのかもしれません…orz

・5・6行目
ファイルに設定したユーザーとパスワードを指定します。
このページの通りに設定を行ったのなら、ユーザー名は「admin」パスワードは空欄となります。

8行目以降は、データベースへ接続し、データを操作、そしてデータベースへの接続を切断するという手順です。

・8行目
ここまでで設定した内容で「ADO接続。」命令を出すと、接続します。
実行時ここでエラーがでた場合は、ここまでの設定に誤りがあるか、
ODBCドライバのインストールに失敗している可能性が高いので、
見直してみましょう。

・9・10行目
ここは変数にSQL文を代入し、その変数を使って「SQL実行」命令を使ってSQL文を実行しています。
このあたりは、SQLについて説明した参考書などをご覧下さい。

なお、一般的なSQLから逸脱した構文として、テーブル名・フィールド名が日本語の場合、
それらを「"(ダブルクォート)」でくくってやらなければならないので注意しましょう。
この点はFilemakerの説明書などにも解説がなく悩みました。

SQLを実行して、結果を得たい場合は、
「DB結果全部取得」命令などをつかうことで、
結果を得ることができます。
結果取得の方法はいくつかありますので、
なでしこの公式命令リファレンスをご覧下さい。

・11行目
「DB閉じる」命令で接続を切断します。




ざっとこんな感じです。

FilemakerのGUI機能はかなり!かなり!!かなり!!!軟弱なので、
その辺を補完するアプリケーションの構築

COMポートやUSBからの特定の信号を受け取ったときに、
テーブルへデータをINSERTする

なでしこで作ったアプリケーションが、
特定のウインドウメッセージやCOPYDATAを受信したときに、
テーブルへデータをINSERTする

メールを受信してその内容をテーブルへINSERTする

などなど、結構使えるツールが開発できるはずです。

Filemakerは確かに平易なデータベースアプリケーションですが、
その反面、暴れたくなるほど (^-^; 機能が貧弱なので、
ODBC接続を利用して機能を補完するといろいろウマーなわけです。

ただし!FilemakerはODBCの機能自体もかなり貧弱で、
テーブル設計などの条件によっては、
SELECT文などの実行のパフォーマンスが
データベースアプリケーションとは思えないほど悪いこともあります(T_T)
仕事で使うアプリケーションを作る場合は、
Filemakerデータベースのテーブル構造などを調整しながら使うことを強くオススメします。

ためしてないけど、なでしこプラグインからも接続できるのかな??
できるなら、これはこれでウマーなことが沢山あるんですが。。。

また時間ができたときに試します。

では!

 ANZXCvg