←FileMaker関連情報
FX.php日本語対応版/FX_charset
iVikingより配布しているFX.phpは、PHPからFileMaker Proのデータベースに接続するためのライブラリクラスです。
比較的最近の話題
Ver.4.0になって使い方がちょっと変わりましたが、そのうちページに記載しようと思ったら、もうVer.4.2にまでなっている…。(2006/1/4)
基本的な使用方法
FX.phpは本家にあるものをダウンロードしてください。以前までは、日本語を通すためのラッパークラスを配布していましたが、Ver.4.0からその仕組みがオリジナルのFX.phpに統合されたので、このページからはファイルの配布はしないことにしました。以前に配布していたファイルに、オリジナルに付属するサンプルWebアプリケーションを日本語環境で動くようにしたものを含めていますが、オリジナルに少しの改造をするだけで使えるようになるので、あえてVer.4.0対応のものとしては配布しないことにします。
稼働環境について
- FileMaker 7シリーズでは、FileMaker Server 7 Advancedが必要です。FileMaker Pro 7ではFXは利用できません。
- FileMaker 6シリーズでは、ファイルメーカーPro 6あるいはファイルメーカーPro 6 Unlimitedで利用できます。
- PHPのバージョンについては、特に細かな規定はありませんが、Ver.4.3系列でチェックをしています。
Windows版でのmb_string
日本語文字変換では、mb_stringを使っています。LinuxなどUNIX系のみなさんは、ぜひとも、mb_stringをコンパイル時に指定するか、指定してビルドされたものを使ってください。もっとも、コード変換部分はiconvで置き換えは可能とは思います。
Windows版のPHPでは、mb_stringにネイティブのライブラリを使うようです。mb_stringの部分で「関数がない」というエラーが出る場合には、たとえば、次の点などをよく確認してください。
phpの設定が入っているphp.iniにある以下の行を有効に(行頭に;がない状態に)してみてください。php.iniファイルはphpinfo()コマンドで表示される情報に書き込まれていますが、たとえば、c:\apache\apache\php.iniなどとなっているようです。
extension_dir = "c:/php/extensions/"
extension=php_mbstring.dll
PHPのプログラムの作成方法
本当はFX.php自体の詳しい使い方を日本語でご紹介しないといけないのですが、とりあえず、オリジナルの英語の文書をご覧ください。その上で、FX.php Ver.4.0以降での使い方を紹介します。
FX.phpで日本語をきちんと処理する方法
ここでは、ページをUnicode(UTF-8)で記述する方法を説明します。
- HTTPのヘッダないしはHTMLのヘッドセクションで、必ずUTF-8を使うことを宣言します。なくても見えるブラウザもあるかもしれませんが、何からかの形で付けます。たとえば、ページの最初に、以下のようなヘッダ制御のステートメントを入れておくといいでしょう。
<? header('Content-Type: text/html;charset=utf-8'); ?>
- FXのインスタンスを生成した直後あたりに、SetCharacterEncodingメソッドを呼び出します。引数にエンコード名を指定します。たとえば、次のようになります。
$BookQuery = new FX($serverIP, $webCompanionPort, $dataSourceType);
$BookQuery->SetCharacterEncoding('UTF-8');
- 文字列処理をする場合は、mb_stringライブラリの設定にも注意を払ってください。たとえば、以下のメソッドが必要になるかもしれませんし、場合によってはphp.iniファイル等での設定を行います。PHPで文字列処理するときにはmb_internal_encodingは必須と思われますが、mb_http_outputはなくてもいいようです。
mb_internal_encoding('utf8');
mb_http_output('utf8');
FXを使ってEUCのページを作成する場合
作成するPHPのページがEUCで稼働する場合には、以下の点を注意します。(なお、筆者はここの記述については実際のアプリケーションでは確認していませんので、もし間違いがあるようなら教えてください。)
- HTTPのヘッダないしはHTMLのヘッドセクションで、必ずEUCを使うことを宣言します。たとえば、ページの最初に、以下のようなヘッダ制御のステートメントを入れておくといいでしょう。
<? header('Content-Type: text/html;charset=EUC-JP'); ?>
- FXのインスタンスを生成した直後あたりに、クラス内で使う文字コードの設定を行います。一方は、EUC-JPですが、もう一方はutf8にしておく必要があります。
$BookQuery = new FX ($serverIP, $webCompanionPort, 'FMPro7');
$BookQuery->SetCharacterEncoding('EUC-JP');
$BookQuery->SetDataParamsEncoding('utf8');
- 文字列処理をする場合は、mb_stringライブラリの設定にも注意を払ってください。たとえば、以下のメソッドなどが必要になるかもしれませんし、場合によってはphp.iniファイル等での設定を行います。PHPで文字列処理するときにはmb_internal_encodingは必須と思われますが、mb_http_outputはなくてもいいようです。
mb_internal_encoding('EUC-JP');
mb_http_output('EUC-JP');
ファイルメーカーPro Ver.6まででの利用
ファイルメーカーPro 6までで使う場合には、Webコンパニオンをオンにして、データベースを公開します。(筆者はここの記述については実際のアプリケーションでは確認していませんので、もし間違いがあるようなら教えてください。)この方法を使うと、WebサーバとファイルメーカーProを同一マシンにすれば、つまりはファイルメーカーProへのアクセスは127.0.0.1のIPアドレスからの接続だけになります。従って、Webサーバへの接続がどこからでも、ファイルメーカーへは127.0.0.1経由の接続だけになり、結果的にUnlimited版を購入しなくても、多数のユーザがWeb経由で接続が可能です。しかしながら、こうした使い方は使用許諾上許されていませんので、10ユーザ以上の利用がある場合は、ファイルメーカーProはUnlimited版をご利用ください。
- HTTPのヘッダないしはHTMLのヘッドセクションで、必ずEUCを使うことを宣言します。たとえば、ページの最初に、以下のようなヘッダ制御のステートメントを入れておくといいでしょう。
<? header('Content-Type: text/html;charset=EUC-JP'); ?>
- FXのインスタンスを生成した直後あたりに、クラス内で使う文字コードの設定を行います。一方はEUC-JPですが、もう一方は、SJISです(ファイルメーカーProが日本語版の場合)。
$fx = new FX_charset( ..., 'FMPro5/6' );
$fx->SetCharacterEncoding('EUC-JP');
$fx->SetDataParamsEncoding('SJIS');
なお、ページのエンコードをUTF-8にする場合は、ヘッダとSetCharacterEncodingの引数を、'utf8' にすればいいでしょう。
FXに追加されたメソッドの使用方法
日本語対応のために、FXには2つのメソッドが追加されています。
| 追加メソッド | 解説 |
| SetCharacterEncoding($encoding) | データベースから得られたデータを、このメソッドの引数で指定した文字セット/エンコーディングの文字列に変換する。既定値はUTF-8。''を引数に指定すれば、FXと同様な動作になる。 |
| SetDataParamsEncoding($encoding) | データベースへのリクエストに含める文字列の文字セット/エンコーディングを指定する。既定値はUTF-8。''を引数に指定すれば、FXと同様な動作になる。 |
いろいろなお話
- 2006/1/4:FX.php Ver.4.x向けにページを書き直しました。昔のページはこちらにあります。
- 2005/8/14:PHPからFileMakerのデータベース処理を可能にするクラス「FX.php」のVer.4.0がリリースされました。このバージョンから、私の作った「日本語対応」部分が統合され、FX.phpだけで入出力部分のエンコードを指定できるようになっています。
Ver.4.0のChanges.txtの2項目目に私の名前が出ています。オープンソースソフトにいくらかでも貢献できたことにうれしく思うと同時に、このことは日本のFileMakerコミュニティでFX.phpを使っているみなさんの成果でもあります。これからもよろしくお願いします。
- 2005年1月30日に熊本で開催されたファイルメーカーPro 九州ユーザーズミーティング勉強会で、『FileMaker Web公開のもう1つの選択肢「FX.php」』として紹介をしました。プレゼンテーション資料
- FileMaker Server 7 Advanced対応のFX.phpがVer.3.1としてリリースされました。そこでは非アスキーコード文字列対応のソースはマージしてくれなかったので、非アスキーコード文字列対応のラッパークラスFX_charsetを作り、それを配布することにしました(2005/1/28)。
- 2005/1/28:FX_charsetを公開しました。これに伴って、ページの内容を一新しました。以前のページは、こちらに残してあります。
2004年8月末に、フェニックスでFileMaker Developer Conference 2004がありました。そこで、FX.phpの開発もとであるiViking.orgがブースを出展していたので、訪問してChris Hansenと記念写真をとりました。ブースはほとんど彼一人が3日間やっていたので、大変だったでしょう。
DevCon 2004ではFileMaker 7シリーズ系列のしんがり登場となる「FileMaker Server 7 Advanced」がリリースとなりましたが、iViking.orgではさっそく、FX.php Ver.3.0として、FileMaker Server 7 Advanced対応版をリリースしています。
どうやら、USAのFSAの一部には発売前にソフトがシードとして配布されるようなので、こうした対応ができますね。さっそく、Ver.3.0の日本語化を開始しています。仕組みは変わっていないので、すぐにできると思います。ちなみに、写真では顔を揃えていますが、彼は座っていて、私は立っています(笑)。アメリカ人の雑踏の中からでも首が出ているくらいChrisは背が高いのです。(2004/9/1)
- 2004/8/19に開催されたPHPカンファレンス2004で日本語版FX.phpをプレゼンしました。プレゼンテーションのPDFファイル
- 2004/8/19:8/13〜8/19 16:00に配布していたファイルにバグがありました。すみません。修正したものをアップしましたので、そちらをご利用ください。(お知らせいただいた堀さんに感謝します)
- 2004/8/13:日本語のフィールド名に対応しました。当初配布したもの(Release 1)は、ファイルメーカーProで日本語のフィールド名を指定できませんでしたが、新たにRelease 2にアップデートします。
- 2004/6/5:FileMaker Pro 7には、従来までのXMLベースのWeb機能がないため、FX.phpは使えません。また、フォーマットが違うとかにしてもWebコンパニオンの仕様が公開されていないため、おそらくPro 7での利用は無理でしょう。また、Server 7にはWebアクセス機能がないので、Server 7 AdvancedでしかVer.7系列ではFX.phpは使えないでしょう。また、その場合もソースは作り直すことになるでしょう。
- 2004/4/11:ファイルメーカー東京ミーティングで『PHPからファイルメーカーProを利用する FX.phpを日本語化』として発表をしました。レポート/プレゼンテーションと素材
- 2004/4/2:ファイルメーカー東京ミーティングが2004/4/11に開催されますが、FX.phpの日本語化についての解説をするつもりです。
- 2004/3/31:FX.phpの作者のChris Hansenさんより、メールの返事をもらえました。日本語対応についての感謝をいただき、加えて、今後のリリースでクレジットしてくれるということです。すでにファイルメーカーPro 7がリリースされておりUnicodeベースになっていることから、今後についてはどうしようかという話にもなっています。
- 2004/3/29:1週間近く前にiVikingにメールで「日本語化可能になった」と伝達してファイルを送ったのですが、何の返答もないので、こちらでアナウンスすることにしました。
- 2004/3/29:ファイルメーカーPro 6、Mac OS X 10.3.3という環境でしかチェックをしていませんので、何か留意点があれば、教えていただければ助かります。
- 2004/3/29:他の言語にも果敢にチャレンジしてください。報告をいただければと思います。