akihiro kamijo: June 2008 Archives

« May 2008 | Main | July 2008 »

June 26, 2008

MAX 2008 の Flash サイト公開

MAX 2008 の Flash サイトが公開されました。(http://max.adobe.com/na/experience/) (少なくとも今のところ) イベント情報は MAX North America のみです。

コンテンツの外側の領域がクリックできるようになったら、クリックするとコンテンツが最小化されて少し遊べるようになります。できれば大きな画面で試してみてください。3 つのエリアが用意されています。

MAX blog も少しずつ更新されています。(http://max.adobe.com/blog/) Thermo の最新のスクリーンショットが載ってますのでご興味がある方はご覧くださいませ。

Posted by ackie at 12:50 PM | Comments (0)

June 18, 2008

Flex 3 のセキュリティアップデート (3.0.2 SDK)

Flex 3 に潜在的なクロスサイトスクリプティングの脆弱性が発見されました。影響を受けるのはヒストリー管理の機能を使用しているアプリケーションです。Flex 2 はこの問題の影響を受けません。

該当するアプリケーションを開発している場合は、この問題に対処するため Flex 3.0.2 SDK にアップデートすることをお勧めします。(Flex 3 SDK Downloads) Flex Builder 3 開発環境の更新方法は livedocs をご覧ください。(Flex Builder での複数の SDK の使用

既に展開済みのアプリケーションについては history/historyFrame.html をひたすたら新しい SDK 内のファイルと置き換えることで対応できます。SDK のディレクトリ内では以下の 3 箇所に該当するファイルがあります。

  • client-side-detection-with-history/history/historyFrame.html
  • express-installation-with-history/history/historyFrame.html
  • no-player-detection-with-history/history/historyFrame.html

Posted by ackie at 05:47 PM | Comments (2)

SwitchBoard ベータ公開

SwitchBoard は AIR アプリケーションと Adobe Creative Suite 製品をつなぐテクノロジーです。SwitchBoard を経由すれば AIR - CS 間でスクリプトを送受信することが可能です。

例えば、Adobe Labs に公開されている SDK には、AIR アプリケーションから Photoshop を利用してイメージファイルのフォーマットを PNG に変換するサンプルが含まれています。このように、制作ワークフローの一部を AIR アプリケーションで繋ぐような使い方が想定されています。

BridgeTalk

BridgeTalk は CS 製品間の通信に使われるプロトコルです。BridgeTalk に対応したアプリケーション間で任意のスクリプトを送受信することができ、必要であればアプリケーション起動も行われます。程度の差はありますが CS3 のつく製品はほぼ BridgeTalk 対応です。

Adobe Bridge CS3 という制作アセットを管理するツールがありますが、これもその名のとおり BridgeTalk を使って他の製品とアセット情報のやり取りを行うツールです。AIR アプリケーションからもこの BridgeTalk を使えるようにするのが SwitchBoard というわけです。

SwitchBoard のインストール

SwitchBoard を有効にするには 2 つのコンポーネントをインストールする必要があります。

  • SwitchBoard Service : AIR アプリケーションと Creative Suite 製品間のメッセージを中継
  • SwitchBoard Launcher : ターゲットのアプリケーションを起動

プラットフォームに応じて以下のファイルをダウンロードし setup を実行するとインストーラが起動されます。

画面の指示に従ってインストールを完了すると SwitchBoard service と SwitchBoard launcher がバックグラウンドで起動されます。

ちなみに、ベータ版でサポートされる OS は、

  • Windows XP SP2, Vista SP1
  • Mac OS 10.4.9, 10.5.3

です。

SwitchBoard アプリケーションの開発

Labs に Flex Builder 3 用の SwitchBoard SDK が公開されています。

ダウンロードしたファイルから SwitchBoard.swc を見つけて AIR プロジェクトに追加します。

SwitchBoard を使うときは AIR アプリケーションの最初に SwitchBoard.Client.init() を、最後に SwitchBoard.Client.exit() を呼ぶように行を追加するのがお作法です。

CS 製品にメッセージを送るには以下のように記述します。ここでは、Photoshop に JavaScript のスクリプトを送っています。

var msg:SwitchBoard.Message = new SwitchBoard.Message();
msg.target = "photoshop";
msg.body = "alert('Hello Photoshop')";
msg.send();
 

SwitchBoard 対応の AIR アプリケーションを実行する前に SwitchBoard がインストールされている必要があります。ご注意ください。

より詳しい説明は SDK に含まれているドキュメントをご覧ください。CS 各製品側の情報は ExtendScript Toolkit 2 ヘルプが参考になると思います。

Posted by ackie at 05:36 PM | Comments (0)

June 17, 2008

Application Update Framework for Adobe AIR ベータ公開

AIR アプリケーションのアップデート機能を簡単に実装するためのフレームワークが Adobe Labs に公開されました。(Application Update Framework for Adobe AIR@Labs) フレームワークやドキュメントは air_appupdater_061608.zip (ZIP : 0.92 MB) に含まれています。

このフレームワークにはアップデートの有無からインストール完了の確認までに必要な機能と UI がひととおり含まれています。標準の UI の代わりにカスタム UI も使用することも可能です。

SDK 内には 4 つの同じような名前のファイルが提供されていますが swc ファイルが Flash 用、swf ファイルが HTML 用です。標準で提供される UI を使用する場合は ApplicationUpdaterUI.swc (swf) を、UI を使用しない場合は ApplicationUpdater.swc (swf) を使用します。

このフレームワークでサポートされるのは以下のようなシナリオです。

  1. 定期的にアップデートの確認を実行
  2. アップデート情報の書かれた XML ファイルをダウンロードし内容をチェック
  3. 新しいバージョンの AIR アプリケーションをダウンロードしてインストールを開始
  4. アップデートの確認からインストール進行状況の通知まで個々のステップにおけるイベントの発行
  5. アップデートされたアプリケーションの最初の実行時のイベント発行

従って、このフレームワークを使用するには、決められたフォーマットの XML ファイルをサーバ側に用意する必要があります。このファイルをアップデート記述子と呼びます。

アップデート記述子には以下の 3 つの項目を記述します。どれも必須項目です。

  • version - AIR アプリケーションの新しいバージョン、アプリケーション記述ファイル内の version と同じ値を使用
  • url - AIR アプリケーションのパッケージファイルの URL
  • description - アップデート処理中に表示される新しいバージョンに関する情報

下はアップデート記述子の簡単なサンプルです。description には lang 属性を使って各国語で説明を記述できるようになっています。

<?xml version="1.0" encoding="utf-8"?>
<update xmlns="http://ns.adobe.com/air/framework/update/description/1.0">
  <version>1.1a1</version>
  <url>http://example.com/updates/sample_1.1a1.air</url>
  <description>
    <text xml:lang="en">English description</text>
    <text xml:lang="ja">日本語 description</text>
    <text xml:lang="fr">French description</text>
  </description>
</update>
 

さて、アップデート機能を利用するには ApplicationUpdaterUI か ApplicationUpdater のインスタンスを使用します。このとき属性として以下の項目を設定できます。

  • updateURL: String - アップデート記述子の場所を URL で記述
  • delay: Number - アップデート確認の間隔を日単位で指定 (0.01 のような値も可)
  • defaultUI: <dialog> タグを使って標準 UI の使用を指定 (利用可能なダイアログは “checkForUpdate”,” downloadUpdate”, “downloadProgress”, “installUpdate”, “fileUpdate”, “unexpectedError”)

これらの属性を外部 XML ファイル経由で読み込むことができます。下は外部 XML ファイルの記述例です。

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0">
  <url>http://example.com/updates/update.xml</url>
  <delay>1</delay>
  <defaultUI>
    <dialog name="checkForUpdate" visible="false" />
    <dialog name="downloadProgress" visible="false" />
  </defaultUI>
</configuration>
 

外部 XML ファイルを利用する場合は、ファイルの場所を configurationFile 属性に設定します。

var appUpdaterUI:ApplicationUpdaterUI = new ApplicationUpdaterUI();
appUpdaterUI.configurationFile = "cfg/updateConfig.xml";
 

XML ファイルを使用する代わりに ApplicationUpdater の属性に直接値を指定することもできます。

var appUpdaterUI:ApplicationUpdaterUI = new ApplicationUpdaterUI();
appUpdaterUI.updateURL = "http://example.com/updates/update.xml";
appUpdaterUI.delay = 1;
 

属性を設定したら、必要なイベント処理を登録してから initialize() メソッドを呼びます。これでアップデート機能が実行されます。イベントの詳細についてはフレームワークに付属するドキュメントを参照してください。

var appUpdaterUI:ApplicationUpdaterUI = new ApplicationUpdaterUI();
appUpdaterUI.configurationFile = "cfg/updateConfig.xml";
 
appUpdaterUI.addEventListener(UpdateEvent.DOWNLOAD_COMPLETE, onDownloadComplete);
appUpdaterUI.addEventListener(StatusUpdateEvent.UPDATE_STATUS, onStatusUpdate);
appUpdaterUI.addEventListener(StatusUpdateErrorEvent.UPDATE_ERROR, onStatusUpdateError);
appUpdaterUI.addEventListener(DownloadErrorEvent.DOWNLOAD_ERROR, onDownloadError);
appUpdaterUI.addEventListener(ErrorEvent.ERROR, onError);
 
appUpdaterUI.initialize();
 

ApplicationUpdater のインスタンスを同時に複数使うことはできません。

 

Posted by ackie at 12:55 PM | Comments (0)

Adobe AIR 1.1 公開です

Adobe AIR 1.1 が公開されました。(Adobe AIR) AIR 1.1 からは、日本語を含む 10 の言語に正式対応です。AIR アプリケーションのインストール画面にも日本語を表示できます。

日本語のダウンロードページはまだのようですがとりあえずリンクです。(http://get.adobe.com/air/?loc=jp) 既に AIR 1.0 がインストールされている環境では AIR の自動アップデート機能が更新の有無を定期的に確認するため、わざわざ手間をかけなくてもそのうちアップデートされることと思います。(なお、今回 Linux 版についての更新はありません。いまのところ夏の間には次のアップデートが行われる予定とのこと。)

下記は、AIR 1.1 の主な新機能のリストです。

  • インストール時や実行時のダイアログボックスのローカライズ
  • 日本語のキー入力など英語以外の言語向けアプリケーションサポート
  • アプリケーション記述ファイルの name 及び description 属性の各国語対応
  • エラーメッセージのローカライズ
  • Capabilities.languages の追加による OS からの優先する言語の順位の取得
  • 証明書の移行をサポート(自己署名の証明書から CA 発行の証明書へ等)
  • Windows XP SP3、 Vista SP1 とそれぞれの OS の Tablet PC Edition と 64-bit 版をサポート
  • File.spaceAvailable API の追加による利用可能なディスクスペースの取得
  • NativeWindow.supportsTransparency 属性の追加
  • 400 以上のバグフィックスとメモリ利用の効率化
  • Microsoft SMS や IBM Tivoli 等を利用したサイレントインストール (要ライセンス契約です : Adobe AIR Runtime Distribution

関連するドキュメントは http://www.adobe.com/support/documentation/en/air/ にまとめられています。

既存の AIR 1.0 アプリケーションはそのままでも AIR 1.1 上で動作しますが、アプリケーションタグの “xmlns” 属性を http://ns.adobe.com/air/application/1.1 に変更すればパフォーマンス向上など AIR 1.1 のメリットを享受できるので、この機会に対応するのもよいかもです。

開発環境の設定

さて、AIR 1.1 対応のアプリケーションを開発するには開発環境も更新が必要です。

Flex Builder 3

Flex で AIR 1.1 のアプリケーションを開発するには今日中に公開される予定の 3.0.2 SDK を使用します。Flex SDK は Adobe のオープンソースサイトからダウンロード可能です。(Flex 3 SDK Downloads) ちなみに 3.0.2 は stable build です。これは最低限のテストはされているが milestone build ほど本格的なテストはされていないビルドになります。

Flex Builder 3 に新しい SDK を追加する方法は livedocs をご参照ください。(Flex Builder での複数の SDK の使用

データビジュアライゼーションとオートメーションのクラスを使っている場合はそれらのファイルを 3.0.2 のディレクトリにコピーする必要があります。以下はそのリストです。

  • <sdkdir>/frameworks/libs/automation*.swc
  • <sdkdir>/frameworks/libs/datavisualization.swc
  • <sdkdir>/frameworks/locale/en_US/automation*.swc
  • <sdkdir>/frameworks/locale/en_US/datavisualization_rb.swc
  • <sdkdir>/frameworks/locale/ja_JP/automation*.swc
  • <sdkdir>/frameworks/locale/ja_JP/datavisualization_rb.swc
  • <sdkdir>/frameworks/rsls/datavisualization_3.0.0.477.*

現在の Flex Builder 3 の仕様では、AIR 1.1 用のアプリケーション記述子を使うよう個別に設定する必要があります。ちょっと手間ですが、ルートタグを xmlns="http://ns.adobe.com/air/application/1.0" から xmlns="http://ns.adobe.com/air/application/1.1" に変更してください。

6/18 追記:Flex のテックノートが公開されました。(Update Flex Builder to use the Adobe AIR 1.1 SDK

Dreamweaver CS3

AIR 1.1 に対応した機能拡張をインストールします。入手はこちらから。(Adobe AIR extension for Dreamweaver mxp : 33.6MB)

Flash CS3

まず、Adobe AIR 用の Flash ファイルが作成できることを確認します。(できない場合は 「ヘルプ」→ 「アップデート」 で最新のアップデートを適用してください。)

次に、AIK というフォルダの中身を全て削除します。フォルダ自体は削除しないでください。

  • Windows: C:/Program Files/Adobe/Adobe Flash CS3
  • Mac OS X: Macintosh HD: Applications: Adobe Flash CS3

AIR 1.1 用の AIK (AIR SDK Integration Kit) をダウンロードして unzip してから先ほどの AIK フォルダ内にコピーします。

さらに、Flash から AIR 1.1 用にパブリッシュするにはアプリケーション記述ファイルをマニュアルでアップデートする必要があります。

まず、一旦アプリケーション記述ファイルを 「コマンド」 メニューから作成します。これで作成された xxx-app.xml を適当な名前に変更したら、AIR アプリケーション設定画面を開いて、改名したファイルをアプリケーション記述ファイルとして使用するよう指定します。

次に、アプリケーション記述ファイルを編集します。変更する項目は以下のとおりです。テキストエディタなどで開いて修正します。

  • xmlns="http://ns.adobe.com/air/application/1.0" を xmlns=" http://ns.adobe.com/air/application/1.1" に修正
  • <name> タグ内に <text xml:lang="ja">日本語名</text> のようにしてアプリケーション名を記述
  • 同様に <description> タグ内にも日本語で説明を記述
  • <icon> タグが正しくローカルファイルのパスを指すように変更 (またはデフォルトアイコンを使うようにタグ自体を削除)
  • ファイルのエンコーディングを UTF8 に変更

あとは、いつものようにパブリッシュできます。詳細はこちらのテックノートをご覧ください。(Installing Adobe Air 1.1 Update for Flash CS3 Professional

Posted by ackie at 12:05 PM | Comments (9)

June 16, 2008

Adobe AIR コンテスト表彰式の時間

6 月 19 日 (木) の Adobe AIR コンテスト表彰式の時間が少しだけ変更になっていました。

受付開始が 17:50、イベント開始が 18:20 と 10 分ずつ早くなっています。ご来場の方はご注意ください。終了予定は 20:30 と変わっていません。

場所は品川プリンスホテルアネックスタワー 3F のクラブ eX です。

Posted by ackie at 09:29 AM | Comments (0)

June 06, 2008

AS3 の論理積と論理和

最近質問を受けたので見てみたら Flash のヘルプドキュメントが古いのに気づいたので今日はこの話題です。(LiveDocs の AS3 リファレンス は最新です)

さて、まず下の例を考えてみます。

var foo:Boolean = true;
var bar:Object = {};
 
trace(foo && bar);  // 論理積 : 出力は [object Object]
trace(foo || bar);  // 論理和 : 出力は true
 

論理積と論理和の結果は、演算子の左側の式 (この場合は foo) の値で決定されます。ごく単純化すると、ルールは

論理積 (&&) : 左側の式が false なら左側の式の値、true なら右側の式の値
論理和 (||) : 左側の式が true なら左側の式の値、false なら右側の式の値
 

です。つまり、実際に論理演算が行われているわけではないのですね。演算結果の値も Boolean 型になるとは限りません。

さて、AS3 のプログラムでは Boolean もオブジェクトなので、左側の式を評価した後その値の型が何であっても同じルールを適用することができます (されます)。とにかく左辺の式を評価したら、結果を Boolean 型に変換して値を参照します。

それぞれの型を Boolean 型に変換した場合の値は以下のようになります。

Undefiend 	false
Null 		false
Boolean 	変換前のオブジェクトと同じ
Number 		0 または NaN は false それ以外の値は true
String 		空文字列は false  それ以外の値は true
Object 		true
 

ここで左辺が Boolean 型にならない例をひとつ。

var foo:String = "Hello";
var bar:Object = {};
trace(foo || bar); // 出力は Hello
 

”Hello” は空文字列でないため Boolean 型に変換した際の値は true になります。この例で使われている演算子は論理和 (||) なので、左側の式 (foo) の値が出力されるわけです。

論理積と論理和を使った条件文

上で記述したルールから想像されるとおり、論理積や論理和の演算において、演算子左側の式は必ず評価されますが、右側の式は左側の値次第で評価されたりされなかったりします。たとえば、論理積において、右側の式が評価されるのは左側の式の値が true の場合のみです。

この振る舞いを、条件文の代わりに使うことも可能です。たとえば以下の 2 つは同じ意味を持ちます。

1. if 文で記述
if (foo) {
  doSomething();
}
 
2. 論理積で記述
foo && doSomething();
 

この例とは逆に、ある条件が偽の場合のみ実行したい場合には、論理和 (||) を使うことができます。

論理積や論理和が if 文と交換可能であることは以下の例のほうが分かりやすいでしょうか。

1. if 文のみで記述
if (foo) {
  if (bar) {
    sayHello();
  }
}
2. if 文と論理積で記述
if (foo && bar) {
  sayHello();
}
3. 論理積のみで記述
foo && bar && sayHello();
 

else 文には論理和で対応できます。複雑な条件になってくるとこんがらがりやすいので積極的にお勧めはしませんが。

&&= 演算子と ||= 演算子

特に、オブジェクトを Boolean 型に変換したときの値により代入を制御したい場合には &&= と ||= 演算子が用意されています。&&= は左側のオブジェクトの値が真の場合のみ、||= は値が偽の場合のみ右側の式の評価と左側のオブジェクトへの代入を行います。

下の例では 「foo の値が空文字列以外の文字列だったらタグに変換する」 という条件を 2 種類の方法で記述しています。

1. if 文で記述
if (foo) {
  foo =  "<" + foo + "/>";
}
 
2. &&= 演算子で記述
foo &&= "<" + foo + "/>";

Posted by ackie at 06:46 PM | Comments (0)

June 04, 2008

Adobe AIR コンテスト締め切りと授賞式

Adobe AIR コンテストの締め切りが今週の金曜日になりました。1 日か 2 日くらいなら遅れても大丈夫らしい (噂ですけど) ので、応募予定の方は最後までがんばってください。

授賞式の予定は以下のとおりです。

日時:2008年6月19日(木) 18:30~20:30 (受付開始 18:00~)
会場:品川プリンスホテル クラブeX
参加費:無料 (要事前登録)
定員:300名

詳細および参加登録はこちらのページをご参照ください。(http://www.info-event.jp/adobe/aircon/

Posted by ackie at 06:44 PM | Comments (0)