スクリプトエンジンの可能性
Java SE 6には、JavaScriptやRubyを含むさまざまなスクリプト言語の実行エンジンが組み込まれている。その結果、Javaプログラムの中でスクリプトを読み込んで実行できるようになった。Javaとスクリプトの実行環境間でオブジェクトをやりとりすることも、一方の環境で作ったオブジェクトのメソッドを実行することも簡単だ。
この機能強化がいったいどんな役にたつのだろうと思われるかもしれないが、この話を初めて聞いたとき筆者はわくわくした。業務システム向けの実装用フレームワークの中で活用できると直感したからだ。じっさい、現在開発中のフレームワークの中で、スクリプトエンジンは重要な役割を果たしている。
筆者が現在開発している実装用フレームワークを用いると、データ処理パターンを組み合わせてシステムを組み上げることができる。一次テーブルから複数行を読み出したうえで絞込み条件にしたがって一覧するためのパネルパターンとか、親テーブルの特定行とそれに関連する子テーブルに存在する複数行を追加・更新するためのパネルパターンといったタイプが10種類ほど用意されている。それぞれのパターン毎に規定された様式にしたがって詳細設計情報を登録すれば、フレームワークがその内容を読み込んでプログラムをダイナミックに立ち上げる(コンパイルも要らないし、スクリプトの自動生成さえ起こらない)。
これらのデータ処理パターンの数は少なすぎても多すぎてもいけない。少なすぎては硬直的なシステムになるし、多すぎても使い方のバリエーションがありすぎるゆえに使いにくくなるうえ、微妙に異なるバリエーションの中から選ぶのが面倒になる。そこらへんのバランスを考慮して選りすぐったパターンの数が10種類ということだ。
それぞれのパターンを支援するクラスを作る際に考慮しなければならないのは、個々のパターンにおいてもなるべく多彩な仕様を扱えるようにすることだ。しかしそのためにパターン毎の仕様様式を複雑化しすぎては、詳細設計情報の登録過程が煩雑になる。かといって単純すぎれば、きめ細かいプログラムを生み出せなくなる。
スクリプトエンジンは、フレームワークの枠組みの複雑さを抑えたままで多彩なプログラムを実現するためのカギとなる。すなわち、個々の詳細設計情報の中で、データ処理過程の指定タイミングで実行されるべきスクリプトを記述できるようになっている。たとえば、導出属性の計算手順や入力値の妥当性検査といった項目制御に関する仕様を、必要に応じてスクリプトで記述できる。
こういった「個々のプログラムの特殊性」をフレームワークで扱うために、スクリプトエンジンは欠かせない。類型的な動きをパターンにまかせるいっぽうで、特殊な部分も配慮できるようになるからだ。スクリプトエンジンが使えるようになったと知らなかったら、筆者はJavaで実装用フレームワークを自作しようとは思わなかっただろう。それほどに、実装用フレームワークとスクリプトエンジンの相性はいい。
| 固定リンク | コメント (0) | トラックバック (1)