Flexフレームワークで変わるRIA開発の現場
連載インデックスへ
第3回

デスクトップアプリを変えるAdobe AIR 2の新機能15選


ティルフィン合同会社
高橋 俊光
2010/7/20


進むOSネイティブ機能の利用


【4】ネイティブインストーラ

 Windowsは.exe、Mac OS Xは.dmg、Linuxは.rpm/.debファイルとOS本来のインストーラを生成できます。AIRのランタイムは必要に応じて自動でインストールされるため、ランタイムの配布を気にする必要がなくなります。

 また、.airファイルでインストールした場合と異なり、ネイティブプロセスの利用とネイティブインストーラでインストールした場合は機能が拡張されます。

【5】ネイティブプロセスAPI

 ネイティブプロセスAPIは、外部アプリケーションの起動とそれに対する標準入出力の操作を可能にします。WindowsであればWindows Script Hosting、Mac OS XであればAppleScript、そのほかコマンドラインシェルで実行するようなアプリケーションとの連携を可能にします。ネイティブプロセスAPIの利用には、前述のネイティブインストーラでインストールされている必要があります。

 NativeProcessStartupInfoクラスに、起動するアプリケーションの情報をセットして、NativeProcessのstartメソッドに渡すことで実行が開始します。ProgressEvent、IOErrorEventの各イベントで標準入出力エラーに対する処理を実装できます。

 アプリケーションの終了もNativeProcessExitEventのEXITイベントで検出できるため、外部アプリの実行結果を反映させることも可能です。

【6】ドキュメントを開くネイティブドキュメントハンドラ

 アプリケーションに関連付けられたファイルを開くことができます。要するにWindowsなどでファイルをダブルクリックしたときの動作をエミュレートする機能です。

 Fileクラスに追加されたopenWithDefaultApplicationメソッドを呼び出します。前述のネイティブインストーラでインストールされていない、つまり、.airファイルでインストールされた状態では、いくつかのファイルタイプに実行の制限があります。

【7】リモートファイルのドラッグアウトによるファイルコピー

 リモートの上リソースファイルのURLをOSのクリップボードに渡すことでAIRアプリ上からドラッグしてデスクトップなどのローカルフォルダにドロップすることで、簡単にファイルのダウンロード機能を実装できます。ドラッグには、air.desktopパッケージに追加されたURLFilePromiseクラスを使います。

private function fileLabel_mouseDown(event:MouseEvent):void
{
    var clipboard:Clipboard = new Clipboard();
    if (clipboard.supportsFilePromise)
    {
        var filePromise:URLFilePromise = new URLFilePromise();
        filePromise.request = new URLRequest("http://www.tilfin.com/example.swc");
        filePromise.relativePath = "example.swc";
        
        var fileList:Array = new Array(filePromise);
        clipboard.setData(ClipboardFormats.FILE_PROMISE_LIST_FORMAT, fileList);
        NativeDragManager.doDrag(InteractiveObject(event.target), clipboard);
    }
}

 この機能はOSによってサポートが変わるため、ClipboardのsupportsFilePromiseプロパティを確認する必要があります。

デバイス連携が強化


【8】大容量記憶デバイスの操作

 USBメモリやフラッシュメモリといった外部接続デバイスのファイルシステム操作と接続・取り外しの検出が可能です。

 flash.filesystemパッケージに追加されたStorageVolumeInfoクラスを使います(storageVolumeInfoプロパティがシングルトンインスタンスを提供)。StorageVolumeChangeEventのSTORAGE_VOLUME_MOUNTとSTORAGE_VOLUME_UNMOUNTの両イベントでデバイスの接続、取り外しを検出ができ、各デバイスの情報はStorageVolumeオブジェクトで提供されます。

【9】プリンタ操作

 細かな印刷に関する指定が可能です。PaperSizeクラスで用紙のサイズを、PrintUIOptionsクラスで印刷するページ範囲を、PrintMethodクラスで印刷方法をビットマップ形式にするかベクター形式にするかを、それぞれ指定できます。いずれのクラスもflash.printingパッケージに追加されています。

【10】ローカルマイクからWAVEデータを取得

 PCに接続されたマイクから音声入力をWAVE(バイナリデータ)で取得できるので、エフェクトを掛ける加工処理やイコライザーやスペクトル表示など、実装の幅が広がります。

 MicrophoneクラスにSampleDataEventのSAMPLE_DATAイベントを追加すると、event.data.readFloat()でそのときのサンプルの値が捕れます。

【11】マルチタッチとジェスチャ

 Windows 7においてマルチタッチを、Windows 7とMac OS X 10.5.3でジェスチャのイベントを扱えます。Multitouchクラスで実行環境における入力デバイスのサポート状態の確認ができます。TouchEventGestureEventPressAndTapGestureEventTransformGestureEventの各イベントで、ユーザーの入力を捕捉できます。

ネットワーク機能の強化


【12】ソケットのUDP、TLS/SSLのサポート

 従来のソケットはTCPによるクライアント実装のみでしたが、今回大幅拡充されています。DatagramSocketクラスによって、UDPによるユニキャストブロードキャスト(送受信)、マルチキャスト(送信のみ)が可能です(詳細は、後述のサンプルアプリを参照)。

【13】TLS/SSLのサポート

 SecureSocketクラスで、TLS/SSLをサポートする信頼できる有効な証明書を備えたサーバに接続して暗号化通信を行えます。

【14】TCPでのサーバソケットのサポート

 UDPと同様に、TCPもServerSocketクラスによってサーバが実装可能です。これは「サーバサイドプログラミングをActionScriptでできるようになる」という非常に大きなアップデートです。SQLiteも備えているAIRですから、サーバロジックとデータベースまでカバーするベースが整ったことになります。

補足 ServerSocketでHTTPサーバを実現した「airhttpd」

手前味噌で恐縮ですが、ServerSocketを利用して実装したHTTPサーバのライブラリ「airhttpd」を公開しています。サンプルのWebサーバアプリも配布しているので、参考にしていただければと思います。


【15】DNSクライアント

 新しいflash.net.dnsパッケージのDNSResolverクラスを利用すると、DNSホストの名前解決が可能です。

  • ARecord:ホストのIPv4アドレス
  • AAAARecord:ホストのIPv6アドレス
  • MXRecord:ホストのメール交換レコード
  • PTRRecord:IPアドレスのホスト名
  • SRVRecord:サービスのサービスレコード
1-2-3

 INDEX
Flexフレームワークで変わるRIA開発の現場(3)
デスクトップアプリを変えるAdobe AIR 2の新機能15選
  Page1
Adobe AIR 2、そして、Flex 4.1/Flash Builder 4.0.1
Web用レンダリングエンジン「WebKit」の強化
【3】グローバルエラーハンドラ機能
Page2
進むOSネイティブ機能の利用
デバイス連携が強化
ネットワーク機能の強化
  Page3
実際にAIR 2のメッセンジャーアプリを作ってみよう
Flex/AIRでAndroid/モバイルアプリもできる!


リッチクライアント&帳票 全記事一覧へ



HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間