クラウド「AWS」とAndroidを直結するSDKで何ができるのか?スマートフォンとクラウドをつなぐ技術カタログ(2)(1/3 ページ)

» 2012年02月03日 00時00分 公開
[福田寅成クラスメソッド株式会社]

スマホ×クラウドなアプリの新しい開発スタイル

 本連載では、スマートフォンクラウドコンピューティングの技術を組み合わせた際に、アプリ開発を効率化できるToolkitやSDKを取り上げていきます。スマートフォンとしてiPhoneAndroidWindows Phoneの3つ、クラウドとしてはWindows AzureAmazon Web Services(以後、AWS)などを取り上げ、連載ごとにそれぞれの組み合わせを1つ取り上げ、クラウドベンダから提供されているツールを利用した開発スタイルを紹介していきます。

 前回第1回「スマホ×クラウドの可能性をAzure×iOSで試す」の記事でも紹介しましたが、スマートフォン×クラウドの開発スタイルの組み合わせは下記のようになります。

表 スマホ×クラウド開発スタイル
スマホ クライアント開発技術 クラウド Toolkit/SDK
iOS Objective-C Azure Windows Azure Toolkit for iOS
Android Java Windows Azure Toolkit for Android
Windows Phone Silverlight Windows Azure Toolkit for Windows Phone
iOS Objective-C AWS AWS SDK for iOS
Android Java AWS SDK for Android
Windows Phone Silverlight AWS SDK for Windows Phone

連載第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でできること

 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のストレージ系サービスへのアクセスのイメージです。

図1 従来のAWSサービスへのアクセス 図1 従来のAWSサービスへのアクセス

 Webアプリ内にあらかじめ発行済みのアクセスキーが埋め込まれています。Android端末は、このWebアプリを経由してS3などのストレージサービスへアクセスします。ストレージ以外のEC2などへのアクセスも同様です(図1は、Webアプリやユーザー管理システムがAWS内の図ですが、AWS外に配置されていても同様です)。

 図2は、Security Token Serviceを利用した場合のAndroid端末からAWSサービスへのアクセスのイメージです。

図2 クライアント用アクセスキーを利用したAWSサービスへの直接アクセス 図2 クライアント用アクセスキーを利用した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との連携部分は独自に作り込む必要があります)。

 次ページでは、「AWSAndroidDemo」サンプルアプリを動かしてみましょう。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。