スマホ×クラウドなアプリ開発スタイルは、もう当たり前
本連載では、スマートフォンとクラウドコンピューティングの技術を組み合わせた際に、アプリ開発を効率化できるToolkitやSDKを取り上げていきます。スマートフォンとしてiPhone、Android、Windows Phoneの3つ、クラウドとしてはWindows Azure、Amazon Web Services(以後、AWS)などを取り上げ、連載ごとにそれぞれの組み合わせを1つ取り上げ、クラウドベンダから提供されているツールを利用した開発スタイルを紹介していきます。
連載第1回記事「スマホ×クラウドの可能性をAzure×iOSで試す」、連載第2回記事「AWSとAndroidを直結するSDKで何ができるのか?」でも紹介しましたが、スマートフォンとしてiPhone、Android、Windows Phone、クラウドとしてはWindows Azure、Amazon Web Servicesを採用する場合の開発スタイルの組み合わせは下記のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
スマートフォン×クラウド開発連載の第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のストレージ系サービスへのアクセスのイメージです。
Webアプリ内にあらかじめ発行済みのアクセスキーが埋め込まれています。iPhone/iPad端末は、このWebアプリを経由してS3などのストレージサービスへアクセスします。ストレージ以外のEC2などへのアクセスも同様です(図1は、Webアプリやユーザー管理システムがAWS内の図ですが、AWS外に配置されていても同様です)。
図2は、Security Token Serviceを利用した場合のiPhone/iPad端末から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との連携部分は独自に作り込む必要があります)。
- Token Vending Machine for Anonymous Registration - Sample Java Web Application
- Token Vending Machine for Identity Registration - Sample Java Web Application
次ページでは、「AWSiOSDemo」サンプルアプリを動かしてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.