WebObjectsを使って、アプリケーションに依存しているオフィス環境を、Webベースに持ち込むというテーマで連載していたこのコーナーで、少し補足事項が出てきたので、説明することにしよう。一連の連載では、Accessで作ったデータベースを、WebObjectsでWebベースで使えるようにするということを狙ったのであるが、開発という労力をあまりかけられないため、データベースはそのままに、Direct to Webの機能を使ってWebからのデータベース利用を行うということを意図して解説を行った。もちろん、Direct to Web自体はいたってシンプルであるが、逆にいろいろな制約はあるそうした点を解きほぐしながら、なんとか住所録のような単一テーブルの参照、さらには書き込みを行うところまでを説明した。その後の予定としては、カスタマイズなどとと話を進めたかったのではあるが、さらに先を見越して少し実験をしてみた。よくある伝票形式のデータベースは、伝票1枚に対して1レコードを確保するテーブルと、伝票の細目1件に対して1レコードを確保するテーブルの2つのテーブルを利用する。マスター/ ディテールなどと呼ばれているやり方だ。これが、Direct to Webを使った場合どの程度まで使えるのかを検証してみた。 作成するときには、若干のひっかかりがあった。Direct to Webのウィザードでは、主キーは問い合わせてくるのに、最初のチェックボックスをオンにしているにもかかわらず、リレーションの問い合わせをしてこないのである。なにか前提条件があるのかもしれないが、分からなかったので、結局作成したプロジェクトのEOModelerの設定ファイルを修正することにした。そこで試行錯誤して、とにかくリレーションの設定は追加できた。ダイアグラムビューにしてフィールド間をCtrlキーを押しながらドラッグ&ドロップすればいいわけだ。この状態で、Direct to Webのアプリケーションを起動してみると、きちんと、2つのテーブルの連係を取るような動きをした。しかし、このままではちょっと使えない。伝票の明細側の内容は、1つのテキストボックスに押し込められ、フィールドをカンマで区切るという見栄え以前の状態のものしか作れないのである。結果的に、かなりカスタマイズしないといけないのではないかという印象を持った。こうしたリレーションのあるテーブルを処理するようなアプリケーションをDirect to Webで構築するのと、別の一般的な手法で作成するのとでは、どちらがいいかという問題はあるわけで、それについてはさらに検討をしないといけない。 ここで、カスタマイズを少しやってみて気付いた。Direct to Webの特定のページをカスタマイズする場合、標準ページをひな形として新しくWebObjectsのページのコンポーネントを作るようなのだ。そこで、データベースのフィールド名が2バイトである場合その2バイト文字をそのままコンポーネントの定義に使うため、コンポーネントをWebObjects Builderで開くときに開くことができないというエラーが出てしまうのである。標準のフォームなどは2バイト文字のフィールド名でも問題はなかったので、それ以上手を加えないのなら、もちろんそれでいいのかもしれない。だがやはり、WebObjectsで作業する時にはフィールド名は1バイト文字で通しておいた方が後々はいいようなのである。 |