ObjectSquare

[ObjectDay2002特集]


ObjectDay2002レポート2

『浅海さんは達人プログラマー』


by あまぴょん


我が家の貧弱なネットワーク環境では、充分にストリーミングの恩恵を受けることが出来ず、会社のPCにはスピーカが付いていないという状況で、仕方なく某PCショップのADSL体験コーナで席を占有して受講してきました。でも、そのぐらいの努力はしても惜しくはない素晴らしいセッションが多かったです。その数ある素晴らしいセッションの中で一番気に入った「XMLスキーマコンパイラを核としたオブジェクト指向開発 - Java & XML on J2EE」のレポートをします。

浅海さんのセッション「XMLスキーマコンパイラを核としたオブジェクト指向開発 - Java & XML on J2EE」はDRY(Don't Repeat Yourself)原則(参考文献1)を地で行く開発者の意見として、とても素晴らしいものです。ドメイン分析、要求分析の結果をスキーマ言語であるRELAX CoreまたはRELAX NGを使ってモデリングすれば、アプリケーションの土台となるほとんどの部分がスキーマコンパイラであるRelaxerがモデルから作り出してくれるというのです。オブジェクト指向のクラスと、リレーショナルデータベースのテーブルとのマッピングといった地道な作業は、Relaxerが引き受けてくれるのです。このような下位のレイヤーだけでなく、ユーザとのインターフェースについても充分に用意されていて、WebであればRelaxer Tagライブラリを使って、似たような作業を繰り返すということをしなくてもよいです。Relaxerのオプションを替えるだけで、1つのモデルから様々なオブジェクトが作成されてしまうのです。

これだけではないんです。Relaxerを活用してJ2EEアプリケーションを開発するためのプロセス、方法論まで提言しているところがまた凄いんです。様々な方法論で採用されているロバストネス分析をRelaxerプロセスでも採用していますが、オリジナルをちょっとアレンジしています。Jacobsonらのオリジナル(参考文献2)では、オブジェクトを「バウンダリ」「コントロール」「エンティティ」の3つに分類して、分析・検証していくのですが、Relaxerプロセスでは、これら3つのオブジェクトに加えて「バリュー」オブジェクトを追加しているのがポイントです。「エンティティ」と「バリュー」はほぼ同義ととらえることも出来ますが、Relaxerプロセスではこの2つを明確に分けて考え、「エンティティ」は永続的な性質を持つのに対して「バリュー」は一時的な性質を持ち、オブジェクト間で受け渡されることを目的とします。オブジェクト間の通信(情報交換)を「バリュー」を介して行うというのがRlaxerプロセスのロバストネス分析の特徴です。

基本的にRelaxerではRELAXスキーマからJavaのプログラムを生成するといった一方向の使い方です。生成されたJavaのプログラムに手を加えても、それを元のRELAXスキーマに反映させる手段はないので、スキーマが変わったら再度コンパイルし直しになりますが、ここにジェネレーションギャップパターン(参考文献3)をうまく使うと、さらにRelaxerが使いやすくなることでしょう。

参考文献




© 2002 OGIS-RI Co., Ltd.
Prev. Index Next
Prev. Index Next.