第3回
デスクトップアプリを変えるAdobe AIR 2の新機能15選
ティルフィン合同会社
高橋 俊光
2010/7/20
進むOSネイティブ機能の利用
□ 【4】ネイティブインストーラ
- - PR -
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/モバイルアプリもできる! |
||
| リッチクライアント&帳票 全記事一覧へ |
TechTargetジャパン
- 次のモバイルアプリはどのフレームワークで作る? (2012/5/24)
スマホアプリの開発を容易にするJavaScriptのフレームワークが続々と増えている。それぞれの良さや仕組み、何がどこまでできるのかを徹底解剖する - 「LESS&専用エディター」でCSSをシンプルに書こう (2012/5/23)
「LESS」はCSS初心者に向けた、シンプルなライブラリだ。「LESS」で、変数などのプログラミングの基礎的な考え方もCSSで学ぼう - 学校が世界一のデジタル環境になったら (2012/5/18)
授業はアーカイブに蓄積され、家からも見られる。家族が授業テーマのアイデアを出す。そんな姿が実現されるかもしれない - 1000万ドル調達も夢じゃないクラウドファウンディング (2012/5/15)
クラウドファンディングは、寄付型でも投資型でもない「購入型」が主流。商品を“開発する前に販売”して開発費用を集める逆転のシステムだ
|
|

