印刷用に表示
AIRプログラミングに関する基本知識から開発方法の基礎を習得していただくことを目的とする連載です。対象とする読者は次のような方です。
デザイナーでAIRによるデスクトップRIAの概要や開発方法を知りたい方
この連載ではプログラミングの経験を問わず、RIA、デスクトップRIAの概念、AIRの基本を理解したうえで、シンプルなAIRアプリケーションを作成できることを目標とします。インタラクティブな環境で学習されたい方は、是非お申し込みください。
必要なソフトウェアとファイル
今回はありません。
必要な前提知識
特にありません。プログラミングやWebアプリケーション開発の知識も必要ありません。
学習できること
AIRの概要とアドバンテージ
著者について
20年を超えるIT開発・教育・マネージメントキャリアを持つ。NET等を駆使したシステム開発経験を多くもつ。同社サイトでは、AIR、Flex技術情報やサンプルコードの公開を行っている。
▼その他(リンク先)
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
これからはじめるAIRプログラミング 第1回デスクトップRIAの基本とAIRの優位点 | デベロッパーセンター
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
AIR-名前の由来と基本概念
Web開発経験者がすぐに取り掛かれる-AIRアプリケーションの作成方法
これからはじめるAIRプログラミング 第1回デスクトップRIAの基本とAIRの優位点
AIR-名前の由来と基本概念
AIRはWindowsやMac、LinuxなどのOSで動作するアプリケーションを作成し、配布して使ってもらうために必要な環境や開発ツールなどの「道具」すべてを提供するインフラです。今回は、特に初めてAIRに触れる方や、興味を持っているが、まだ理解できていない、よくわからないという方のために、概要と特徴をご紹介します。まず前提となるキーワードを元にして、AIRをご紹介します。次のような定義です。日本語では次のようになります。:クロスオペレーティングシステムのランタイムです。:リッチインターネットアプリケーション(RIA)をデスクトップアプリケーションとして実行できるようにします。:デスクトップアプリケーションを作成するのに、得意のWeb開発スキルを活用できる環境を提供します。ここで次のようなキーワードが出てきました。これらの理解することでAIRの概要を把握できます。ランタイムは日本語では「実行環境」と訳し、アプリケーション本体を稼動させるために必要なプログラムを意味します。AIRランタイムはAIRアプリケーションをインストールして実行する前にセットアップしておく必要があります。Adobeサイトから無償でダウンロードできます。実際には、AIRランタイム(runtime)は、AIRアプリケーションが実行するための環境を提供するプログラムです。この「ランタイム」がAIRを理解するためのキーワードになります。に「クロスオペレーティングシステムのランタイム」ということがありますが、「ランタイム」はAIRアプリケーションを実行するための土台として働くプログラムです。つまり、AIRアプリケーションはランタイムという補助的なプログラムの助けを借りて動作します。実際には、ランタイムはAIRアプリケーションをインストールするための環境を提供し、次の図のように、実行時にはOSとAIRアプリケーションの間で働きます。クロス・オペレーティング・システムは、「同じアプリケーションが異なるOSで動作する」ことを意味します。AIRアプリケーションは「Windowsバージョン」「Macバージョン」「Linuxバージョン」というような、OS別の異なるバージョンを作る必要がなく、一度作った作品はそのまま異なるOS上で動作します。
クロスOSを実現する仕組み
なぜこのような2重構成になったかを理解するために、「クロスオペレーティングシステム」(以下「クロスOS」と記述します)を実現するための仕組みを考えます。これは「同じアプリケーションがそのまま複数(これが「クロス」です)のオペレーティングシステムで「動作する」ということを意味しました。通常OSが異なると、アプリケーションの実行ファイルやインストーラはそのOSに合わせて構築しなおす必要があります。クロスOSを実現するために、ランタイムがその役割を果たします。
詳細は異なりますが、AIRランタイムと同じようなクロスOSを実現する類似の形態として、Javaバーチャルマシン(VM)や、RIAとデスクトップアプリケーションを理解する。AIRは、リッチインターネットアプリケーション(RIA)をデスクトップアプリケーションとして実行する環境です。
RIAという言葉の意味とあわせて、この概念を理解しましょう
RIAとは、統合前のMacromediaが2002年に提唱した概念で、現在ではFlashに代表されるGUIベースの高度なユーザ体験をもたらすインターネットアプリケーションを意味します。一般的な特徴として、RIAはWebアプリケーションであるため、ブラウザ上で実行されます。そのため、通常Webサーバに接続してコンテンツをダウンロード/アップロードします。(ただし、インフラによってはブラウザ不要の実行形態をサポートするものもあります。は、「リッチインターネットアプリケーション(RIA)をデスクトップアプリケーションとして実行させることができる」ということでした。ここで「デスクトップアプリケーション」とあえて宣言するのは、「ブラウザ上で実行しない」という意味です。RIAの特徴をまとめると、次のような機能を持つアプリケーションということになります。ページ更新を行うためにWebサーバにアクセスしなくてもよい。サーバからデータを取得する場合、必要なデータのみを取得でき、ページ全体を更新する必要がない。つまり、RIAとは「GUIベースの美しいレイアウトによる、ユーザフレンドリーかつ高機能、高パフォーマンスなWebアプリケーション」です。技術的には次のような定義になります。
GUIによる高い操作性や視認性(リッチなユーザーインタフェースと表現力を提供)
クライアントマシンで多くの処理を行うので、サーバの負荷が軽い。ネットワークの負荷が軽い。Fat Clientが発展してきた背景には、パソコンの基本性能が大きく向上したことが挙げられます。AIRの場合RIAでもあり、同時に「デスクトップアプリケーション」でもあります。これは、AIRが次のような特徴を持つことをさします。デフォルトでWebサーバにアクセスする機能を持つインターネットアプリケーションである。実行にブラウザは必要なく、OSにインストールされたアプリケーションとして動作する。実際には、AIRアプリケーションには上記の基本機能だけでなく、その他の多くの優れた機能を持たせることができます。それらの一部を本連載の後半でご紹介いたします。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
AIRラインタイムの入手とインストール
第1回「デスクトップRIAの基本とAIRの優位点」でご紹介したように、AIRアプリケーションをインストールして実行するにはAIRランタイムをあらかじめセットアップしておく必要があります。方法はシンプルですが、手順をご紹介します。
AIRランタイムのダウンロード
AIRランタイムはAdobeサイトからダウンロードします。
AIRランタイムのインストール
AIRランタイム入手後のインストール手順は通常のアプリケーションセットアップと同様です。以下の画面イメージはOSとAIRバージョンにより異なります。上記のようにインストールが完了すると、AIRアプリケーションをインストール実行できます。次にサンプルプログラムのインストール手順をご紹介します。アドビは作成したAIRアプリケーションの配布方法として、開発者にとってもユーザにとっても非常に効率よいエレガントな方法を提供しています。この方法は「シームレスインストール」と呼ばれます。AIRプログラムをインストール、実行するための正式な手順として、ランタイムのインストールをご紹介しましたが、アドビが提供する「シームレスインストール」配布方法をとれば、ユーザはAIRアプリのインストールと同時にランライムのインストールを行うことができます。つまり、ユーザがランタイムを個別にダウンロードしてインストールする必要がなくなります。筆者がそのためのサンプルアプリケーションとシームレスインストーラを作成しました。ランタイムをインストールしていない方も、AIRアプリと同時に「シームレス」にインストールすることができます。おためしください。なお、インストールしたAIRランタイムとAIRアプリケーションはWindowsの場合、通常のアプリケーションと同様にコントロールパルから削除を行うことができます。サンプルのアプリケーションはベーシックなエフェクト効果(ビヘイビア)を確認するシンプルなものです。下記のサイトからシームレスインストールが行えます。AIRランタイムがインストールされていない場合、次のダイアログで「はい」を選択してシームレスにインストールできます。ランタイムがインストール済みの場合、アプリケーションのインストールはすぐに始まります。次の画面では、「開く」を選択してダウンロードと同時にセットアップを開始します。セットアップ開始後の次の画面では、1発行者ID、2システムアクセスに関する警告が出ていますが、1は独自に作成したデジタル証明書を使用しているため出される警告で、2はAIRアプリケーションがローカルシステムに対してアクセスする機能を持つことに対する確認事項です。「インストール」を選択したあと、インストール先などを設定すると、すぐにインストールが行われます。次のようなアプリケーションがインストールされます。クラッシックなHaloビヘイビアを確認できます。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
AIRインストーラの作成とインストール実行
印刷用に表示
これからはじめるAIRプログラミング
AIRプログラミングに関する基本知識から開発方法の基礎を習得していただくことを目的とする連載です。対象とする読者は次のような方です。
デザイナーでAIRによるデスクトップRIAの概要や開発方法を知りたい方
この連載ではプログラミングの経験を問わず、RIA、デスクトップRIAの概念、AIRの基本を理解したうえで、シンプルなAIRアプリケーションを作成できることを目標とします。
必要なソフトウェアとファイル
必要な前提知識
学習できること
著者について
20年を超えるIT開発・教育・マネージメントキャリアを持つ。NET等を駆使したシステム開発経験を多くもつ。同社サイトでは、AIR、Flex技術情報やサンプルコードの公開を行っている。
▼その他(リンク先)
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
メール・クライアント風のリッチUIを備えており、Inboxやスマートフォルダ、ドラッグ&ドロップ操作などを利用して、個々の仕事を表す「課題」の作成や絞り込み、状態や優先度の設定、プロジェクトの各メンバーへの割り振りを行えます。
その使い勝手は、おおよそiTunesを想像していただければよいでしょう
このColaboloのひとつの特徴は、「デスクトップ・アプリのポータビリティと可用性」も備える点です。一般的なWebアプリケーションは、当然オンライン状態でなければ役に立ちません。しかしColaboloの場合は、唐突にLANケーブルを抜いたとしても表面上はまったく変わりなく利用でき、UIのフリーズやレスポンス低下は皆無です。もちろんメンバーとのリアルタイム連携は途絶えるものの、それ以外の機能やデータはすべて継続して利用でき、例えばネット環境のないミーティング・ルーム、または地下鉄の車内でさえ、GTDの収集や処理、分類、評価といった作業を進められます。つまりは“接続性フリー”なアプリケーションと言えます。そもそもColaboloは、後述するように全機能がローカルDBで実装されているため、Webアプリのようにサーバやネットワークの調子もしくは混み具合によって反応が鈍くなったりダウンしたりすることはありません。このあたりの使い勝手は、WordやExcelといったデスクトップ・アプリそのものです。そしてネットワーク接続が復帰すれば、それまでの更新内容がほかのメンバーにも自動的に反映される仕組みです。
このColaboloをごく短く評するとすれば、「iTunes的なリッチUIとメッセンジャーのスピード感を持ち、Excel並にポータブルなタスク管理ツール」といったところ
この独特のエクスペリエンスを生み出すカギは、AIRのローカルDB「SQLite」の活用にあります。AIRがFlashやFlexといった既存のテクノロジーと大きく異なる点、そのひとつは、リレーショナル・データベース「SQLite」がAIRの実行環境そのものに組み込まれていることです。例えばAIRクライアントでは、以下のようなActionScriptコードを記述することで、簡単にデータベースをオープンすることができます。
ここでは、ローカルPC上に保存されたデータベース・ファイルfoo
dbをオープンし、オープン処理が完了したら関数onDbOpenedを呼び出すことが記述されています。つづいて、例えば関数onDbOpenedには以下のようなコードを記述します。検索結果の個々のレコードはオブジェクトのかたちで取り出せるという流れです。その一方で、ひととおりのSQL構文やトランザクション管理をサポートし、性能的にもMySQLにそれほど引けを取りません。すなわちAIRは、クライアント単独でも動作する業務アプリケーションを、上述のような比較的シンプルなコーディングで構築できる能力を備えています。そしてColaboloのミソは、個々のクライアントが内蔵するSQLite間を同期するレプリケーション機能と、同期のタイミングをリアルタイムに通知し合うメッセージング機能を組み合わせた「リアルタイムDB同期」にあります。これにより、それぞれのAIRクライアントは「個別のデスクトップ・アプリケーション」として完全に独立しつつも、オンライン状態では密接に連携し合って「プロジェクト単位のコラボレーション・ツール」として振る舞うのです。ColaboloのリアルタイムDB同期は、以下の2種類のサーバによって実現されています。このうち「DB同期サーバ」は、各メンバーのColaboloクライアントに内蔵されたSQLiteの内容を相互に同期する役割を担います。Colaboloクライアント上のユーザ操作によって何らかのデータが更新されると、DB同期サーバに対して更新データが送信される仕組みです。この同期処理はColaboloクライアントのバックグラウンドで実行されるため、サーバのレスポンス時間がUIのレスポンス性を律することはありません。このリアルタイムDB同期のメリットはほかにもあります。
例えば、DB同期サーバが「デスクトップ・アプリのバックアップ・サーバ」としても機能する点
すべてのデータがサーバ側にも保存されているため、もしクライアントPCがクラッシュした場合でも、Colaboloを再インストールするだけですべてのデータをクライアントへダウンロード可能です。すなわち可用性の面では、単純なWordやExcelのファイルよりも高いのです。5以降ではSQLiteのデータベース・ファイルは暗号化されており、かつデータ同期やメッセージングの内容も暗号化することで、WordやExcelのファイルに比べても高度なセキュリティを確保できます。
こうした特徴は、Webアプリケーション譲りのメリットと言えるでしょう
以上、本稿ではイマヒマのコラボGTDツールColaboloを軸に、AIR+SQLiteによって生み出された新しいユーザ・エクスペリエンスとそのメカニズムを紹介しました。ローカルDBが持つポテンシャルの高さを実感していただけたらなら幸いです。ビジネス・チームの課題管理、ヘルプデスク、ソフトウェア開発、案件管理、文書のレビューや承認などのさまざまな「チームワーク」に対応し、GTDのアプローチで「さくさくお仕事」を進めるための基盤を提供します。Adobe AIRで実装されたメール・クライアント・ライクなリッチUIを備え、GTDの「処理」や「整理」での振り分け作業をInboxやスマートフォルダ、ドラッグ&ドロップを利用して手早く行えます。更新内容はColaboloサーバを通じて瞬時にプロジェクト・メンバーに伝わるため、メッセンジャーや電話と同じスピード感覚でメンバー間の課題のキャッチボールを進められます。またGTDの「収集」のプロセスを支援する機能として、メールと課題を相互に自動変換する「メールto課題」機能や、アップロード時間ゼロ・容量無制限でドラッグ&ドロップによるファイル共有が可能な「ファイル四次元ポケット」機能を備えます。なお、商用版では1ユーザあたり月額3,600円前後での提供を検討しているとのことです。イマヒマは、日本を拠点としてグローバルに活動するインタラクティブ・メディア・テクノロジーカンパニーです。これまでにはiモード版AOLインスタントメッセンジャー、Habboホテル、ハリーポッター公式モバイルサイトの立ち上げや運営の実績を持ちます。
著者について
Adobe FlexおよびAIRなどのリッチ・インターネット・アプリケーション分野をはじめ、Javaサーバサイド・プログラミング、データベース開発、仮想化技術などを中心に執筆活動を行っている。また技術文書や書籍の翻訳も手がけており、翻訳書に「XML構築ガイド」(ピアソンエデュケーション)がある。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
新APIを応用して、今までにないAIRを作成しましたので、ご紹介したいと思います。0 は、Stratusを利用して、動画、音声、画像、テキストを共有可能にしたコミュニケーションツールです。0の可能性を体験して下さい。このプロトコルは、ピア同士を接続することができます。よって、P2Pが実現可能になります。重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイム*を先にインストールする必要があります。xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。2 ランタイムをインストールします。詳細はリリースノート(英語)* をご覧ください。尚、取得には、Adobe IDが必要になるので事前に取得しておきます。0ネイティブインストーラーをダブルクリックしてインストールします。0が起動するとメイン画面が表示され、タスクトレイにアイコンが表示されます。コミュニケーションを始めるために、ルームを作成するか、ルームに入るかボタンを押下して決定します。コミュニケーションを始めるためにルームを作成します。参加者名には、ルーム内で表示されるユーザ名を入れます。そして、接続ボタンを押下しますと、Stratusと通信して、参加者IDを決定します。参加者IDが、表示されたら通知開始を押下します。そうするとLAN上に通知コードをUDPマルチキャスト送信します。通知を停止する場合は、通知停止を押下します。また、インターネットを超えて接続する場合は、通知コードを参加者にメールなどで教えます。コミュニケーションを始めるために既存のルームに参加します。参加者名には、ルーム内で表示されるユーザ名を入れます。通知コードが、既にある場合は、通知コードに入力します。通知コードが、無い場合、LAN内でルーム作成者を見つけるために検索を押下します。ルーム作成者が見つかった場合、参加者IDとオーナーIDが表示されます。オーナーIDが決定したら、スタートを押下してルームに入ります。ルームでは、動画、音声、画像、テキストのコミュニケーションが行えます。画面左端に縦一列に並ぶのが参加者のカメラ一覧です。一番上には、自身のカメラが表示されます。白いキャンバスにお絵かきです。ペンは、色と透明度とサイズを変更できます。消しゴムもあります。お絵かきキャンバスの背景画像を共有できます。画像選択から画像のタイプを選択して、画像を取り込みます。そして、送信を押下し参加者全員と画像を共有します。共有できる画像は、デスクトップキャプチャ、アプリケーションキャプチャ、画像ファイルです。画像選択のアプリケーションは、一秒後にキャプチャするので、一秒以内にキャプチャしたいアプリケーションをアクティブにします。参加者全員とチャットすることが出来ます。RSLとして下記を使用してます。
Flexコンポーネントのために利用するために
0では、不可能なことをC#で作成したexeを使って実現しています。スクリーンキャプチャーをするためにPrintScreenボタンをエミュレートしています。-fs:フルスクリーン、この指定がない場合は、アプリケーション単位です。マルチキャストデータを受信して、標準出力に出力します。2を使って、実装テストを行います。Antを使ってネイティブインストーラーを作成しています。0の紹介です。0の新APIの中でもネイティブプロセスは、もっとも革新的です。0からネイティブプロセスを操作できます。また、起動したネイティブプロセスと通信も可能です。今回は、スクリーンショットやUDPマルチキャスト受信のためにC#で作成したexeを呼び出します。start関数に呼び出すことで、指定したexeを起動させます。
ネイティブプロセスを使うためには、AIR2
0の新機能の一つであるネイティブインストーラーを作成する必要があります。作成には、下記のコマンドを実行する必要があります。Windowsのコマンドプロンプトで実行しますと、ネイティブインストーラーが作成されます。また、必ず、下記のアプリケーション定義XMLに記述する必要があります。新APIの中でもネットワーク関連において、データグラムソケットは、意外性があります。UDPマルチキャスト送信が可能です。なお、マルチキャストデータ受信には、C#の作成したexeで行います。今回は、このマルチキャスト送信を使って、オーナーIDを参加者に通知しています。0の新APIを使ってコミュニケーションツールを作成しました。実装する上でネイティブプロセスは、今までのAIRに出来なかったことが実現できると確認しました。また、ネットワーク関連のAPIの強化は見逃せないポイントだと思います。さらに今回は、StratusというP2Pを実現するサービスも使って、AIRならではの新たなアプリケーションを作ることができました。今後は、このアプリケーションをもっとブラッシュアップしていこうと考えています。
著者について
熊本県出身のフリーランスのアーキテクト兼プログラマーです。net)@東京の勉強会でスピーカしたり参加しています。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
新APIを応用して、今までにないAIRを作成しましたので、ご紹介したいと思います。0 は、Stratusを利用して、動画、音声、画像、テキストを共有可能にしたコミュニケーションツールです。0の可能性を体験して下さい。このプロトコルは、ピア同士を接続することができます。よって、P2Pが実現可能になります。重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイム*を先にインストールする必要があります。xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。2 ランタイムをインストールします。詳細はリリースノート(英語)* をご覧ください。尚、取得には、Adobe IDが必要になるので事前に取得しておきます。0ネイティブインストーラーをダブルクリックしてインストールします。0が起動するとメイン画面が表示され、タスクトレイにアイコンが表示されます。コミュニケーションを始めるために、ルームを作成するか、ルームに入るかボタンを押下して決定します。コミュニケーションを始めるためにルームを作成します。参加者名には、ルーム内で表示されるユーザ名を入れます。そして、接続ボタンを押下しますと、Stratusと通信して、参加者IDを決定します。参加者IDが、表示されたら通知開始を押下します。そうするとLAN上に通知コードをUDPマルチキャスト送信します。通知を停止する場合は、通知停止を押下します。また、インターネットを超えて接続する場合は、通知コードを参加者にメールなどで教えます。コミュニケーションを始めるために既存のルームに参加します。参加者名には、ルーム内で表示されるユーザ名を入れます。通知コードが、既にある場合は、通知コードに入力します。通知コードが、無い場合、LAN内でルーム作成者を見つけるために検索を押下します。ルーム作成者が見つかった場合、参加者IDとオーナーIDが表示されます。オーナーIDが決定したら、スタートを押下してルームに入ります。ルームでは、動画、音声、画像、テキストのコミュニケーションが行えます。画面左端に縦一列に並ぶのが参加者のカメラ一覧です。一番上には、自身のカメラが表示されます。白いキャンバスにお絵かきです。ペンは、色と透明度とサイズを変更できます。消しゴムもあります。お絵かきキャンバスの背景画像を共有できます。画像選択から画像のタイプを選択して、画像を取り込みます。そして、送信を押下し参加者全員と画像を共有します。共有できる画像は、デスクトップキャプチャ、アプリケーションキャプチャ、画像ファイルです。画像選択のアプリケーションは、一秒後にキャプチャするので、一秒以内にキャプチャしたいアプリケーションをアクティブにします。参加者全員とチャットすることが出来ます。RSLとして下記を使用してます。
Flexコンポーネントのために利用するために
0では、不可能なことをC#で作成したexeを使って実現しています。スクリーンキャプチャーをするためにPrintScreenボタンをエミュレートしています。-fs:フルスクリーン、この指定がない場合は、アプリケーション単位です。マルチキャストデータを受信して、標準出力に出力します。2を使って、実装テストを行います。Antを使ってネイティブインストーラーを作成しています。0の紹介です。0の新APIの中でもネイティブプロセスは、もっとも革新的です。0からネイティブプロセスを操作できます。また、起動したネイティブプロセスと通信も可能です。今回は、スクリーンショットやUDPマルチキャスト受信のためにC#で作成したexeを呼び出します。start関数に呼び出すことで、指定したexeを起動させます。
ネイティブプロセスを使うためには、AIR2
0の新機能の一つであるネイティブインストーラーを作成する必要があります。作成には、下記のコマンドを実行する必要があります。Windowsのコマンドプロンプトで実行しますと、ネイティブインストーラーが作成されます。また、必ず、下記のアプリケーション定義XMLに記述する必要があります。新APIの中でもネットワーク関連において、データグラムソケットは、意外性があります。UDPマルチキャスト送信が可能です。なお、マルチキャストデータ受信には、C#の作成したexeで行います。今回は、このマルチキャスト送信を使って、オーナーIDを参加者に通知しています。0の新APIを使ってコミュニケーションツールを作成しました。実装する上でネイティブプロセスは、今までのAIRに出来なかったことが実現できると確認しました。また、ネットワーク関連のAPIの強化は見逃せないポイントだと思います。さらに今回は、StratusというP2Pを実現するサービスも使って、AIRならではの新たなアプリケーションを作ることができました。今後は、このアプリケーションをもっとブラッシュアップしていこうと考えています。
著者について
熊本県出身のフリーランスのアーキテクト兼プログラマーです。net)@東京の勉強会でスピーカしたり参加しています。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
イベントレポート「まいど
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
イベントレポート「まいど
FlexやAIRは実際にどのような仕事で使われているのか、その仕事でなぜFlexやAIRが選ばれたのかなど、実際の制作者から生の声で聞くことのできる貴重な機会となりました。
会場となったTKP大阪梅田ビジネスセンターの会議室
最後列からでもスライドの文字がはっきり見えます。
セミナーには130名を超える参加申し込みがあり、会場は立ち見が出るほどの盛況ぶり
アドビのRIA戦略と最新ロードマップ
まずはアドビの轟による、アドビの最新RIAロードマップについての説明です。この2つを連携させることによって、プログラマとデザイナの協業を今までよりずっと楽にすることができます。と思わせる魅力がありました。AIRアプリケーション開発時に注意しなければいけないユーザーインターフェイスの操作性やパフォーマンスの性能改善のテクニックを「Adobe Developer BOX」の事例を交えながら紹介いただきました。ウィンドウ枠にとらわれない自由な形状の採用や、細部のアニメーション効果のこだわりなど、使いやすさだけではなく、ユーザーにリッチな体験をしてもらうために追求している部分を詳しく話していただきました。
ユーザーに読み込み時間を意識させない適時レンダリングの方法や、バックグラウンドで処理する方法などのTIPSの解説も
「Adobe Developer BOX」はソースコードや使用しているライブラリがすべて公開されており、現在進行形で開発日記も連載中なので、今からRIA開発を始める人は必見です。
次はAIRアプリケーションの年賀状作成ソフト「プリントマジック」を開発されたアルファブレンド公手氏のお話
類似のアプリケーションソフトがたくさんある中で、「プリントマジック」のインターフェースデザインはかなり美しい部類に入るのではないでしょうか
Adobe Developer BOXと同様、ユーザビリティとデザインにはこだわりを持って作られており、デザインを担当された末次グラフィックスの末次氏によると、今後機能が拡張されることを念頭に、どんなものでも合うテイストを採用しつつ、シンプルさと使いやすさを心がけてデザインされたのこと
またデザインパーツは微調整する中でサイズの大きさを自由に変えれるよう全てベクトルデータで作成されたそうです。これはベクトルデータと親和性の高いFlexの利点かもしれません。アプリケーション開発にFlex/AIRを選んだ理由は「一度AIRをやってみたかった」というのが一番大きなものだったみたいなのですが、それ以外にもFlex/AIRのマルチプラットフォームな特性は、制作過程で大きな利点と感じられたようで、Linuxユーザーからのリリース後の反応が予想外に大きかったことは、嬉しい驚きだったとのお話しでした。
デザインもシンプルで美しいプリントマジック
エンタープライズ向けRIAへの挑戦~開発道中記~
次は最新RIA技術を用いて住友信託銀行様営業店舗の窓口システムを開発された住信情報サービス株式会社羽白氏と、株式会社N&J金融ソリューションズ杉山氏のお話
銀行の窓口システムという大規模開発を、実際にFlexで作られた方の話ということで、注目のセッションとなりました。この窓口システムはもともとはWebベースで作られていたものらしいのですが、ブラウザだとどうしてもバージョンでの振るまいの違いなどブラウザ依存の問題やセキュリティ制限の問題があり、操作性の向上の狙いもあってRIAで作り直すことが採用されたそうです。新しいシステムは一年以上かけて制作されたものとあって、その中であった濃い苦労話が聞くことができました。パフォーマンス向上の方法など、プログラマの人にとっては非常に参考になりそうな技術的なノウハウまで詳しく解説されました。
最後は「Flexで大規模開発できるのか
ということですが、大規模開発できました」という印象的な言葉で締められました。
ECサイトにおけるRIA活用 RIAレコメンドサービス「買ったものリスト 豪華版」の開発
次は「買ったものリスト 豪華版」ショッピングサイトを作られた株式会社MonotaRO古畑氏のお話
Flexのデモサイトを目にしたことからサイトのリニューアルをFlexで行うことを決められたそうです。
comは、繰り返し商品を購入してくれるお客さまがターゲット
そのお客さまが何度もサイトで買い物をする中でストレスを感じないように、とにかく簡単に購入できるようにすることがリニューアルの目的だったそうです。Flexを使うことによって、ドラッグ&ドロップで商品をカートに入れられるような直感的な仕組みや、シームレスなページ繊維、商品の購入サイクルを自然に理解させる時系列ユーザーインターフェースなどが実現され、リニューアル後の評判は上々だそうです。
カメラ付き携帯電話を用いた送り火の中継
ビジネスセッションの最後は、京都の大文字送り火をライブ中継するWebコンテンツを制作されている株式会社ソフトデバイス宮南氏のお話です。
大文字の送り火中継は自分の撮った送り火の写真をリアルタイムでWebサイト上にアップして公開することのできるRIAコンテンツ
Flexを採用した大きな理由は、Google Maps APIを使用したGPS情報を使って、写真をアップする人がどのあたりにいるかを自動で判別させたかったからだそうです。その他デザイナがFlexの使用で苦労したことなど、実際の作り手ならではのお話をしていただきました。
以上でビジネスセッションは終了
この後のコミュニティセッションの間に30分の休憩が取られたのですが、なんと食べ物と飲み物(ビールも
)付きでした。
セミナー後の懇親会だと帰ってしまう人も多いので、セミナーの間にこういうちょっとした交流の時間があるといろんな人と話ができるのでいいですね
休憩時間はとても30分では終わらず、後半のコミュニティセッションは予定の開始時間を大幅にオーバーしてスタートです。
コミュニティセッションのひとつめはFxUGから、デザイナとプログラマが仲良く分業できることをテーマに開発されたFlexのフレームワークyui-frameworksについて、フレームワークの開発者である有川氏と、taiga
jpの廣畑氏による発表でした。yui-frameworks は命名規約をきちんと守ることで、デザイナはデザイナの領域だけの作業を、プログラマはプログラマの領域だけの作業をしていても、コンテンツにプログラムを乗せることが可能になるフレームワークです。プログラマとデザイナの協業は、今日一日を通してほとんど全てのセッションで触れられたトピックでした。デフォルトのコンポーネントでも見た目の良いインターフェースを作ることができるFlexをアプリケーション開発に選ぶ開発者は、デザインに対する意識の高い人たちが多いのかもしれません。
だとするとyui-frameworksはデザインもプログラムも大事にしたい多くのFlexプログラマにとって必須のフレームワークとなるのではないでしょうか
有川氏の説明中にところどころ廣畑氏が質問をはさむ形式で、二人の掛け合いが漫才のようなノリになっており、最後までわかりやすく飽きさせない発表になっていました。
さくーしゃ氏
ARとは拡張現実(Argument Reality)の略で、最近話題になったiphoneのセカイカメラや、漫画ドラゴンボールのスカウターのように、コンピュータを使うことで拡張された現実を体験することが出来る技術のことです。もともとC言語で書かれたARToolKitという、特定の形の画像(マーカー)をカメラに写すと、映像の中にあたかも現実に存在するように3Dを表示することができるライブラリがあって、さくーしゃ氏はそれをFlash上で実現できるように移植したのだそうです。FLARToolKitについての詳細はさくーしゃ氏のブログから見ることができます。
Flashと何かを連携 ~フィジカルコンピューティング未満~
MIDI機器とFlashを連携させて、パソコンに繋いだ鍵盤を押すとFlashから音が出たり、ロボットとPCを連動させて、Flashからラジコンのようにロボットを操作したり、ヘッドトラッキングシステムを使用して自分の頭の動きと全く同じように、Flash上に表示された3Dキャラクターの頭を動かしてみたり
Flashでそんなことができるのかという驚きの技術のデモを次々と見せてくれました。こちらもすべての技術の詳細をhoehoe氏のブログから見ることができます。
以上で「まいど
Flex/AIRを実業務でバリバリ使っているエキスパートたちのバリエーションに富んだ話をたくさん聞くことができました。最後はアドビグッズの人形やポスターなどの抽選会があったのですが、とにかく数が多くてほとんどの人がプレゼントをもらって帰ることができ、最後まで至れり尽くせりの楽しいセミナーでした。
次のステップ
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
これは、マイク入力の波形データを扱えるようになったという意味で、具体的にはマイクから入力された音の波形を表示したり、録音したりできるようになりました。(※マイク入力レベルとは、「音量」と考えて頂いて問題ないと思います。重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイム*を先にインストールする必要があります。xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。2 ランタイムをインストールします。詳細はリリースノート(英語)* をご覧ください。ですから、今までマイク入力をオーディオデータとして取り扱いたい場合は、Flash Media Server などのサーバー製品を利用しサーバーサイドで処理する方法以外に手段はありませんでした。
サウンドの予備知識
マイク入力を扱うにあたっての予備知識のお話です。とても簡単です。「音」の正体は空気の振動です。人間は耳で音を感知します。空気の振動によって耳の中にある鼓膜という薄い膜が振動します。その鼓膜の振動の具合によって人間は音を聞き取ることができます。マイクも、先に例示した人間の鼓膜と同じ仕組みで、空気の振動によってマイクに内蔵している膜が震えます。マイクはその震えた量を検知しアナログの連続的な電気信号に変えます。
最後に、「デジタル変換」
マイクが接続されているPC内部では、マイクからくる連続的な電気信号をデジタル(数値データ)に変換します。という訳で、AIRアプリケーションでは「空気の振動」は「数値データ」として取り扱われることになります。波形データを扱う。波形データとは、先ほど説明した「数値データ」のことです。私の憶測ですが、一回のイベントで最大 8192 個の波形データが取得できるようです。無音状態になればイベントは送出されません。マイク音声の1秒間ぶんに相当するデータ量は、サンプリング周波数によって変わります。
サンプリング周波数(1秒間にアナログ信号をデジタルの数値に変換する回数のことです)は、Microphone
rate で指定することができます。リアルタイムに波形を表示する。たとえば、以下のような感じになると思います。
// マイクのモニタリング開始
// 表示できなかった分は捨てる。rate = 44 の場合、 44,100/秒のデータがありますが、もちろん思いっきり端折って描画しても見た目にはそんなに違和感はありません。
これは、上記サンプルアプリで「えあー2
0」の声の波形です。1フレームにつき120個のデータを描画させています。サンプルアプリケーションは、ここからダウンロードできます。ここからぐっと難しいお話になります。キーワードがわからない方は、すみませんが検索して調べて下さい。波形データを FFT(高速フーリエ変換)解析すると、あるタイミングにおける周波数スペクトルを取得することができます。周波数スペクトルを取得することによって、イコライザー表示や音階(ドレミ)取得ができます。FFTのプログラミングは、検索すればたくさんヒットしますので、バンド数の少ないイコライザーを表示するだけであれば、リアルタイムにFFTさせても大丈夫かもしれません。音声ランチャーである VoiceLauncher は、マイクで拾った声を、テキスト文字列に変換し、候補のアプリケーションを起動させます。音声インターフェースは、他にももっといろんな楽しみ方があると思います。0 で楽しいアプリケーションを作ってみて下さい。
著者について
所属のエンジニア
きちんと「エンジニアリング」ができる、本当の意味でのシステムエンジニアを目指し修行中
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
データの持ち運びに便利なUSB メモリを使って、写真を飾ったりできるアプリのサンプルです。0 アプリの可能性を感じることができると思います。重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイム*を先にインストールする必要があります。xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。2 ランタイムをインストールします。詳細はリリースノート(英語)* をご覧ください。
アプリケーションのダウンロード(0 のマスストレージデバイスの検出機能を利用しています。USB メモリ等を認識し、保存されている画像をアプリ上にリスト表示させます。小さなスタンプ画像を写真の上に載せていくことができます。2つの画像を重ね合わせて、新画像を作成し保存します。
ストレージデバイスの検出
0 でストレージデバイスの変更を検出する事が出来ます。新しく追加された、以下のクラスを使用します。
ストレージデバイスの追加:
ストレージデバイスの削除:
現在接続しているストレージデバイスの一覧を取得し addItem でリストに追加します。ストレージデバイスの検出イベントを定義します。ストレージデバイスをリストへ追加します。ストレージデバイスをリストから削除します。アプリケーションを起動した状態で、USB メモリ等をPC に接続します。編集画像選択ツリーに、認識されたUSB メモリ等が自動で表示されます。編集画像選択ツリーより、編集したい画像の入ったフォルダを選択します。右側サムネイルより、編集したい画像を選択します。「選択」ボタンを押下する事で、テンプレートとの組み合わせ画面へ移行します。左側プレビュー画面に、選択した画像が表示されています。右側テンプレート集をクリックする事で、選択した画像とテンプレートを組み合わせて左側プレビュー画面に表示されます。また、スタンプ機能で、スタンプを押すことができます。写真下部のスライダで、画像の大きさを変更させられます。「保存」ボタンを押下する事で、テンプレートと組み合わせた画像の保存が出来ます。「画像選択へ戻る」ボタンを押下する事で、編集画像の選択へ戻る事が出来ます。また、「閉じる」ボタンを押下する事で、アプリケーションを終了させます。0 は新機能である「ストレージデバイスの検出」機能を使用しました。他にもネイティブプロセスのサポート等、AIR 単体ではなく他のデバイスとの組み合わせを利用した、更に広い分野での活用を期待出来ます。
このアプリは、写真を友達にあげたりするときに、何かもうひとつコミュニケーションツールとしての役割を果たせるよう なアプリにできるのではないでしょうか
将来的には、印刷サービスへデータを送信して、印刷したものを受け取ったり、Adobe InDesignと連携したパブリッシングソリューションへの組み込みなどサービスへの展開を考えています。0 にはAndroid 等の携帯端末への対応が可能になれば、さらにいろんなサービス展開への期待が膨らみます。
著者について
DTP、Web などのコンテンツ制作と周辺システムの開発業務
システム開発部では印刷・出版に関わる業務効率化を実現するオンライン入稿や自動組版システムなどのWeb アプリケーション開発に特に力を注ぎ、Adobe AIR / Flex などにも積極的に取り組んでいる。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
Adobe AIRアプリケーションへのデジタル署名の付与 | デベロッパーセンター
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
アプリケーションに署名が必要な理由
AIRインストレーションの動作検証
アプリケーションに署名が必要な理由
デベロッパーが開発したアプリケーションをインストールするにあたり、事実上、エンドユーザは、デベロッパーがユーザのファイルの中身をチェックして財務データなどを得体の知れないサーバにアップロードしたり、ローカル上の画像を削除、または勝手に電子メールを配信するなどの不正を働かないことを信用することになります。エンドユーザにとって重要なのは、インストールしようとしているソフトウェアが信頼のおけるベンダ(発行者)から提供されていることと、そのソフトウェアがベンダの手元を離れてから改ざんされていないことを確信・信頼できることです。読者はデベロッパーとして、優れたアプリケーションを開発し、これを世界に向けてリリースします。しかし、いったんアプリケーションをリリースすると、第三者がそのアプリケーションを改ざんしたり、悪質な仕掛けを組み込んでから再配布するといったことに対しては、自らコントロールできないのが実情です。エンドユーザ側では、Webからインストールするものは、どこかで改ざんされていたり、信頼のおけない悪質なソフトウェアベンダによって配布されている恐れがあることに注意する必要があります。エンドユーザから信頼を得るための唯一の方法は、アプリケーションに、ThawteやVeriSignといった認証局(CA)と呼ばれる信頼されたサードパーティベンダから発行されたセキュリティ証明書を利用して、デジタル署名を付与することをデベロッパーに義務づけることです。AIRランタイムがアプリケーションをエンドユーザのマシンにインストールするには、AIRアプリケーションにデジタル署名が付与されていることが絶対条件となります。デジタル署名は商用ソフトウェア開発業界に広く普及しており、PDAで実行されるモバイルアプリケーションから主要オペレーティングシステム用のデバイスドライバや大手発行者のデスクトップアプリケーション、そしてAIRアプリケーションに至るまでで用いられています。皆さんも、誰が実際に開発し、どこからコードが供給され、そしてリリース後に改ざんされているかどうかさえ分からないにもかかわらず、ランダムなソフトウェアを意図的にインストールしてシステムの安定性が失われるかも知れないというリスクに直面したことが何度もあるはずです。当該ソフトウェアの出所とその正当性が検証できれば、安心度が上がることは間違いありません。また、デジタル署名を利用することで、エンドユーザは当該ソフトウェアの組織関係を検証することができます。例えば、筆者はアドビソフトウェアの証明書を利用してアプリケーションに署名することはできません。これによって、偽のアプリケーションが開発される恐れが排除されます。
このような規制がなかった場合、スパイウェアの作者はアドビ製と偽ったPhotoshop
exeアプリケーションを手軽に作成し、エンドユーザの税務処理ソフトウェアから不正に抜き出した銀行口座情報をもとに、無断で小切手を作成するかも知れません。コード署名の義務づけは、エンドユーザが、インストール対象製品の発行者の身元と、コードが発行者の署名後に改ざんされていないことを信用できるようにすることで、上記のような悪用シナリオを防ぎます。
前もって準備することで後々のトラブルを回避
アプリケーションをリリースする前夜まで待って、コード署名手続きを始めることは避けるようにしましょう
認証局から証明書を取得するには事務手続きが発生するため、幾分の時間がかかります。証明書を取得した後も、習得および試行錯誤にもある程度の余裕が必要です。また、アプリケーションの個々のバージョンを、別々の証明書で署名してリリースしないように注意する必要があります。動作検証用の自己署名証明書、企業の公式な証明書のどちらを使用するとしても、いったん証明書を用いてAIRアプリケーションに署名を付与すると、当該バージョンのAIRアプリケーションは同じ証明書を用いてパブリッシュされたバージョンでのみアップデートすることができます。つまり、デベロッパーの動作検証用証明書で署名したアプリケーションを作成・リリースし、後日、本稼働用の証明書で署名したアプリケーションを再リリースするといったことはできません。この場合は別に新規アプリケーションのリリースが必要となります。従来のアプリケーションに対する自動アップデート処理はすべて失敗し、別途のアプリケーションとしてしかインストールすることができません。では、証明書の取得方法へと解説を進めることにします。
証明書の取得方法
Adobe AIRアプリケーションにデジタル署名を付与する際、デベロッパーは、クラス3の高信頼性証明書であればどのCAから発行されたものでも使用できます。アプリケーションをインストールする際、Adobe AIRランタイムは信頼された証明書が含まれた、オペレーティングシステムのキーストアを使用します。オペレーティングシステムが信頼するものであれば、AIRも同様に信頼します。ユーザは、自らのシステム上にThawteまたはVeriSignのいずれかのルート証明書を所有することが大半であるため、Adobe AIRがアプリケーションをインストールする際には、発行者の有効性を確認することができます。本記事では、デベロッパーによる手続きが簡単な、Thawteからの証明書取得を前提に解説を進めていきます。ThawteまたはOverusing以外の認証局を利用した場合、(ソフトウェアのデベロッパーではなく)エンドユーザまたは(エンタープライズネットワークではコンピュータ管理担当の)システム管理者が、当該認証局のルート証明書を手動でインストールしなければならなくなります。メモ: デベロッパーは、Adobe AIRアプリケーションに自己署名証明書でデジタル署名を付与し、アプリケーションの動作を検証することができます。
この場合、AIRランタイムがアプリケーションをインストールしようとする際には、発行元が不明であることの警告がユーザに表示されます(図1参照)
(もちろん、ユーザがデベロッパーの自己署名証明書を自らのマシンにインストールしている場合はこの限りではありません。開発用の証明書が用いられたアプリケーションをインストールするにあたり、ユーザにはこのダイアログボックスが表示されます。発行者の身元が不明と表示される点に注意してください。以下の手続きではFirefoxブラウザが必要になりますが、これは、このブラウザを使用するのが最も簡単な方法であるからです。メモ: セキュリティプロトコル、Javaツールおよびコマンドラインに精通している場合は、使用中のJava証明書をAdobe AIRアプリケーションの署名に適した形式にすることも可能です。この場合、証明書とプライベートキーを適切な形式に変換するためにJavaの署名ツールが必要となります。最終的にはP12ファイルが必要です。Javaコマンドラインツールを使用する方法は、本ドキュメントの解説対象ではありません。この手続きは証明書を使用し続ける上で、一度きりで済みます。これは、購入する証明書がFirefoxの証明書マネージャにインストールされ、そこから、Adobe AIRアプリケーションの署名時に用いられる、アドビツールで必要な特定の形式に書き出されるからです。証明書の有効期間(1年または2年)を選択し、自らの組織情報やWebサイトを記入した後、アカウント管理用のパスワードを指定します。会社の定款やVAT(付加価値税)登録証明書、パートナーシップ関連の書類、略称・通称名の使用に関する証明書など、これらの情報をファックスできるように準備しておいてください。この手続きでは、読者の身元および所属組織の真正が確認されます。組織の真実性の検証が完了したら、完成した証明書を取得する方法が記された電子メールがThawteより送られてきます。繰り返しますが、証明書の取得には必ずFirefoxを使用するようにしてください。これは、取得した証明書をアドビのコード署名ツールで必要な形式で、Firefoxから書き出す必要があるためです。購入した証明書がThawteによって自動的にFirefoxの証明書マネージャへとインストールされます。証明書がThawteによってFirefoxにインストールされたので、次に、アドビのツールで使用するためにこの証明書を書き出します。ツール/オプション/詳細を選択します。図3に示すダイアログボックスが表示されます。
0のオプションダイアログボックス
「証明書を表示」ボタンをクリックして、図4の画面を表示します。書き出し対象の証明書を選択し、「バックアップ」ボタンをクリックします。
メモ: 署名時に使用するツールによっては、ファイルの拡張子を「
pfx」に変更しなければならないことがあります。ファイルの保存場所を入力し、後からでも分かりやすい名前をつけます。p12にファイルを保存しました。
証明書とプライベートキーに対してパスワードを指定するよう促されます(図5参照)
パスワードを2度入力します。
証明書とプライベートキーを保護するためにパスワードを入力
「OK」をクリックしたら、証明書の準備完了です。これで、Adobe AIRアプリケーションに署名を付与し始めることができます。証明書が入手できたら、次は実際のAdobe AIRアプリケーションに署名を付与する作業です。Thawteから取得した証明書の使い方については、ご利用のツールにあった解説を次の中から選んで参照してください。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
0新API(以降、新APIと呼ぶ)として加わる新しいネットワーキング機能のサポート、ネイティブアプリ起動、デフォルトアプリで開くなどにより、AIRアプリケーションの可能性はAIR 1
xに比べ飛躍的に向上します。この記事では、新APIである新しいネットワーキング機能のサポートを利用したサンプルアプリケーションSORAAI(そらあい)のコードを交えて、新APIを解説します。この記事を最大限に活用するには、次のソフトウェアが必要です。
この記事に必要な予備知識
ソースコードの取得
0の新API利用サンプルとして参照できるようにソースコードを公開しています。重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイム*を先にインストールする必要があります。xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。2 ランタイムをインストールします。詳細はリリースノート(英語)* をご覧ください。
アプリケーションのダウンロード(楽しい時間は早く過ぎ、つまらない時間は長く感じる。
逆であって欲しいですよね
勉強会もそうじゃないですか
今回開発したSORAAIは、勉強会、講演など時間制限のあるイベントで活用できるタイマー機能、スピーカー/オーディエンス間のリアルタイムコミュニケーション機能を持つツールです。オーディエンスの「楽しい」「つまらない」という反応を「へぇ」「ぶぅ」プロトコルに変換し、ネットワークを通じてタイマーの残り時間に反映します。
スピーカーには、リアルタイムにオーディエンスの反応が伝わる恐ろしくも楽しいツールとなるでしょう
機能について
コンセプトでも書いたように、SORAAIにはタイマー機能、スピーカー/オーディエンス間のコミュニケーション機能があります。勉強会、講演などのセッションの残り時間を計測する機能です。セッション中に、残り時間を表示し(カウントダウン)、残り時間がゼロとなった時にスクリーンに表示している画面を覆い隠し、強制的にセッションを打ち切ります。セッションには、ボーナス時間というオーディエンスのセッションに対する反応によって変動する時間枠を設定できます。例えば、セッション時間30分、ボーナス時間5分と設定すると、オーディエンスの反応次第でセッション時間は25分~30分の幅で変動します。オーディエンスがセッションに対して感じた「へぇ」「ぶぅ」のフィードバックが、このボーナス時間の増減によってセッション時間に反映されることになります。オーディエンスのセッションに対する反応をスピーカーの元へとリアルタイムに伝達する機能です。楽しければ「へぇ」、つまらなければ「ぶぅ」という反応にコメントをプラスして送信します。この機能は、新API(新しいネットワーキング機能のサポート)を利用して実現しています。さらに、ネットワーク構成の影響により新API(新しいネットワーキング機能のサポート)が対応できないケースを考慮して、twitterのtweetからもスピーカーはオーディエンスのフィードバックを受け取れます。SORAAIを使用するユーザーには、スピーカーとオーディエンスという2つの役割があります。その役割に合わせて、サンプルアプリケーションのモードを使い分けることになります。スピーカーが使用するモードです。このモードでは、セッションの間、画面の最前面にセッション残時間を表すタイムラインと、オーディエンスからの「へぇ」「ぶぅ」という反応がリアルタイムに表示されます。セッション終了後には、セッションの間に受け取った「へぇ」「ぶぅ」の集計結果を確認できます。オーディエンスが使用するモードです。このモードでは、スピーカーが行っているセッションに対して、「へぇ」「ぶぅ」のフィードバックを送ることができます。送った「へぇ」「ぶぅ」のフィードバックは、スピーカーの画面上にリアルタイムに表示され、セッションの残時間の増減に反映されます。
使用したAPIの解説
ビルドに関しては、AIRファイルのインストーラーではなく、OSネイティブなインストーラー(ネイティブインストーラー)を作成できるようになっています。5までのアプリケーションでは、OSに割り振られたローカルアドレスといったネットワークインターフェイスの情報を取得することができませんでした。0からは、NetworkInfoとそれに付随する新しいクラス群によって様々なネットワークインターフェイス情報を取得することが可能となりました。SORAAIではNetworkInfoクラスからネットワークインターフェイス情報を取得することで、スピーカー/オーディエンスの接続設定をスムーズに行えるようにしています。DatagramSocketを用いることで、AIRアプリケーション同士、またはUDP通信機能を実装した他のアプリケーションとUDPプロトコルを用いた相互通信を行うことが可能となります。SORAAIでは、オーディエンス側のアプリケーションが検索用データをDatagramSocketを用いてブロードキャストで送信し、同一LAN内にいるスピーカー側のアプリケーションを自動的に探索します。(詳細、およびソースコードを交えた解説は後ほど行います。なお、インストーラーの作成の際に使用するADT Toolは、作成したいインストーラーと同じOS用のものでなければならないという制限があります。
機能と該当ソースコードによる解説
0の新APIの使用方法を、SORAAIのソースコードを参考に紹介していきます。(新APIの使用方法を説明する上で不要なエラー処理などの部分は省略してあります。NetworkInfoクラスは、上記以外にCHANGEイベントでネットワークインターフェイス情報が変更されたことを取得する用途に用いることができます。ネットワークインターフェイス情報は、無線LAN、有線LAN、仮想マシンの仮想ネットワークが複数存在することがあるため、Vectorとして返されます。
// ネットワークインターフェイスがアクティブなら
// アドレス一覧を取得
//(省略、データをまとめる処理)
上記コードでは有効なネットワークインターフェイスからIPアドレスを取得しています。0ではIPv6のサポートがされているのですが、SORAAIでは諸所の事情もありIPv4のみを扱うこととしました。SORAAIでは、オーディエンス側のアプリケーションがスピーカー側のアプリケーションを探索するために、DatagramSocketを用いてブロードキャストを行っています。その基本的な利用方法とブロードキャストの解説を行います。DATAイベントが呼び出されます。
DatagramSocketの説明の最後に、もう一度待ち受け側にもどって、送られてきたデータの取得方法を確認してみましょう
SORAAIでは、ブロードキャストの仕組みを使って、オーディエンス側のアプリケーションはネットワーク内からスピーカー側のアプリケーションを探索しています。
アプリケーションを実行しているマシンのIPアドレスが192
255になっているでしょう
255)を宛先にすることで、同じローカルネットワーク内のすべてのマシンにデータを送信することが可能になります。その中の待ち受け状態にあるスピーカー側のアプリケーションが、ブロードキャストを行ったオーディエンス側のアプリケーションにデータを返すことでお互いのネットワークインターフェイス情報を取得、確立するというのがSORAAIのブロードキャストを用いた仕組みです。SORAAIでは、オーディエンス側のアプリケーションはブロードキャストを用いてスピーカー側のアプリケーションを見つけた後は、ServerSocketを用いて通信を行います。その基本的な利用方法の解説を行います。
0以前から存在するクラスですが、AIR2
0でいくつかの拡張がなされています。bindメソッドの引数の並びはポート番号, IPアドレス、connectメソッドの引数の並びはIPアドレス, ポート番号のように、順番が逆なので注意が必要です。次は、ServerSocketクラスで待ち受けしているスピーカー側のアプリケーションに対して、オーディエンス側のアプリケーションから接続が来た場合の処理を見てみます。ネイティブインストーラーをビルドする方法は2つあります。
ソースファイルをベースにしてビルドする方法
AIRファイルあるいはAIRIファイルをベースにしてビルドする方法
今回は2番目のAIRファイルをベースにしてビルドする方法を実施します。AIRファイルは既に署名済みのため、ADTコマンドを以下のような構文で実行するだけでネイティブインストーラーを作成できます。
サンプルアプリケーションの使い方
ここでは、SORAAIの主要機能であるタイマー機能に関して使い方を紹介します。ただし、タイマー機能といっても単純なタイマーではありません。このタイマーにオーディエンスからスピーカーへのフィードバックインターフェイスが現在2つ準備されています。オーディエンス側はこれら2つのインターフェイスを利用してプレゼン中のスピーカーにフィードバックを行います。スピーカーはオーディエンスのフィードバックによってその評価がダイレクトに画面上に通知されるだけでなく、セッション時間に反映され、設定したボーナス時間が増減する事になります。
サンプルアプリケーションの紹介
SORAAIが起動すると、スピーカーモード(S)/オーディエンスモード(A)の選択画面になります。セッションでプレゼンテーションを行われる方はスピーカーモードを、それ以外の方はオーディエンスモードを選択してください。
スピーカーモードの設定画面(S)
スピーカーモードの設定画面では以下の設定を行います。スピーカー受信設定の一覧には、待ち受け可能なネットワークインターフェイスの一覧が自動で検出されます。複数表示された場合はオーディエンスからの待ち受けで利用するインターフェイスを選択してください。※自動でNetworkの設定が検出されない場合、手動で設定を行うことが可能です。なお、ハッシュタグとセッションタグを設定しない場合はTwitterモードは起動されず、LANモードのみでオーディエンスのフィードバックを受け付ける事になります。Twitterに関しては皆さんご存知かと思いますが、詳細はこちらを参照ください。セッションタグはSORAAI独自の概念で、イベント毎に設けられるハッシュタグよりさらに細かく、セッション毎に設けられるタグのことを指します。セッション開始前に、スピーカーとオーディエンスの間で共有しておく必要があります。セッションの時間を設定します。オーディエンスの要求によって増減する範囲時間を設定します。ユーザーフィードバッグを受けた場合にこの値の範囲でセッション時間の増減が行われます。
オーディエンスモードの設定画面(A)
オーディエンスモードの設定画面では、自分自身の表示名を設定します。Network設定はSORAAIが自動で検出するようになっていますので、ユーザ自身での設定は原則不要です。
・スピーカーモードのタイマー画面(S)
画面下部にタイムラインが表示され経過時間が表示されます。スピーカーからのフィードバックが画面左右に通知され、その内容によってタイムラインが増減します。
スピーカーモードのタイマー画面
・オーディエンスモードの投票画面(A)
コメントを入力し、へぇ/ぶぅボタンを押下することで、スピーカーに感想を伝える事が出来ます。
オーディエンスモードの投票画面
また、スピーカーモードはTwitterを監視していますので、Twitterを利用してコメントを行っても内容が反映されます。Twitterでコメントを行う際は、スピーカーモードで設定されたハッシュタグとセッションタグをつけたうえで、「へぇ」の場合には#goodを「ぶぅ」の場合には#badを設定して投稿を行います。
・タイムアップ画面と結果画面(S)
15秒前からカウントダウンが始まり、タイマーが0になると画面上にTimeUpが表示されます。TimeUp後はスピーカーが画面を操作出来なくなります。
セッションを終わらせたくなければ、みんなでがんばって「へぇ」を送るようにしましょう
をクリックすると、最後に統計結果が表示されSORAAIから批評が行われます。
■まとめ - 開発プロジェクトと現状、今後
0新APIを利用したサンプルアプリケーションとして開発しました。現在、Flex User Groupの北陸のメンバーが連携して開発を進めており、勉強会/イベントに役立つツールを目指して進展中です。ATNDとの連携による勉強会/イベントの開催前のサポート、twitterとの連携による開催中のサポート、SlideShareとの連携による開催後のサポートができないか模索中です。
著者について
福井で働くソフトウェアエンジニア
オフの日は、FxUGや北陸エンジニアグループ、FITEAというコミュニティで活発に活動中
RIAの分野に興味津々、デザインスキルと開発スキルを兼ね備えた二刀流エンジニアを目指して精進しているところ
29歳で洋菓子職人の帽子を脱ぎ捨てプログラミングの世界に転進
北陸の米と魚をこよなく愛す。
興味分野はWebのフロントからDBの手前まで
よりよい開発手法とユーザビリティを求めてFlex界隈を徘徊中
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
手軽に更新できるAIRアプリケーションの開発テクニック | デベロッパーセンター
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
手軽に更新できるAIRアプリケーションの開発テクニック
Adobe AIRで一番に気に入ったことと言えば、デスクトップ向けのアプリケーションがいとも簡単に開発できてしまうことです。特に筆者のようなWebデベロッパー出身者の場合、単にAIRプロジェクトを作成し、Web開発同様のコードを記述、そしてビルドを作成するだけでデスクトップアプリケーションが開発できてしまいます。ただし、筆者は経験を積むに連れ、AIRアプリケーションの開発にはコツがいることにも気付きました。デスクトップアプリケーションはブラウザーベースのアプリケーションとは異なるため、特にアプリケーションのデプロイ方法に関しては十分な配慮が必要になります。幸運なことに、Adobe AIRランタイムおよびそのSDKにはデベロッパーを支援するためのツールが用意されており、この中にはアップデートAPIおよびアップデートフレームワークを介してアプリケーションをアップグレードする方法も含まれています。Webアプリケーションとは異なり、デスクトップアプリケーションの場合は、後でユーザーシステムにどのような影響が及ぶかを考えず、単に新たなビルドを公開するというわけにはいきません。ビルドごとに新たな依存関係が発生するため、ソフトウェアの寿命を通じて常にこれらの「遺産」にも配慮する必要があります。この配慮を初期の段階から怠ると、様々な問題に遭遇する恐れがあります。つまり、「大いなる力には、大いなる責任が伴う」というのは当を得た表現ということになります。この記事では、Adobe AIRアプリケーションのアップデートを開発・デプロイする際にありがちな問題点を紹介するとともに、これらの問題を解決するためのヒントやテクニックについて解説していきます。メモ:ここでは読者の皆さんがAIRアプリケーションの開発・更新について、ある程度の基礎知識を有していることを前提に解説を進めていきます。アップデートフレームワークの使用法について詳しくは、HTML/Ajax用、Flash用またはFlex用の各クイックスタートに用意されている「Adobe AIRアップデートフレームワークの使用」を参照してください。
アップデートの計画
AIRアプリケーションの開発を始める際、将来アップデートを行うかどうかを判断する必要はありません。これはAIRアプリケーションには標準でアップデートを行うための機能が装備されているからです。
とはいうものの、ある時点で何らかのアップデートを行わなければならなくなるということを自覚し、一般公開に先立ってこの準備を整えておくのがデベロッパーに課された責任と言えるでしょう
これが重要な一番の理由として挙げられるのがセキュリティーです。アプリケーションを開発する場合、必ずセキュリティーパッチを提供できるようにする必要があります。十分気を付けなかった場合、AIRアプリケーションはユーザーのファイルシステムに害を与えかねないからこそ、この点は特に注意が必要です。セキュリティーが侵されるような事態は、誰も望んでいません。セキュリティー以外にも、バグや単なる入力ミス、法務情報の欠落といった誤り・問題が原因で、アップデートが直ちに必要となるようなケースは容易に想定できます。また、皆さんの作品がユーザーにどの程度受け入れられるかも、はじめからは分かりません。デモのつもりで開発した作品が大成功を収めることになるかもしれません。つまり、ここでは「アップデートに対応できるように開発するかどうか」を考えるのではなく、「アップデートのプロセスをどのように管理するのか」を考えておくことが肝心です。アプリケーションのユーザーが読者のWebサイトを毎日訪れて、新たなビルドの有無を確認する。これは現実的に期待できることではありません。
だからこそ、何らかの自動更新機能を用意しておくのが一般的に賢明と言えるでしょう
このためにAIR SDKアップデートAPIを使用することもできますが、最も簡単なのが最新のアップデートフレームワークを使用する方法です。ただし、どのタイミングで最新ビルドの有無をチェックするか、あるいはアップグレードを強制するのかどうかといった、いくつかの判断は読者自身が下さなければなりません。また、各ビルドはアプリケーションのライフサイクルにおいて、あくまで1つのステップであるということを肝に銘じる必要があります。従って、可能な限り押しつけがましくならないように配慮することが推奨されます。
アプリケーションIDの重要性
既にご存知のとおり、AIRアプリケーションは、アプリケーションのデスクリプターXMLファイル内に用意されたアプリケーションIDを用いて、ランタイムとオペレーティングシステムによって識別されます。このIDには次のいくつかの役割があります。当該アプリケーションを「アプリケーションストレージディレクトリー」に関係づける。当該アプリケーションをその暗号化されたローカルストアーに関係づけるためにも用いられる。アップデートの処理時には、どのアプリケーションを置き替えるかを判断するためにランタイムによって使用される。これらはアプリケーションを全く別のアプリケーションとして認識させたい場合を除き、ビルドをパブリッシュした後に、アプリケーションIDを変更するべきではないことの、いくつかの理由に過ぎません。一部のまれなケースでは、全く別のアプリケーションとして扱い、ユーザーが個別のバージョンをそれぞれ同時にインストール・使用できるようにしたいこともあります。しかし、大半のケースでは、最初のパブリックリリースを行う前にアプリケーションIDを選択し、その後は一切変更しないことが求められます。myapplication」といった逆順のDNS命名方法がグッドプラクティスとして推奨されていましたが、現時点ではアプリケーションIDとパブリッシャーIDの組み合わせでアプリケーションが識別されるため、この命名方法は不要になっています。パブリックリリース後に、(法務上の問題が発生したり、単にマーケティング戦略的な理由で)ソフトウェアの商標名を変更しなければならなくなったとしても心配無用です。アプリケーションIDは、システム上での実行時およびインストール処理中に表示される名称とは一切関係がありません。ユーザーがこのIDを目の当たりにする必要は一切ありません。アプリケーションIDは、アプリケーションを識別するための唯一の条件ではないことも、頭に入れておく必要があります。仮に同じIDの2つのアプリケーションがあり、これらが別々の署名を用いて開発されていたとします。この場合、適切な署名の移行手続きを済ませていない限り、2つのアプリケーションはセキュリティー確保の理由から、別々のものとして認識されます。
ファイル依存の扱い方
AIRアプリケーションの場合、ユーザーシステム上のファイルまたはディレクトリーを使用したり、これらを作成したりすることがある点に注意するのが肝心です。使用または作成されるファイルとしては、以下が含まれます。
アプリケーション固有のファイルタイプ
この点はAIRの重要な特徴と言えるでしょう
ただし、これらのファイルは依存関係を作りかねない点に注意が必要です。場合によっては、特定のタスクを実行・処理するためにアプリケーションが一定のファイルを必要とするようなことがあります。このような理由からも、各依存ファイルのパス、役割、ユーザーシステム上の配置場所、依存関係の具体的な詳細の記録を残すために、依存ファイルの説明の一覧表を作成しておくことが賢明です。また、これらのファイルに関しては、将来のビルドが発生した際に上書きを許可するのか、あるいは上書きを強制するのかどうかを判断する必要があります。例えば、ユーザー初期設定であれば、ビルドごとに上書きしないことが推奨されます。可能であれば、バージョン情報をファイルに含めるようにします。この情報は、将来アップデートビルドを開発する際にとても重宝します。アプリケーション側では、依存ファイルが存在しない事態にも対処できるようにする必要があります。依存ファイルがアプリケーションに不可欠な場合は、これらのファイルを(再)生成するための何らかの仕組み、または最低でも、適切なエラーメッセージを発し、明示的な形で処理の失敗を通知する仕組みが用意されるべきです。ここで注意しなければならないのは、インストール手続き時には、ユーザーシステムのどの位置に埋め込みファイルを配置するかについて、読者は選択できないことです。airパッケージに埋め込まれたファイルはすべて、アプリケーションディレクトリーに配置されます。
最終的な位置へのコピー処理は、アプリケーションに課される責任です(これらのファイルの大半は、アプリケーションストレージディレクトリーに配置することが推奨されますが、他の位置を作成することを選択することも可能です)
依存ファイル自体、時間の経過とともに変化することが想定されます。例えば、ユーザーが他のソフトウェアを使用してこれらのファイルを編集しないとは限りません。だからこそ、依存ファイルに不具合が発生する事態に備え、何らかの修正・再生成メカニズムを用意しておくことが重要になります。このような理由から、プログラムの起動シーケンスにおいては、当該プログラムが必要とする依存ファイルのチェックを行うようにすることが賢明です。また、所定のファイルが見つからない場合はファイルを生成し、古くなったものは上書きしたりするのも肝心です。また、この段階においては、古くなったファイルを削除しなければならないような場面があるかもしれませんが、ファイルを削除する操作はあくまで最終手段としてのみ利用するようにしてください。しかも十分な注意を払うようにする必要があります。場合によっては、より複雑な特別のファイル移行メカニズムを用意しなければならないことがあります。例えば、データベースのテーブル構造が変更された場合は、従来のデータベース構造の既存データをすべて新しいものに変換しなければならないことがあります。スタートアップのこの段階では、当該システム上でアプリケーションが初めて実行されるのかどうか、あるいは最も最近にインストールされたバージョンが何であるかを、チェックしなければならないことがあります。これらの情報の保管場所としては、暗号化されたローカルストアーが最適です。これはビルドを問わず、常に一貫しているからです。これは、このようなケースにおいて、当該データがアプリケーションの更新後に読み取れなくなるからです。
開発用ビルドとリリースビルドの違い
AIRアプリケーションの作成時に注意しなければならないのは、ADLで実行される開発用ビルドとは異なり、AIRの各リリースビルドは個別のアプリケーションとして扱われることです。これには、次に挙げる2つの重要な影響が及びます。アプリケーションストレージディレクトリーが異なる。開発用ビルドの場合、このディレクトリーにはアプリケーションIDに基づいて名前が付けられます。一方のリリースビルドでは、ディレクトリーの命名方法がやや異なり、アプリケーションIDの後に一見ランダムな数値が付けられます。暗号化されたローカルストアーも、完全に別のものになります。アプリケーションストレージディレクトリーおよび暗号化されたローカルストアーは、緊密にバインドされたパラメーターとともに保存されたアイテムを除き、アップデート後もそのままである点に注意が必要です。つまり、これらはアプリケーションファイルではなく、アプリケーションIDに関連付けられます。なお、暗号化されたローカルストアーは、それに関連付けられたアプリケーションが明示的に指示するようなことがない限り、一切空にすることができません。たとえ当該アプリケーションを完全にアンインストールしたとしても、暗号化されたローカルストアーはそのまま維持されます。
これはある意味期待される動作であり、デベロッパーが「当該コンピューターにアプリケーションがインストールされたことがあるか
ある場合は、いつ、どのバージョンがインストールされたか」といった情報を保存できるようにします。この仕組みは、例えばライセンシングモデルを管理する際などにおいて有用です。暗号化されたローカルストアーをリセットすることはできませんが、開発中のアプリケーションに暗号化されたローカルストアーのエントリーをすべてクリアーするための内部機構を用意しておくことは可能です。なお、この操作には危険が伴うことに注意が必要です。コードを記述する際、暗号化されたローカルストアーが全く空であったり、予期したデータが存在しないようなケースも想定しておくことが賢明です。開発用ビルドとリリースビルドのもう1つの主な違いは、後者がAIRファイルにパッケージ化される点です。開発用ビルドは、bin-debugディレクトリー(Flex Builderを使用している場合、その他の場合はデフォルトの出力フォルダー)のコンテキスト下においてADLによって実行されますが、最終版のアプリケーションは、その結果として発生するアプリケーションディレクトリー内で実行されます。
リリースビルドを作成する際、airパッケージのコンテンツを確認するのは読者、つまりデベロッパーの役割です。
アプリケーションのパッケージ化と署名付与
コマンドラインから直接ADTを操作している場合、あるいはFlex BuilderなどのIDEを介している場合のいずれでも、パッケージ化と署名付与の作業は単一の手順で行うこともできれば、いったんアプリケーションをパッケージ化した後に後日署名するという手順でも対応することができます。もちろん、アプリケーションの実行時に必要なファイルを埋め込むことも、忘れずに注意が必要です。パッケージの内容としてADTが必要とするのは、アプリケーションのSWFまたはHTMLファイルとデスクリプターXMLファイルの2ファイルのみです。当該アプリケーションが依存する他のファイルの存在の有無については、一切検知することができません。繰り返しますが、最終パッケージにすべてのファイルが含まれているかどうかは、デベロッパー自らが責任を持って確認するようにしてください。また、一部のファイルは特定のリリースビルド専用であることにも注意が必要です。例えば、様々なネイティブアプリケーションおよびファイル関連付け用のアイコンがこの典型例として挙げられます。メモ:読者がFlex Builderを利用してアプリケーションをパッケージ化している場合、通常はリリースビルドの書き出しウィザードパネルが用いられていることと思います。
一見したところ、リリースビルドの
airパッケージコンテンツは、bin-releaseディレクトリーから作成されると思われることでしょうが、リリースビルドの書き出しウィザードではこのbin-releaseディレクトリーのどのファイルおよびディレクトリーを含めるかが選択できるようになっているため、これは完全に事実というわけではありません。現行バージョンのFlex Builderでは、このウィザードパネルから外部のファイルやディレクトリーが参照できないことが既知の制約として認識されています。これらを埋め込むためには、外部ファイルをソースまたはbinディレクトリーにコピー&ペーストする必要があります。また、プロジェクトのソースディレクトリーにある一部のファイルは、ウィザードでは見つけることができないため、そのままではAIRパッケージに埋め込む対象として選択できない点にも注意が必要です。繰り返しますが、これらのファイルはbin-releaseディレクトリーに手動で含める必要があります。これらのケースでは、自動化されたビルドシステムを使用しない限り、以下の手順でアプリケーションのビルドを作成します。アプリケーションのビルドを作成し、bin-releaseディレクトリーが生成された時点で停止します。
このディレクトリーの中に、srcディレクトリーから自動的に含められなかった、airパッケージに埋め込みたいファイルまたはディレクトリーをすべて配置します。再度ビルド処理を行い、ウィザードを利用して、先ほどコピーしたファイルを埋め込みます。コードに署名を付与することは、ソフトウェアのパッケージ化に伴う重要なステップです。特に、次の2点について、十分な注意が必要です。まず、セキュリティーの理由から、証明書にはタイムスタンプと有効期限が設けられている点に注意が必要です。仮に証明書の有効期限が切れると、それ以降、その証明書を使って新規パッケージに署名を付与することはできません。ただし、以前に署名を済ませたパッケージは、そのまま有効に維持されます。次に、1つの証明書から別の証明書に移行するような場合(開発期間中に新たな証明書を購入した場合など)は、忘れずに移行手続きを行うよう、注意する必要があります。この手続きを追うことで、エンドユーザーが読者の用意した自己署名型のアプリケーションから、最新の信頼済みビルドへとシームレスにアップグレードできるようになります。
新たなビルドの動作検証
次は、アプリケーションが期待通りに機能するかの確認です。この手順は機能テストとも呼ばれます。動作検証を行うにあたり、一番の問題は所定の要件を満たす動作検証環境を用意することにあります。たとえデベロッパーのシステム上で正しく機能したとしても、ユーザーのシステム上では必ずしも正常に機能しないかもしれないという前提で、物事を進める必要があります。
AIRはクロスプラットフォームランタイムではあるものの、一部の機能は個々のOS特有の動作になることがあります(これについて詳しくは、Charles Wardの記事「クロスプラットフォームAdobe AIRアプリケーションの開発*」を参照してください)
また、アプリケーションがローカライズされている場合は、言語ごとに動作検証を行う必要もあります。なお、インストールダイアログボックスなど、AIRランタイムのダイアログボックスは、アプリケーションのデスクリプターファイルを使ってもローカライズできる点に注意してください。ターゲットユーザーの想定としては、以前のバージョンからアップグレードする既存ユーザーと、当該アプリケーションを初めてインストールする新規ユーザーの2種類のユーザー層を考慮する必要があります。ここではテスト環境に、既に当該アプリケーションの以前のリリースビルドがインストールされていたと想定します。
この場合、現時点では読者のオンラインインストールバッジが更新されていないはずなので、airパッケージから直接アプリケーションをアップデートするようにします。これにより(手動の)更新が正しく行えることを確認できます。自動更新を検証するための簡単な方法はありません。
これはアップデーターXMLファイルと
airパッケージが、ネットワークを介してすべてのユーザーによって共有されているからです。デバッグアップデーターファイルをどこかに配置することも可能ですが、この場合はおそらくデバッグアップデーターファイルを読み込むための特殊な「デバッグリリースビルド」を開発しなければならなくなります。(もちろん、テスト期間中だけオンラインファイルを別のものに置き替え、終了時に元のものに戻すことは可能ですが、これではややプロ意識に欠けることになってしまいます。次に、アプリケーションを初めてインストールするユーザーでも、当該ソフトウェアが確実にインストールできることを確認します。このためには、専用のシステムイメージを使用するのがベストです。アップデートの仕組みを検証した動作環境と同じものを使用する場合は、次の手順に従います。現在のアプリケーションをアンインストールします。通常、筆者は自らのインストールバッジからアクセスし、AIRランタイムアプリケーションインストールダイアログを用いてこの操作を行っています。アプリケーションストレージディレクトリーと、当該アプリケーションが作成したすべてのファイルを削除します。このような操作が発生するからこそ、アプリケーションのファイル依存関係を記録しておくことが肝心です。新たなビルドをインストールします。この段階で、開発ビルド時には発生しなかった問題やクラッシュが起こる場合は、ファイルの依存関係が適切に管理されていないことが原因になっている恐れがあります。
アプリケーションのパブリッシュ
アプリケーションをアップロードしたい欲求を抑えるのは容易ではないかもしれません。しかし、アプリケーションの動作検証が完了したら、次は最新ビルドに関する周囲の環境をアップデートする必要があります。まず、Webサイトのコンテンツを最新バージョン向けに更新します。ただし、まだパブリッシュするのは避けてください。機能リスト、解説、ナレッジベース、既知の問題点等を整理して考えるようにします。その後の典型的な手順は以下のとおりです。(おそらく以前のビルドを上書きしつつ、)新しい。airパッケージをサーバーにパブリッシュする。最新のバージョン番号およびリリースノートと一致するように、アップデーターXMLファイルを編集する。インストールバッジが最新であることと、これが予期したとおりに機能することをチェックする。ページまたはWebサイトをメンテナンスモードにし、素早く動作検証を行えるようにする。アプリケーションのWebサイトエディトリアルコンテンツをパブリッシュする。また、最新リリースについては、ブログ記事や各種案内等を通じて、既存ユーザーや将来のユーザーにも告知するようにします。パブリッシュにかかる時間を甘く考えると大変なことになります。過剰なストレスの原因にもなりかねません。パブリッシュ作業はアプリケーション開発の様々な段階と比べて、最も手間のかかる作業の1つと言えます。だからこそ、筆者はこの手続きを支援するために、ANTタスクなどの簡単な自動ビルドシステムを検討することを推奨します。最低でも、パブリッシュ時の手続きを書き留めるなどして、チェックリストを作成するのが賢明です。
著者について
net*にてインストラクターとしても活躍しています。Davidはアドビコミュニティーにも活発に参加しており、SQLiteデータベースの管理ツールであるLita*をはじめ、数々のデベロッパー用AIRアプリケーションをリリースしています。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
0 の新機能であるマルチタッチ機能を活用したアプリケーション Touch Viewer は、指定ディレクトリまたは、マウントした USB ストレージデバイス直下に保存されている画像ファイル ( JPG、GIF、PNG 形式 ) を一覧表示して、選択した画像を閲覧することのできる Flex 4 ベースの画像ビューアアプリケーションです。0 の API について、具体的に説明していきたいと思います。重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイム*を先にインストールする必要があります。xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。2 ランタイムをインストールします。詳細はリリースノート(英語)* をご覧ください。0 の新機能を活用して、以下の機能を実現しています。
マウスジェスチャーによる画像のサイズ、角度、明度のコントロール
6 以上でマルチタッチをサポートしている PC 環境 )
( マウント時に、ドライブ直下の画像一覧を表示 )
画像ファイル・タイプごとに関連するアプリケーションの起動
マウスジェスチャーのマルチタッチイベントを取得する。
0 アプリケーションでマウスジェスチャーなどのマルチタッチイベントを取得するためには、Multitouch
OS や ハードウェアの環境によって、取得できるイベントの種類や挙動がそれぞれ異なるので、テストや検証作業を慎重に行う必要があります。
取得したマルチタッチイベントの取り扱い
用意されているイベントタイプは、以下の2つです。0 の API について調べて、検証機として用意した PC の仕様を確認したり、サンプルプロジェクトをいくつか作成したりしましたが、OS やハードウェアの互換性を保つことが難しいことを実感しました。Adobe AIR には、さまざまな環境でマルチタッチ機能を実現するための手段が用意されていますが、最終的にはハードウェアの性能に大きく左右される技術なので、今後どのように一般に普及させるかが課題になるのではないかと思います。
著者について
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
Voice Launcher - マイク音声によってアプリケーションを起動する音声認識型 アプリケーション起動ソフト | デベロッパーセンター
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
Voice Launcher は、マイク音声によってアプリケーションを起動する、音声認識型 アプリケーション起動ソフトです。重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイム*を先にインストールする必要があります。xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。2 ランタイムをインストールします。詳細はリリースノート をご覧ください。
※マイクが使える状態にあること
1)動作確認する。
とりあえずマイクに向かってなにか喋ってみましょう
グラフが変化し、音声認識結果がグラフの下に表示されます。
グラフが変化しない場合は、OSの設定でマイク入力を使えるようにしてもう一度挑戦しましょう
音声認識結果がでない場合は、次のことを試してみてください。
マイク入力の音量を調整しましょう
グラフの波が小さすぎず、大きすぎない程度がベストです。
はっきりとしゃべりましょう
まずは、「こんにちは」などの濁音や小文字の入っていない、認識しやすい言葉を、滑舌よく、元気に発声してみましょう
音声認識エンジンを起動するためにJava(JRE)が必要です。
あらかじめインストールしましょう
2)アプリケーションを登録する。ガジェットの工具マークをクリックすると、設定ウィンドウが現れます。初期状態では何も登録されていませんので、まずはアプリケーションを登録します。プラスボタンをクリックします。登録ウィンドウが現れたら、登録したいアプリケーションを選択します。アプリケーションの読み方を登録します。
ひらがなで入力しましょう
登録するボタンを押すと、設定ウィンドウのリストに表示されます。
さあ、一度トライしてみましょう
グラフアイコンを右クリックして終了を選択するとアプリケーションが終了します。0 から搭載される新機能をたくさん使用しています。AIR からコマンドを実行できる。マイク音声データを取得できる。デフォルトアプリケーションで開く。ファイルを関連付けられたアプリケーションで起動できる。では、Adobe AIR からアプリケーションを起動させる部分をフォーカスしてみます。*アプリケーションを起動する。// それ以外の拡張子の場合は、デフォルトアプリで開く。“bat“ ファイルは起動できないようです。
// 実行させたいファイルをコマンドライン引数に
jp/ ) という音声認識エンジンを同梱しています。Julius は対話型コンソールアプリケーションです。しかし、コンソールアプリケーション(や cmd ファイル)を直接実行すると、コマンドプロンプト画面が出てしまいます。今回はサンプルなので、「開始」はミドルウェアを挟み、「終了」は cmd ファイルを直接実行させるようにしました。音声認識を終了させる時だけ、コマンドプロンプトが一瞬出てくると思います。
さて、このような中間アプリケーションを挟む場合は、NativeProcess が持つプロセスは中間アプリケーションであることに注意しましょう
Julius のような、起動してずっとプロセスが生き続けるようなアプリケーションの場合は、Adobe AIR側から明示的にプロセスを終了させなければなりません。以上でアプリケーションの説明と技術解説はおわりです。Adobe AIR は、ネイティブプロセスを実行できるようになったことで、アプリケーションの自由度が大きく高まりました。0 アプリケーションにぜひトライしてみてください。
著者について
所属のエンジニア
きちんと「エンジニアリング」ができる、本当の意味でのシステムエンジニアを目指し修行中
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
Voice Launcher - マイク音声によってアプリケーションを起動する音声認識型 アプリケーション起動ソフト | デベロッパーセンター
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
Voice Launcher は、マイク音声によってアプリケーションを起動する、音声認識型 アプリケーション起動ソフトです。重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイム*を先にインストールする必要があります。xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。2 ランタイムをインストールします。詳細はリリースノート をご覧ください。
※マイクが使える状態にあること
1)動作確認する。
とりあえずマイクに向かってなにか喋ってみましょう
グラフが変化し、音声認識結果がグラフの下に表示されます。
グラフが変化しない場合は、OSの設定でマイク入力を使えるようにしてもう一度挑戦しましょう
音声認識結果がでない場合は、次のことを試してみてください。
マイク入力の音量を調整しましょう
グラフの波が小さすぎず、大きすぎない程度がベストです。
はっきりとしゃべりましょう
まずは、「こんにちは」などの濁音や小文字の入っていない、認識しやすい言葉を、滑舌よく、元気に発声してみましょう
音声認識エンジンを起動するためにJava(JRE)が必要です。
あらかじめインストールしましょう
2)アプリケーションを登録する。ガジェットの工具マークをクリックすると、設定ウィンドウが現れます。初期状態では何も登録されていませんので、まずはアプリケーションを登録します。プラスボタンをクリックします。登録ウィンドウが現れたら、登録したいアプリケーションを選択します。アプリケーションの読み方を登録します。
ひらがなで入力しましょう
登録するボタンを押すと、設定ウィンドウのリストに表示されます。
さあ、一度トライしてみましょう
グラフアイコンを右クリックして終了を選択するとアプリケーションが終了します。0 から搭載される新機能をたくさん使用しています。AIR からコマンドを実行できる。マイク音声データを取得できる。デフォルトアプリケーションで開く。ファイルを関連付けられたアプリケーションで起動できる。では、Adobe AIR からアプリケーションを起動させる部分をフォーカスしてみます。*アプリケーションを起動する。// それ以外の拡張子の場合は、デフォルトアプリで開く。“bat“ ファイルは起動できないようです。
// 実行させたいファイルをコマンドライン引数に
jp/ ) という音声認識エンジンを同梱しています。Julius は対話型コンソールアプリケーションです。しかし、コンソールアプリケーション(や cmd ファイル)を直接実行すると、コマンドプロンプト画面が出てしまいます。今回はサンプルなので、「開始」はミドルウェアを挟み、「終了」は cmd ファイルを直接実行させるようにしました。音声認識を終了させる時だけ、コマンドプロンプトが一瞬出てくると思います。
さて、このような中間アプリケーションを挟む場合は、NativeProcess が持つプロセスは中間アプリケーションであることに注意しましょう
Julius のような、起動してずっとプロセスが生き続けるようなアプリケーションの場合は、Adobe AIR側から明示的にプロセスを終了させなければなりません。以上でアプリケーションの説明と技術解説はおわりです。Adobe AIR は、ネイティブプロセスを実行できるようになったことで、アプリケーションの自由度が大きく高まりました。0 アプリケーションにぜひトライしてみてください。
著者について
所属のエンジニア
きちんと「エンジニアリング」ができる、本当の意味でのシステムエンジニアを目指し修行中
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
記事の内容についてのお問い合わせ窓口
印刷用に表示
最近ウィジェットという言葉にふれることも多くなったとおもいますが、ウィジェットとは主にデスクトップ上で動作する特定の機能を持った簡易的なアプリケーションの総称です。ウィジェットにはFlashやAjax等のインターネット技術が利用されており、時計やカレンダー、天気予報といった、日常よく使うものから、キャラクターがデスクトップ上を歩き回るようなものまで様々な種類のウィジェットが公開されています。AIRはウィジェット専用のプラットフォームではありませんが、Flashの描画パフォーマンスを有し、クロスプラットフォームで動作するという点で、強力なウィジェットプラットフォームとして活用することができます。本連載では、AIRでデスクトップウィジェットを制作する方法について、実際のプロジェクト例と実装例を交えながら、複数回に渡ってお届けしようと思います。今回は、FlexをベースにFlashと連携を行った、開発手法について解説を行います。
必要なソフトウェア
著者について
Flash / Flexを利用したブログパーツや、デスクトップウィジェットの設計/開発を中心に活動中
「Flashを用いた動画連動コンテンツの可能性と日本におけるCGMの実態調査」という名目の下、ニコニコ動画に入り浸る日々を送る。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
記事の内容についてのお問い合わせ窓口
AIRアプリケーションの開発を行う場合は、いくつもの方法が用意されています。
図1:AIRの開発ツールと利用技術について
このように既存の技術を使って、自分が得意とする方法でアプリケーションを開発できるのがAIRの大きな特徴ですが、本格的な機能を持たせるウィジェットの開発を考えた場合、Flex Builderを開発環境として使用したFlexでの開発を第一に検討する事をお勧めします。Flexには、クラス定義、インスタンス定義・生成、プロパティ設定、イベントハンドラ設定をXMLで記述できる、MXMLという仕組みがあります。強力なバインディング機能や、MXMLのアトリビュートに書く形でのイベントハンドラ定義なども、より少ない手間でアプリケーションを構築する助けとなります。
Flexフレームワーク及び mxパッケージライブラリの利用
Flexフレームワークとmxパッケージライブラリは、Webアプリケーション開発用に設計され、AIR開発用に拡張されています。サーバサイドとの通信周りの機能も充実しており、抽象化度の高いライブラリは、開発途中での通信仕様の変更にも柔軟に対応できます。
デバッガとプロファイラの利用
制作物が複雑化・大規模化してくると、問題箇所の発見や追跡にはデバッガが必須となります。また、クラスごとにインスタンスのライフサイクルや、使用メモリ量を追えるプロファイラは、メモリリークの検出に有用です。ユニットテスト用のツールとしてFlexUintが公開されています。非同期のテストにも利用できるため、通信機能のテストにも有用です。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
最近ウィジェットという言葉にふれることも多くなったとおもいますが、ウィジェットとは主にデスクトップ上で動作する特定の機能を持った簡易的なアプリケーションの総称です。ウィジェットにはFlashやAjax等のインターネット技術が利用されており、時計やカレンダー、天気予報といった、日常よく使うものから、キャラクターがデスクトップ上を歩き回るようなものまで様々な種類のウィジェットが公開されています。AIRはウィジェット専用のプラットフォームではありませんが、Flashの描画パフォーマンスを有し、クロスプラットフォームで動作するという点で、強力なウィジェットプラットフォームとして活用することができます。本連載では、AIRでデスクトップウィジェットを制作する方法について、実際のプロジェクト例と実装例を交えながら、複数回に渡ってお届けしようと思います。今回は、FlexをベースにFlashと連携を行った、開発手法について解説を行います。
必要なソフトウェア
AIRアプリケーションの開発を行う場合は、いくつもの方法が用意されています。
図1:AIRの開発ツールと利用技術について
このように既存の技術を使って、自分が得意とする方法でアプリケーションを開発できるのがAIRの大きな特徴ですが、本格的な機能を持たせるウィジェットの開発を考えた場合、Flex Builderを開発環境として使用したFlexでの開発を第一に検討する事をお勧めします。Flexには、クラス定義、インスタンス定義・生成、プロパティ設定、イベントハンドラ設定をXMLで記述できる、MXMLという仕組みがあります。強力なバインディング機能や、MXMLのアトリビュートに書く形でのイベントハンドラ定義なども、より少ない手間でアプリケーションを構築する助けとなります。
Flexフレームワーク及び mxパッケージライブラリの利用
Flexフレームワークとmxパッケージライブラリは、Webアプリケーション開発用に設計され、AIR開発用に拡張されています。サーバサイドとの通信周りの機能も充実しており、抽象化度の高いライブラリは、開発途中での通信仕様の変更にも柔軟に対応できます。
デバッガとプロファイラの利用
制作物が複雑化・大規模化してくると、問題箇所の発見や追跡にはデバッガが必須となります。また、クラスごとにインスタンスのライフサイクルや、使用メモリ量を追えるプロファイラは、メモリリークの検出に有用です。ユニットテスト用のツールとしてFlexUintが公開されています。非同期のテストにも利用できるため、通信機能のテストにも有用です。Flexベースのアプリケーションで、よりリッチな表現を実現する。FlexはMXMLを組み合わせることで、ユーザーインターフェースを簡単にする事ができ、アニメーション効果を演出するエフェクトや、ユーザー操作をイベントトリガとしてエフェクトを関連付けるビヘイビアによって様々な表現を実現することができます。
しかし例えば、複雑なアニメーションをするクリックボタンを作りたい、しかもその表現をデザイナーが確認しながらいろいろと変えてみたいといわれた場合はどうでしょうか
このようなFlashであれば簡単ですが、Flexで行うには少し面倒です。それならば複雑なアニメーションや演出を含む部分をFlashで作成して、Flexの部品として扱うことができれば、Flashの機能を存分に活かしたビジュアルとFlexの高機能を両立させることができます。また、デザイナーやクリエーターがFlashでしっかりと演出を構成して、Flex側のエンジニアが全体の制御やバックロジックに集中して取り組むという分業も可能です。この方法をとる利点として、表現部分の実装とバックロジック部分の実装を明確に切り分けることにより、分業が可能になるという点が挙げられます。表現部分の実装には、デザインやモーションなど、デザイナー寄りのスキルを持ったエンジニアが適していますし、バックロジックの実装には、堅剛なシステムを構築できる、システム設計に精通したエンジニアが適しています。作業を、要求されるスキルという粒度で明確に切り分けることで、作業の効率化や品質の向上を期待することができます。今回はこの、「Flashで表示用コンポーネントを作成し、Flex側でそれを操作する」方法について、詳しく解説して行こうと思います。
UIコンポーネントとして扱える部品を Flashで作成
入力、すなわち「ユーザ操作に応答してバックロジック側に通知する部分」の実装には、イベントを用います。Flashで作成したコンポーネントがイベントを発行し、Flexで作成したバックロジック側がそれをリスニングする方法です。例えば、fooというイベントを設定する場合は、このように定義します。
イベントのディスパッチ
// ここに fooイベントを受け取ったときの処理を書く。出力、すなわち「演算の結果を、表示用コンポーネントに渡して表示させる」部分の実装には、色々な方法があります。表示用コンポーネントのクラスに 値を設定して表示させるメソッドを定義する方法もありますし、表示用コンポーネントの方が、値の変化をlistenする方法もあります。そんな中でお勧めなのが、「MXMLのバインディング機能と、暗黙のsetterを組み合わせた方法」です。手順をまとめます。さて、上記の方法でAIRアプリケーションの開発をするにあたって、いくつか注意点があります。これらはとても細かい問題であるが故に、実際に問題に遭遇するまでは気付きにくいものです。flコンポーネントが使えない。使用するクラスは 明示的に依存関係を作る必要がある。リンケージクラスを設定したシンボルの取り扱いで注意すべき点があります。例えば、「SampleMovieClipクラスにリンクしたシンボル」を作成する場合、Flashのオーサリング画面上でライブラリにシンボルを作成し、メニューの[リンケージ]でリンケージプロパティ設定画面を表示させます。対し、シンボルをSWC書き出しする場合は、そのリンケージクラスに依存していないクラス定義は書き出されません。UIMovieClipを継承したViewクラスをSWC書き出しして Flex側のライブラリに取り込む場合は、明示的に依存関係を定義する、もしくは使用するクラスもSWC化してライブラリに取り込む必要があります。今回は、FlexとFlashの連携について解説を行いましたが、次回はより実例を使ったウィジェットの開発方法について解説を行いたいと思います。次回以降も主に基礎的なことが中心となりますが、それでも学習すべきことが多いAIRアプリケーションの開発において、本連載が学習の助けとなれば幸いです。また、AIRベースのウィジェットについてご興味があれば、下記の連絡先までお問い合わせください。
記事の内容についてのお問い合わせ窓口
著者について
Flash / Flexを利用したブログパーツや、デスクトップウィジェットの設計/開発を中心に活動中
「Flashを用いた動画連動コンテンツの可能性と日本におけるCGMの実態調査」という名目の下、ニコニコ動画に入り浸る日々を送る。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
データのドラッグ、コピー、ペースト
ドラッグ&ドロップ操作またはコピー&ペースト操作で移動するデータやオブジェクトの準備
ドラッグ操作の開始
ドロップされた情報やオブジェクトの取得
システムクリップボードへの書き込み
システムクリップボードからの読み取り
標準のキーボードショートカットを使用したコピー&ペースト
注意:このサンプルアプリケーションは、説明のためにそのままの状態で提供されています。この記事に書かれた操作を行うには、次のソフトウェアとファイルが必要です。このサンプルアプリケーションには、次のファイルとクラスが含まれています。この記事でコードの詳細を説明します。
as:ドラッグまたはペーストされた情報を表示するための基本クラス
html:このサンプルアプリケーションの説明と、メインウィンドウにドラッグするアイテムが含まれています。html:セキュリティ例外をトリガせずにアプリケーション以外の SWF ファイルを読み込むために使用されます。
tiff:ドラッグするサンプルファイル
Flash CS3 を使用したアプリケーション構築の経験があることが推奨されます。
アプリケーションのテスト
Scrappy を使用するには、ファイル、ビットマップ、URL およびテキストをウィンドウにドラッグします。アプリケーションは、AIR でサポートされている標準形式のドラッグされたアイテムを受け入れます。注意:すべてのアプリケーションがビットマップデータを AIR でサポートされている形式でクリップボードに書き込むわけではありません。
コードの理解
この記事では、アプリケーションで使用されているすべての ActionScript クラスについて説明しているわけではありません。0 コンポーネントリファレンスガイド』を参照してください。
ドラッグターゲットの作成
Scrappy では、ウィンドウの背景としてもドラッグ&ドロップ操作のターゲットとしても機能するフルウィンドウのスプライトを使用します。スプライトまたはその他のインタラクティブオブジェクトをドラッグ動作の受け手として機能させるには、そのオブジェクトから送出された NativeDragEvent をリッスンする必要があります。Scrappy クラスは、次のコードを使用して、ウィンドウ、ドロップターゲットスプライトおよびイベントリスナーを作成しています。ドラッグターゲットの重要なイベントは次のとおりです。ステージの keyDown イベントは、ペーストコマンドを確認するために使用されています。スプライトはフォーカスが設定されるときにキーボードイベントしか受け取らないので、ステージにイベントリスナーが添付されています。
ターゲットへのデータのドロップ
ユーザがデータをターゲットにドロップできるようにするには、通常、次の操作を行います。データの形式を確認します。
ドラッグされたデータの確認
Scrappy アプリケーションは、4 つの標準形式のデータを受け入れることができます。カスタム形式も定義されています。
動作の受け入れ
acceptDrop() を呼び出すと、渡されたインタラクティブオブジェクトでドロップを受け取ることができます。
ドロップアクションの設定
ドロップアクションを設定しない場合は、ドラッグイニシエータオブジェクトによって許可されたアクションとユーザが押した修飾キーによってデフォルトのアクションが決まります。例えば、ドラッグイニシエータで 3 つのすべてのアクション(コピー、移動、リンク)が許可されている場合は、コピーがデフォルトのアクションになります。ドロップイベントの前にドロップアクションを設定した場合は、デフォルトのアクションではなく指定したアクションが使用され、ユーザはキーボード修飾子で別のアクションを選択することはできません。ユーザがウィンドウ内でオブジェクトをドラッグする場合、コピーするよりも移動する可能性が高いため、Scrappy ではアプリケーション内でオブジェクトがドラッグされた場合は移動をドロップアクションとして設定します。オブジェクトをオペレーティングシステムまたは別のアプリケーションから Scrappy にドラッグする場合は、デフォルトの動作が行われます。
ドロップの取得
これにより、データ形式に基づいて新しい Scrap オブジェクトが作成され、返された Scrap オブジェクトがステージに追加されます。scrap パッケージのクラスは、Scrappy ウィンドウにドロップまたはペーストされた情報のコンテナとして機能します。Scrap クラスは、新しい scrap オブジェクトを作成するための静的なファクトリメソッドも実装します。Scrap サブクラスは基本の Scrap クラスを拡張して、転送可能な標準形式のデータを処理します。また、スクラップがアプリケーションからドラッグされると、データを正しい形式で Clipboard オブジェクトに追加します。FileScrap:ファイルの内容を読み込んで表示したり、ファイル名とアイコンを表示したりします。Scrappy で認識される少数のファイルタイプについては、FileScrap コンストラクタがデータを読み込み、他のタイプの Scrap オブジェクトを作成してレンダリングします。次に、適切なタイプの scrap オブジェクトを作成してデータを表示します。クリップボードの Scrap オブジェクトが null の場合(例えば、コピー操作とペースト操作の間に削除された可能性があります)、またはドロップアクションがコピーの場合、Scrappy は代わりにオブジェクトのコピーを作成します。コピーは、Clipboard オブジェクトを作成して「SCRAP」形式以外のすべてのデータを新しいオブジェクトにコピーすることによって行われます。
データのドラッグ
ユーザが AIR アプリケーション内からデータまたはオブジェクトをドラッグできるようにするには、次の処理を行う必要があります。ドラッグするデータまたはオブジェクトが含まれている Clipboard オブジェクトを作成します。必要に応じてドラッグプロキシ画像を作成します。スプライトスタイルのドラッグは、スプライトを他のアプリケーションにドラッグできませんが、ウィンドウ内のオブジェクトの位置を変更するのに適しています。
ドラッグの開始
Scrappy アプリケーションでオブジェクトをドラッグするためのメソッドとイベントハンドラは、Scrap クラスで定義されています。このイベントハンドラは次の処理を行います。ドラッグの開始時にプロキシ画像がジャンプして見えないように、Point オブジェクトの座標を設定します。ドラッグを開始します。ウィンドウ内のフォーカスを管理します。
許可するアクションの指定
コピーアクションと移動アクションを制御するプロパティは変更されていません。
ドラッグプロキシ画像の作成
Scrappy は、オブジェクトを BitmapData オブジェクトに描画することによって、ドラッグするオブジェクトのスナップショットを取得します。この関数は、ハイライトの矩形のサイズが収まるように、BitmapData オブジェクトを Scrap オブジェクトの現在のサイズより少し大きく作成します。デフォルトでは、ドラッグプロキシ画像の原点はカーソルのホットスポットに配置されます。これにより、特にドラッグするオブジェクトに似た画像を使用する場合は、ドラッグの開始時に画像がジャンプするように見えることがあります。これを補正するには、オフセット座標を指定して、カーソルを基準にして画像を再配置することができます。これらの座標を使用してドラッグプロキシ画像をオフセットすると、ドラッグしたオブジェクトとプロキシ画像はジャンプしないように整列されます。ただし、オブジェクトをドロップする場合は、オフセット値は報告されません。これにより、オブジェクトをドロップするときに反対方向にジャンプすることがあります。Scrap クラスは、静的な Point オブジェクトにオフセット値を保存し、これらの値を使用してドロップされたオブジェクトの x 座標と y 座標を調整します。
ドラッグ操作の開始
多くの場合、コンテナコンポーネントをドラッグされたアイテムそのものではなくドラッグイニシエータとして動作させることをお勧めします。フォーカスの管理は、ドラッグ操作には含まれません。ただし、コピー、カット、ペーストおよび削除対象のオブジェクトを選択できる必要があります。
フォーカスを管理するために、ハンドラでは grabFocus() 関数を使用してオブジェクトにステージフォーカスを設定し、イベントが親の表示コンテナまで伝わらないようにイベントの伝播を中断します(親の表示コンテナはフォーカスをクリアすることで mouseDown イベントに応答するので、イベントの伝播をここで中断しなければ、オブジェクトにフォーカスを設定できなくなります)
ドロップの完了
イニシエータによって許可するように設定されたアクションからユーザまたはドロップターゲットが選択したアクションが、イベントの dropAction プロパティに報告されます。
データのコピー&ペースト
ドラッグ&ドロップ操作と比較すると、コピー&ペーストは単純な操作です。コピー&ペーストコマンドは、関連コマンドが編集メニューで選択されると呼び出されます。コマンドに対応するキーがメニューコマンドに定義されているので、標準のキーボードショートカットも使用できます。Scrappy は、メインウィンドウにペーストコマンドを実装しています。
このアプリケーションは、ペーストコマンドに応答してクリップボードデータをファクトリメソッド Scrap
このメソッドはドロップ操作用のスクラップを作成するためにも使用されます。ペーストされたスクラップは、常にステージ上の同じ場所に配置されます。このメソッドは、クリップボードの内容をペーストするだけでなく、選択されたオブジェクトを削除します。コピーは Scrap 基本クラスで実装されています。カット操作は、単純に scrap オブジェクトをクリップボードにコピーして削除します。
著者について
余暇にはスキンダイビングを楽しむ一方、子供たちと遊ぶことを忘れない子煩悩な父親でもある。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
SQLiteの操作処理がユーザ体験に与える影響についての考察 | デベロッパーセンター
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
データベース操作の所要時間
データの処理
データベース操作に関するヒント
印刷用に表示
SQLiteの操作処理がユーザ体験に与える影響についての考察
Adobe AIRがSQLiteをサポートすることで、標準化されたクロスプラットフォーム環境のデスクトップに、強力なリレーショナルデータベースのサポートが付与されることになります。SQLiteデータベース内の情報は、AIRランタイムが提供するリッチなAPI群によって、手軽に操作することができます。ローカルデータベースを使用するにあたりまず検討しなければならないのは、データベースへの接続を同期モード、非同期モードのどちらで実行するかです。アプリケーションで同期接続を使用する場合は、データベースの処理が完了するまで次の操作に進むことができません。一方の非同期接続を使用するアプリケーションの場合は、データベースの処理が完了した時点でその旨が通知されます。本記事では、これら2つの実行モードがどのような意味を持つのかを検証するとともに、実行モードの選択基準についても解説します。この記事を効率良くフォローするには、次のソフトウェアやファイルが必要です。
この記事に必要な予備知識
著者について
Rinehartは過去8年にわたり、ソフトウェア開発業界にエンジニアおよびアーキテクトとして従事しています。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
正直に言いましょう
AIRはランタイムが大きすぎ、貴重なメモリとCPUを浪費すると言われています。確かに多くのAIRアプリケーションがこの罠に陥っていますが、これは決して避けられないわけではありません。様々な技法を利用することで、ネイティブプログラムに遜色ないパフォーマンスを発揮する軽量のアプリケーションも開発できるのです。CPU使用率を劇的に削減する単純で容易な方法として、フレームレートスロットリングがあります。この記事では、フレームレートスロットリングとは何か、どのようにアプリケーションに実装すればよいかを説明します。注意:この記事を最大限に活用するには、ActionScriptおよびAIRアプリケーション開発に関する一般的な知識が必要です。
フレームレートスロットリングとは何か
フレームレートスロットリングとは、アプリケーションのフレームレートを制御することで、使用中のパフォーマンスを向上させ、アイドル時のリソース使用を削減する技法です。ActionScript 3から、デベロッパーにとってきわめて有用なプロパティが利用可能になりました。これは、フレームレートを実行時に変更するためのものです。この大きな進歩のおかげで、プロセッサーを浪費するアプリケーションがバックグランドに居座る理由はもはやなくなりました。
フレームレートスロットリングの実装方法
フレームレートスロットリングとは基本的に、Stage
frameRateプロパティを小さくしたり大きくしたりするだけのことなので、どの程度複雑なやり方や高度なやり方をするかはデベロッパー次第です。また、アプリケーションによっても適切な方法は異なり、より高度な統合が可能なアプリケーションもあります。
注意:以下の例のパフォーマンス結果は、2
CPU使用率はパーセントで測られるので、結果はコンピューターごとに異なります。アクティブなときはフレームレートを上げ、アクティブでないときは下げます。
1つの空白のウィンドウの場合、この方法により、アクティブなときはCPU使用率が1
8%、アクティブでないときは0
4%になります。
実際には、アクティブでないときにフレームレートを0
01に設定すると使用率を0
2%にできますが、テストしてみるとウィンドウクロムからフォーカスが移動しないことがわかりました。アプリケーションによっては、さらに高度なフレームレートスロットリングが可能です。例えば、バックグランドで動作しているときでも何らかのインタラクションが必要なアプリケーションの場合です。アプリケーションがスクロール可能なコンテンツを表示している場合、AIRでは他のアプリケーションがアクティブな間もマウスホイールでのスクロールが可能なので、そのときはフレームレートを上げる必要があります。
この例では、アプリケーションがバックグランドで動作していて、マウスホイールが回された場合、MouseEvent
このイベントにより、スクロールから0
5秒後にフレームレートが下げられます。これは、スクロールのたびにフレームレートを変更しなくてすむようにバッファーを設けるためですが、マウスホイールがアイドルになったことを示すイベントがないので、このような方法をとっています。
パフォーマンスの最適化に命を懸けている人なら、巧妙なフレームレートスロットリングを使って友達を感心させることもできます(注意:ガールフレンドはだめです)
私がアプリケーションを作成するときには、環境をスムーズにし、操作感を改善するため、ステートの遷移を使うのが普通です。このために、私はいつも高いフレームレート(50)を使用しています。しかし、フレームレートが高いほど、CPU使用率も高くなります。したがって、私はトゥイーンがアクティブなときだけフレームレートを50に設定します。そうでないときは、フレームレートを24に下げます。また、アプリケーションがバックグランドで動作している間に、ローダーがアニメーション表示を行う場合もあります。ローダーに50 fpsは必要ないので、アプリケーションがバックグランドで表示されているときはフレームレートを5に、表示されていないときは1に設定します。注意:この例では、各トゥイーンの先頭で呼び出すためのanimate()メソッドを使用しています。理想的には、フレームレートスロットリングの処理をトゥイーンエンジンに組み込むことができれば、animate()を手作業で呼び出す必要はなくなります。フレームレートスロットリングは、AIRアプリケーションのパフォーマンスを最適化するための基本的な方法の1つです。この方法を出発点として取り組めば、リソースの使用を少なくするように考える癖がつきます。このような考え方と習慣を身につけることで、より応答性の高いアプリケーションを開発でき、ユーザーの体験を改善しながらアプリケーションを軽量にすることができます。結局、肥大したアプリケーションはみんなの迷惑なのです。
著者について
JonnieはアドビのXDCEチームのエクスペリエンスデザイナーです。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
AIRランタイムをより多くのコンピュータ上へと普及させる。1には、この目標を達成するための重要な新機能として、ローカリゼーション機能が盛り込まれています。1新搭載のローカリゼーション機能を解説するとともに、ローカリゼーションフレームワークのサポートに関する情報を提供します。また、AIR向けに開発された、簡潔かつパワフルなフィードアグリゲータのApprise(図1参照)をローカライズするにあたり、筆者がとったローカリゼーションプロセスも手短に紹介することにします。この記事を最大限に活用するには、次のソフトウェアとファイルが必要です。
この記事に必要な予備知識
1のローカリゼーションサポート
プラットフォームにローカリゼーションを追加するには、単に1つの機能を追加すれば良いというわけではありません。実際には、AIRランタイムとAIRアプリケーションの両方が英語以外のシステムにも対応できるよう、一連の機能を追加する必要があります。1のローカリゼーションサポートには、以下のコンポーネントが含まれています。1ランタイムは、SWFおよびHTMLコンテンツ(HTML上のSWFを含む)に配置された、書き言葉として存在する言語のほぼすべての文字をレンダリングできるはずです。ランタイムのローカリゼーション:ランタイムのダイアログボックス(ランタイムインストーラ、アプリケーションインストーラなど)、アプリケーションのダイアログボックス(ファイルブラウザ、JavaScript警告など)およびデフォルトメニューが、それぞれ日本語、フランス語、ドイツ語、中国語(繁体、簡体)イタリア語、スペイン語、韓国語、ポルトガル語、ロシア語にローカライズされています。このプロパティは、ユーザの言語選択に関する情報を含む配列を返します。フレームワークのサポート:Flex 3には、すでにランタイムのローカリゼーションサポートが含まれています。上記5アイテムのうち最初の3つは、自動的に処理されます。つまりデベロッパーとしては、これらのアイテムに関して、AIRアプリケーションで英語以外の文字を正しくレンダリングするために、何もする必要はありません。エンドユーザに対しては、適切な言語でランタイムの文字列が自動的に表示され、しかもIMEが正しく機能します。この記事では、AIRアプリケーションをローカライズするにあたり、デベロッパーが注意しなければならないコード部分に注目することにします。Appriseは、筆者が初めてローカライズに携わったAIRアプリケーションです。ローカライズのプロセスに関しては、さまざまな事柄を習得することができました。ローカライズプロセスは次の3ステップで構成されていると言えます。
適切な言語の判定
Flexに対する使用言語の指示
文字列および日付書式マスクの置き替え
適切な言語の判定
Flex 3は、AIRとの相性に優れた、ランタイムローカリゼーションサポートを提供します。
ランタイムローカリゼーションサポートということは、対応する言語毎に個別の
airファイルを頒布する必要がないということです。
つまり、単一の
airファイルを用意しておき、これを、サポート対象言語に翻訳された文字列を含む、リソースバンドルとともに頒布することが可能です。そして、アプリケーションでは、どの言語を使用するかをFlexに動的に指示すれば良いのです。コードさえ正しく記述できていれば、ユーザインターフェイスのすべてが正しく自動的に適合されます。アプリケーションでどの言語を用いるかは、次の2つの方法で指定できます。ユーザが使用言語を選択できるようにする。
サポート対象言語が表示されるボックスまたはメニューを提供し、エンドユーザが使用言語を選択できるようにする方法
オペレーティングシステムの言語情報を取得し、適切な言語を判定する。Appriseのローカライズにあたり、筆者は後者の方法を選択することにしました。このプロパティはオペレーティングシステムによって指定された、優先的な言語の配列を返します。これで、エンドユーザが希望する言語と、(すでにデベロッパーが要件として規定した)アプリケーションでサポートする言語が出揃うことになります。
では、一体これら2組の言語をどのようにマッチさせ、最適な使用言語を判断すれば良いのでしょうか
この判定処理は、思ったほど簡単ではありませんでした。これはオペレーティングシステムから返される言語情報には、地域情報が含まれるケースと含まれないケースがあるからです。またこれと同様に、デベロッパーが提供する言語パックにも、地域情報が含まれるケースと含まれないケースがあります。将来的には、Flexフレームワークが自動的にこの問題を解決するようになります。(この変更は、すでにパブリックFlexソースコードリポジトリ*に盛り込まれているものの、正式リリースへの収録には至っていません。このsortLanguagesByPreference関数は、アプリケーションで対応する言語の配列とシステムの優先言語を示す配列に加えて、適切な選択肢が判定できなかった際に利用する予備のロケール情報を受け付けます。この部分のAppriseのコードは以下の通りです。
Flexに対する使用言語の指示
アプリケーションで対応する言語とエンドユーザの希望する言語が整理できたら、後は、アプリケーションでどの言語を使用するかについて、Flexフレームワークに指示を出すだけです(つまり、どのリソースバンドルを使用するかの指示)
この部分のAppriseのコードは以下の通りです。
文字列および日付書式マスクの置き替え
0向けとして開発されました。したがって、ローカリゼーションにあたっては、アプリケーション上でハードコーディングされた文字列を探し出し、これらがリソースバンドルから動的に読み込まれるもので置き替えられるようにする必要がありました。リソースバンドルとは、名前と値のペアが含まれたファイル(またはリソース)のことです。これらは、Flexが理解できる、一般的なディレクトリ構造で整理されます。そして、これらのディレクトリ内には名前と値のペアが含まれた、リソースファイルが作成されています。名前と値のペアの例を次に示します。もちろん、英語以外のリソースの名前と値のペアは、各言語向けに適切になるよう、それぞれ調整されています。このトピックについては、他にも「Flexアプリケーションのローカライズ」という素晴らしい記事が存在するので、詳細な解説は割愛することにします。なお、この記事には、Flex 3ランタイムのローカリゼーション機能に関して、知るべきことがすべて掲載されています。ここでは、いくつかの例のみを紹介することにします。
まず、筆者は、コードの次のようなラベルをすべて探し出し、これらを次のようなコードに変更しました。また、日付の書式マスクもローカライズするために、次のようなコードも探し、これらを次のようなコードに置き替えました。1アプリケーションのローカライズに必要な作業です。アドビでは、HTMLアプリケーション向けとしても、素晴らしいローカリゼーションフレームワークを提供しています。これについて詳しくは、Adobe AIRクイックスタート記事の「HTMLベースのマルチ言語対応アプリケーション開発*」を参照してください。
著者について
クリスチャンの近況については、ブログ*を参照してください。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
構造化文書の基礎知識
Flexアプリケーションの作成
コードの解説
AIRアプリケーションのパブリッシュと動作検証
印刷用に表示
Adobe AIR、Flex、XMLの組み合わせなら、魅力的なアプリケーションを提供するための卓越したプラットフォームが実現できます。たとえば、構造化された文書であるXMLから取得した情報を、効果的かつ新たな形で提示することがこの好例として挙げられます。今、特にテクニカルコミュニケーションの現場では、XML文書のスマートなビューアを開発することに対して、多くの関心が集まっています。テクニカルライターの多くは、規範化されたオーサリング手法の採用を急速に進めており、DITA(ヘルプコンテンツなどトピックベースの情報向けの規格)やS1000D(航空宇宙・防衛業界向けの規格)、SPL(製薬製品向けの規格)などの標準規格を用いて、コンテンツをXMLで提供できるようにしつつあります。本記事では、Flexを利用してXML文書ビューアを開発することが、どれほど容易であるかを説明するとともに、Adobe AIRを利用してビューアアプリケーションをパッケージ化・配信する方法について解説します。図1に示すのは、本記事のXML Viewerサンプルアプリケーション上で、サングラスの製品情報を提示している模様です。ここでは単体のアプリケーションを提供することに注目して解説を行いますが、同様のFlexコードは、ブラウザを介して配信される、ホスティングされたリッチインターネットアプリケーション(RIA)用にも転用することができます。メモ: 本記事は、完全なアプリケーションが驚くほど少量のコードで開発できることを、手順を追って紹介するものです。ここでは、ほぼすべてのコードをMXMLで記述するため、プロジェクトを理解する上で、ActionScriptの知識はほとんど必要となりません。また、本記事のアプリケーションは、いくつかのMXMLコンポーネントだけを使用して効率よく開発を行う方法を示していることから、Flexに精通している読者に対しては、新たなアプリケーション開発手法に接する絶好の機会を提供します。
AIRで開発したサンプルアプリケーションのXMLビューア
このチュートリアルを完了するには、次のソフトウェアとファイルが必要となります。
この記事に必要な予備知識
FlexとMXMLに対する基礎知識を有していることが推奨されますが、FlexとMXMLの初心者でも、本記事の詳細なコード解説を理解することは可能です。サンプルアプリケーションを編集・拡張したい場合は、Flex Builderの知識が必要となります。また、構造化されたオーサリング手法、XMLを用いた構造化文書化、およびXSLTを使用したXMLからHTMLへの変換に対する実務経験をお持ちの場合は、アプリケーション構成のさまざまな点を容易に理解することができます。
著者について
Karlは、常に自らが携わる市場の最新トレンドや技術革新に興味を持ち、構造化コンテンツを変換・処理・再利用し、プリントやPDFからHTML、モバイル、Adobe Flash形式に至るまでのさまざまなメディアで、魅力的な体験を実現できることを示せるよう、デモや実証コンテンツの開発に注力しています。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
ランタイムはAIRアプリケーションを起動するために必要です。
デスクトップアプリケーション開発の基礎コンセプトを把握
他の支援情報について詳しくは、以下のリソースを参照してください。リッチインターネットアプリケーション(RIA)の主な構成要素について詳しくは、RIAプロジェクトポータル*を参照してください。
Flexを使用したデスクトップアプリケーションの構築:ファイルシステムの使用*
ホストコンピュータのファイルシステムにアクセスして操作する方法を説明します。他のトレーニングオプションについて詳しくは、こちらのトレーニングコース*の概要と説明を参照してください。
次のステップ
Flexに関するその他のリソース
すべての製品とテクノロジーセンターの確認
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
サイズ変更可能な、矩形でないウィンドウの作成 | デベロッパーセンター
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
サイズ変更可能な、矩形でないウィンドウの作成
矩形ウィンドウは洗練されていて、ほとんどのアプリケーションに適しています。ただし、最も簡単に描画できるからといって、すべてのウィンドウを矩形にする必要があるわけではありません。Square サンプルアプリケーションは、矩形ではなく楕円形をベースにしたウィンドウを作成します。このウィンドウでは、クロムの大部分にベクターグラフィックが使用されるため、ウィンドウのサイズや縦横比が制限されるようなビットマップの拡大 / 縮小に関する問題は発生しません。別の外観を持つウィンドウの作成方法を示す。注意:このサンプルアプリケーションは、説明のためにそのままの状態で提供されています。この記事に書かれた操作を行うには、次のソフトウェアとファイルが必要です。このサンプルアプリケーションには、次のファイルとクラスが含まれています。
as:アプリケーションのメインウィンドウを作成したり閉じたりするスタブクラス
as:Sprite クラスを拡張して、ウィンドウクライアント領域の外側にあるものをすべて切り取るコンテンツコンテナを作成します。as:ウィンドウのサイズを変更するグリッパーコントロールを実装します。as:ウィンドウを最小化したり元のサイズに戻したりするボタンを実装します。as:ウィンドウを最大化するボタンを実装します。as:ウィンドウを閉じるボタンを実装します。as:ドックアイコンとシステムトレイアイコンに使用する画像を読み込みます。
as:ウィンドウのサンプルコンテンツを提供するクラス
as:スプリング力をシミュレートします。js:HTML ウィンドウを使用したソースコードブラウザを実装します。このクイックスタートの開始方法について詳しくは、「Flex を使用したクイックスタートサンプルアプリケーションの構築」を参照してください。
アプリケーションのテスト
air)ファイルをダウンロードして起動します。ウィンドウのドラッグバーにある 8 つのグリッパーを使用して、ウィンドウのサイズを変更します。ドラッグバーを使用してウィンドウを移動します。白いディスクをウィンドウの端にドラッグして、ウィンドウクライアント領域の外側のディスク部分が正しく切り取られることを確認します。
コードの理解
Square アプリケーションでは、AIR 固有のものではないグラフィック関数をいくつか使用しています。0 コンポーネントリファレンスガイド』を参照してください。
アプリケーションの初期ウィンドウにはカスタムクラスを使用できないので、Square の例では、主にアプリケーションのメインウィンドウとして機能する RoundWindow クラスのインスタンスを起動するために初期ウィンドウを使用しています。AIR によって作成された初期ウィンドウは表示されず、初期化が完了すると閉じます。次に、コンストラクタはウィンドウクロム要素を作成し、ウィンドウをアクティブ化して表示します。
//ボタンをウィンドウの標準的な場所に配置
楕円形の境界線の描画
ウィンドウの境界線は、Graphics クラスで提供されている標準の Flash 描画関数を使用して描画されています。これらの関数には、表示オブジェクトの graphics プロパティを使用してアクセスできます。境界線は、3 つの輪で構成されています。次の関数は、それぞれの輪で 2 つの楕円形を描画することによって、3 つの輪を描画しています。
楕円弧の描画
Graphics クラスには楕円弧だけを描画する関数がないので、境界線そのものを描画するよりも、サイズ変更グリッパーを境界線上に描画する方が困難です。curveTo() メソッドを使用できますが、楕円形の境界線に合わせて正しいコントロールポイントの位置を計算するのは、数学的に難しい作業になります。
楕円弧を描画するために、Square では、楕円形のパラメトリック方程式に基づく、より簡単なポリライン手法を使用しています。境界線上のポイントを、楕円形の高さ、幅、および中点からの角度に基づいて計算します。そして角度を少し広げて次のポイントを計算し、最初のポイントとの間に線を描画します。この処理を繰り返して目的の弧を描画します。図 2 は、角度および楕円形の幅と高さを指定した場合に、楕円形に沿ったポイントを計算するために使用できる式を示します。
楕円形に沿ったポイントの計算式
グリッパーは、事前に設定された角度で境界線の周囲に配置されるため、角度はわかっています。楕円形の幅と高さは、ウィンドウ境界線の外側エッジについてはウィンドウの幅と高さ(viewWidth と viewHeight)、ウィンドウ境界線の内側エッジについてはそれらの幅と高さから境界線の太さを引いた値です。開始角度と終了角度は、事前に設定されたグリッパーの角度に対してグリッパーの角度幅の半分の値を加算 / 減算して計算します。距離ではなく角度で長さを定義した方が、計算が少し簡単になり、ウィンドウのサイズを変更するときにも望ましい結果が得られます。これは、グリッパーの長さと境界線の直径の比例関係が維持されるからです。
次のルーチンでは、4 つのポイント間にグリッパーのシェイプを描画します(図 3 を参照)
次に説明するルーチンで描画されたグリッパーのシェイプ
次に、B と C の間に一連の線セグメントを描画します。多数のセグメントを使用すると、実際の曲線と区別できない視覚効果を作成できます。C から D まで 1 本の直線を描画し、D から A までポリラインセグメントを描画してシェイプを閉じます。
クライアント領域の切り取り
RoundWindow クラスでは、そのコンテンツのコンテナとしてクリッピングマスクが適用されたスプライトを使用しています。ウィンドウの境界線の外側に描画されたコンテンツオブジェクトは切り取られます。ウィンドウクロム要素は、ステージに直接追加されるので切り取られません。マスキングスプライトは描画されませんが、マスクのグラフィックコマンドで定義されたシェイプにある最初のスプライトの部分だけは表示されます。このクラスは、ウィンドウの幅と高さに基づいて楕円形を描画するための使い慣れたコマンドを使用してクリッピングマスクを作成します。ClippedStage オブジェクトの子として追加されたオブジェクトは、楕円形の外側にはみ出した部分が切り取られます。このクラスは、親ウィンドウの resize イベントを待機し、新しいウィンドウサイズに基づいてクリッピングマスクを再描画することで応答します。このような切り取りは、単純なシェイプに限定されないので、マスクする必要がある領域を持つ任意のウィンドウに使用できます。
楕円形ウィンドウのサイズ変更
ウィンドウのサイズを変更するには、ウィンドウの新しい幅と高さに基づいて境界線とグリッパーを再描画する必要があります。このプロパティに格納されている幅と高さは、ウィンドウの draw() メソッドに渡されます。
楕円形ウィンドウのコンテンツの処理
Square ウィンドウのコンテンツはコンテナを認識するので(境界線にスプリングが関連付けられている)、ウィンドウサイズとシェイプの変更に対応する必要があります。そのためには、ウィンドウの resize イベントを待機して従属変数を再計算します。コンテンツは常にアニメーション化されるので、サイズ変更リスナーによって再描画する必要はありません。再描画は次のフレームイベントが発生したときに行われます。アニメーション化されないコンテンツについては、ウィンドウコンテンツオブジェクトを直接サイズ変更するか再配置する必要が生じる場合があります。
著者について
余暇にはスキンダイビングを楽しむ一方、子供たちと遊ぶことを忘れない子煩悩な父親でもある。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
透明ウィンドウアプリケーションの作成
また、システムクロムを使用していないので、通常の矩形のフレームではなく角の丸い不規則な境界線が表示されます。画像がアプリケーションの境界線を越えて表示される場合もあります。
このアプリケーションは、米国の郵便番号に基づいて Yahoo
天気情報サービスから天気予報データを照会します。データはこのサービスから XML として返されます。アプリケーションは返されたデータを解析し、書式設定して表示します。
背景が透明で境界線が矩形ではないウィンドウ
ウィンドウを最小化したり閉じたりするためのウィンドウコントロールボタン
"move" イベントへの応答によるウィンドウの移動
HTTP サービスの呼び出しによる天気予報データの取得
注意:このサンプルアプリケーションは、説明のためにそのままの状態で提供されています。この記事に書かれた操作を行うには、次のソフトウェアとファイルが必要です。このサンプルアプリケーションには、次のファイルが含まれています。mxml:Flex の MXML 形式のメインアプリケーションファイルで、この記事で説明するコードが含まれています。
mxml:アプリケーションのファイル解凍画面のレイアウトと機能を定義する MXML ファイル
png:ウィンドウのカスタムクロムボタンに使用される画像
このクイックスタートの開始方法について詳しくは、「Flex を使用したクイックスタートサンプルアプリケーションの構築」を参照してください。
透明ウィンドウアプリケーションについて
Adobe AIR では、不透明なアプリケーションウィンドウと透明なアプリケーションウィンドウの両方がサポートされています。透明ウィンドウを使用すると、オペレーティングシステムのデスクトップが透けて見えます。一方、不透明なウィンドウを使用すると、デスクトップ領域はウィンドウに隠れて見えません。AIR ウィンドウでは、オペレーティングシステムの標準の境界線、タイトルバー、メニューバーおよびウィンドウコントロールボタン(総称してシステムクロム)を使用できます。システムクロムを使用するウィンドウは常に不透明です。つまり、アプリケーションでウィンドウとその背景を制御するための独自のメカニズムを用意する必要があります。
コードの理解
0 のプログラミング』および『Flex 3 リファレンスガイド』を参照してください。注意:この記事では、ファイルの MXML コードで使用されているすべての Flex コンポーネントについて説明しているわけではありません。
ウィンドウを透明にするための設定
アプリケーションウィンドウを透明にするかどうかは、2 つの場所で制御します。none に設定しない場合、標準のシステムウィンドウのタイトルバーとボタンが使用され、アプリケーションの背景は不透明になります。CSS スタイルでは、コンポーネントの背景の表示方法と、背景を不透明にするか透明にするかを設定できます。
アプリケーションウィンドウの移動
移動するには、ウィンドウ背景の任意の場所をクリックし、マウスボタンを押したままウィンドウを別の場所にドラッグします。
ウィンドウ移動プロセスをトリガするために、このアプリケーションでは MouseEvent
これらの VBox コンポーネント上のどちらか一方にカーソルがある状態でマウスボタンを押すと、onMouseDown() メソッドが読み込まれます。
// 背景または表示領域をクリックしてドラッグすることでウィンドウを移動できるように、onMouseDown() メソッドは、ウィンドウ移動シーケンスを簡単に開始できることを示しています。startMove() メソッドを呼び出すと、マウスボタンを離すまで、ウィンドウがマウスの動きに合わせてデスクトップ上を移動します。ウィンドウの移動と停止のシーケンスを制御するのに追加コードを作成する必要はありません。このシーケンスは自動的に処理されます。アプリケーションウィンドウを最小化する / 閉じる。WeatherStation アプリケーションでは、小さな Button コンポーネントを使用して、ユーザがアプリケーションを最小化したり閉じたりできるようにしています。次のように、各ボタンの click イベントが、適切なメソッドをトリガするように設定されています。close() メソッドはアプリケーションを終了します。メソッドはこれを非同期に行い、アプリケーションが終了しようとしたときに close イベントが発生します。アプリケーションは close イベントをリッスンして、アプリケーションが終了する前にクリーンアップやハウスキーピングなどの様々な機能を実行できます。
デスクトップへのシャドウの投影
WeatherStation のウィンドウは、デスクトップ上に浮いているかのように、デスクトップに影を落としているように見えます。実際には、ドロップシャドウはウィンドウ自体には適用されません。背景要素として使用される bgBox VBox コンポーネントに適用され、アプリケーションウィンドウの透明な背景にシャドウが投影されます。これにより、デスクトップ上に影を落としているように見えます。
この効果を実現するには、まず、アプリケーションで flash
次に、次に示すように、initApp() メソッドでフィルタのパラメータを設定し、フィルタを bgBox コンポーネントとその他のいくつかのコンポーネントに適用します。
// CSS シャドウスタイルを受け入れないコンポーネントで使用する汎用のドロップシャドウを作成
largeImage Image オブジェクトは bgBox コンポーネントの背景の境界線を越えるので、オブジェクトにもシャドウを適用して、オブジェクト全体が影を落としているように見せる必要があります。その他の表示コンポーネントは浮き出て見えるので、シャドウを割り当てるだけです。
著者について
以前の CASE の流行時には、CASE ソフトウェアとプロジェクト管理に関する書籍を出版しました。, を含む小規模ソフトウェア企業やコンサルティング企業を運営中です。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
ウィンドウの起動
具体的には、次の AIR 機能を示します。
ウィンドウタイプの設定
ウィンドウクロムの設定
透明効果の有効化
ウィンドウタイトルの設定
ウィンドウの位置とサイズの設定
ウィンドウをサイズ変更可能、最小化可能および最大化可能にするかどうかの設定
注意:このサンプルアプリケーションは、説明のためにそのままの状態で提供されています。この記事に書かれた操作を行うには、次のソフトウェアとファイルが必要です。このサンプルアプリケーションには、次のファイルが含まれています。mxml:Flex の MXML 形式のメインアプリケーションファイルで、この記事で説明するコードが含まれています。
html:サンプル HTML ウィンドウの作成時にサンプルコンテンツとして使用されるページ
air)をインストールして実行します。ウィンドウを作成するには、必要に応じてプロパティを設定し、作成するウィンドウのタイプに対応するボタンをクリックします。このクイックスタートの開始方法について詳しくは、「Flex を使用したクイックスタートサンプルアプリケーションの構築」を参照してください。
コードの理解
注意:この記事では、ファイルの MXML コードで使用されているすべての Flex コンポーネントについて説明しているわけではありません。この関数は、次のタスクを実行してウィンドウを作成します。mx:Window コンストラクタを呼び出し、ウィンドウのプロパティを設定します。コンテンツを追加します。この例では、DateChooser コントロールをウィンドウに追加し、スタイルを使用してコントロールの端をウィンドウの端に固定しています。ウィンドウをアクティブ化して表示します。この関数は、次のタスクを実行してウィンドウを作成します。初期化オプションでネイティブウィンドウのプロパティを定義します。これらのプロパティは、ウィンドウの作成後は変更できません。注意:システムクロムを使用するウィンドウでは、透明度はサポートされません。同様に、軽量ウィンドウでは、システムクロムを使用できません。width プロパティと height プロパティでは、システムクロムのサイズを含むウィンドウの外側のサイズを設定します。したがって、システムクロムを使用しないウィンドウは、クロムが同じ幅と高さに設定されたウィンドウよりもクライアント領域が小さくなります。コンテンツを追加します。ウィンドウのクライアント(描画可能)領域を表すステージを含む、ネイティブウィンドウを作成します。このステージは、表示ツリーのルートコンテナです。これにより、MXML コントロールの設定に基づいてステージプロパティが設定され、サンプルコンテンツがウィンドウに描画されます。注意:Flex コンポーネントをネイティブウィンドウに直接追加することはできません。インタラクティブ機能を追加します。2 つのイベントハンドラをクロムのないウィンドウに追加して、ウィンドウを移動したり閉じたりできるようにします。ウィンドウの作成、コンテンツの追加、イベントハンドラの添付が完了したら、最後にウィンドウを表示します。
ステージプロパティについて
ステージの scaleMode プロパティは、ウィンドウのサイズを変更した場合に、ステージで子表示オブジェクトを拡大 / 縮小したり切り取ったりする方法を設定します。このモードでは、ステージは拡大 / 縮小されません。ステージのサイズは、ウィンドウの境界を使用して直接変更します。ウィンドウのサイズを小さくした場合は、ウィンドウが切り取られることがあります。ステージの拡大 / 縮小モードは、ステージのサイズや縦横比を常に制御できるとは限らないブラウザ環境用に設計されています。モードにより、ステージがアプリケーションの理想的なサイズまたは縦横比に一致しない場合の最良の妥協策を選択できます。AIR では、常にステージを制御できるので、ウィンドウコンテンツを拡大 / 縮小するよりも、ウィンドウのサイズを変更したほうが適切な結果が得られます。ブラウザと AIR の初期ウィンドウでは、ウィンドウサイズと最初の縮尺率の関係は、読み込んだ SWF ファイルから読み取られます。noScale 以外の scaleMode をどうしても使用する場合は、ウィンドウの表示オブジェクトの縮尺率を「72 ピクセル対ステージの現在の幅と高さ」に設定することによって補正できます。scaleMode を変更すると、これらのタイプのウィンドウで使用されている自動レイアウト機能の動作が妨げられます。ステージの align プロパティは、ウィンドウのサイズを変更する場合にステージの原点を固定する端または隅を設定します。例えば、ステージの align プロパティを bottomRight に設定した場合、ウィンドウのサイズを右下隅から大きくすると、ステージの原点もウィンドウと連動して右下に移動します。この変更の後に、オブジェクトを左上隅に配置するには、負の座標を使用する必要があります。ウィンドウを最初に開いた場合は、選択されている align の値にかかわらず、ステージの原点は常にウィンドウの左上隅にあります。この関数は、次のタスクを実行してウィンドウを作成します。初期化オプションでネイティブウィンドウのプロパティを定義します。これらのプロパティは、ウィンドウの作成後は変更できません。注意:システムクロムを使用するウィンドウでは、透明度はサポートされません。同様に、軽量ウィンドウでは、システムクロムを使用できません。ウィンドウコンテンツを読み込み、ページの読み込みが完了したらウィンドウをアクティブ化します。
//新しいウィンドウをアクティブ化
著者について
余暇にはスキンダイビングを楽しむ一方、子供たちと遊ぶことを忘れない子煩悩な父親でもある。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
XML 環境設定ファイルの読み取りと書き込み | デベロッパーセンター
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
XML 環境設定ファイルの読み取りと書き込み
このサンプルアプリケーションは、アプリケーションの位置やサイズに関するデータと保存日時を読み取りおよび書き込みます。また、アプリケーションを開くときにそのデータに従ってウィンドウを配置します。
テキストファイルの読み取りおよび書き込み
Adobe AIR アプリケーション格納ディレクトリにあるファイルの指定
AIR アプリケーションウィンドウの位置、サイズおよび表示の変更
XML 環境設定の指定が可能なサンプルアプリケーション
注意:このサンプルアプリケーションは、説明のためにそのままの状態で提供されています。この記事に書かれた操作を行うには、次のソフトウェアとファイルが必要です。このサンプルアプリケーションには、次のファイルが含まれています。mxml:Flex の MXML 形式のメインアプリケーションファイルで、この記事で説明するコードが含まれています。このクイックスタートの開始方法について詳しくは、「Flex を使用したクイックスタートサンプルアプリケーションの構築」を参照してください。
アプリケーションのテスト
このアプリケーションは、アプリケーションの位置やサイズに関するデータと保存日時を読み取りおよび書き込みます。また、アプリケーションを開くときにそのデータに従ってウィンドウを配置します。環境設定は、XML データを含むテキストファイルに格納されています。アプリケーションは、読み取りの場合はそのデータを XML オブジェクトに変換し、書き込みの場合は XML データをテキストに変換します。このアプリケーションをテストするには、次の手順に従います。アプリケーションを開きます。ウィンドウのサイズと位置を変更します。アプリケーションを再起動して、指定した環境設定が適用されていることを確認します。
コードの理解
注意:この記事では、ファイルの MXML コードで使用されているすべての Flex コンポーネントについて説明しているわけではありません。
XML ファイルからのデータの読み取り
これは AIR アプリケーションごとに定義されています。stream オブジェクトの open() メソッドは、ファイルを同期的に開き、読み取りバッファへのデータの読み取りを開始します。つまり、ファイルは同期的に読み取られるので、ファイルのすべてのバイト数です。
アプリケーションウィンドウの位置とサイズの変更
ウィンドウのサイズと位置を変更してからウィンドウを表示可能にします。processXMLData() メソッドは、XML 環境設定オブジェクトのデータ(環境設定ファイルから読み取られたデータ)に基づいてウィンドウのサイズと位置を変更します。0 で採用された E4X の表記法を使用しています。0 のプログラミング』の「XML の操作」の章を参照してください。
ファイルへの XML データの書き込み
さらに、行末の文字をプラットフォーム固有の行末の文字(AIR の File
これにより、FileStream オブジェクトはファイルへの書き込みが可能になります。既存のデータは書き込み前に切り詰められます。このファイルを同期操作用に open() メソッドを使用して開き、Window オブジェクトの closing イベントのイベントハンドラ内に書き込みメソッドが含まれているので、ファイルの書き込みはウィンドウとアプリケーションが実際に閉じる前に完了します。このアプリケーションでは、XML 環境設定ファイルが比較的小さいので、同期的な読み取りおよび書き込み操作を使用しています。exit() メソッドを呼び出すことにより、明示的にアプリケーションを閉じます。
著者について
サンフランシスコベイエリアのファンは、Jeffのトロンボーン演奏を寛大に許容しています。のダンシングホットドッグ、Big Frankとして活躍した経験もあります。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
ようこそ、さん
お問い合わせ
ホームユーザ向け写真/ビデオ編集ツール
すべての業種・ソリューション ›すべての製品 ›アドビサポートに問い合わせる。
注文状況の確認
教職員および学生
アドビについて
投資家の皆様へ*
地域・社会への貢献*
お問い合わせ
個人またはホームオフィス
法人のお客さま
教育関係のお客様
おすすめ製品
すべてのソフトウェアを見る ›
購入後について
割引価格でコスト削減
ライセンスをご利用中のお客さま
その他の購入方法
販売店のご紹介
また、AIRアプリケーションを開発者自らが登録できるようになりました。AIRアプリケーションを探す。カテゴリー:アプリケーションのカテゴリーから探せます。ソート機能:新着順・人気順・閲覧順で探せます。キーワード検索:キーワードから探せます。AIRアプリケーションを探す。AIRアプリケーションを登録する。
自慢のAIRアプリケーションができましたか
AIRアプリケーションを登録する。トップへ戻る。
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用規約およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
Adobe AIRは、既存のHTML/Ajax、FlexまたはFlash Web開発スキルとツールを使用して、リッチインターネットアプリケーションを構築し、デスクトップに展開することができるクロスオペレーティングシステムランタイムです。Adobe AIRアプリケーションは、クリップボードおよびドラッグ&ドロップのサポート、ローカルファイルIOシステム通知などを含む、ネイティブのデスクトップ統合をサポートします。ローカルデータベース接続モード*を使用して、リッチなユーザエクスペリエンスを生成します。この記事では、フレームレートスロットリングとは何か、どのようにアプリケーションに実装すればよいかを説明します。Flex/AIR開発では、「ああこれは最初から用意しておくべきだった。」と後悔しがちなポイントがいくつかあります。そのひとつが、Flex/AIRアプリケーションを「開発用」と「本番用」とで切り替える仕組みです。Flexで実際の業務アプリケーFeliCa(フェリカ)は、ソニーが開発した非接触ICカード技術方式です。国内の様々な電子マネーのベースとなっている技術で、馴染みのある方も多いかもしれません。今回は、FeliCaの機能を使って携帯電話のブラウザを起動するFlashアプリケーションをFlexで作成します。0で追加されるAPIにより、これまでよりも一層拡張性があるアプリケーションの作成ができます。その能力を活用してAIRアプリケーションどうしでデータの送受信やチャットを可能にするコミュニケーションアプリがairPortです。音声認識エンジンを搭載し、音声によってアプリケーションを起動するランチャーです。
対象のアプリケーションの「よみがな」を登録しておけば、そのよみがな通りに発音するだけ
手軽に更新できるAIRアプリケーションの開発テクニック
この記事では、Adobe AIR アプリケーションのアップデートを開発・デプロイする際にありがちな問題点を紹介するとともに、これらの問題を解決するためのヒントやテクニックについて解説していきます。SORAAIは、勉強会、講演など時間制限のあるイベントで活用できるタイマー機能、スピーカー/オーディエンス間のリアルタイムコミュニケーション機能を持つツールです。0 のマスストレージデバイスの検出機能を利用したアプリケーションです。USBメモリ等を認識し、保存されている画像をアプリ上にリスト表示させます。0のネイティブプロセス連携やP2Pを実現するStratusサービスを利用して、動画、音声、画像、テキストを共有可能にした新しいコミュニケーションツールです。今回はFlash Playerのシングルスレッドモデルに注目し、それがもたらす問題と対策について紹介します。本連載では、その筆者の「Flex/AIRハマり帳」をもとに、これからFlex/AIR開発を始める方が同じ過ちを繰り返さないためのささやかなtipsを紹介していきたいと思います。第二回では、BlazeDSの本番環境へのデプロイについてです。本連載では、その筆者の「Flex/AIRハマり帳」をもとに、これからFlex/AIR開発を始める方が同じ過ちを繰り返さないためのささやかなtipsを紹介していきたいと思います。連載第6回目は、ADB ソースコードの取得方法についてご紹介したいと思います。
マーケティング・ツールとしてのRIA 活用(後編)
マーケティングにおけるデータの分析の中でのFlex チャートコンポーネントの利用について解説をしていきます。
これからはじめるAIRプログラミング 第1回デスクトップRIAの基本とAIRの優位点
AIRプログラミングに関する基本知識から開発方法の基礎を習得していただくことを目的とする連載です。
イベントレポート「まいど
関西におけるRIA開発促進、情報共有を図ることを目的とするセミナー「まいど
0におけるパフォーマンス向上のヒント
連載第4回目は、ADBの裏方として活躍しているデータベース「SQLite」についてどのように活用しているかをご紹介したいと思います。連載の第3回目は、ADBでも使用したリストの作成について紹介したいと思います。今回はライブラリ選定ADBのRSSリーダー機能まわりで使用したライブラリを紹介したいと思います。連載第1回目は、RIA開発をどのように進めるかについて今回のプロジェクトの実例を交えながら紹介したいと思います。BlazeDSのリモーティング機能、Webメッセージング機能を利用した、オフラインでも購読可能なプッシュ配信型のRSSリーダーアプリケーションを作成します。マピオンFlash Maps APIとはドラッグ&ドロップによるフリースクロール可能な地図をFlashアプリケーション内に埋め込むことができる地図APIです。エンドユーザーは、発行者の表示から発行者の身元が確認されていることを知り、安心してアプリケーションをインストールできます。ディベロッパーは、エンドユーザーに安心と信頼を提供するためにも認証局から発行された証明書を利用してコードサイニング署名を行うことが必要です。本連載では、AIRでデスクトップウィジェットを制作する方法について、実際のプロジェクト例と実装例を交えながら、複数回に渡ってお届けしようと思います。今回は、FlexをベースにFlashと連携を行った、開発手法について解説を行います。
マーケティング・ツールとしてのRIA活用(前編)
蓄積されたデータを多様な視点で分析することを目的としています。AIRセキュリティモデルの背後にある原理とAIRアプリケーションの構築時に考慮する必要がある事柄についてより深く学びます。
HTMLベースのAIRアプリケーション開発環境のセットアップ
HTMLベースのAIRアプリケーション開発環境のセットアップを解説します。Adobe AIRは、これらのすべてのテクノロジーを同等にサポートするので、Adobe AIRアプリケーションの開発時にブラウザでWebアプリケーションやリッチインターネットアプリケーション(RIA)を構築するために、使い慣れたツールを使用することができます。初めてRIAを構築する場合は、Adobe AIRでデスクトップアプリケーションを構築するためのテクノロジーオプションに関する、以下の基本的な情報を参照してください。HTMLアプリケーションは、標準ベースのマークアップ言語を使用して構築されます。HTMLアプリケーションはテキストで供給され、実行時に解釈されます。HTML/AjaxデベロッパーコミュニティがAdobe AIRで構築する一般的なアプリケーションには、ネットワーククライアント、ブラウザ用に構築する生産性アプリケーションのデスクトップ版、情報のオフライン管理などがあります。Flashには、ネイティブのオーディオおよびビデオ機能と共にベクターベースのグラフィックレンダリングが用意されています。独創性に富んだリッチインターネットエクスペリアンスの多くは、Flash CS3 Professionalを使用して構築され、そのタイムラインとグラフィックツールは高度なコントロールと柔軟性を備えています。FlashデベロッパーコミュニティがAdobe AIRで構築する一般的なアプリケーションには、小さなウィジェットやゲームからオンラインマーケティングキャンペーン用のデスクトップ拡張機能まで、あらゆるものが含まれます。Flexは、Flashを使用してリッチインターネットアプリケーション(RIA)を構築するための、無償のオープンソースフレームワークです。したがって、その主な相違は開発環境です。Flexフレームワークには、MXMLと呼ばれるマークアップ言語と豊富なコンポーネントのセットが用意されています。通常、Flexアプリケーションには、Flashを使用して構築されたカスタマイズ済みのコンポーネントが含まれています。FlexデベロッパーコミュニティがAdobe AIRで構築する一般的なアプリケーションには、Web、独創的なツール、e-コマースアプリケーションなどに接続する新しい生産性アプリケーションがあります。Adobe AIRで構築できるものに関するアイデアとデモンストレーションについては、これらのサンプルアプリケーションを参照してください。このサンプルアプリケーションを使用して、あらゆるケースに対応できる単純なTo-doリストを作成することができます。この記事に付属するチュートリアルの目標は、HTMLおよびAjax開発スキルを使用してAdobe AIRで開発する方法を示すことです。
ソースコードのダウンロード*
チュートリアルを読む*
Giorgio Natili氏は、完全にActionScript 3で記述されたブラウザベースのバージョンを、元のコードを変更せずにAIRに移行しましたが、AIRによって動作するデスクトップエクスペリエンスを改善するためにいくつかの更新を行いました。
数独のダウンロード*
数独ソースコードのダウンロード*
チュートリアルを読む*
Flickr Floaterは、オンラインとオフラインの世界の両方を融合するイメージアップロードアプリケーションです。埋め込みSQLiteデータベース、オンライン/オフライン接続の検出、ファイル管理、ドラッグ&ドロップのサポート、ネイティブメニューなどの主要なAdobe AIRの機能を使用します。
チュートリアルを読む*
Adobe AIRアプリケーションを構築、パッケージ化、展開するために必要なソフトウェア、ソフトウェア開発キット(SDK)、拡張機能、およびフレームワークをお好みの開発環境にダウンロードします。Adobe AIRアプリケーションをシステムにインストールすることができます。テキストエディタで作業したい場合に、Adobe AIRアプリケーションをパッケージ化および展開するために必要なツールを提供します。airアプリケーションファイルをパッケージ化し、プレビューします。新しくてかっこいいルック&フィールのAdobe AIRアプリケーションを展開します。バックエンドに分散されたデータへの接続を容易にし、AIRアプリケーションとFlexアプリケーションへデータをリアルタイムにプッシュすることを可能にする、オープンソースリモーティングおよびWebメッセージングテクノロジーを取得します。このオープンソースのFlashコンポーネントを使用して、ビデオプレイヤーのルック&フィールの独創的なコントロールを維持しながら、Ajaxアプリケーション内でビデオを再生します。Spryフレームワークの進行中の開発についての情報をさらに取得し、Adobe Labsで最新バージョンをダウンロードします。以下のアドビソフトウェアの無償体験版をダウンロードします。Flexアプリケーションを、この強力なアプリケーションサーバおよびソフトウェア開発フレームワークの新しいバージョンに統合します。業界標準のFlashオーサリングツールの最新バージョンを試行します。
体験版のダウンロードの詳細情報
アドビのすべてのダウンロードの確認
コミュニティツールとフレームワーク
この統合ツールキットは、動的Webアプリケーションの開発の一括導入を妨げてきたDHTMLに関するいくつかの歴史的な問題を解決します。jQueryは、HTMLドキュメントの移動、イベントの処理、アニメーションの実行およびAjax操作のWebページへの追加方法を簡素化します。JavaScriptライブラリの、高度な相互運用が可能なこの総合ソフトウェアパッケージは、タスクをすばやく処理するのに役立ちます。このJavaScriptフレームワークを使用すると、定評のあるAPIにより、強力で柔軟なクロスブラウザコードを記述することができます。このユーティリティとコントロールのセットにより、DOMスクリプティング、DHTMLおよびAjaxなどの手法を使用するインタラクティブなWebアプリケーションを構築することができます。開発知識を共有し、他の開発者が作成している内容を確認し、コーディングについての質問をAdobe AIRデベロッパーコミュニティに投稿します。オンデマンドプレゼンテーションから学習する。コミュニティリソースに取り組む。Adobe AIRイベントまたは同好のデベロッパーを検索する。以下のデモを視聴し、デベロッパーコミュニティのリーダーがAdobe FlexとAdobe AIRを使ってどのようにビジネスアプリケーションを改善しているかについて学びます。
エキスパートへの質問*
リッチインターネットアプリケーション用のインタラクティブヘルプシステムの作成*
既存のヘルプシステムやナレッジベースをAIR、Flex、Cold Fusionおよびその他のアプリケーション用の魅力的な情報エクスペリエンスに変換する方法を確認します。コミュニティリソースに取り組む。Adobe AIRコミュニティアプリケーションの一覧を見るには、このウィキを参照してください。usでブックマークされているページを確認します。このコミュニティが主催するAdobe AIRフォーラムのテクニカルディスカッションに参加します。デベロッパーブログでAdobe AIRについてのユーザの記述を読むことができます。メモ :Adobe AIRデベロッパーが親交を深めたり、生産性の維持に必要なテクニカルリソースを検索したりするのに役立つサイトを維持する場合は、そのサイトを登録*します。弊社が同意する場合は、簡単な説明と共にサイトのロゴをこのページに投稿します。
Adobe AIRについての特定の質問に対する回答をお探しですか
フォーラムに質問を投稿し、Adobe AIRコミュニティのアドビコミュニティエキスパートや他のユーザから支援を受けることができます。Adobe AIRのコミュニティエキスパートを検索したり、自分がコミュニティエキスパートになったりできます。また、Adobe AIRフォーラムでコミュニティエキスパートと会話することもできます。
トレーニングの機会
アドビオンラインリソースやイベントを利用すると、スキル、プロジェクト、経歴などを向上させることができます。アドビユーザグループを検索する。ユーザの領域でAIRを利用して構築する同好のデベロッパーの仲間入り*をします。カンファレンスに参加するか、オンラインセミナーを受講してAdobe AIRについてより深く学びます。
次のステップ
お問い合わせ
不正コピー防止について
著作権と商標について*
当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2009年7月14日更新)にご同意いただいたものとみなされます。
記事のアーカイブ*
ユーザグループの検索*
ユーザグループについて*
社内の開発チームは、これまでにデベロッパの皆様がリリースされたAdobe AIRアプリケーションに盛り込まれた想像力、創造性、機知におおいに触発されてきました。私自身も含め、アドビで働く人々がツールや、Flash Player、Adobe AIRなどのランタイムを構築するビジネスにこだわる理由は、ユーザの皆さんによってテクノロジやデザインが次の段階に進められるのを見るときに感じる純粋な興奮と満足にあります。私たちは、皆さんが次にいったい何を思い付くのか、楽しみにしています。Adobe AIRのベータ版のリリースによって、デベロッパ向けのツールは飛躍的に増加し、デザイナーの自由度がさらに増しました。Adobe AIRベータ版では、オープンソース、クロスプラットフォーム、SQLiteデータベース、ローカルファイルシステムダイアログボックス、ドラッグ&ドロップなどがサポートされ、HTMLコンポーネントに対する主要パフォーマンスも向上しています。これらは、この数か月の間に私が出会ったすばらしいアプリケーションのほんの一例です。Twitter*をご存知ない方のために説明すると、Twitterは、友人と連絡を取り、彼らが何をしているかを非常に簡単に把握できるツールで、通常は文章の形式を使用します。例えば、「Adobe AIRベータ版をチェックしている」、「洗車している」などのメッセージを公開すれば、TwitterのWebサイト、SMSメッセージ、インスタントメッセンジャーなどの様々なメディアを使用して、メッセージが友人たちに伝えられます。Twitterアカウントを作成し、友人を追加すると、このアプリケーションでは仲間内での出来事を記録する単純なインタフェースが表示されます。友人が新しいコメントを公開すると、Webサイトに再びログインしなくてもコメントが自動的にアプリケーションに表示されます。エントリの上にマウスを重ねるとヒントが表示され、ユーザ名と、エントリがTwitterに送信された時刻が表示されます。エントリのリストのすぐ下には、同じユーザインタフェースから自分のコメントを発行できるテキストボックスがあり、右上隅には更新ボタンがあります。このアプリケーションは、次の点で優れていると思います。
優れたインタフェース
Adobe AIRの透過型ウィンドウを効果的に使い、クールな画面を実現
友人のアイコンの表示(図1を参照)
バックグラウンドでの自動更新
オフライン作業のサポート
デベロッパにとって、これはTwitter APIをデスクトップアプリケーションに組み込んだ優れた手本になるでしょう
デザイナーにとって、伝えたいメッセージに合わせて様々な印象を与えるために色彩理論*はなくてはならないものです。色彩理論は、書籍でも幅広く取り上げられていて、よく美術学校の必須科目にもなっています。私たちはこれらの原理やガイドラインに詳しくありませんが、幸いにも、kuler*の提案は、印刷デザイナーやWebデザイナーの負担を少しでも和らげることに貢献しています。kuler desktopは、コミュニティが提供し、指定した何百というカラースキームを含むリッチインターネットアプリケーション(RIA)です。その機能の一部を紹介します。
画家のパレットを思わせる見事なユーザインタフェース(図2を参照)
特定の雰囲気や状況(嵐など)に合ったテーマを見つけるための検索機能
色をクリックして後に#文字を付け、クリップボードにカラーコードをコピーする機能
カラースキームの作者、ダウンロード回数などの補足情報
マウスを重ねることで情報を表示
デベロッパにとっては、ダイナミックなユーザインタフェースを作成するためにRIAでRSSフィードを利用しているという点で、kuler desktopは興味深いアプリケーションです。ここでRSSフィードは、人気があり多くダウンロードされたカラースキームなどのリストをダイナミックに表示するために使用されます。ユーザインタフェースコンポーネントは、ビジュアルとインタラクティブな操作環境の両面において、Webサイトに合った直感的で高度にカスタマイズされたエクスペリエンスを確立します。
お気に入りのブログの更新に気付かず、更新と同時に読みたいと思っていませんか
それなら、Freshをダウンロードすることをお勧めします。このアプリケーションを使用すると、RSSフィードを表示して管理し、共有できます。
Freshで私のお気に入りの機能をいくつか紹介しましょう
テーマを使用してアプリケーションのルックアンドフィールをカスタマイズ可能なインタフェース
接続していないときにフィードにアクセスできる、オフライン作業のサポート
拡張されたエントリをアプリケーションでHTMLページとして表示できる機能(図3を参照)
OPMLと呼ばれるXMLベースのファイル形式を使用してフィードを読み込んだり、書き出したりできる機能
バックグラウンドでの自動更新をオンまたはオフにできる詳細な設定
よく行うタスクを実行するためのキーボードショートカット(ヒント:Rキーを押すとすべてのフィードが更新され、Mキーを押すと選択したカテゴリのすべてのフィードに読み取りのマークが付きます)
カテゴリ、フィード、未読項目の数に関する統計
Finetuneは、お気に入りのアーティストの曲をストリーミング再生し、個人の好みに合ったプレイリストを作成するオンラインの音楽推薦サービスです。Finetune Desktop*では、WebベースのメディアコンテンツとローカルのMP3ライブラリの情報を組み合わせて、ストリーム再生するコンテンツとローカルコンテンツをどちらも楽しむことができます。
このアプリケーションで私が特に魅力を感じる機能を紹介しましょう
3D効果も取り入れた、非常にスタイリッシュなユーザインタフェース(図4を参照)
ローカルハードドライブとの統合
ローカルな音楽ファイルも再生可能
実用的な「おすすめ」機能
Finetuneでは、コミュニティに基づいて曲を推薦するエンジンと、これまでに選んだ曲に基づいて、好みに合った曲をストリーム再生
DiggTopの作成で証明されたように、彼のデザイン会社はAdobe AIRアプリケーションデベロッパとしても順調です。高度にカスタマイズされたユーザインタフェースを作成する場合に、Adobe AIRアプリケーションがDigg API*などのWeb APIと的確に連動できることなど、このアプリケーションはAdobe AIRランタイムの多くの利点を証明しています。私の注意を引いた機能のいくつかを紹介します。
Digg* Webサイトのルックアンドフィールを持つブランド化されたユーザインタフェース
統合され、カスタマイズされたビデオプレーヤー(図5を参照)
ソース記事内の画像リンクをスキャンすることによるスライドショー自動作成機能(図6を参照)
このアプリケーションの新しいバージョンを自動的にダウンロードする自己更新メカニズム
通知の制御だけでなく、記事やビデオを直感的にフィルタリングできる、詳細な設定が可能なダイアログボックス(図7を参照)
DiggTopでは、内蔵ビデオプレーヤーを使用してDiggに掲載されたビデオをサポート
DiggTopでは、ビデオのほか、記事から画像を抽出してダイナミックにスライドショーを作成
Diggのフィードを存分にカスタマイズし、さらに独自のキーワードフィルタを作成
DiggTopの小さな表示領域(幅約515ピクセル、高さ約300ピクセル)には、驚くほど多くの機能が詰め込まれています。Flexデベロッパのコミュニティには、毎日新しい変化があります。このFlexベースのアプリケーションには、コミュニティに焦点を当てた多くの優れた機能があります。
陰影のある透過的でダイナミックなウィンドウ
カスタマイズされたウィンドウクローム