2の最近のブログ記事

Flash Player 10.1 と AIR 2 から、セキュリティ関連の新しい機能が追加されました。他のドメインから読み込むファイルの種類を制限できる機能です。

セキュリティドメイン

新機能の前に、セキュリティドメインについて確認です。

セキュリティドメインは、Flash Player に読み込んだ SWF ファイルを管理するための機能です。同じセキュリティドメイン内のリソースには自由にアクセスできますが、他のセキュリティドメイン内のリソースには (通常) 勝手にアクセスできないようになっています。

基本的には、SWF ファイルの置かれているサーバーのドメインごとに、セキュリティドメインが作られます。例えば、最初に読み込まれた SWF ファイルと、その SWF ファイルが読み込んだ SWF ファイルが、それぞれ別のサーバーから読み込まれた場合、2 つのセキュリティドメインがつくられます。そして、2 つの SWF ファイルは、それぞれ対応するセキュリティドメイン内に置かれます。

"基本的に" と書いたのは、外部ドメインのファイルを、ファイルを要求した SWF のセキュリティドメインに読み込む手段があるからです。以下の 2 つの API が提供されています。

1 つ目は、LoaderContext.securityDomain 属性に、読み込む側のセキュリティドメインである SecurityDomain.currentDomain を設定してから Loader.load() メソッドを呼ぶ、というものです。これで、外部ドメインのファイルでも、load() を呼んだ SWF と同じセキュリティドメインに読み込まれます。下はそのサンプルです。

var ld:Loader = new Loader();
var lc:LoaderContext = new LoaderContext();
// 読み込む側のセキュリティドメインを指定
lc.securityDomain = SecurityDomain.currentDomain;
// 第2引数にLoaderContextを指定
ld.load(new URLRequest("http://not.my.domain.jp/foo.swf"), lc);
 

かなり遅くなってしまいましたが、Flash Player 10.1 からセキュリティ上の理由で変更された仕様関連の情報です。変更は全部で 4 つあります。

まず、以下の 3 つは、既存のコードに影響が出る可能性のある変更です。

リダイレクトされた URL の切り捨て

1 つ目は、SWF ファイルやイメージを読み込んだ後に、読み込んだファイルの URL がドメイン名までしか見えなくなる、というものです。

この影響を受ける属性は、AS 3 では LoaderInfo.url と Sound.url それから AS 1 / AS 2 では MovieClip._url です。これらの属性値が、例えば、http://sample.jp/xxx/yyy/my.swf のはずなのに http://sample.jp/ になっている、という場合が起こりえます。

この状況が起きるのは、以下の 3 つの条件すべてが揃った場合です。

  1. ファイルの読み込み中に HTTP リダイレクトが発生
  2. ファイルを要求した SWF のドメインと、読み込まれたファイルのドメインが異なる
  3. ファイルを要求した SWF が、読み込まれたファイルへのアクセス許可を持たない

リダイレクトが発生した場合、リダイレクト後のURL 情報を見せない、というのが新しいセキュリティポリシーのようです。

URL 情報が一部隠されているかどうか、を知らせるため、AS 3 には新しい属性が追加されています。LoaderInfo.isURLInaccessible と Sound.isURLInaccessible の 2 つです 。AS 1 / AS 2 には、状況を示す属性の追加はありません。

リダイレクトされて (条件 1 を満たす) 他のドメインからファイルを読み込んだんだけど (条件 2 を満たす) URL が知りたい!というときは、ファイルへのアクセス権を与えます ( 条件 3 を満たさなくなる)。 設定方法は、読み込むファイルのフォーマットによって異なります。

読み込んだファイルが SWF の場合は、読み込まれた SWF が Security.allowDomain (AS 3) または System.security.allowDomain (AS 1 / AS 2) を実行します。これにより、ファイルを要求した SWF にアクセス権を与えます。

読み込むファイルがイメージやサウンドの場合は、サーバー上のポリシーファイルを使ってアクセス許可を設定します。その際、読み込む側の SWF が AS 3 の場合には、LoaderContext.checkPolicyFile や SoundLoaderContext.checkPolicyFile の値を true にして、確実にポリシーファイルが読み込まれているようにするのが良いでしょう。

なお、この変更は AIR 2 のアプリケーションコンテンツには影響しません。Flash Player 10.1 上で実行される全ての SWF ファイルと、AIR 2 の非アプリケーションコンテンツが影響を受けます。

今回の変更は大きく 2 点です。

まず、Mac 版に、ハードウェアを利用した H.264 ビデオの再生機能が追加されました。この機能は、OS X 10.6.3 以降の Apple Video Decode Acceleration framework がサポートされる Mac 上で利用可能です。より詳しい機種情報は、以前の記事をご参照ください。

それから、セキュリティ関連の修正が行われました。

修正された問題は 6 つで、重要度は非常に高いため、すみやかに最新版へのアップデートが推奨されています。対象となるのは、全てのプラットフォーム (Android 版を除く) の Flash Player 10.1.53.64 以前の全てのバージョンと、Adobe AIR 2.0.2.12610 以前の全てのバージョンです。

Flash Player 10 のサポートされない環境 (Windows 98, Windows ME, OSX 10.1-10.3, RHEL 3 & 4) 用に、Flash Player 9.0.280 もあわせて公開されています。

ダウンロードページは、

です。

デバッグ版とスタンドアローン版は、Flash Player Support Center からダウンロードできます。Flash CS3 Professional と Flex 3 用に、Flash Player 9.0.280 も同じページにあります。

AIR 2 のランタイムに続き、AIR 2 の SDK が公開されました。Adobe のサイトからダウンロード可能です。(Adobe AIR SDKのダウンロード

AIR 2 SDK を使用するには、既存の SDK を置き換える必要があります。Flash Builder および Flash Professional CS4, CS5 の設定方法については、Adobe AIR 開発者向けリリースノートに記述されて います。(Flash Builder および Flash Professional での AIR SDK の使用

現在、Flash Professional や Flash Builder のコンパイラは、AIR API のバージョンチェック機能を持ちません。そのため、最新の開発環境である Flash Professional CS5 や Flash Builder 4 では、AIR 1.5 など古いバージョンの AIR アプリケーションを開発する場合でも AIR 2 の新しい API の参照やコンパイルができてしまいます。ですが、そのような AIR 1.5 アプリケーション (AIR 2 から追加された API を使った) の動作は、当然保障されません。

という理由から、Flash Professional CS5 や Flash Builder 4 をお使いの方には、最新の AIR SDK への更新が推奨されています。

Flash Professional CS4 で AIR 2 アプリを開発する場合は、アプリケーション記述ファイル内の名前空間を "http://ns.adobe.com/air/application/2.0" に手動で書き換える必要があります。Flash Professional CS4 の機能は今までどおりなので、その点だけご注意ください。もしかすると、Flash Professional CS4 は AIR 1.5 アプリのメンテ用に残しておくのが良いかもしれませんね。

その他詳細は、リリースノートをご覧ください。

 

Flash Player 10.1 と AIR 2 が正式に公開されました。

今回公開されたのは Flash Player, AIR どちらも Windows, Mac, Linux 版です。

Android 版については、Flash Player 10.1 は今月末を目処に公開が予定されているとのことです。AIR 2 はまだ具体的な情報が公開されていません。

Flash Player のデバッグプレーヤーとスタンドアローンプレーヤは US のサポートセンターからダウンロードできます。日本のサイトも直ぐに更新されると思いますがとりあえずはこちらをお使いください。(Adobe Flash Player Support Center Downloads

Flash Player 10.1 のベータ版をインストールしている環境では、一旦ベータ版の Flash Player をアンインストールしてからインストールする必要があるとのことです。アンインストール用のプログラムは、こちらもとりあえず US のサポートページからダウンロードできます。(How to uninstall the Adobe Flash Player plug-in and ActiveX control

それから、AIR 2 SDK は 6 月 15 日頃に公開予定とのことです。Flash Professional や Flash Builder など関連製品のアップデートも順次公開されることと思います。

新機能については、今までもお知らせしていたように、パフォーマンスや消費電力の改善、マルチタッチサポート、プライバシーモード追加、などなど盛りだくさんです。特に Mac の Flash Player は完全に Cocoa 対応になりました。Gala の機能はまだ含まれていません。

その他、詳しくはそれぞれの製品紹介ページをご覧ください。(まだ更新中みたいですが)

Flash Player 10.1 (と AIR 2) の新機能であるマルチタッチとジェスチャーのサポートについて、まずは概要を少しばかり。

はじめに

既にご存知の方は飛ばしていただければと思いますが、Flash では新しい分野なので、最初に言葉の整理をしておくと、

  • タッチ: デバイスに触れた、移動した、離れた、などの個々の動作
  • マルチタッチ: 複数のタッチを同時に扱うこと
  • ジェスチャー: 複数の動作の組み合わせ (例: 指をデバイスに 「触れて」 から 「横に移動」 する)

という感じかと思います。

"タッチ" はマウスの代わりにデバイスに直接触れることにより行う入力行為です。「クリックしていない」 という状態が無いことを除けばほぼマウスと同じように扱うことができます。Flash Player 10.1 ではタッチによる操作を処理できるよう、新しく TouchEvent が追加されています。

マルチタッチに対応するには、複数の指で操作が同時に行われた時、個々の指の動きを識別できる必要があります。そのため、TouchEvent にはタッチポイントを識別するための ID が属性として定義されています。指がデバイスに触れてから離れるまでの間、その指からの TouchEvent には同じ ID が割り当てられます。

さて、ジェスチャーは、特定の動作に特定の意味を持たせるものです。例えば、2 本の指を反対の方向に広げる → 拡大表示、というのは良く知られたジェスチャーです。その他にも、円を描いたらメニューを表示するというジェスチャーの使い方もあるかも知れません。また、ショートカットキー代わりに画面に文字を書いたら対応するコマンドを実行するというジェスチャーもあるかもしれません。とりあえず識別可能な動作であればジェスチャーとして使用される可能性を持っています。

まとめると、タッチは、デバイスの機能として検出可能な操作、という理解でよいかと思いますが、ジェスチャーは、ユーザーがデバイスに対して行うことのできる動作の捕捉、と捉えることができそうです。デバイスにユーザーが合わせる (タッチ) とユーザーにデバイスが合わせる (ジェスチャー) というコペルニクス的な (ちょっと大げさ) 視点の転換が両者の間にはありそうです。

容易に想像できるように、利用できるジェスチャーはプラットフォームにより異なります。また、ジェスチャーの実装の仕方も、ジェスチャーの判別を行ってくれるプラットフォームがあれば、タッチイベントだけ通知してそれらからジェスチャーに組み上げる作業は開発者任せのプラットフォームもあります。Flash Player 10.1 では標準的なジェスチャーの発生を知らせるジェスチャーイベントがサポートされていますが、TouchEvent を使ってジェスチャー処理用のライブラリを開発するという方法も選択できるようになっています。

マルチタッチと環境について

GUI であればポインティングデバイスが使える、というのはもはや "当然のこと" として受け入れられているかと思います。一方、マルチタッチやジェスチャーはその歴史が浅いこともあり、きちんと使える環境はまだまだ限られています。Flash Player 10.1 がサポートする、だけではマルチタッチ/ジェスチャーの利用には十分では無いのです。

Adobe Labs に AIR 2 の新しいベータ版が公開されました。(Adobe AIR 2@Labs) 下のリンクから実行環境と SDK がダウンロードできます。

いくつか新機能の追加もありますが、基本的には 「たくさんのバグ修正」 がベータ 1 からの主な違いだそうです。サイトには 「正規リリースも近くなっているので既存の AIR アプリケーションの動作検証を行って欲しい」 との記述もありました。

AIR 2 ベータ 1 で作ったアプリケーションは AIR 2 ベータ 2 の実行環境では実行できません。ベータ 1 のアプリは、アプリケーションの名前空間を "2.0beta2" に変更してから AIR 2 ベータ 2 SDK を使ってコンパイルし直す必要があるとのことです。

さて、ベータ 2 では以下の 3 つの新機能が追加されています。

  • 印刷関連の機能拡張
    印刷時のプリンターの選択、紙のサイズ、コピーの数の指定が可能に、プリンター情報(印刷可能領域、カラー/白黒、印刷中かどうか、等)の属性を追加 (PrintJob
    ベクター印刷/ビットマップ印刷の指定、解像度の指定が可能に (PrintJobOptions
    (win/mac のみ) ユーザーが指定可能な印刷ページ範囲の設定機能の追加 (PrintUIOptions
  • TLS/SSL ソケット
    TLSv1 と SSLv3 によるセキュアなソケット接続が利用可能に (SecureSocket
  • IME 機能拡張
    Flash Text Engine (FTE) をサポートするための API の追加:

その他詳しくは、リリースノート (英文です) と 開発者向け FAQ (こちらも英文) をご覧ください。

それから、Flex SDK のマイナーアップデート版 (3.5a) が公開されています。AIR 自動更新 UI のバグに対応するためのリリースになります。Adobe のオープンソースサイトからダウンロードできます。(Adobe Open Source/ Flex SDK Downloads

AIR 2 ベータが Adobe Labs に公開されました。(Adobe AIR 2@Labs

ランタイムおよび SDK がこちらからダウンロードできます。(Adobe AIR 2@Labs download) Windows 2000 と Mac PowerPC を除き、AIR 1.5 と同じプラットフォームが対象になっています。

AIR 1.5 と AIR 2 は同時にインストールすることができませんのでご注意ください。アンインストールする場合、Windows では "プログラムの追加と削除" から Adobe AIR を選択、Mac の場合は /Applications/Utilities フォルダ内のアンインストーラを実行します。バグでない限り、AIR 1.5 で動く AIR アプリは AIR 2 上でも動作することにはなっています。

上記ダウンロードページからは、Dreamweaver CS3, CS4 用と、Fireworks CS4 用の AIR2 拡張機能もダウンロードできます。

Flash CS4 Professional は自分で SDK を入れ替えることになります。手順は、

  1. Flash CS4 Professional を 10.0.2 にアップデート。Help メニューからアップデートを選択すれば更新されます
  2. Flash CS4 Professional を実行中の場合は終了
  3. Flash CS4 のインストールフォルダーを開く。 Windows は "C:\Program Files\Adobe\Adobe Flash CS4\"、 Mac OS は "/Applications/Adobe Flash CS4/"
  4. ここで "AIK1.5" というフォルダが無かったら最初のステップに戻ってください
  5. "AIK1.5" フォルダを 削除するなり、別名で保存
  6. 新しく "AIK1.5" という名前でフォルダを作成
  7. ダウンロードした Adobe AIR 2 SDK を "AIK1.5" フォルダの下に展開
  8. "Adobe Flash CS4/AIK1.5/frameworks/libs/air/" フォルダから "airglobal.swc" ファイルを "Adobe Flash CS4/Common/Configuration/ActionScript 3.0/AIR1.5/" フォルダにコピー

です。

Flex の場合は、既存の Flex SDK をコピーしてから、ルートフォルダで AIR 2 の SDK を展開します。

Mac 上では旧いファイルを削除しないとアプリがクラッシュすることがあります。Flex Builder のインストールフォルダ内の /sdks/3.2.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Resources の下にある、MainMenu.nib, AuthDialog.nib, FlashPromptDialog.nib の削除をお勧めします。

さて、AIR 2 の新機能は先の記事でお伝えした Flash Player 10.1 のものに加えて、以下のものがあります。

  • マスストレージデバイスの検知
    USB メモリデバイスやカメラなどの接続を検知します。ファイルのアップロード用画面を自動表示するアプリなどに利用できます
  • ネイティブプロセス AIP
    OS のプロセスと標準入出力を使った通信ができます。これにより既存のアプリが利用できるようになります。(例えば "grep" コマンドを使ったファイル検索)
  • UDP のサポート
    UDP を用いたリアルタイム通信やマルチプレーヤゲームなどが開発可能です
  • ソケットサーバ機能と P2P
    AIR 2 を使ってローカルサーバを実現できます。これにより他のアプリケーションとネットワーク経由で通信することができます
    Flash Player 10 と AIR 1.5 から追加された RTMFP と違い、この機能はサーバ無しで P2P が実現できます

AIR 2 の正式なリリースは 2010 年の前半が予定されています。

その他詳細は、リリースノート (英文) をご覧ください。

MAX では AIR の次期バージョンにあたる、Adobe AIR 2 に関するアナウンスもありました。

AIR 1.5 に対する要望を元に多くの機能拡張が予定されているとのこと。今回は以下の機能が発表されました。

  • プロセス間通信 - 同一マシン上で実行されるアプリケーションと通信を行うための API が提供 (この機能を使うには AIR アプリを .exe や .dmg で配布する必要がある)
  • 外部記憶デバイスのサポート - AIR アプリから外部記憶デバイスの接続・切断を検知できる
  • ファイルオープン - ファイルと標準で関連付けられているアプリケーションを OS から起動できる
  • パフォーマンス改善 - 従来の AIR アプリそのままでも少ないメモリと CPU で実行可能
  • マイクの使用 - AIR アプリ実行中のマシンのマイクから音声を取得するための API を提供
  • 新しい入力方法 - マルチタッチ (Windows 7) とジェスチャー入力 (Windows 7, OS X 10.6) をサポート
  • 新しい WebKit - 高速化された JavaScript エンジンや、HTML5/CSS3 のサポート
  • ソケット機能強化 - ローカルサーバとしての使用が可能に

Adobe AIR のパブリックベータは今年中に公開予定とのことです。

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261