連載
» 2012年03月09日 00時00分 公開

スマートフォンとクラウドをつなぐ技術カタログ(3):クラウドストレージ「Amazon S3」とiPhone/iPadを直結するSDKとは (1/3)

[福田寅成,クラスメソッド株式会社]

スマホ×クラウドなアプリ開発スタイルは、もう当たり前

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

 連載第1回記事「スマホ×クラウドの可能性をAzure×iOSで試す」、連載第2回記事「AWSとAndroidを直結するSDKで何ができるのか?」でも紹介しましたが、スマートフォンとしてiPhone、Android、Windows Phone、クラウドとしてはWindows Azure、Amazon Web Servicesを採用する場合の開発スタイルの組み合わせは下記のようになります。

表 スマホ×クラウド開発スタイル
スマホ クライアント開発技術 クラウド 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

 スマートフォン×クラウド開発連載の第3回となる本記事ではiPhone/iPadに代表されるiOSとAmazon Web Servicesをつなぐ技術である「AWS SDK for iOS」を取り上げます。

AWS SDK for iOSとは

 AWS SDK for iOSはAWS向けの開発ツールの1つで、主にiPhone/iPadとAWSを組み合わせたアプリを開発する際に、サーバアプリを介さずにiPhone/iPad端末から直接AWSの機能を利用できるようにしてくれるツールです。

 2010年12月にAWS SDK for iOSと同時にバージョン1.0.0がリリースされ、記事執筆時点での最新バージョンはAWS SDK for iOS 1.1.1です。

AWS SDK for iOSでできること

 以下は、AWS SDK for iOS 1.1.1で利用可能な機能です(※AWS SDK for Androidと同様の機能ラインアップです)。

  • S3へのデータの保存と取得
  • SimpleDBへのデータの保存と取得
  • SQS、SNSを用いたモバイルデバイスとサーバ間およびモバイルデバイス間の通知
  • EC2インスタンスの起動や管理
  • EC2、EBS、ELB、RDSなどのCloudWatchを通じたモニタリング

 AWSの主なサービスについては、以下を参照してください。

 従来はモバイルデバイスからS3やEC2へのアクセスはサーバアプリを介して行うことが多かったと思いますが、AWS SDK for iOSを使うと、iPhone/iPadから直接S3やEC2へアクセス可能になります。

 例えば、iPhone端末から画像を直接S3にアップロードするアプリが考えられます。iPhone端末→EC2→S3のような冗長な手順を踏まず、iPhone端末→S3とリクエストを直行できるので、効率良く処理できます。

 iPhone端末からAWSの各種リソースへ直接アクセスできるようになると、アクセス権が問題になりますが、AWSにはAWSアクセスクライアントへの権限付与を任意のユーザー管理システムと連携させる仕組み(Identity Federation)が提供されており、適切な権限をiPhone端末に付与し、iPhone端末から直接AWSリソースにアクセスさせるアプリをセキュアに作成できます。

AWS SDK for iOSの構成

 以下はAWS SDK for iOSの構成です。

  • AWS iOS SDKフレームワーク
  • サンプルiOSアプリ
  • Token Vending Machine(以下、TVM)サンプルWebアプリ

 「AWS iOS SDKフレームワーク」はAWS SDK本体のことです。iOSネイティブアプリ開発用のObjective-Cのライブラリです。サンプルiOSアプリには基本的な動作を確認できる「AWSiOSDemo」を中心に多数のサンプルがあります。

AWSのストレージ系サービスへのアクセスの流れ

 また、iPhone端末からAWSのストレージ系サービスへのアクセスで問題になるのがアクセス権限の管理です。この権限管理に関して「Security Token Service」を利用した権限管理用のWebアプリのサンプルもあります。それが「TVMサンプルWebアプリ」です。このサンプルWebアプリから適切な権限のアクセスキーを発行してもらい、iPhone端末内のアプリにアクセスキーを埋め込むことなく、AWSへ直接アクセスできるようになります。

 図1は、従来のiPhone/iPad端末からAWSのストレージ系サービスへのアクセスのイメージです。

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

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

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

図2 クライアント用アクセスキーを利用したAWSサービスへの直接アクセス 図2 クライアント用アクセスキーを利用したAWSサービスへの直接アクセス

 Android端末は最初にWebアプリ経由でSecurity Token Serviceから自分用のアクセスキーを取得します。図2の緑色の鍵がAndroid端末側で保持された状態です。そのアクセスキーを用いて直接S3などのストレージサービスへアクセスします。ストレージ以外のEC2などへのアクセスも同様です(図2では、Webアプリやユーザー管理システムがAWS内になっていますが、AWS外に配置されていても同様です)。

 図2のWebアプリの参考実装は、AWS SDK for iOSが提供するTVMサンプルWebアプリです。TVMは2種類あり、任意のユーザー(Anonymous User)からのアクセスを許可するものと、簡易のユーザー登録機能付きのものがあります(あくまでサンプルなので、実案件では要件によってはAmazon Security Token Serviceとの連携部分は独自に作り込む必要があります)。

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

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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