あらゆる Flex アプリケーションは、Flex フレームワークの要素の 1 つである ActionScript クラスの比較的大きなセットを使用します。ActionScript クラスは、Flex アプリケーションのインフラストラクチャを定義します。クライアントで 2 つの Flex アプリケーションをロードすると、多くの場合、両者に重複するクラス定義がロードされます。これは、ユーザーがダイアルアップ接続を使用する場合や、ネットワーク接続が遅い場合に問題となります。さらに、Flex アプリケーションのロードは、HTML ファイルベースのアプリケーションのロードより時間がかかるという印象を与えかねません。
このような問題を克服するために、フレームワーク RSL を Flex アプリケーションと共に使用することができます。フレームワーク RSL は、Flex クラスライブラリから成り、任意の Flex アプリケーションと共に使用されます。フレームワーク RSL には、署名済みと署名なしの 2 種類があります。署名済みフレームワーク RSL は、ブラウザキャッシュではなく、特別なプレーヤーキャッシュにキャッシュされます。署名済みフレームワーク RSL は、アプリケーションの起動元のドメインにかかわらず、任意のアプリケーションからアクセス可能です。クライアントへのダウンロードは 1 度しか必要ありません。ブラウザのキャッシュがクリアされても、署名済みフレームワーク RSL はクライアントのディスクからクリアされません。署名なしフレームワーク RSL は、ブラウザのキャッシュにキャッシュされ、RSL のドメインにアクセスできるアプリケーションによってのみ使用されます。
Flash Player 9.0.115 以降では、署名済みフレームワーク RSL のロードがサポートされます。フレームワーク RSL は、さまざまなドメインのアプリケーションからロードできます。フレームワーク RSL は署名されていて、SWZ という拡張子を持ちます。署名済み RSL を作成できるのはアドビだけで、プレーヤーのキャッシュに保存できるのは、署名済み RSL だけです。カスタムライブラリを含む RSL を作成した場合、それらは署名されません。また、署名することもできません。9.0.115 より古いバージョンの Flash Player では、フレームワーク RSL をロードしようとするとスキップされ、代わりにフェイルオーバー RSL がロードされます(フェイルオーバー RSL がアプリケーションのコンパイル時に指定されていた場合)。
署名済みフレームワーク RSL を使用できるのは、Flex 3 コンパイラでコンパイルされたアプリケーションだけです。古いバージョンのコンパイラでコンパイルされたアプリケーションは、署名済みフレームワーク RSL を使用できません。
フレームワーク RSL は、flex_sdk_dir/frameworks/rsls ディレクトリにあります。Flex Builder の場合、フレームワーク RSL は、flex_builder_dir/sdks/3.0.0/frameworks/rsls ディレクトリにあります。命名規則には、Flex のバージョン番号と、現在使用しているコンパイラのビルド番号が含まれます。次のフレームワーク RSL が Flex 製品に同梱されています。
署名済みフレームワーク RSL と署名なしフレームワーク RSL は、RSL SWF ファイルの最適化で説明されている方法で最適化されています。
Flex には、標準 RSL またはクロスドメイン RSL として使用可能な多数の SWC ファイルが含まれています。これらのライブラリには署名がなく、最適化もされていません。これらの SWC ファイルは、frameworks/libs ディレクトリにあります。これらには automation.swc(Automation クラス用)と qtp.swc(Mercury QuickTest Pro エージェントクラス)が含まれます。
フレームワーク RSL がネットワーク上を転送された後、Flash Player はこのフレームワーク RSL の要約を生成します。生成された要約は、Flex アプリケーションのコンパイル時に保存された要約と比較されます。要約が一致したら、その RSL はロードされます。要約が一致しない場合、Flash Player はエラーを返し、フェイルオーバー RSL をロードしようと試みます。
Flex アプリケーション内のフレームワーク RSL を使用するには、/frameworks/libs ディレクトリ内の framework.swc を対象に、コマンドラインで runtime-shared-library-path オプションを指定してコンパイルを行います。必要に応じてポリシーファイル URL を追加したり、他にもフェイルオーバー RSL とそのポリシーファイル URL を追加することもできます。
以下の例では、SimpleApp をフレームワーク RSL と共にコンパイルします。
mxmlc -runtime-shared-library-path=libs/framework.swc,
framework_3.0.183453.swz,,framework_3.0.183453.swf
SimpleApp.mxml
この例では、署名済みフレームワーク RSL(*.swz)をプライマリ RSL として設定し、署名なしフレームワーク RSL(*.swf)をセカンダリ RSL として設定します。この例では、ポリシーファイルの場所が指定されていないため、RSL またはアプリケーションのどちらかが同じドメインにあるか、ポリシーファイルがターゲットサーバーのルートにあることが考えられます。
次の例は、フレームワーク RSL をロードする設定ファイルを示します。
<runtime-shared-library-path>
<path-element>libs/framework.swc</path-element>
<rsl-url>framework_3.0.${build.number}.swz</rsl-url>
<policy-file-url></policy-file-url>
<rsl-url>framework_3.0.${build.number}.swf</rsl-url>
</runtime-shared-library-path>
設定ファイルは、RSL の名前に {build.number} トークンを使用します。コンパイル時に、このトークンはビルド番号で置き換えられます。フレームワーク RSL の名前は、使用している Flex のビルド番号に依存します。
署名済み SWZ ファイルをフレームワーク RSL として指定し、署名なし SWF ファイルをフェイルオーバー RSL として指定しないことも可能です。この場合、アプリケーションは、9.0.115 より前のバージョンの Flash Player では動作しません。ただし、target-player コンパイラオプションを 9.0.115 以降に設定しなければ、コンパイル時に警告がスローされます。これにより、古いプレーヤーで動作するフェイルオーバーがないことを無視するように、コンパイラに指示が渡されます。高速インストール機能を使用すると、ユーザーを検出し、HTML ラッパー内の最新の Flash Player にアップグレードさせることができます。詳細については、高速インストールの使用を参照してください。
アプリケーションを展開する際には、必ずコマンドラインで指定した場所に SWZ ファイルを展開してください。さらに、RSL ドメイン内の所定の場所に crossdomain.xml ファイルがあることを確認してください。Flex アプリケーションが Flash Player の古いバージョンを確実にサポートできるように、署名済み SWZ ファイルに加えて、署名なしのフレームワーク RSL SWF ファイルを展開し、このファイルをフェイルオーバー RSL として指定する必要があります。
プレーヤーキャッシュには、フレームワーク RSL などの署名済み RSL が格納されます。設定マネージャを使用して、プレーヤーキャッシュの設定を管理できます。プレーヤーキャッシュでの RSL の使用はセキュリティ保護されています。サードパーティは、実行可能なコードを挿入することはできません。RSL に署名できるのはアドビだけで、プレーヤーキャッシュに保存できるのは Adobe RSL だけです。
フレームワークキャッシュのデフォルトのサイズは 20 MB です。このディレクトリ内にキャッシュされた RSL の合計サイズが 20 MB 以上になると、Flash Player はキャッシュを削除します。ファイルは、最後に使用された日付が古い順に削除されます。あまり使用されないファイルは、よく使用されるファイルより先に削除されます。キャッシュサイズが最大サイズの 60%未満になるまで、キャッシュの削除は続けられます。デフォルトでは、このサイズは 12 MB です。
設定マネージャの「グローバルストレージ設定」パネルを使用して、キャッシュ機能を無効にし、キャッシュサイズを増減することができます。設定マネージャは、ローカルコンピュータ上で実行される特別なコントロールパネルですが、Adobe Web サイト内に表示したり、同サイト内からアクセスすることができます。ユーザーがプレーヤーキャッシュを無効にした場合、Flash Player は SWZ ファイルをロードしません。その代わりに、フェイルオーバー RSL をロードします。
次の表に、各種プラットフォームにおけるプレーヤーキャッシュの場所を示します。
|
プラットフォーム |
場所 |
|---|---|
|
Windows 95/98/ME/2000/XP |
C:¥Documents and Settings¥user_name¥Application Data¥Adobe¥Flash Player¥AssetCache¥ |
|
Windows Vista |
C:¥Users¥user_name¥AppData¥Roaming¥Adobe¥Flash Player¥AssetCache¥ |
|
Linux |
/home/user_name/.adobe/Flash_Player/AssetCache/ |
|
Mac OSX |
/Users/user_name/Library/Cache/Adobe/Flash Player/AssetCache/ |
Flex Builder を使用して、RSL を編成したり、RSL として使用する SWC ファイルや静的にリンク付けされたライブラリとして使用する RSL を決定することができます。Flex Builder を使用して、展開の場所や要約、その他の RSL のプロパティなどを設定することもできます。署名済みフレームワーク RSL および署名なしフレームワーク RSL は作成され、最適化済みです。RSL を対象にアプリケーションをコンパイルし、コンパイル時に指定した場所に展開するだけで済みます。
プロジェクトで使用する各 SWC ファイルは、次のいずれかのリンケージタイプを使用するように設定できます。
デフォルトでは、ライブラリパス内にある SWC ファイルはすべて、フレームワークと同じリンケージタイプを使用します。
framework.swc ファイルを、Flex Builder の RSL として使用します。
プロジェクトのリリースビルドを書き出す場合、メインアプリケーションの SWF ファイルはより小さくなります。さらに、リリースビルドの出力ディレクトリには、展開用のフレームワーク SWF と SWZ ファイルが格納されます。
Flex で使用されるライブラリのリストを「ライブラリパス」タブで展開すると、Flex に含まれているが、フレームワーク RSL にクラスが含まれていない SWC ファイルの設定を見ることができます。このリストには、automation.swc ファイルおよび qtp.swc ファイルが含まれています。アプリケーションにメリットがあるなら、これらの SWC ファイルを RSL としてアプリケーションをコンパイルした方がよい場合もあります。これらの SWC ファイルは最適化されていないので、RSL として使用する前に、RSL SWF ファイルの最適化の説明に従って最適化する必要があります。
その他の Adobe SWC ファイルを RSL として Flex Builder で使用する
「RSL オプション」フィールドが有効になりました。
場合によっては、メインアプリケーションと同じディレクトリにフレームワーク RSL を展開した方がよいこともあります。フレームワーク RSL を保存する中央サーバーがあり、複数のアプリケーションでそれらの RSL を共有する必要がある場合もあります。
「展開パス」フィールドの 2 つのデフォルトのエントリ、SWZ ファイルと SWF ファイルに注目してください。SWZ ファイルは、署名済み RSL であり、フレームワークキャッシュに保存されます。SWF ファイルは署名なしの SWF ファイルであり、SWZ ファイルがロードできない場合にフェイルオーバーとして機能します。
デフォルトでは、フレームワーク RSL を、メインアプリケーションと同じディレクトリに展開します。
「展開パスまたは URL」フィールドで、SWZ ファイルの場所を入力します。例えば、「http://www.remoteserver.com/rsls/framework_3.0.183453.swc」と入力します。アプリケーションは、実行時にこの場所から RSL のロードを試みます。この場所は、アプリケーション SWF ファイルとの相対パスで指定することも、リモートサーバーへの完全 URL で指定することもできます。RSL がリモートサーバーにある場合、ポリシーファイルの参照を求められる場合があります。ターゲットサーバーのルートに crossdomain.xml ファイルがない場合、「ポリシーファイルの URL」フィールドで、crossdomain.xml ファイルの場所を入力します。アプリケーションの SWF ファイルと RSL が同じドメインから提供されているか、crossdomain.xml ファイルがターゲットサーバーのルートにある場合、このフィールドには何も入力する必要がありません。
アプリケーションを展開する場合、フレームワーク RSL を、リモートサーバーで指定したパスに手動でコピーする必要があります。
次の例では、コマンドラインからフレームワーク RSL を使用する方法を示します。
最初に、1 つ以上の視覚的な Flex コンポーネントを使用するアプリケーションを作成します。例えば、次のアプリケーションではボタンコントロールを使用します。
<?xml version="1.0"?>
<!-- rsls/SimpleRSLApp.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Button label="Submit"/>
</mx:Application>
このファイルを SimpleApp.mxml として保存してから、project/src ディレクトリに保存します。
アプリケーションを作成後、フレームワーク RSL を使用する前に、アプリケーションのコンパイル済み SWF ファイルのサイズを特定します。これにより、フレームワーク RSL を使用した結果、どの程度メモリを節約できたかがわかります。
1 点を除き、通常と同じようにアプリケーションをコンパイルします。static-link-runtime-shared-libraries=true オプションを追加します。これにより、設定ファイルの内容にかかわらず、確実にアプリケーションのコンパイル時にフレームワーク RSL を使用しないようにできます。代わりに、フレームワーククラスを SWF ファイルにコンパイルします。
mxmlc コマンドラインコンパイラで、次のコマンドを使用してアプリケーションをコンパイルします。
cd project mxmlc -static-link-runtime-shared-libraries=true bin/SimpleApp.mxml
SWF ファイルの出力サイズを確認します。アプリケーションにはボタンコントロールしか含まれていなくても、SWF ファイルのサイズは 140 KB 程度になります。これは、アプリケーションには、コンポーネントとアプリケーションフレームワーククラスだけでなく、フレームワークのその他の依存関係から継承したクラスのすべてのクラスが含まれているからです。ボタンのような視覚的なコントロールの場合、依存関係のリストは非常に長くなるおそれがあります。アプリケーションにその他のコントロールを複数追加する場合、アプリケーションがあまり大きくならないことに気が付くでしょう。これは、視覚コントロール間では、多くの部分が重複しているからです。
ファイルシステムまたはサーバーから、ブラウザでアプリケーションを実行します。スタンドアロンプレーヤーで、アプリケーションを実行することもできます。
次に、アプリケーションを再びコンパイルしますが、今回は署名済みフレームワーク RSL を RSL として追加し、署名なしフレームワーク RSL をフェイルオーバー RSL として追加します。以下に使用例を示します。
mxmlc -runtime-shared-library-path=c:/p4/flex/flex/sdk/frameworks/libs/framework.swc,
framework_3.0.183453.swz,,framework_3.0.183453.swf rsls/SimpleApp.mxml
生成される SWF ファイルは、前回の SWF ファイルよりかなり小さいサイズになります。
このコマンドには、ポリシーファイル URL の空白のエントリが含まれます。この例では、RSL とアプリケーションを同じドメインの同じディレクトリに展開するため、crossdomain.xml ファイルは必要ありません。
さらに、runtime-shared-library-path オプションには、最後のパラメータとして署名なしフェイルオーバー RSL が含まれています。署名済み RSL に対応していない古いバージョンの Flash Player をサポートする場合、このフェイルオーバー RSL が標準フレームワーク RSL SWF ファイルとなります。これがクロスドメインではなく、クライアントによって使用される場合、フレームワークキャッシュではなくブラウザキャッシュに保存されます。
次に、アプリケーションとフレームワーク RSL をサーバーに展開する必要があります。ファイルシステムから SimpleApp.swf ファイルを要求することはできません。これは、この要求によりネットワークリソース(フレームワーク RSL)がロードされますが、サーバー以外からのロードは許可されていないため、セキュリティサンドボックス違反が発生するからです。SimpleApp.swf、framework_3.0.183453.swz、framework_3.0.183453.swf ファイルを Web サーバーの同じディレクトリに展開します。
ブラウザでアプリケーションを要求するか、アプリケーションのラッパーを作成し、ファイルを要求します。
署名済みフレームワーク RSL が Flex アプリケーションによってロードされたかどうかを確認するには、フレームワークキャッシュ内の SWZ ファイルを検索します。詳細については、プレーヤーキャッシュについてを参照してください。
クライアントで署名済みフレームワーク RSL をダウンロードした後、署名済みフレームワーク RSL を使用する任意の Flex アプリケーションのために同じ RSL を再びダウンロードする必要はありません。ただし、フレームワークの新しいバージョンがリリースされるか、RSL の SWZ ファイルがプレーヤーのキャッシュから削除された場合を除きます。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート