デスクトップアプリを変える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クラスで実行環境における入力デバイスのサポート状態の確認ができます。TouchEvent、GestureEvent、PressAndTapGestureEvent、TransformGestureEventの各イベントで、ユーザーの入力を捕捉できます。
ネットワーク機能の強化
□ 【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/モバイルアプリもできる! |
リッチクライアント&帳票 全記事一覧へ |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|