Adobe AIRの最近のブログ記事

Adobe AIRアプリケーションへのコードサイニング署名(アプリの電子署名・証明書)の記事は、
ADOBE DEVELOPER CONNECTIONにあります。
※こちら(http://www.adobe.com/jp/devnet/air/articles/globalsign_codesign.html)。

認証局

 ※Web Designing (ウェブデザイニング) 2009年 01月号 [雑誌] にも記事がありました。

こちらのページからダウンロードできます。
※古いバージョンをお使いの方も、先のページから再度INSTALL NOWアイコンを押すと、バージョンアップできます。

アプリケーション本体は、約1000行ほどの規模ですが、結構色々なことが実現できています。AIRの実力ですね。ちなみにLWWSの処理は、真面目にライブラリ化したので約900行ほどです。

また、今回もLinuxの対応で、結構時間がかかってしまいました。。。
具体的には、コンテキストメニューの応答の違いや、フォント、GlowFilterのかかり具合の微妙な差違です。最終的には、Windowsで実行した場合に最も奇麗に見えるような状態で断念しました。。。

お天気Webサービスを使用する際に必要な「地域別に定義されたID番号」については、ハードコーディングするのでなく、RSS(全国の地点定義表)から取得するのがよいでしょう。

例えば、Action Script 3(AS3)では、以下のように記述します。

private function hoge():void
{
    var url:String = "http://weather.livedoor.com/forecast/rss/forecastmap.xml";
    var urlRequest:URLRequest = new URLRequest(url);
    var urlLoader:URLLoader = new URLLoader(urlRequest);
    
    urlLoader.addEventListener(Event.COMPLETE, onUrlLoaderComplete);
    urlLoader.load(urlRequest);
}

private function onUrlLoaderComplete(event:Event):void
{
    var urlLoader:URLLoader = event.currentTarget as URLLoader;
    var xml:XML = new XML(urlLoader.data);

    // コメントは、出力結果(参考)です
    var ldWeatherNS:Namespace = xml.namespace("ldWeather");
    
    for each (var xmlChannel:XML in xml.channel)
    {
        for each (var xmlSource:XML in xmlChannel.ldWeatherNS::source)
        {
            for each (var xmlArea:XML in xmlSource.area)
            {
                for each (var xmlPref:XML in xmlArea.pref)
                {
                    for each (var xmlCity:XML in xmlPref.city)
                    {
                        trace(parseInt(xmlCity.@id) + ":" +
                            xmlArea.@title + "-" +
                            xmlPref.@title + "-" +
                            xmlCity.@title);
// 1:北海道地方-道北-稚内
// 2:北海道地方-道北-旭川
// 3:北海道地方-道北-留萌
// ...
// 141:南西諸島地方-沖縄県-石垣島
// 142:南西諸島地方-沖縄県-与那国島
                    }
                }
            }
        }
    }
}

結果のXMLデータには、IDとともに、area(北海道地方など)、pref(道北)、city(稚内)などの情報も格納されています。

※Weather Report AIR参照

AIRアプリでは、ユーザの設定を記憶するために、アプリケーション記憶領域ディレクトリ(File.applicationStorageDirectory)へファイルを書き込むことがあります。

デバッグ時に、設定値が正しく書き込めたかどうか確認するために、このディレクトリを確認することが多いのですが、不慣れなOSだと・・・どこだっけ?となってしまいます。。。

ので、以下にOS毎のアプリケーション記憶領域ディレクトリをメモ書きしておきました。

  • Windows・・・%Documents and Settings%\ユーザ名\Application Data\アプリケーション ID.発行者 ID\Local Store
  • Macintosh・・・/Users/ユーザ名/Library/Preferences/アプリケーション ID.発行者 ID/Local Store
  • Linux・・・/home/ユーザ名/.appdata/applicationID発行者 ID/Local Store

詳しくは、Adobeさんのヘルプにあります。

[AIR] ウィンドウの透明度

| トラックバック(0) |

これまでに述べていたLinuxでのウィンドウの透明度については、前述したAdobeさんの公式ヘルプに詳しく書かれておりましたので、AIR1.5開発者は、ご一読された方がよさそうです。

[HTML および Ajax での Adobe AIR 1.5 アプリケーションの開発]
    - ウィンドウ、画面、メニューおよびタスクバー
        - ネイティブウィンドウの操作
            - AIR ウィンドウの基礎
                - ウィンドウの透明度

重要そうなところだけ要約すると、以下のようになります。

  • WinやMacでは、常に透明度をサポートするが、Linuxでは、その限りではない
  • 透明度が使用可能かどうかはNativeWindow.supportsTransparencyでチェックできる
  • 透明度をサポートしない場合には、透明領域は不透明の黒で描画される
  • LinuxでもCompiz(こんぴず)などの合成ウィンドウマネージャなどの視覚効果の設定が有効であれば透明度を利用できる

いくら見栄えの良い非矩形ウィンドウであっても、環境によって真っ黒に表示されてしまうとなると、せっかくのアプリの価値も下がってしまいます。ですので、この点については、必ず留意しないといけないですね。

「Flex での Adobe AIR 1.5 アプリケーションの開発ドキュメント」(オンラインヘルプ)のURLは、こちら(http://help.adobe.com/ja_JP/AIR/1.5/devappsflex/にありました。

「インストール方法」~「アプリケーションの配布とアップデート方法」まで、丁寧かつ詳細まで、すべて網羅されています。これからAIRを始める方には、大変良いリソースだと思います。
以前紹介した Tour de Flexという最強のAIRサンプルアプリとあわせて読み進めるのが、一番良い勉強方法だと思います。

※このURLにたどり着くまでが大変だったので、今更ですが載せておきました。

akihiro kamijo先生のブログ記事(2008/12/18)

>OS に依存しない AIR アプリケーションを
>開発するためのベストプラクティスが
> US のサイトに公開されています
>Developing cross-platform Adobe AIR applications

と書かれていましたので読んでみました。

手短に要約すると、以下のようになります。

AIRアプリケーションは、AIRランタイムが動作する(Win/Mac/Linux)環境で実行できるが、OSにより、サポートする機能が異なるため、それらの機能が使えるかどうか確認してから実行するような処理が必要とのこと。このとき、Capabilities.osでOS判定するのでなく、各機能毎に用意されているサポートしているかどうかを保持しているプロパティを確認するのがポイントです。

例えば、Weather Report AIRでもやってしまったのですが、どのOSでもNativeWindowの透過をサポートする訳ではないので、NativeWindow.supportsTransparencyプロパティ(true/false)をチェックして、処理を分けるなどしないといけません。さもないと、透過をサポートしない環境で、透過領域が真っ黒に表示される結果となってしまいます。

他にも、以下のプロパティについてもコメントされていました。

  • NativeApplication.supportsDockIcon(アプリケーションドックアイコン)
  • NativeApplication.supportsMenu(グローバルアプリケーションメニューバー)
  • NativeApplication.supportsSystemTrayIcon(システムトレイアイコン)
  • NativeWindow.supportsMenu(ネイティブのウィンドウメニュー)
  • NativeWindow.supportsTransparency(透明なピクセルが指定されたネイティブウィンドウ)
  • File.applicationDirectory(インストールされたアプリフォルダ)
  • File.desktopDirectory(ユーザーのデスクトップディレクトリ)
  • File.documentsDirectory(ユーザーのドキュメントディレクトリ)
  • File.userDirectory(ユーザーのディレクトリ)
  • File.separator(パスの区切り文字)
  • File.getRootDirectories(ファイルシステムのルートディレクトリ)
  • File.lineEnding(行終了文字)

アプリ/ネイティブウィンドウ/ファイルなど、OSに近い機能を使用されている方は、原文を御一読されると、きっと役に立つと思います。

Adobe AIR1.5の公式なリリースノートは、こちらから参照できるようです。

AIR1.5を正式にサポートしているディストリビューションは、

  • Fedora 8
  • Ubuntu 7.10
  • openSUSE 10.3

とのことで、重要なところでは、シームレスインストールには、Flash 10.0.15.3以降が必要だということです。

試しに、Ubuntu 8.10(FireFox 3.0.3)でWeather Report AIRのページを参照してみると、Flash 10.0.15.3がインストールされていないため、シームレスインストール用のインストールバッジ(INSTALL NOWアイコン)が表示されませんでした。。。

Flash 10.0.15.3(.deb for Ubuntu 8.04+)をインストール後、再度Weather Report AIRのページを参照してみると、今度は無事インストールバッジが表示され、シームレスインストール(AIRランタイムとアプリを同時にインストールすること)ができました。

気になるWeather Report AIRアプリの動作ですが、下記2点を除いて、問題なく動作しました。

  • ウィンドウの透過がされていない(このアプリでは、4隅を角丸で少しだけ透過しています)
  • ウィンドウ全体をマウスダウンで移動させる実装をしていると、コンボボックスやボタン押下でも移動してしまう(こちらは、実装上の問題かもしれませんが)

それにしても、1バイナリでWin/Mac/Linuxで動作するアプリを配布できるAIRは魅力的な実行環境ですね。

[AIR] Adobe AIR 1.5 for Linux

| トラックバック(0) |

Adobe AIR1.5がLinuxにも対応したようです(2008/12/18)。
これで、Win/Mac/LinuxすべてでAIR1.5が利用可能となりましたね。

こちら(Adobeのサイト)からダウンロードできます。

天気予報情報を取得するには、お天気Webサービス仕様で定義されたURLに対してURLRequestを作成し、URLLoaderで読み込みます。

例えば、「明日の福岡県・久留米の天気」を取得する場合、Action Script 3(AS3)では、以下のように記述します。

private function hoge():void
{
    var url:String = "http://weather.livedoor.com/forecast/webservice/rest/v1" +
        "?city=113&day=tomorrow";
    var urlRequest:URLRequest = new URLRequest(url);
    var urlLoader:URLLoader = new URLLoader(urlRequest);
    
    urlLoader.addEventListener(Event.COMPLETE, onUrlLoaderComplete);
    urlLoader.load(urlRequest);
}

private function onUrlLoaderComplete(event:Event):void
{
	var urlLoader:URLLoader = event.currentTarget as URLLoader;
	var xml:XML = new XML(urlLoader.data);

	// コメントは、出力結果(参考)です
	trace(xml.title);	// "福岡県 久留米 - 明日の天気"
	trace(xml.telop);	// "晴れ"
	trace(xml.temperature.max.celsius); // "12"
	trace(xml.temperature.min.celsius);	// "2"
	trace(xml.image.url);	// "http://image.weather.livedoor.com/img/icon/1.gif"
}

URLLoaderによる読み込みが完了すると、URLLoader.dataにtextデータが格納されますので、XMLクラスのコンストラクタに渡して作成することで、XMLデータを得ることができます。

天気アイコンのURLは、xml.image.urlにありますので、mx:Image.sourceにセットすれば、天気アイコンを表示することができます。

※Weather Report AIR参照

12

2016年8月

  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