Glimmer(source)の作成者であるAndy Maleh氏(サイト・英語)と情報交換し、プロジェクトの概要と今後の展望について伺った。Andy氏は、Glimmerの背後にある設計原理について説明している。
Glimmerの背後にあった当初の目的は、堅固なプラットフォーム非依存のUIテクノロジーに依存することで、Rubyを使用したデスクトップアプリ ケーション開発を促進することであった。Eclipse SWTはたまたまその役目を果たしたので、RubyのJRuby実装で再利用された。 GlimmerのAPIは、以下の原理を鉄則とし設計された。JFaceは、便利なコンポーネントの層であり、基本SWTウィジェット上などにビルドされる。Glimmerはまた、以下についてもサポートしている。その他、APIはRubyで使用可能なあらゆる言語技術を利用するよう設計されている。それにより、デスクトップアプリケーション開発が容易になることが 期待される。ビルダースタイルの構文は、たまたまこういった技術の1つであるので、デベロッパがHTMLを使用してWebユーザインターフェイスを作成す るのと同様の方法で、デスクトップユーザインターフェイスを作成することを可能にするよう使用された。視覚的にマップするコードを、一度レンダリングされ たユーザインターフェイスの様子に記述することでおこなわれる。 とはいえ、Glimmerの目的がおこなうのは、ビルダースタイルの構文の提供にとどまらない。たとえば、Glimmerはデータバインディングサポート および高性能のカスタマイズ可能なデフォルトを搭載している。
- 簡潔かつDRY
- タスク完了に最小の情報のみを要求
- 構成に関わる決まりごと
- 既存のSWTデベロッパにとって、できる限り予測可能
Glimmerは、構文だけでなくアーキテクチャーにおいても最小主義である。拡張が非常に簡単で、キーワードごとに構文に役立つハードコードをデベロッ パが必要としないような設計であった。実際これが、Glimmerが製品を買ったその日から使えるようにサポートする理由である。
現在Glimmerは、JFaceウィジェットで動作している。事実、(親、スタイル)コンストラクターがある限りは、あらゆるカスタム SWT/JFaceウィジェットをサポートする。 Glimmerは、ビューやエディターのようなRCP UIコンポーネントをビルドするために使用可能である。Glimmer向けにデータバインディングサポートの開発を始めたとき、確かにJFace Data-Bindingフレームワークの再使用を検討した。しかしながら、最新のAPIは静的な型付きメソッドの呼び出しを必要とし、それがRubyの 動的な性質とうまくかみ合わないのである。そこでゼロからのRubyでのデータバインディングサポート開発はより単純なようになった。Glimmerのデータバインディングアプローチについてさらに深く考えてみる(source)。
GUIライブラリの重要な側面の1つは、コンポーネントのレイアウトであり、それもGlimmerで対応している。
現在Glimmerには、高性能なデフォルトがありShell、CompositeおよびGroupのような複合ウィジェットのレイアウトをする。たとえばCompositeを宣言する場合、自動的にレイアウトは共通使用のGridLayoutにデフォルトする。それでも、APIのコンシューマーは必要に応じてデフォルトを変更することができる。Glimmerの既存の機能および今後の予定について尋ねると、Andy氏は以下のように回答した。
現在、Glimmerは以下をサポートしている。GlimmerはEclipseプロジェクトとして提案されている(source)。Andy氏は、その理由を以下のように説明している。近い将来、GlimmerはTree、ComboおよびListのような他のウィジェット向けにデータバインディングサポートを提供し、SWTやJFaceのその他のウィジェット向けに高性能なデフォルトを提供する予定である。
- Shell、Composite、Group、Text、Button、SpinnerおよびLabelのようなごく一般的に使用されているウィジェットに予め定義された高性能のデフォルトで、SWTやJFaceウィジェットをレンダリングする
- テキスト、矢印ボタン、チェックボックスボタン、ラジオボタンおよびテーブルのデータバインディング
- 新たに提供されたキーワードにコマンドハンドラーを記述することで、構文を拡張する機能
以下のような今後の計画がある。
- RCP開発を容易化する考えの研究
- SWTがAjaxウィジェットのサポートを開始する場合に備えた、AjaxコンポーネントのサポートでRailsを補強
Eclipseプロジェクトの作成背景にはインセンティブがあった。原文はこちらです:http://www.infoq.com/news/2008/02/glimmer-jruby-swtGUI DSLはRubyでのEclipse開発を簡易化する良い第一歩であるが、それは単に氷山の一角に過ぎないかもしれない。確かに今後の予定にはRCP開発 の簡易化に向けた研究が含まれるが、JRubyスクリプトからのEclipseプラグインの作成は実際、その内の1つである。 プラグイン環境における現在の問題分野について、まだじっくり考えてはいないけれど、Rubyの表現豊かな構文からプラスになる可能性を秘めた2つの分野 は、拡張ポイントの定義とプラグインの構成または統合である。
- Eclipseのコミュニティの支援を通して、Glimmerの堅固さとEclipseテクノロジーへの依存を改善する。
- 経験豊かなEclipseのデベロッパに公開し、フィードバックを得る。
- 幅広く宣伝し、認知され、支持を受ける。