Amazon S3とAdobe AIRで“クラウドRIA”を作ってみた
クラスメソッド株式会社
福田 寅成
2009/9/29
Amazon S3+AIRのサンプルアプリを作るための準備
今回は、以下の環境でサンプルアプリを開発しています。
- Flex Builder 3
- Flex SDK 3.4(デフォルトの3.2ではなく、セキュリティアップデートされた3.4を、今回は利用)
□ 【開発に入る前に】お試しだけなら課金は最小に
そもそも今回のアプリケーションを利用するにはAmazon S3を利用するためのキーを取得する必要があります。またAmazon S3には、試用期間などがないため、いきなり課金が発生します。ご注意ください!
Amazon S3への契約はクレジットカードを手元に置いて、「http://aws.amazon.com/s3/」にアクセスし、「Sign Up For Amazon S3」をクリックします。以降、手順に従って契約してください。料金を最小に抑えたい場合は、契約→サンプル構築→契約解除を連続で行えば、数時間だけ契約することになり、ほとんど課金は発生しないでしょう(Amazon Web Servicesは時間課金なので安心)
契約を行ったら、accessKeyとsecretAccessKeyをメモしておいてください。このキーは重要なキーなので扱いには注意してください。今回のアプリケーションではこのキーは暗号化された領域(EncryptedLocalStore)に保存し、ソースコードなどには記述しません。
□ Amazon S3へアクセスできるActionScriptライブラリ
今回はAmazon S3へのアクセスに、以下のActionScriptライブラリ「as3awss3lib」を利用しています。
このライブラリはアドビシステムズのAIR開発チームの方が作成したものです。Amazon S3はRESTとSOAPのAPIを提供しており、このうちのREST APIに対して簡単にアクセスできるようにしてくれるユーティリティ群がパッケージングされています。
ただ、プロジェクトで簡単に利用できるSWC形式では配布されていませんが、本記事のサンプルアプリケーションのlibsフォルダ内にはSWCファイル形式のものを同梱しています。
□ as3awss3libライブラリのクラス一覧
Amazon S3へのアクセスは、as3awss3libライブラリのクラスを通じて行うのですが、ライブラリで提供されているクラス一覧を確認してみます。ほかの言語のAmazon S3アクセスライブラリに比べ数が4個と少ないので以下に全部を列挙しています。
表2 as3awss3libライブラリのクラス一覧(パッケージ:com.adobe.webapis.awss3) | ||||||||||
|
AWSS3クラスはメソッド呼出でS3にアクセスが可能性です。HttpServiceを用いてごりごりRESTアクセスする開発に比べて、効率的にAmazon S3にアクセスするアプリケーションを開発できます。
ActionScriptライブラリを用いたAmazon S3へのアクセス
AWSS3オブジェクトを用いたS3へのアクセスはHttpServiceやRemoteObjectを用いた通信同様のスタイルで簡単にできます。
□ AWSS3オブジェクトの初期化
MainAction#listBucketsButtonClickHandlerメソッドでAWSS3オブジェクトを初期化し、イベントハンドラを設定しています。
s3 = new AWSS3(this.accessKey, this.secretAccessKey);
s3.addEventListener(AWSS3Event.LIST_BUCKETS, awsS3ListBucketsHandler);
s3.addEventListener(AWSS3Event.LIST_OBJECTS, awsS3ListObjectsHandler);
ここで、s3はAWSS3オブジェクトです。それぞれ「バケット一覧取得処理」「オブジェクト一覧取得処理」の結果イベントとしてディスパッチされるAWSS3Eventに対するイベントハンドラを定義しています。
□ バケット一覧の取得
AWSS3オブジェクトを利用したバケット一覧呼び出しは非常に簡単です。MainActionのlistBucketsButtonClickHandlerで下記処理を呼び出しています。
s3.listBuckets();
この呼び出しの結果は先ほど準備した「awsS3ListBucketsHandler」で取得します。
helper.setBucketList(event.data);
Amazon S3からのレスポンスはPOX(Plain Old XML)が返ってきます。XMLなのでプログラムで扱うには少々扱いにくいのですが(ActionScriptにはE4X(ECMAScript for XML)がありますが)、AWSS3オブジェクト内でXMLはオブジェクトのArrayに変換されているので、上記のevent.dataはそのままスクリプトで処理したりできます。
上記のhelperであるMainHelperでは、Amazon S3から受け取ったデータをそのままDataGridのdataProviderにセットする処理だけを行っています。
□ オブジェクト一覧の取得
オブジェクト一覧の取得も簡単です。バケットDataGridのダブルクリックハンドラであるbucketDataGridDoubleClickHandlerでは下記のようにS3を呼び出しています。
s3.listObjects(bucket.name);
このbucketは、DataGridでダブルクリックされたバケットです。バケット名を元にオブジェクト一覧を取得しています。この呼び出しの結果は先ほど準備した「awsS3ListObjectsHandler」で取得します。
helper.setS3ObjectList(event.data);
バケット一覧処理と同様、処理結果はS3Objectの配列で返ってくるので、後続処理の記述は簡単です。
□ そのほかのS3アクセス処理
AWSS3オブジェクトではそのほかバケットの作成、削除、オブジェクトのアップロード、ダウンロードなど基本的な処理に対するユーティリティメソッドが用意されています。
それらは今回のサンプルアプリケーションを参考に読者の皆さんご自身でいろいろと試してみてくさい。
数年後のAmazon S3を使うサービス開発案件に向けて
Amazon S3はまだまだ日本国内での利用は少ないかと思われます。ただ、数年後には日本国内でもAmazon S3をストレージサービスのバックエンドとして利用するサービスは増えてきているのではないかと思います。
今回のようにAmazon S3に直接アクセスするようなケースは現実の業務アプリケーション構築のシーンでは管理アプリケーションなどに限定されるでしょう。やはりサーバロジックを挟みたい、ほかのクラウドサービスとマッシュアップしたいといった要望も出てくることも想定されます。そういった「クライアント-サーバ−クラウド型」のアプリケーションに関してはまた機会がありましたら記事にしたいと考えています。
次回は、Silverlightとクラウドをつなぐアプリケーションを作成してみたいと思います。
□ @IT関連記事
AIR+SQLiteで実現するGTDアプリ ――「Colabolo」から見るRIAのこれから Colaboloには昨今のDBアプリのトレンドが多数盛り込まれています。ぜひ、今後の開発のアイデアやヒントを見つけてください 「Database Expert」フォーラム 2009/1/6
|
動かして試すAdobe AIR+Javaアプリの“可能性” 業務用RIAの本命!? Flex+Java開発入門(最終回) Flex+Javaの発展形として、SQLiteやローカルファイル操作のサンプルを試しながらAIR+Javaの可能性を探ります 「リッチクライアント & 帳票」フォーラム 2008/11/12 |
Adobe AIRでiTunes×Twitterクライアントを作った これ、俺ならこう使う(2) iTunesで再生されている楽曲のタイトルを、Twitterアカウントに「いま聴いている曲」として投稿するAIRアプリケーション「音ログAIR」を作ってみました 「リッチクライアント & 帳票」フ ォーラム 2008/8/11 |
Apollo改めAIRプログラミング入門 連載「Apolloプログラミング入門」が「AIRプログラミング入門」としてリニューアル!AIRになってからの新機能をイロイロ紹介します |
体験してみて分かった“雲”の違い 特集:クラウド体験記(後編) Amazon EC2、Windows Azureの使用感を述べ、Force.comやGoogle App Engineを含めた、エンジニアにとってのクラウド活用の価値を総括 「Insider.NET」フォーラム
2009/4/14 |
プロフィール:福田 寅成(ふくだ ともなり) クラスメソッド株式会社 エンタープライズサービス部門 システムエンジニア 大手SIerでの長いJava開発経験を経てクラスメソッドに。 Java、JavaScript/Ajax、Flex、AIR、C#など、さまざまな分野に関する技術調査研究、および業務アプリケーション開発に携わる。 FlexやAIRの開発依頼はコチラ |
1-2 |
INDEX | ||
検証特集:クラウドの“クライアント”としてRIAを試す(2) Amazon S3とAdobe AIRで“クラウドRIA”を作ってみた |
||
Page1 クラウドの老舗によるWebストレージ「Amazon S3」 Amazon S3のデータ構造を体験できるAIRアプリ |
||
Page2 Amazon S3+AIRのサンプルアプリを作るための準備 コラム 「Amazon S3利用に便利なFirefoxプラグイン、S3 Firefox Organizerとは」 ActionScriptライブラリを用いたAmazon S3へのアクセス 数年後のAmazon S3を使うサービス開発案件に向けて |
リッチクライアント&帳票 全記事一覧へ |
- 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データの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|