iosアプリ開発者から見たmobile hub

74
iOSアプリ開発者から見た Mobile Hub クラスメソッド × スマートニュース AWS Night Kato Jun, Classmethod

Upload: jun-kato

Post on 18-Jan-2017

1.421 views

Category:

Software


0 download

TRANSCRIPT

Page 1: iOSアプリ開発者から見たMobile Hub

iOSアプリ開発者から見た Mobile Hub

クラスメソッド × スマートニュース AWS NightKato Jun, Classmethod

Page 2: iOSアプリ開発者から見たMobile Hub

自己紹介

• 加藤 潤(かとう じゅん)

• クラスメソッド モバイルアプリサービス部所属

• 2015年10月 JOIN

• iOSアプリ開発が主なお仕事

• ブログ:http://dev.classmethod.jp/author/kato-jun/

Page 3: iOSアプリ開発者から見たMobile Hub

本日お話しすること

Page 4: iOSアプリ開発者から見たMobile Hub

Mobile Hubを使ってみよう!

Page 5: iOSアプリ開発者から見たMobile Hub

まずは概要

Page 6: iOSアプリ開発者から見たMobile Hub

Mobile Hub

• AWSのモバイルサービスの一種

• モバイルアプリ向けのAWSサービスを素早く構築

• 2015年10月のre:Invent 2015で発表された

• 2016年1月現在 ベータ版

Page 7: iOSアプリ開発者から見たMobile Hub

Mobile Hubの機能

• 認証

• プッシュ通知

• コンテンツ配信

• データストレージ

• アプリ分析

• クラウドロジック

• アプリのテスト

Page 8: iOSアプリ開発者から見たMobile Hub

認証

• Powered by Amazon Cognito

• Facebookなどのパブリックログインプロバイダを通じてユーザーに一意のアイデンティティを付与

• 未認証(匿名)ユーザーもサポート

Page 9: iOSアプリ開発者から見たMobile Hub

プッシュ通知

• Powered by Amazon SNS

• 複数のプッシュ通知サービスに対応(APNS、GCMなどなど)

• ユーザー個別 または一斉送信

Page 10: iOSアプリ開発者から見たMobile Hub

コンテンツ配信

• Powered by Amazon S3

• Powered by Amazon CloudFront

• 画像や動画データの配信

• 低レイテンシー、高速転送(CDN)

Page 11: iOSアプリ開発者から見たMobile Hub

データストレージ

• Powered by Amazon Cognito

• Powered by Amazon S3

• ユーザーデータの保存・同期

• 写真などのユーザーファイルの保存

Page 12: iOSアプリ開発者から見たMobile Hub

アプリ分析

• Powered by Amazon Mobile Analytics

• アプリの使用状況の収集・可視化

Page 13: iOSアプリ開発者から見たMobile Hub

クラウドロジック

• Powered by Amazon Lambda

• サーバー管理不要でモバイルバックエンドを作成

• 実行基盤は全てAWSが管理

• 開発者はアプリケーションロジックに集中できる

Page 14: iOSアプリ開発者から見たMobile Hub

アプリのテスト

• Powered by AWS Device Farm

• AWS上で実際のスマートフォンやタブレットを使ってテスト

• 現時点でiOS, Android, Fire OSに対応

Page 15: iOSアプリ開発者から見たMobile Hub

今回お話しする機能• 認証

• プッシュ通知

• コンテンツ配信

• データストレージ

• アプリ分析

• クラウドロジック

• アプリのテスト

Page 16: iOSアプリ開発者から見たMobile Hub

何はともあれ触ってみる

Page 17: iOSアプリ開発者から見たMobile Hub

AWSマネジメントコンソール

Page 18: iOSアプリ開発者から見たMobile Hub

Create new mobile project

Page 19: iOSアプリ開発者から見たMobile Hub

What is your project name?

Page 20: iOSアプリ開発者から見たMobile Hub

Pick and configure features

Page 21: iOSアプリ開発者から見たMobile Hub

User Sign-in

Page 22: iOSアプリ開発者から見たMobile Hub

認証オプション

今回はSign-in is requiredを選択

Page 23: iOSアプリ開発者から見たMobile Hub

認証プロバイダ

2016年1月27日現在、選択できるのはFacebook、Google+、Custom

今回はFacebookを選択

Page 24: iOSアプリ開発者から見たMobile Hub

Facebook App ID

Page 25: iOSアプリ開発者から見たMobile Hub

Save Summary以下が自動で作られる

• Cognito Identity Pool • IAM Role

Page 26: iOSアプリ開発者から見たMobile Hub

Build

Page 27: iOSアプリ開発者から見たMobile Hub

Buildシステム要件

• Xcode 7.0以上

Page 28: iOSアプリ開発者から見たMobile Hub

Build

Facebookアプリの設定まで書いてある! 😊

Page 29: iOSアプリ開発者から見たMobile Hub

Download iOS source package

ファイル名に「objc」ってついてる。

Page 30: iOSアプリ開発者から見たMobile Hub

フォルダ構成

• LICENSE.txt・・・ライセンスファイル • MySampleApp・・・アプリのプロジェクトファイル

• READ_ME・・・アプリの説明HTML(WebのBuild画面と同じ内容)

Page 31: iOSアプリ開発者から見たMobile Hub

シミュレータで動かす

Page 32: iOSアプリ開発者から見たMobile Hub

トップ

Facebookログインボタンがあるだけ

Page 33: iOSアプリ開発者から見たMobile Hub

Facebookログイン

SafariのFacebookログイン画面が表示される

Page 34: iOSアプリ開発者から見たMobile Hub

認可

いつもの認可画面

Page 35: iOSアプリ開発者から見たMobile Hub

ログイン成功使用している機能が一覧表示される (今はUser Sign-inだけ)

Page 36: iOSアプリ開発者から見たMobile Hub

User Identity画面下の「Demo User Identity」をタップ

Page 37: iOSアプリ開発者から見たMobile Hub

User Identity以下が表示されている

• Facebook ユーザー名 • Facebookプロフィール画像 • Cognito ユーザーユニークID

Page 38: iOSアプリ開発者から見たMobile Hub

動くのはわかったので ソースコードを見てみる

Page 39: iOSアプリ開発者から見たMobile Hub

Info.plist

ATSの設定があらかじめ組み込まれている☺ すばら!!

Page 40: iOSアプリ開発者から見たMobile Hub

SignInViewController

• Facebookログインボタンのある画面のビューコントローラ • Facebookログインボタンタップ時の処理 • AWSSignInProviderTypeにAWSSignInProviderTypeFacebookが指定されて呼ばれる • ログイン処理はカスタムクラスのAWSIdentityManagerで行っている

Page 41: iOSアプリ開発者から見たMobile Hub

AWSIdentityManager

• 認証プロバイダのタイプに応じたSignInProvider(この場合はAWSFacebookSignInProvider)を生成してログイン

• ログイン完了時のBlockをプロパティに保持

Page 42: iOSアプリ開発者から見たMobile Hub

AWSFacebookSignInProviderログイン済みだったらログイン処理をスキップしてcompleteLoginメソッドを呼ぶ

ログインしてなかったらFBSDKLoginManagerのlogInWithReadPermissionメソッドを呼ぶ ※ FBSDK~はFacebook SDKのクラス

Page 43: iOSアプリ開発者から見たMobile Hub

AWSFacebookSignInProvider

FacebookログインとCognitoをリンク

Facebookログインユーザーの名前、プロフィール画像を取得

Page 44: iOSアプリ開発者から見たMobile Hub

AWSIdentityManager

AWSCognitoCredentialsProviderにFacebookのアクセストークンを設定

Page 45: iOSアプリ開発者から見たMobile Hub

実際にログインできているかCognitoコンソールで確認

Page 46: iOSアプリ開発者から見たMobile Hub

Resources

Page 47: iOSアプリ開発者から見たMobile Hub

Cognitoコンソール

ちゃんとFacebookログインできている☺

Page 48: iOSアプリ開発者から見たMobile Hub

Cloud Logic

Page 49: iOSアプリ開発者から見たMobile Hub

Cloud Logic

Page 50: iOSアプリ開発者から見たMobile Hub

Enable logic

Page 51: iOSアプリ開発者から見たMobile Hub

“hello-world” function

Page 52: iOSアプリ開発者から見たMobile Hub

“hello-world” function

キー’key1’で指定された値を返すだけのFunction

Page 53: iOSアプリ開発者から見たMobile Hub

Build & Download

Page 54: iOSアプリ開発者から見たMobile Hub

シミュレータで動かす

Page 55: iOSアプリ開発者から見たMobile Hub

トップ

一覧に「Cloud Logic」が追加された

Page 56: iOSアプリ開発者から見たMobile Hub

Cloud Logic画面下の「Demo Cloud Logic」をタップ

Page 57: iOSアプリ開発者から見たMobile Hub

Cloud Logic

Lambdaファンクション名

Request

Invoke

Response

Page 58: iOSアプリ開発者から見たMobile Hub

動くのはわかったので ソースコードを見てみる

Page 59: iOSアプリ開発者から見たMobile Hub

プロジェクト

CloudLogicのビューコントローラが追加されている

Page 60: iOSアプリ開発者から見たMobile Hub

CloudLogicViewController

• Requestテキストビューの内容をJSON Dictionaryにしてるだけ

Page 61: iOSアプリ開発者から見たMobile Hub

CloudLogicViewController

• AWSCloudLogicのinvokeFunction~メソッドでLambdaファンクションを起動 • 処理完了時のBlockでレスポンスをパースしてテキストビューに表示

Page 62: iOSアプリ開発者から見たMobile Hub

AWSCloudLogic

_invokerにパラメータをそのまま渡し、invokeFunctionメソッドを実行

Page 63: iOSアプリ開発者から見たMobile Hub

invoker

• プロパティに保持しているAWSLambdaInvokerクラス • AWSLambdaInvokerはAWSLambda.frameworkのクラス

Page 64: iOSアプリ開発者から見たMobile Hub

自動生成されたソースコードを見て思ったこと

Page 65: iOSアプリ開発者から見たMobile Hub

シングルトン多すぎ… orz

• 必要のないところまでシングルトン • シングルトンによるデメリット(密結合、テスタビリティの低下、etc…)

Page 66: iOSアプリ開発者から見たMobile Hub

よって

Page 67: iOSアプリ開発者から見たMobile Hub

ヘルパークラスを そのまま使うのは オススメしません

Page 68: iOSアプリ開発者から見たMobile Hub

でも

Page 69: iOSアプリ開発者から見たMobile Hub

AWS Mobile SDKの使い方は 参考になる

Page 70: iOSアプリ開発者から見たMobile Hub

まとめ

• User Sign-in

• Facebookログイン

• Cloud Logic

• iOSアプリからLambdaファンクションを起動

Page 71: iOSアプリ開発者から見たMobile Hub

まとめ

• 機能指向でサービスを構成できる

• 2-Tierアーキテクチャ

• モバイルアプリ開発者にとってAWSの敷居がかなり低くなった

• サンプルプロジェクトを参考にAWS Mobile SDKの使い方を学べる

• できることは既存AWSサービスの範囲内

Page 72: iOSアプリ開発者から見たMobile Hub

まだβ版

• まだ対応していない機能(Twitterログインなど)

• サンプルプロジェクトのSwift対応

Page 73: iOSアプリ開発者から見たMobile Hub

正式版リリースを 待ちましょう!

Page 74: iOSアプリ開発者から見たMobile Hub

ご清聴ありがとうございました