タイトルWebObjects 5で日本語を表示する方法カテゴリーWebObjects
作成日2001/5/28 18:50:4作成者新居雅行
2001年5月にWebObjects 5がリリースされた。これまでのバージョンのように、Objective-Cを使って作られたフレームワークではなく、Javaを使って作成されたフレームワークへと大きく変動している。フレームワークの機能の上では前のバージョンとは基本的には変わらないようだが、動作させる土台が違うというのがどのように影響するのかは気になるところだ。今後こうした情報はアップルなどから提供されることを期待したいが、とりあえず、WebObjects 5で簡単なアプリケーションを作ることで、日本語が利用できるかどうかの検証を試みた。なお、本稿は、プラネットコンピュータの田畑英和氏と共同で取り組んだ。

まず、WebObjects 5についての基本的な機能を説明しておこう。WebObjectsはアプリケーションサーバと言われるジャンルのソフトウエアだ。Webサーバと連動して、サーバで稼働するようなアプリケーションを作成する機能が基本になる。他にもいくつかの形態のアプリケーションが作成できるが、代表的なものがWebサーバで稼働するものだ。そして、クライアントではWebブラウザを使ってアプリケーションを利用することができる。もちろん、クライアントの機種は基本的には問わないということになる。サーバアプリケーションでは、データベースのアクセスを行うことを中心に、ページ生成をプログラムで記述することができる。データベースの利用においても、データベースをオブジェクトとしてモデル化することができる。全体的にオブジェクト指向に基づいたプログラムを作成することができ、効率的かつ高機能なアプリケーションを短期間で開発するということを可能にするといったものだ。
WebObjectsは、そうしたアプリケーションを実行して利用するということに加えて、アプリケーションの開発のためのツール群も併せて提供している。こうした最適化されたツールが使えるということも大きな特徴だ。開発ツールは、Mac OS XとWindows 2000で利用できる。一方、作成したアプリケーションは、Java VMがあれば稼働は可能だ。つまり、Pure Javaなアプリケーションが生成できる。従って、Mac OS XやWindows 2000はもちろん、Linuxなどでも稼働することが原理的には可能なのである。
データベースへのアクセスは、EOF(Enterprise Object Framework)という機能を使う。EOModelerというツールでモデル化すると、データベースの内容をプログラムではオブジェクトとして扱える。プログラム上でオブジェクトとして扱えるのはもちろんだが、生成するWebページを設計するツールであるWebObjects Builderにおいて、データベースのフィールドと、ページ上に配置するコンポーネントを結ぶだけで、たとえばフィールドの値をページに表示できるといったことが実現している。こうしたツールから稼働環境までを一貫して提供しているというのがWebObjectsの大きな特徴である。

WebObjectsのアプリケーションがデータベースを利用するとき、アダプタというミドルウェアを介して行う。従来のバージョンでは、アダプタが、特定のデータベースに対応していた。たとえば、Oracle用とかOpenBase用アダプタがあるという具合だ。一方、WebObjects 5では、標準の状態ではJDBCのドライバを使うアダプタだけが組み込まれる。つまり、JDBCドライバ(2.0対応が必要)さえあれば、その汎用アダプタを介して、WebObjectsアプリケーションがデータベースを利用できるというわけだ。今後は効率化などのためにJDBC向け以外のアダプタも出てくる可能性もないわけではないが、アダプタを開発する労力を考えれば当面はJDBCドライバを利用できる環境での稼働が中心になると思われる。なお、WebObjects 5にはOpenBaseが付属され、インストールによってこちらも利用できるようになる。管理ツールなどが/Applications/OpenBaseにインストールされて利用できるが、おそらく組み込まれるOpenBase自体はデモ版の模様である。OpenBaseのJDBCドライバもインストールされる。ドライバの置き場所は、/Library/Java/Home/lib/extである。

WebObjectsでの開発ツールの中では、Project Builderが中心的な役割を担う。4.5までのProject Builderは独特のウインドウ構成だったが、WebObjects 5では、Mac OS XのDeveloper Toolsとして提供されるProject Builderを使うようになった。Project Builderは2001年5月にリリースされたVer.1.0.1以降を使うのである。従って、CocoaやCarbonアプリケーションの開発環境と全く同じものを使うということになる。WebObjects 5をインストールした場合の、新規プロジェクト作成ウィザードは次のようになる。WebObjects関連のプロジェクトのテンプレートが一覧されているが、一般的なWebアプリケーションは、これまで通り「Web Application」を選択してプロジェクトを用意すればよい。

□Project Builderでプロジェクトを新規に作成するときのダイアログボックス
 

プロジェクトには、最初からいくつかファイルがすでに存在するが、Application.java、Session.java、DirectAction.javaはアプリケーションの基本的な骨格とも言えるソースだ。特に、Application.javaはアプリケーション全体の振る舞いを定義することにもなる。そして、WebComponentsのグループには、Mainというグループがあり、そこにいくつかファイルがある。これらいくつかの定義ファイルをもとして、Webページを生成するわけだ。つまり、このMainという名前のフォルダで、1つのページを生成する諸定義を行うということである。Main.javaはプログラムを記述するので、その内容の編集は通常Project Builderで行うことになる。

□WebApplicationのテンプレートの初期状態
 

そして、Main.woは生成するページのフォーマットを定義するフォルダだ。そのフォルダにいくつかファイルがあるのだが、基本的にはそうした定義をまとめて編集するツールであるWebObjects Builderを使う。Project Builderでは、フォルダのアイコンであるMain.woをダブルクリックすることで、WebObjects BuilderがMain.woを編集する状態で開く。(なお、これらのツールの詳細な利用方法は今回の記事では割愛させていただく)

□WebObjects Builderでページのフォーマット定義を行う。
 

さっそくトライアルにかかってみよう。前の図は、以下に説明するようにコンポーネントを配置した結果である。WebObjects Builderのページ編集画面では、いきなり日本語文字列をキータイプすることが可能である。結果的には、こうして入力した日本語文字列は、定義ファイル上ではShift-JISコードで保存されている模様だ。ちなみにWebObjects Builderでは保存するときにコード体系を指定することができる。また、*.wooファイルにも文字コードを指定する文字列が記述されている。
テストのために、フォームを定義し、その中にテキストボックスとSubmitボタンを配置した。テキストボックスのvalueプロパティをtext1としておく。Main.javaにString型で名前がtext1のインスタンス変数が定義される。そうすれば、Main.javaの中で、text1というインスタンス変数を参照することで、テキストボックスに入力したデータを取り出すことができる。また、Webページには、WOTextによって、text1の値を表示するようにもしておいた。そして、Submitボタンをクリックすると、doActionというメソッドが呼びされるようにしておいた。自動的にMain.javaの中にdoActionメソッドが作成されるはずだ。そこでは、text1の文字コードを調べるために、以下のようなプログラムを記述しておくことにした。

WOComponent doAction() {
for(int i=0;i System.out.println(i+":"+((int)text1.charAt(i)));
return null;
}

(続く)
関連リンクプラネットコンピュータ