初めに
日本のWeb界で一時代を築いたFlashアニメや高度なWebアプリを世の中に提供した偉大なAdobe Flashが2020年12月に廃止になります。Flashアプリの中でも業務アプリなどで利用されているFlexアプリはApache Royale、OpenFL、Haxeなど既存のActionScriptを活用して、乗り換えをする手段があります。しかし移行の難易度は高めです。また2019年も半ばを過ぎて、生き残っているようなFlexアプリケーションは大きな規模のものであると推定されます。とても重要な役割を担っているアプリだとは思いますが、残念ながらFlexアプリをWebアプリとして簡単に生き残らせる方法はありません。
Adobe Flex BuilderはFlexアプリのほかにAdobe Airアプリとして出力する機能があります。WebアプリではないですがとりあえずAdobe Airアプリにして、急場をしのぎましょう。
この記事の注意事項は下記です。
- Adobe Airアプリの作り方に関しては自分で調べてください。ググればすぐわかります。
- Flex SDK3.3あたりをイメージして書きます。つまりMXプロジェクトです。Sparkプロジェクトでもほぼ一緒です。
- Windows版しか作れません。
変更項目
変更内容 | 詳細説明 |
---|---|
Airアプリへのコンパイル | https://help.adobe.com/ja_JP/air/build/WS5b3ccc516d4fbf351e63e3d118666ade46-7fa1.html |
ベースアプリケーションのタグを書き換える | ベースとなるMXMLを書き換える必要があります。 mx:Application ↓ mx:WindowedApplication |
HTMLからFlashアプリの起動時に渡していた情報を別途通信などで取得する | 表示などの変更のため、HTML上にFlashアプリの起動引数を記載している場合は通信経由で取得するように変更しましょう。 |
BlazeDSを用いた通信部分のURL | Webアプリの場合はAMF通信で用いるベースURLをベースとなるhtmlのURLから生成していることが多いと思います。 Air化したアプリでは下記の対応が必要。 - Air化したアプリの起動時に”接続先ホスト名/IPアドレス”を入力するダイアログを表示 - ダイアログに入力されたホスト名/IPでAMFの接続先のURLを生成する |
SWFの動的ローディングの廃止 | Flexアプリの時はローディング時間の短縮のため、SWFを分割し、遅延ローディングをしていることが多いと思います。Adobe AirではSWFの動的ローディングはできません。分割ローディングを廃止し、一つのSWFにまとめてしまいましょう。 |
JavaScriptを経由していた処理のAdobeAir化 | JavaScript経由でほかのSWFと通信したり、JavaScriptライブラリを呼び出していたり、HTML5のWebStorageを使用していた場合、その部分はAdobeAirで代替処理を書き直しましょう。 |
クッキーを用いたSSOの廃止 | クッキーはブラウザでのみ使用できる機能です。Air化したアプリからHTMLのページをブラウザで表示する際にクッキーを用いたSSOシステムがあると、そのHTMLページは表示できなくなります。呼び出しURLに認証情報を含める方式に変更しましょう。 |
バージョンの管理 | ブラウザで動く場合、常にサーバと同じバージョンのものがロードされて使用されますが、AdobeAir化してアプリにしてしまうと、バージョンをサーバと同じにすることは難しくなります。 Adobe Airのランタイムを別途インストールする形式なら、サーバにあるバージョンをチェックして、新しいものを自動取得させる方法が用意されています。 AdobeAirのランタイムを利用せずに起動できるようにするため、Exe化した場合は、別途バージョンをチェックしてアップデートするラウンチャプログラムが必要となります。 |
Adobe Airのダウンロード元の用意 | FlashアプリのHTMLにアクセスした際にダウンロード促して、利用してもらう必要があります。 |
マニュアル修正 | 使用方法が変わるのですから書く必要があります。 |
ブラウザ経由でアプリをSSO起動したい場合
WindowsではURIをレジストリに登録することにより、ブラウザからアプリを起動することが可能になります。
URI に応じた既定のアプリの起動
このページではUWPアプリのみが対象のような書き方ですが、レジストリに登録すれば、AdobeAirのアプリでも対応できます。JavaWebStartのアプリをスタンドアロンJavaアプリにする際にも応用できます。
変更内容 | 詳細説明 |
---|---|
SSO時のプロトコルをHTTPから変える | httpではなく独自のプロトコル名を決めましょう。SSO元から”プロトコル名://”でアクセスするように変更します。 |
レジストリへの登録 | 下記のように設定する HKEY_CLASSES_ROOT\<プロトコル名>\\ ((既定)) REG_SZ URL:xxプロトコル BrowserFlags REG_DWORD 0x0000008 EditFlag REG_DWORD 0x0000002 URL Protocol REG_SZ HKEY_CLASSES_ROOT\\<プロトコル名>\\DefaultIcon ((既定)) REG_SZ Airアプリケーションのパス HKEY_CLASSES_ROOT\\<プロトコル名>\\shell\\open\\command ((既定)) REG_SZ Airアプリケーションのパス |
ちなみに
Flashアプリの改造なしに、HTML5化したいという人のためにOSSの組み合わせで実装するアイディアも書きました。
xvfbを用いたAdobe FlashアプリケーションのHTML5化