入社以来長いこと作ってきたプロダクトがやっとベータリリースされました。
長かった…
新しい Yahoo! メールベータ版は、Flash/Flex 2 を利用してます。もう使ってみた方もいらっしゃると思いますがいかがでしょうか。特徴とかは公式を見ていただければと思います。
Flash を選んだ理由は、やはりその早さ。確かに ActiveX はインストールがどうのという問題も孕んでますが、実際には 98% ぐらいの人がインストールされている Windows を超えるシェアを持つ世界最強のプラットフォームです。
なぜ Flash か?
しかし、Flash が Ajax より圧倒的に優れている点は二つ。
ここを述べさせてください。
一つは、Loader を用いて Flash を入れ子にできること
これによって Ajax では困難だった「ロード中」のほとんどなく、起動も早いアプリケーションを容易に作ることができます。
Ajax で同等のことを実現するには JavaScript の段階ロードを行いますがロードしなければならないコードを自らファイル分けする必要があります。もちろん Ajax でもクラス事に JavaScript ファイルを分けて段階的にロードさせることはできますが、1000~2000 もの大量のクラスを作るフロントエンド UI プログラミングでは、このクラス事のロードではファイルの読み込みのオーバーヘッドが掛かりすぎます。またロードプログラムを手で書かないといけないのもです。
Flex はその点極めて優秀な階層ロードが可能です。何も手を加えなくても必要なクラスだけをロードして実行してくれますし、ブロック事に SWF をいくつも生成することでダウンロード容量を減らすことができます。
* もう一つはクラスプラットフォーム性の高さ
通常 Ajax でプログラムする際にはすべてのコードを 4~6つのブラウザ(Win IE6/IE7/FF2 Mac FF2/Safari)でテストする必要があります。特にブラウザにイレギュラーな作業を強要するアプリケーション開発においては表示崩れなどを排除し、あらゆるブラウザで同一の結果を得るように開発するのは極めて困難です。
一つの解決は Ext のような UI ライブラリを利用することですが、今回はデザインに対する要求を満たせない為、不可能でした。
* Flash の弱点
私が思うに Flex 2 の最大の弱点は初回の起動速度があまりにも遅いことです。一瞬で起動するアプリケーションを作ろうとしても PC 環境によっては、
これは Flex 2 を利用した際の最大の問題でした。これの解決する方法は一つ、起動直後に見える部分をすべてローディング画面として作ること。preloader として作られた部分は非常に高速に起動直後に表示されるのでこれは使えます。
しかしこれには問題があり preloader 作成の際に与えられる stage と起動後に与えられる stage が異なるのです。この為、preloader で作られた部品を長いこと活用しようというのは残念ながらあまり現実的ではありません。
そしてもう一つが MXML をすべて捨てる方法です。ActionScript 3 だけですべてを作る選択ですね、これはすべてをコントロールできるので非常に高速に起動するアプリケーションを作ることができます。しかしこれは Flex 2 を利用する最大のメリットを潰すことでもあり、通常大変になりすぎるのでアプリケーション開発にはお勧めできません。
SWFLoader や Module を利用したコンポーネント分離も考えられますが、そもそものルートアプリケーションを相当に小さくしてもロードの遅さは免れえません。
* 最後に
探さないでください(笑


