Macintosh Developer Online (MDOnline)


2001年5月28日発行号 - WebObject 5で日本語



一連のWWDC関連プレゼントですが締め切りを「27日月曜日」と2度も配信してしまいましたけど、矛盾していますね。で、遅いほう、つまり本日28日月曜日到着分までをプレゼント応募とさせていただきます。申し訳ありません。従って、明日の未明に大抽選会を我が家で開催します。願掛けは丑三つ時にどうぞ(笑)。
それから、本日の配信で、MOSAのセミナーについての記載しています。もちろん、MOSAのセミナーなのでMOSA会員は安価に受講できますが、MDOnline購読者もMOSA会員価格で受講していただけるということになりました。申し込みはメールで行いますが、そのメールに「MDOline購読者」と記載していただければ、MOSA会員価格でOKということです。記事はMacWIREで公開される可能性があるので、そこまでは記載せず別枠での告知になりましたが、ご理解いただければと思います。
それから、以下のプレゼント品を技術評論社様よりいただきました。そこそこの数をいただきました。この場を借りてお礼を申し上げます。で、例によって募集です。今度は曜日を間違えないようにしよう。

==================プレゼント
「Mac OS X実践活用ブック」(技術評論社) 4冊
―――――――――――――――――――――
申し込み方法:<msyk@locus.co.jp>宛にメールをする
 メールのタイトル:【Mac OS X実践活用ブック】を希望
 メールの本文には、名前、住所、郵便番号、当選時の公表名、を記載
 メールは、MDOnlineに登録のメールアドレスから送付してください
   有償での購読者、MOSA会員としての購読者、ヘリオグラフ顧客様
   としての購読者の方々に応募の権利があります。
 締め切り:2001年5月30日(水曜日)
(新居雅行 msyk@mdonline.jp


倉橋浩一、じつはWebObjectsで飯食ってます》WWDC 2001のWebObjects関連セッションはこんな感じ

というわけで、WWDCの全日程が終了しました。

私ははじめからおわりまで、ずーっとWebObjects関連のセッションだけに出ていました。ので、それ以外のセッションのことはわかりません。

WOに関していえば、「より間口を広げるためのセッション」が主になったような印象がありました。新居さんが「勉強するための」とおっしゃってますが、まさにそういう感じです。

ただ、レベルは全体的に昨年よりも低めだったと思います。また、昨年の焼き直しというと言葉は悪いですが、昨年の内容を少し平易にしたようなセッションもありました。そういう意味では、セッション「だけ」に限ってしまえば、上級者にはちょっと物足りないWWDCだったかもしれません。

もっとも、WWDCはセッションに参加するための場所ではありません。日本の他のデベロッパの方々との顔合わせはもちろんのこと、AppleのWO担当者をつかまえて、普段疑問に思っていることを解決したり、要望をぶつけてみたりする貴重な場です。そういう意味では、新しいWO 5についてはまだ情報も少なく、聞くことがたくさんありました。

「ビジネスカード」で膨れ上がった私の名刺入れが、何よりの財産かもしれません。

さて、「WOで飯喰ってます」が、「サンホゼで飯喰ってます」になってしまいました。私は日曜日に帰国します。寿司など日本食はたらふく食べていたのですが、今、猛烈に、日本蕎麦が食べたいです。こっちの麺類、パスタまで含めて、全部(と断言するぞ)ゆで過ぎなんですよね。コシのある麺を、キレのいいツユにつけて食べたいです。もちろん、思いっきり音をたてて。蕎麦を食べ終わったら、「掲示板」の続編に取りかかりますので、どうぞよろしくお願いいたします。

―――2001.5.21 やたら日射しの強いサンホゼにて

追伸:
ヘイワードYUKOさん、あれはオーストリア人が「TODAY」と言ったのではないか、という珍説もあります(笑)。

残念ながら豆腐ケーキにはチャレンジできませんでした。なお、私が御飯にすき焼きをぶっかけて、すき焼きドンブリにしていたら、隣の米国人がさっそくマネしてました。次回は豆腐ぶっかけライスを普及させて、アメリカ人のコレステロール低下に少しでも貢献したいと思います。
[倉橋浩一/テクニカル・ピット]

関連リンク:WebObjectsのページ
カテゴリ:イベント, 倉橋浩一、じつはWebObjectsで飯食っています


WebObjects 5で日本語を表示する方法

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;
}

(続く)

関連リンク:プラネットコンピュータ
カテゴリ:WebObjects


WebObjects 5で日本語を表示する方法(続き)

後は、ビルドして実行するだけだ。ビルドや実行の方法は、CocoaやCarbonアプリケーションのときと同様、Project Builderの左上のボタンを使うことで可能である。トンカチのアイコンでビルドを行い、ディスプレイのアイコンで実行を行う。Project Builderのコンソール領域に赤い文字でなにやらいっぱい出てくるが、しばらく待つと、Internet Explorerが起動して作成したページが見えるようになる。この段階では、ページに記述した日本語の文字列が文字化けしているのを確認できるはずだ。WebObjects 4.5もいくつかの手当をしないと日本語が処理できなかったが、はたして、WebObjects 5ではどうなっているのだろうか。(ちなみに、Main.javaの変更をしたとき、いったんプロジェクトの生成結果をクリアしないと、ビルドしたアプリケーションに変更結果が反映されないという症状に出くわしている。筆者の環境に依存するものか不具合かは不明だが、同じような症状の方は、いったんクリアしてビルドしてみよう。)

□ビルドした結果をWebブラウザから参照したが文字化けしている
 
□テキストフィールドに「あいう123」と入力してSubmitボタンをクリック
 

いずれにしても文字化けしているが、ここでテキストフィールドに文字列を入力してSubmitボタンをクリックすると、Main.javaのdoActionが呼び出される。このとき、WebObjectsのコンポーネントの機能により、インスタンス変数のtext1はテキストフィールドに入力された値が代入しているはずだ。そして、文字コードを適当にダンプしているのだが、テキストフィールドに「あいう123」と入力してSubmitボタンをクリックした後に、Project Builderのコンソールには、次のように数値が出てくる。なお、右側の16進表示は、分かりやすいように表示結果に付け加えたものだ。

0:130 =82H
1:160 =A0H
2:130 =82H
3:162 =A2H
4:130 =82H
5:164 =A4H
6:49
7:50
8:51

結果を見て明白なように、Stringなのに中身はShift-JISエンコードされている。文字数も9文字と違っているのは、コードの2バイトが別々になっているのである。これでは、その後のJavaのプログラムでも支障を来す。
なお、WebObjectsのコンポーネントを使って変数text1の値をページ上に表示しているが、ここだけ文字列はきちんと表示されてしまっている。結果はきちんと表示されるが、要はShift-JISのままプロセスを流れていった結果、たまたまうまく表示されているものだと考えていいのではないかと思われる。

なお、このアプリケーションを起動したときに、MainというグループのWeb Componentsによるページが表示されるということは、Application.javaの中のプログラムで定義されている。

ここで、日本語を表示できるように、Application.javaに以下の2つのメソッドを追加してみる。これにより、表示するページの生成やあるいは受け取ったリクエストの文字エンコードを明確に定義することになる。


public void takeValuesFromRequest(WORequest aRequest, WOContext aContext){
aRequest.setDefaultFormValueEncoding("Shift_JIS");
aRequest.setFormValueEncodingDetectionEnabled(true);
super.takeValuesFromRequest(aRequest, aContext);
}

public void appendToResponse(WOResponse aResponse, WOContext aContext){
aResponse.setContentEncoding("Shift_JIS");
super.appendToResponse(aResponse, aContext);
// aResponse.setHeader("text/html; charset=Shift_JIS", "Content-Type");
}

では、再度ビルドして実行してみよう。以下のように、問題なく日本語が表示できるようになった。なお、上記のappendToResponseメソッドにある最後のコメント化されているステートメントは、HTTPヘッダに指定するエンコードの記述を追加するものだ。規格上は必要なヘッダ情報だが、これは無くても日本語は表示できるようだ。

□生成するページで日本語が表示できるようになった
 
□テキストフィールドに「あいう123」と入力してSubmitボタンをクリック
 

やはり、□テキストフィールドに「あいう123」と入力してSubmitボタンをクリックしてみた。そのときのProject Builderに表示された結果は以下の通りだ。今度は、テキストフィールドに入力された結果が問題なくUNICODEと認識しているのが分かる。文字数も問題ない。

0:12354 =3042H
1:12356 =3044H
2:12358 =3046H
3:49
4:50
5:51

WebObject 4.5でも同様なメソッドの追加を行っていたが、エンコードの種類を指定するのに数字を使っていた。しかしながら、WebObjects 5では、エンコードの指定を、文字列で行う。Javaの標準的なエンコード指定方式に従ったものだと思われる。なお、それ以外にとりあえずは変更しなくても、日本語の表示はできるようになったということだ。

実際のWebObjectsアプリケーションではデータベースの接続もともなうのであるが、今回はデータベース接続は行わない状況での実験を報告した。データベース利用を行うとすると、WebObjectsアプリケーションからアダプタを介してJDBCドライバを利用する。階層の上ではここまではとにかく文字列はUNICODEで一定ということになる。WebブラウザとアプリケーションのやりとりはShift-JISなのだが、おそらく、前記のプログラムのようにリクエストとレスポンスに文字コードの記述を加えるだけで、アプリケーションのプログラムの中では、UNICODEで統一して扱われると考えて良さそうだ。結果的に、データベースで日本語が利用できるかどうかは、JDBCドライバがきちんと日本語で動作することや、そのJDBCの動作に合わせてデータベースエンジンが日本語をきちんとハンドリングするかどうかということに結果的に集約されることになる。つまり、責任という意味では、WebObjects外のソフトウエアに依存されるわけだ。結果的にデータベースの提供側から、どのバージョンのJDBCドライバを使い、どんな文字エンコードをデータベースエンジンで設定するのかといった情報が与えられる必要があることも言えるだろう。

関連リンク:プラネットコンピュータ
カテゴリ:


MOSAがWWDCの報告会とMac OS Xに関する開発セミナーを開催

MOSA(Macintosh Os Software Association)は、第4回テクニカルセミナーを2001年6月16日(土)に開催する。いずれも、2001年5月に開催された開発者会議のWWDC 2001の内容を受けてのものとなる。13:30〜19:00に開催されるがタイムテーブルはWebサイトを参照していただきたい。場所は東京お茶の水にある中央大学駿河台記念館である。
第一部は「Mac OS X 対応アプリケーション開発セミナー」として、「nibベースカーボンイベント対応アプリケーション作成」をコーシングラフィックシステムズの高橋政明氏、「ネイティブ化へ向かうMac OSの開発現場」をMDOnline編集長の新居雅行氏が講演を行う。高橋氏のセッションでは、Mac OS XネイティブなCarbonアプリケーション作成で新たに浮上してきたInterface Builderで作成したGUIリソースを使ったアプリケーション作成についての実践的な具体例を解説する。新居の講演では、CocoaやPure Javaを中心にして、最新の事情や具体的な開発手法の説明などを行う予定になっている。第二部としては、「2001 WWDC報告会」として、第一部の講師に加え、オッティモの小池邦人氏も加わり、パネルディスカッションが行われる。また、学生会員としてMOSAより派遣された東京都立大学の荻野淳也氏および稲野辺久智氏による「学生が見たWWDC、感想ほか」のセッションも行われる。定員は40名で、締め切りは6月13日、参加費は12,000円だが、MOSA会員は8,000円、MOSA学生会員は3,000円となっている。なお、WWDC 2001のセッション内容は基本的には守秘義務のある内容であるが、セッションでは非公開の事実ばかりがでてきたわけではなく、すでに公開された内容だけのセッションもそこそこあった。従って、MOSAのセミナーでも、ある程度はWWDCでの内容を公開することも可能であるので、「肝心なところは言えません」といった言い訳ばかりになるということはないと思われる。

関連リンク:第4回テクニカルセミナー「Mac OS X 対応アプリケーション開発セミナー」と「2001 WWDC報告会」
カテゴリ:Mac OS X, イベント


MOSAがMac OS Xのプログラミング初心者向け相談会を開催

MOSA(Macintosh Os Software Association)は「Macプログラミング相談室(初心者・入門者向け)」として、プログラミング初心者向けにMac OS X向けの開発についての疑問に答える形の講座を開く。講師はMOSAプログラミング道場講師の高橋真人氏だ。2001年6月28日(木)の18:30〜21:00に東京お茶の水にあるエーアンドエー駿河台ビルで開催される。Mac OS Xの開発をしたことがない人はもちろん、これまでもまったくプログラミングをしたことがない人も範疇に入れて、疑問に答える形でアドバイスを行うといった趣旨のものだ。募集人員は20名で、参加費は2,000円だがMOSA会員は1,000円となる。申し込み締め切りは6月26日となっている。

関連リンク:Macプログラミング相談室(初心者・入門者向け)
カテゴリ:Mac OS X, イベント


「Mac OS X実践活用ブック」が技術評論社より出版

技術評論社より、Mac OS Xに関する書籍が発売された。掌田津耶乃氏による執筆で、「Mac OS X実践活用ブック」というタイトルで、\2,380となっている。B5変形版で420ページあまりの分量があり、比較的分厚い書籍だ。Mac OS Xの基本から、Finderの使い方、システムの設定などを含めて、半分がPart1の「基本操作&設定篇」となっている。Part2の「システム探求篇」ではシステムやアプリケーションのカスタマイズやトラブルシューティング、AppleScriptについて説明がなされている。Part3の「補足説明篇」では付属のアプリケーションや開発環境についての説明が行われている。Mac OS Xについて、まんべんなくしかも、設定のオプション1つ1つに至るまで詳細に説明されており、非常に詳しい解説書になっている。また、システムの動作についての説明もあるので、Mac OS Xを活用しながら詳しい情報も知りたい人にとっては有用な情報が得られる書籍となるだろう。

関連リンク:Mac OS X実践活用ブック
カテゴリ:雑誌、書籍, Mac OS X