LoginSignup
3
5

More than 3 years have passed since last update.

Flash Player 2020年12月31日廃止に立ち向かうためのAdobe Air乗り換え概要

Last updated at Posted at 2019-10-09

初めに

 日本の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化

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5