なぜか、3 年連続で丸レクで RIA 特集。
去年までは、Flash Platform、Silverlight、JavaFX の 3 本だて (もちろん、丸山先生のプレゼンもあります) だったのですが、今年はそれに加え白石さんの HTML5 も。
Adobe の太田さんも、Silverlight の鈴木さんもマーケッター的な話をするはずだと予想して、私は JavaFX をメインにするのではなく、RIA 系の言語に求められるものを考えてみるという話題にしてみました。
というのも、Twitter で丸山先生が「いままでの言語では、あまり意識しなかったイベント処理の部分が、言語の前面に出てきたのがRIA系の言語なのかしら?昔風に言うと、沢山の分散したAgentの振る舞いを、大局的に定義する言語ということかしら?」というツィートをしたのがきっかけです。
実際には、RIA 系の言語でもイベントハンドリングはそれほど変化があるわけではないです。でも、RIA を作るために言語として重要なことを考えてみたのでした。
で、櫻庭としては以下の 3 つが重要ではないかということを話したわけです。
- 構築 GUI のツリー構造を構築する
- つなぐ モデルとビュー・コントローラの間をつなぐ
- 描画 高いレベルの描画 API
最後だけは API の話なので、言語本来の機能ですけど... ^ ^;;
資料だけ見ていても、あまり分らないかもしれません。
「構築」は GUI の要素をどのように組み立てていくかということです。
Java の Swing のように手続き的に addなんたらと setなんたら を組み合わせて GUI を構築するのはちょっと。書くのも面倒ですし、コードも可読性も落ちてしまいます。
で、取り得る選択肢としては以下の 2 つです。
- 既存のプログラミング言語 + α (だいたいは XML)
- 新しいプログラミング言語
もちろん、前者が Flash Platform や Silverlight、Android などです。後者が JavaFX。
JavaFX では GUI を組み立てやすくするため、宣言的文法を使っています。
それぞれ一長一短があるのですが、JavaFX の最大の欠点はツールとの相性が悪いこと。プログラムは記述の自由度が高いので、ツールが解釈できなくなってしまうわけです。
たとえば、JavaFX Composer では Composer が生成したコードは編集不可になってしまいます。Flash Builder のようにデザインと MXML の編集を交互にやるなんてのは全然できません。これはかなり痛いです。
既存言語 + XML では、XML で記述した描画要素にスクリプトからアクセする場合、ID を使われることが多いようです。でも、この ID っていわゆるグローバル変数になってしまうわけです。
また、XML で記述できない要素、たとえば動的に描画要素を追加する場合などは、結局手続き的に記述をするしかないわけです。こういうところもちょっとヤですね。
とはいえ、すべてを手続き的に書くのに比べたら、雲泥の差があります。
次の「つなぐ」はモデルとビューをつなぐ話。デザインパターンでいけばオブザーバーパターンを使うわけですけど、これが結構めんどうくさい。
こういうところを自動化して、モデルが更新されたら、ビューも更新するようになってもらいたいわけです。
JavaFXの場合はbindですね。Flexだと[Bindable]。でも、JavaFXのbindの方がどこでも書けるので、使いやすいですね。
最後の「描画」は当たり前です。これからは2Dだけでなく3Dも使えないとダメです。JavaFXの3Dは今のところちょっと微妙ですが....
0 件のコメント:
コメントを投稿