本日は日本JavaFXユーザーグループ主催のJavaFX勉強会に参加してきました。
本日のエッセンス
蓮沼さんからは、GlassFishの監視ツールLightFishのUIにJavaFXが使われているとの紹介、エンタープライズのクライアントとしてのJavaFXとサーバーとの組み合わせ、リッチクライアントの復権について思うところ、のお話でした。クライアント側でJavaFXアプリケーションを実行、GlassFishサーバーとJAX-RSおよびWebSocketによる通信を行う方式です。また、1つのJavaVM上でJavaFXとEmbedded Serverを動かすというソフトウェア構成の紹介もありました。
青江さんからは、JavaOne サンフランシスコ2013からディープなJavaFXセッションを2つ紹介、1つはエンタープライズシステム向けJavaFXアプリケーションアーキテクチャ(CON2229)、2つ目はJavaFXの最適化(CON3141)です。前者はエンタープライズ向けのリッチなGUIでは、MVCパターン*1では不足があり、MPVパターンやPMパターンがあり、JavaFXに向いたパターンという内容です。後者は、JavaFXのレンダリングの仕組み(Pulse)、パフォーマンス測定のツールと注意事項の紹介です。
櫻庭さんからは、JavaFX 3Dの紹介です。30分ではとても3Dについて話せないとのことでしたが、分かりやすく、かつ気をつけないといけないことをうまくまとめたお話でした。
まずはJavaFX 3Dの座標系の定義、カメラの種類と配置、モデルとデータのインポート、ライトと一通り3Dグラフィックスを行うのに必要な内容の解説でした。
LTは3方からです。
@kikutaro_さんは、JavaFXで作った画像表示プログラム、動画検索ダウンロードプログラム、SendGridを作りましたという紹介です。JavaFXはいまどきなGUIライブラリなので、このように見て楽しいアプリケーションがいっぱいでてくるといいですね。
@rootsu1024xさんは、タイルUIについての紹介です。マウスドラッグで任意の場所にラインを引くとそれでタイルがさらに分割されるといったことまで実現していました。
岡崎さん(日本JavaFXユーザーグループ会長)は、TwitterブートストラップをJavaFXで実現するというタイトルで最初?でしたが、Webのデザインルールを揃えるCSSというものでした。Twitter向けのCSSをJavaFX CSSに移植するものですが、JavaFXのCSSはいろいろ癖があるので苦労があったとのことです。なお、サンプルのコードがScalaでした。
感じたこと
MVCとMVPとPMと
以前、クライアントプログラムでGUIを使う際の設計方法の拠りどころとしてMVCではつらいので、MVPやPMを調べたことがあります。そのときは、SwingはMVPに不向きと思い、そのまま放置していました*2。
今回、FXMLを使うJavaFXプログラムがMVPとマッチするという話を聴いて、もう一度MVCやPMを見直そうと思いました。
Q&Aのときに、画面を複数持つときに、コントローラ間をどう接続するか質問があがっていました。ふとPOSA本(Pattern Oriented Software Architecture)でPACパターンを思い出しました。実装としては、イベントバスのような機構が欲しくなる機能です。