FlashやFlexに関する最近のニュースについて思ったこと

先日、Adobeがモバイル版Flashの開発を中止するというニュースが流れ、多いに話題になりました。
そして、それに関連してFlexチームから今後のFlexについての見解が公式のブログにエントリされました。
http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html
この件について、色々思うところがあったので、ここでつらつら書くことにします。Twitterでつぶやこうかと思ったのですが、長くなりそうだったので。

要約するとこんなところでしょうか。

  • Adobeは今後もFlexに投資する。
  • Flex4.6リリース以降はFlexを全てなんらかのオープンソース団体に寄贈することを計画している。
  • 長い目で見るとエンタープライズ系のクライアント開発もHTML5ベースに移行していくだろう。
    • とは言え、当面は、特にデスクトップアプリケーションの開発にはFlexを使った方が良い。
    • AdobeとしてはWebKitjQueryへのコントリビュート、PhoneGapやその他新たなツールの開発などを通して、開発者がHTML5ベースのアプリケーションを開発することを支援していきたい。

そして、FlexSDKの開発者もFlex開発の知見を活かして、HTMLベースの開発環境の開発にシフトしていく人達も出てくるだろうといったことが書いてありました。
Adobeは将来的にはFlash系の技術をシュリンクさせていく方向に向かっているように見えます。 ここまで冷静に現実を見た決断を下したことに驚きました。
うーん、Windows8ではブラウザプラグインは排除して、Metro UIの開発でもHTML5ベースもしくはXAMLベースでの開発になりましたし、段々HTML + JavaScriptな方向にシフトしていくのでしょうか...。

とは言え、現時点でHTML + JavaScriptで大掛かりなクライアントアプリケーション (デスクトップGUI級のレベル。スマートフォンタブレット向けGUIもこちらに入るかと。) の開発を行おうとしたら相当キツいと思っています。
実際、昨年JavaScriptオンリーでそういう本格的なクライアントアプリケーションを開発したことがあったのですが、とてもキツかったです。まずアーキテクチャ設計でどう設計したら良いのかとても迷いましたし (とりあえずこれまでのSwingやFlexでの開発経験からそれに近いようなアーキテクチャにしてみましたが) 、JavaScriptのコードの記述にしても (アーキテクチャ設計に基づいた) きちんとした決まり事を作らないとすぐカオスになりがちでしたし、テストも非同期処理や見た目に関わる部分とかが難しい、というかどうしたらいいかよく分かりませんでした。

今のJavaScript開発を取り巻く環境は、ライブラリレベルでは様々なツールが出て来ていますが、「設計 -> 開発->テスト->運用・保守」と言ったソフトウェア開発のライフサイクル全体をターゲットとした設計開発のノウハウや、それを具現化したフレームワークなどについては、それっぽいのがポロポロと出てきている段階で、まだ皆手探りの状態のような気がしています。一方でブラウザ上にデスクトップGUIに近いようなアプリを提供できているWebサービスも色々あるので、できている人達がいるのも確かです。

少し前のWebアプリケーションの開発では、サーバー側でのHTML組み立てが中心で、JavaScriptはちょっとした彩り程度のオマケでした。オマケに対して開発方法論もへったくれもなかったのですが、時代と共にJavaScriptの比重が上がってきても、その時の考え方のまま小道具レベルのものを増やして何とか対処してきた、というケースが多いのでは無いのかな、という印象を持っています。これからはオマケではなく主役になっていくので、真面目にこの辺を考えないといけない時期が来たなーと感じました。

そうなるとデスクトップGUI開発のノウハウがやっぱり参考になるんじゃないかと考えています。Web時代になって、HTMLによる画面開発が中心になったときに、この辺の技術が微妙にロストテクノロジー化しちゃった所があるような気がしますが。
そんな訳で、GUIアーキテクチャパターンを考えることが今自分の中では結構ホットになっていたりして、暇を見て色々調べたりしています。*1
よく言われますがソフトウェア技術の移り変わりは激しいので、単にライブラリやフレームワークの使い方を覚えるだけではなく、その根底にある考え方を理解することが大事なんじゃないかなと思っています。

以上、雑談でした。

*1:最近自分が関心を持っているJavaFXはPresentation Modelパターンを意識した作りになっているところ (バインディングやFXMLの機構を見るとそう感じます) が面白いと思っています