【AWS発表】新しくなったAWSモバイルサービス
モバイルアプリ開発の課題
クラウドを活用したモバイルアプリの開発をもっと簡単にしたい、そう思い続けてきました。どんなデバイスでも動かせて、速くて効率的な上にセキュリティも万全 - モバイルアプリへのユーザの期待は高まるばかりですが、そんな期待に応え続けるために乗り越えなくてはならない課題はたくさんあります。例えば:
- ユーザ認証 - ユーザの管理やIDプロバイダとの連携
- アクセスの認可 - クラウドリソースへのセキュアなアクセスの提供
- データの同期 - ユーザプリファレンス等の複数デバイス間での同期
- ユーザの行動分析 - アクティブユーザの追跡とエンゲージメント
- メディアの管理 - ユーザが投稿する写真やその他のメディアファイルの保存と共有
- メディアの配信 - 自動的にモバイルデバイスの種類を判別してコンテンツを即座に配信するグローバルな基盤
- プッシュ通知の送信 - ユーザをアクティブに保つための高信頼なメッセージ送信の仕組み
- 共有データの保存 - ユーザやデバイス間で共有されるデータをやり取りするストレージやデータベース
- データストリームのリアルタイム解析 - リアルタイムに収集されるクリックストリームやイベントログ等の解析とそれに反応したアクションの実施
等々考えなければならないことは山ほどあります。
課題解決に向けて
今日は、これらの課題の解決を手助けする3つの新しいAWSサービスと製品をご紹介します。
Amazon Cognitoはユーザの認証と、データの保存、管理、複数のデバイス・プラットフォーム・アプリケーション間での同期などのタスクを簡単に実現するためのサービスです。アプリケーションは、デバイスがオンラインでもオフラインでも、設定情報やゲームのステート情報など、ユーザごとのデータをセキュアに保存出来ます。また、複数のIDプロバイダとの連携も出来ますし、認証を行わないゲストユーザに対してのサービス提供にも利用可能です。
Amazon Mobile Analyticsはアプリケーションの利用に関する情報の収集や可視化、それに基づくユーザへのエンゲージメントや収益化などを手助けするサービスです。 分析のためのデータは AWS Mobile SDK及び REST APIを使って収集され、解析結果のメトリクスはAWSマネージメントコンソールのレポーティングタブに表示されます。
機能拡充されたAWS Mobile SDKはクオリティの高いモバイルアプリを速く簡単に構築するのをサポートできるように設計されました。モバイルアプリの構築に向けたサービスへのアクセスはもちろん、主要なAWSのデータストリーミング解析、ストレージ、データベース関連サービスへのモバイルに最適化されたコネクタや、その他のAWSサービス群へのモバイルアプリからのアクセスを提供します。また、全AWSサービス共通の認証の仕組みや、クライアント側でのデータキャッシング及びデータ同期時の競合回避もSDKに含まれます。SDKはiOS, Android, Fire OS向けのアプリケーションの開発に利用可能です。
まとめると、これらのサービスを用いれば、iOS, Android, Kindle Fireデバイスのための次世代モバイルアプリケーションの構築、配信、実行、モニタリング、最適化、大規模なスケールへの対応を用意に行うことが出来ます。これらのサービスは、コンピューティング、ストレージ、データベース、ネットワーキング、解析などのAWSのラインナップの一部として、米国、南アメリカ、ヨーロッパ、アジア・パシフィックの各AWS リージョンから皆さんと、皆さんのユーザに対して提供されます。
上記の新しいサービスと既存のAWSサービスを、冒頭で挙げた課題にマップすると下記のようになります:
- ユーザ認証 - Amazon Cognito (IDブローカー)
- アクセスの認可 - AWS Identity and Access Management
- データの同期 - Amazon Cognito (同期)
- ユーザの行動分析 - Amazon Mobile Analytics
- メディアの管理 - Amazon Simple Storage Service Transfer Manager
- メディアの配信 - Amazon CloudFront (デバイス認識と配信)
- プッシュ通知の送信 - Amazon Simple Notification Service モバイルプッシュ
- 共有データの保存 - Amazon DynamodB (Object Mapper)
- データストリームのリアルタイム解析 - Amazon Kinesis (Object Mapper)
さっそく各サービスを見てみましょう!
Amazon Cognito
Amazon Cognitoはユニークなユーザの特定や、一時的かつ限定された権限を持つAWSクレデンシャルの取得、データの同期サービスを提供します。
ご存知かもしれませんが、IDプロバイダは、あるサービスや、それに関連するサービスを使おうとするユーザに対してのID情報の発行を担当するオンラインサービスです。Cognitoは3つのメジャーなIDプロバイダ (Amazon, Facebook, Google) と連携するように設計されています。皆さんは、自分で構築と運用を行わなくても、これらのサービスが提供するID認証の機能を活用することが出来ます。つまり、Cognitoを使えば、ユーザの認識や、パスワードのセキュアな保存などについて頭を悩ませる必要がなくなります。
Cognitoはゲストユーザのアクセスもサポートします。AWS Identity and Access ManagementとSecurity Token Serviceの助けをかりて、モバイルユーザはAWSのリソースやアプリの機能にセキュアにアクセスするのはもちろん、データのクラウドへの保存までもがアカウントの作成やログインを行うことなく可能になります。それに加え、もしゲストユーザとして利用したユーザが後からログインすることを決めた際には、CongitoはそれまでのデータとID情報をマージしてくれます。その全容は以下の通りです。 :
Cognitoを使い始めるまでのステップは下記の通りです:
- AWSアカウントにサインアップする
- IDプロバイダのコンソールでアプリを登録し、アプリIDもしくはトークンを取得する。(認証なしでユーザ特定のみ行う場合はこのステップは省略できます)
- マネージメントコンソールでCognito identity pool を作成する
- AWS Mobile SDKを組み込み、データを dataset に保存する
コンソールにて identity pool の作成と設定が可能です:
アプリケーションが配信されて本番運用に入ったら、コンソールに戻ってidentity pool の関連メトリクスを見ることが出来ます:
今度は Cognitoのデータ同期機構を見てみましょう!クライアント側のSDKは、アプリケーションがオフラインでも動作できるように、ローカルのSQLiteのデータストアを管理します。そのデータストアはキャッシュとしての動作及び、全ての読み書き操作を受け口として機能し ます。Cognitoの同期機構は、ローカルのデータのバージョンとクラウド上のバージョンを比較し、必要に応じて差分を読み書きします。デフォルトでは最新の書き込みが優先されますが、必要に応じてこの動作をオーバーライドして独自の競合回避アルゴリズムを実装することも可能です。
各identity pool内のidentityは、複数の key/value ペアを持つ dataset をそれぞれ複数個持つことが出来ます:
各 dataset は1 MBまで、各 identity は20 MBまでのデータを保存可能です。
dataset を開いて、 key/value ペアを追加するのは下記のような数行のコードで可能です:
DataSet *dataset = [syncClient openOrCreateDataSet:@"myDataSet"];
NSString *value = [dataset readStringForKey:@"myKey"];[dataset putString:@"my value" forKey:@"myKey"];
Cognitoの課金はクラウド上に保存されたアプリケーションデータの総量と、そのデータに対して行われた同期操作の数に基いて行われます。Amazon Cognitoには無料試用枠が用意されており、最初の12ヶ月の利用については、毎月10 GBの同期用ストレージと、1,000,000 回の同期操作が無料試用枠の範囲で可能です。無料試用枠を越えると、同期用ストレージについて1 GB 1月当たり$0.15、同期操作は10,000回当たり$0.15が課金されます。
Cognito のドキュメント(AndroidとiOS)を見て、是非その他の機能についても学んでみてください。
Mobile Analytics
1度アプリを開発したら、その利用状況や利用頻度をトラックしたり、フィードバックに基いてアプリとユーザのインタラクションを向上させて行く必要があるかと思います。Amazon Mobile Analyticsサービスはこれを行うために必要な情報を提供してくれます。
アプリケーションによって収集・アップロードされた生のデータ ("events")を使って、Amazon Mobile Analyticsは自動的に下記のメトリクスを計算・更新します:
- Daily Active Users (DAU), Monthly Active Users (MAU), 新規ユーザ
- Sticky Factor (DAU ÷ MAU)
- Session数と DAU当たりの平均セッション数
- Average Revenue per Daily Active User (ARPDAU)
- Average Revenue per Paying Daily Active User (ARPPDAU)
- 1, 3, 7日のRetention
- 1, 2, 3週の Retention
- カスタムイベント
アプリケーションからのイベントをアップロードするのに必要なのは、identity poolの作成と AWS Mobile SDK (もしくは REST API) を使用してレポーティングの機能を呼び出すことだけです。3タイプのイベントが用意されています:
- System - セッションの始まりと終わり
- In-App Purchase - トランザクション
- Custom - アプリケーション固有のイベント
AWS Mobile SDKを使う場合は、各セッションの始まりと終わりを示すSystemイベントについては自動的に送信されます。その他のイベントについては、適切なタイミングで皆さんのアプリケーションからレポートするコードを書く事で利用可能です。
全てのメトリクスはAWS Management Consoleにタブで区切られた形で表示されます:
メインページはアプリとそのユーザに関するトップレベルの情報を表示します:
タブをクリックすることでさらに情報を取得することが出来ます:
必要に応じて、アプリケーションごと、日付の範囲、プラットフォームなどでフィルターすることも出来ます:
料金はアプリが毎月生成するイベントの数によって決まります。最初の1億イベントは無料で、それ以降は100万イベント毎に$1.00が課金されます。
AWS Mobile SDK
最後に、更新・機能拡充された AWS Mobile SDKについても是非とも触れておきたいと思います!このSDKはiOS, Android, Fire OS向けのアプリケーションの開発を楽にしてくれます。
以下にいくつかの新機能についてまとめました:
Object Mapper - 新しい object mapperはモバイルアプリからの DynamodBの利用を簡単にしてくれます。ハイレベルなCreate, Get, Query, Update操作を提供します。
S3 Transfer Manager - S3 Transfer Managerを利用すれば 、開始・一時停止・停止をサポートした、完全に非同期 なS3へのデータ転送を実装できます。
Android と Fire OS に関する機能追加 - この投稿で発表したサービスに加え、高信頼なモバイルデバイスのデータストリームの記録を可能にする Amazon Kinesis Recorderや、最新のSQS, SNS, DynamoDB の機能のサポートも追加されました。また、アクティブなリクエストをスレッドに割り込みを入れて停止する機能もサポートしています。
iOS / Objective-C の機能拡張 - ARCと BFTaskをサポートし、Objective-Cの使い方に関するベストプラクティスに対応しました。また、Cocoapodsのサポート、 Appleの新しい言語である Swift からのアクセスにも対応しています。
-- Jeff;
PS - スクリーンショットと図の作成をしてくれた、私の同僚であり友人である Jinesh Varia に感謝します!
この記事はAWSシニアエバンジェリスト Jeff BarrのAmazon Web Services Blogの記事、 New AWS Mobile Servicesを 安川健太 (Facebook, Twitter)が翻訳したものです。
コメント