スマホ×クラウドなアプリの新しい開発スタイル
本連載では、スマートフォンとクラウドコンピューティングの技術を組み合わせた際に、アプリ開発を効率化できるToolkitやSDKを取り上げていきます。スマートフォンとしてiPhone、Android、Windows Phoneの3つ、クラウドとしてはWindows Azure、Amazon Web Services(以後、AWS)などを取り上げ、連載ごとにそれぞれの組み合わせを1つ取り上げ、クラウドベンダから提供されているツールを利用した開発スタイルを紹介していきます。
前回第1回「スマホ×クラウドの可能性をAzure×iOSで試す」の記事でも紹介しましたが、スマートフォン×クラウドの開発スタイルの組み合わせは下記のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
※連載第1回記事掲載以後、AWS SDK for Windows Phoneがベータ版でリリースされています。
スマートフォン×クラウド開発連載の第2回となる本稿では、AndroidとAWSをつなぐ技術であるAWS SDK for Androidを取り上げます。
AWS SDK for Androidとは
AWS SDK for AndroidはAWS向けの開発ツールの1つで、AndroidアプリとAWSを組み合わせたアプリを開発する際に、サーバアプリを介さずにAndroid端末から直接AWSの機能を利用できるようにしてくれるツールです。
AWS SDK for Android - A Library for Building Android Applications on Amazon S3, Amazon SimpleDB, and more. via kwout
AWS SDK for Androidでできること
2010年12月にAWS SDK for iOSと同時にVer1.0.0がリリースされ、原稿執筆時点での最新バージョンはAWS SDK for Android 1.1.0です。以下は、AWS SDK for Android 1.1.0で利用可能な機能です。
- S3へのデータの保存と取得
- SSimpleDBへのデータの保存と取得
- SSQS、SNSを用いたモバイルデバイスとサーバ間およびモバイルデバイス間の通知
- SEC2インスタンスの起動や管理
- SEC2、EBS、ELB、RDSなどのCloudWatchを通じたモニタリング
AWSの主なサービスについては、以下を参照してください。
従来はモバイルデバイスからS3やEC2へのアクセスはサーバアプリを介して行うことが多かったと思いますが、AWS SDK for Androidを使うと、Android端末から直接S3やEC2へアクセス可能になります。
例えば、Android端末から画像を直接S3にアップロードするアプリが考えられます。Android端末→EC2→S3のような冗長な手順を踏まず、Android端末→S3とリクエストを直行できるので、効率良く処理できます。
Android端末からAWSの各種リソースへ直接アクセスできるようになると、アクセス権が問題になりますが、AWSにはAWSアクセスクライアントへの権限付与を任意のユーザー管理システムと連携させる仕組み(Identity Federation)が提供されており、適切な権限をAndroid端末に付与し、Android端末から直接AWSリソースにアクセスさせるアプリをセキュアに作成できます。
AWS SDK for Androidの構成
以下はAWS SDK for Androidの構成です。
- AWS Androidライブラリ
- サンプルAndroidアプリ
- Token Vending Machine(以下、TVM)サンプルWebアプリ
「AWS Androidライブラリ」はAWS SDK本体のことです。Androidネイティブアプリ開発用のJavaベースのライブラリです。サンプルAndroidアプリには基本的な動作を確認できる「AWSAndroidDemo」を中心に多数のサンプルがあります。
AWSのストレージ系サービスへのアクセスの流れ
また、Android端末からAWSのストレージ系サービスへのアクセスで問題になるのがアクセス権限の管理です。この権限管理に関して「Security Token Service」を利用した権限管理用のWebアプリのサンプルもあります。それが「TVMサンプルWebアプリ」です。このサンプルWebアプリから適切な権限のアクセスキーを発行してもらい、Android端末内のアプリにアクセスキーを埋め込むことなく、AWSへ直接アクセスできるようになります。
図1は、従来のAndroid端末からAWSのストレージ系サービスへのアクセスのイメージです。
Webアプリ内にあらかじめ発行済みのアクセスキーが埋め込まれています。Android端末は、このWebアプリを経由してS3などのストレージサービスへアクセスします。ストレージ以外のEC2などへのアクセスも同様です(図1は、Webアプリやユーザー管理システムがAWS内の図ですが、AWS外に配置されていても同様です)。
図2は、Security Token Serviceを利用した場合のAndroid端末からAWSサービスへのアクセスのイメージです。
Android端末は最初にWebアプリ経由でSecurity Token Serviceから自分用のアクセスキーを取得します。図2の緑色の鍵がAndroid端末側で保持された状態です。そのアクセスキーを用いて直接S3などのストレージサービスへアクセスします。ストレージ以外のEC2などへのアクセスも同様です(図2では、Webアプリやユーザー管理システムがAWS内になっていますが、AWS外に配置されていても同様です)。
図2のWebアプリの参考実装は、AWS SDK for Androidが提供するTVMサンプルWebアプリです。TVMは2種類あり、任意のユーザー(Anonymous User)からのアクセスを許可するものと、簡易のユーザー登録機能付きのものがあります(あくまでサンプルなので、実案件では要件によってはAmazon Security Token Serviceとの連携部分は独自に作り込む必要があります)。
- Token Vending Machine for Anonymous Registration - Sample Java Web Application
- Token Vending Machine for Identity Registration - Sample Java Web Application
次ページでは、「AWSAndroidDemo」サンプルアプリを動かしてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.