BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Flexアプリケーションの起動時間を短縮する5つの方法

Flexアプリケーションの起動時間を短縮する5つの方法

O’ReillyのInsideRIAサイトにおけるJun Heiderの記事は秀逸だ。ユーザが醜い"ロード中"ダイアログを見る回数を減らせるよう、開発者の助けになる事を願って、Flexアプリケーションの起動時間を最小化する数多くのオプション (source)について論じたものである。彼の考えは深く、様々な分野に及び、それぞれのテクニックについて考慮すべき重要な長所と短所についても良く考え抜かれている。
  1. メディアを外部化せよ
    一般的なFlexのベストプラクティスとしては、アプリケーションやSWFファイルに埋め込むメディアの数を制限する事だ、とHeiderは述べている。画像、動画、MP3などは、全てSWFファイルの外部からロードする事ができる。
    Flexフレームワークは、例えば画像やMP3ファイル、フォント等のアセットを、アプリケーションのSWFに直接コンパイルして埋め込む方法を提供している。これはエンドユーザがあなたのアセットをコピーする際には便利なものの、あなたのアプリケーションが"ロード中"と表示される最大の原因となっている。
  2. 埋め込みフォントを使用する文字を制限せよ 
    Heiderは、埋め込みフォントを使う文字を制限する事で、SWFファイルのダウンロードサイズを全体的に減らす事ができると示唆している。
    あなたがFlexでフォントを埋め込んだ場合、フォントがサポートする全ての文字種別を利用できる。しかし、あなたがアプリケーションを完成させるためにはそれらが必要かもしれないが、本当に全ての文字が必要なのだろうか?例えば英語限定のアプリケーションでは、中国語の文字データを読み込むのに時間を浪費する必要があるのだろうか?
  3. フレームワークをキャッシュする
    Heiderは、Flex 3のランタイム共有ライブラリ(runtime-shared-libraries: RSL)(source)を見直している。
    Flex 3では、Adobeが署名したフレームワークのRSLをFlashプレイヤーのキャッシュ内でキャッシュする事ができる。これは二つの利点がある。第一に、Flashプレイヤーによってキャッシュされた署名済みフレームワークのRSLは、それらを使うよう設定された全てのFlexアプリケーションによって共有される。言い換えると、もし誰かのアプリケーションが既に500KBかそこらの署名済みフレームワークRSLをダウンロードしており、RSLが Flashプレイヤーによってキャッシュされていれば、あなたのアプリケーションはそのキャッシュされたRSLを使用する事ができるのだ。二番目の利点は、もし誰かがブラウザのキャッシュをクリアしたとしても、Flashプレイヤーのキャッシュには影響しない事だ。
  4. モジュール化を考慮せよ
    Heiderは、Flexアプリケーションをモジュールに分割する事の利益とトレードオフについて評価している。
    最初のロード時間を最小化するためのその他の方法としては、あなたのFlexアプリケーションをモジュールに分割する、と言うものがある。モジュールを使用する事の利点は、モジュールをアプリケーションにロードしたり、アンロードしたりするタイミングをコントロール可能だと言う事だ。

    ...

    モジュールを作成するにあたっての最後のポイントは、必要に応じてモジュールをロードできることで「より速くなる」と言う事だ。言い換えると、起動時にロードされるモジュールはStep1.swfモジュールだけだ。この場合、エンドユーザは起動時間を節約する事ができる。しかし一つのモジュールから次の新しいモジュールに移るとき、新しいモジュールのそれぞれがJITのマナーに従ってロードされる必要があるので、結局トータルのロード時間は変わらない。私のアプリケーションの場合は、ユーザがステップ1-5に移動した最初のタイミングで、このペナルティが課される。
  5. インスタンス化を遅延させる
    Heiderは、Flexコンポーネントの"creationPolicy"属性に関するオプションと、アプリケーションを構成する部品をインスタンス化するタイミングについて論じた。
    データがダウンロードされてから、ユーザが実際にアプリケーションを使用するまでの時間を最小化するために、あなたができる一番の手助けはインスタンス化を遅延する事だ。このテクニックの背景には、アプリケーションに必要とされるまでオブジェクトをメモリ内に作成しない、と言う概念がある。

    インスタンス化を遅延するテクニックは、アプリケーションを使っている上で小さな - しばしば気づかれないほどの - 遅れを引き起こすが、これはアプリケーションの起動時に長い遅延を生じさせるよりは、より受け入れられ易い振る舞いだと見なされることが多い。インスタンス化遅延に関する他の利点としては、メモリの利用効率が最適化される事だ。

加えてHeiderは、"素早く起動する、一枚岩のFlex SWFを構築する"(source)と言うDirk Eismannの記事で論じられている"ストリームの活用"を、"実験的"な項目として挙げている。Eismannは、アプリケーションの各部分をストリームで読み込むために、Flashプレイヤーにおける複数フレームを使用すると言うテクニックを提案している。ぜひ記事全文(source)を読み、ここに挙げた項目や、Flexの起動時間を短縮するための提案された改善案の全てについてさらに詳しく学んで欲しい。

原文はこちらです:http://www.infoq.com/news/2008/05/flex-startup-time

この記事に星をつける

おすすめ度
スタイル

BT