InfoQ

News

Glimmer‐Eclipse RCPアプリケーションでJRubyおよびSWTを使用

作者 Werner Schuster, 翻訳者 編集部 投稿日 2008年2月24日 午後12時13分

コミュニティ
Java,
Ruby
トピック
スクリプティング,
JRuby,
リッチクライアント/デスクトップ,
Domain Specific Languages
タグ
Eclipse,
JRuby,
SWT,
GUI
JRubyはJavaのGUIライブラリの使用を可能にする。 そのことによって、すでにJRuby GUI APIへの多くのさまざまなアプローチ(参考記事)がもたらされている。Glimmer(source)は新しいライブラリで、SWTツールキットを使用する。

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

原文はこちらです:http://www.infoq.com/news/2008/02/glimmer-jruby-swt
ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。