Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

2 746 vues

Publié le

2016/1/27 クラスメソッド × スマートニュース AWS Nightの資料です。

Publié dans : Logiciels
  • Soyez le premier à commenter

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

  1. 1. iOSアプリ開発者から見た Mobile Hub クラスメソッド × スマートニュース AWS Night Kato Jun, Classmethod
  2. 2. 自己紹介 • 加藤 潤(かとう じゅん) • クラスメソッド モバイルアプリサービス部所属 • 2015年10月 JOIN • iOSアプリ開発が主なお仕事 • ブログ:http://dev.classmethod.jp/author/kato-jun/
  3. 3. 本日お話しすること
  4. 4. Mobile Hubを使ってみよう!
  5. 5. まずは概要
  6. 6. Mobile Hub • AWSのモバイルサービスの一種 • モバイルアプリ向けのAWSサービスを素早く構 築 • 2015年10月のre:Invent 2015で発表された • 2016年1月現在 ベータ版
  7. 7. Mobile Hubの機能 • 認証 • プッシュ通知 • コンテンツ配信 • データストレージ • アプリ分析 • クラウドロジック • アプリのテスト
  8. 8. 認証 • Powered by Amazon Cognito • Facebookなどのパブリックログインプロバイ ダを通じてユーザーに一意のアイデンティティ を付与 • 未認証(匿名)ユーザーもサポート
  9. 9. プッシュ通知 • Powered by Amazon SNS • 複数のプッシュ通知サービスに対応(APNS、 GCMなどなど) • ユーザー個別 または一斉送信
  10. 10. コンテンツ配信 • Powered by Amazon S3 • Powered by Amazon CloudFront • 画像や動画データの配信 • 低レイテンシー、高速転送(CDN)
  11. 11. データストレージ • Powered by Amazon Cognito • Powered by Amazon S3 • ユーザーデータの保存・同期 • 写真などのユーザーファイルの保存
  12. 12. アプリ分析 • Powered by Amazon Mobile Analytics • アプリの使用状況の収集・可視化
  13. 13. クラウドロジック • Powered by Amazon Lambda • サーバー管理不要でモバイルバックエンドを作 成 • 実行基盤は全てAWSが管理 • 開発者はアプリケーションロジックに集中でき る
  14. 14. アプリのテスト • Powered by AWS Device Farm • AWS上で実際のスマートフォンやタブレット を使ってテスト • 現時点でiOS, Android, Fire OSに対応
  15. 15. 今回お話しする機能 • 認証 • プッシュ通知 • コンテンツ配信 • データストレージ • アプリ分析 • クラウドロジック • アプリのテスト
  16. 16. 何はともあれ触ってみる
  17. 17. AWSマネジメントコンソール
  18. 18. Create new mobile project
  19. 19. What is your project name?
  20. 20. Pick and configure features
  21. 21. User Sign-in
  22. 22. 認証オプション 今回はSign-in is requiredを選択
  23. 23. 認証プロバイダ 2016年1月27日現在、選択できるのはFacebook、Google+、Custom 今回はFacebookを選択
  24. 24. Facebook App ID
  25. 25. Save Summary 以下が自動で作られる • Cognito Identity Pool • IAM Role
  26. 26. Build
  27. 27. Build システム要件 • Xcode 7.0以上
  28. 28. Build Facebookアプリの設定まで書いてある! 😊
  29. 29. Download iOS source package ファイル名に「objc」ってついてる。
  30. 30. フォルダ構成 • LICENSE.txt・・・ライセンスファイル • MySampleApp・・・アプリのプロジェクトファイル • READ_ME・・・アプリの説明HTML(WebのBuild画面と同じ内容)
  31. 31. シミュレータで動かす
  32. 32. トップ Facebookログインボタンが あるだけ
  33. 33. Facebookログイン SafariのFacebookログイン 画面が表示される
  34. 34. 認可 いつもの認可画面
  35. 35. ログイン成功 使用している機能が一覧表示 される (今はUser Sign-inだけ)
  36. 36. User Identity 画面下の「Demo User Identity」をタップ
  37. 37. User Identity 以下が表示されている • Facebook ユーザー名 • Facebookプロフィール画像 • Cognito ユーザーユニークID
  38. 38. 動くのはわかったので ソースコードを見てみる
  39. 39. Info.plist ATSの設定があらかじめ組み込まれている☺ すばら!!
  40. 40. SignInViewController • Facebookログインボタンのある画面のビューコントローラ • Facebookログインボタンタップ時の処理 • AWSSignInProviderTypeにAWSSignInProviderTypeFacebookが指定されて呼ばれる • ログイン処理はカスタムクラスのAWSIdentityManagerで行っている
  41. 41. AWSIdentityManager • 認証プロバイダのタイプに応じたSignInProvider(この場合は AWSFacebookSignInProvider)を生成してログイン • ログイン完了時のBlockをプロパティに保持
  42. 42. AWSFacebookSignInProvider ログイン済みだったらログイン処理を スキップしてcompleteLoginメソッド を呼ぶ ログインしてなかったらFBSDKLoginManagerのlogInWithReadPermissionメソッ ドを呼ぶ ※ FBSDK∼はFacebook SDKのクラス
  43. 43. AWSFacebookSignInProvider FacebookログインとCognitoをリンク Facebookログインユーザーの名前、プロフィール画像を取得
  44. 44. AWSIdentityManager AWSCognitoCredentials ProviderにFacebookのア クセストークンを設定
  45. 45. 実際にログインできているか Cognitoコンソールで確認
  46. 46. Resources
  47. 47. Cognitoコンソール ちゃんとFacebookログインできている☺
  48. 48. Cloud Logic
  49. 49. Cloud Logic
  50. 50. Enable logic
  51. 51. “hello-world” function
  52. 52. “hello-world” function キー key1 で指定された値を返すだけのFunction
  53. 53. Build & Download
  54. 54. シミュレータで動かす
  55. 55. トップ 一覧に「Cloud Logic」が追 加された
  56. 56. Cloud Logic 画面下の「Demo Cloud Logic」をタップ
  57. 57. Cloud Logic Lambdaファンクション名 Request Invoke Response
  58. 58. 動くのはわかったので ソースコードを見てみる
  59. 59. プロジェクト CloudLogicのビューコントローラが追加されている
  60. 60. CloudLogicViewController • Requestテキストビューの内容をJSON Dictionaryにしてるだけ
  61. 61. CloudLogicViewController • AWSCloudLogicのinvokeFunction∼メソッドでLambdaファンクションを起動 • 処理完了時のBlockでレスポンスをパースしてテキストビューに表示
  62. 62. AWSCloudLogic _invokerにパラメータをそのまま渡し、invokeFunctionメソッドを実行
  63. 63. invoker • プロパティに保持しているAWSLambdaInvokerクラス • AWSLambdaInvokerはAWSLambda.frameworkのクラス
  64. 64. 自動生成されたソースコード を見て思ったこと
  65. 65. シングルトン多すぎ… orz • 必要のないところまでシングルトン • シングルトンによるデメリット(密結合、テスタビリティの低下、etc…)
  66. 66. よって
  67. 67. ヘルパークラスを そのまま使うのは オススメしません
  68. 68. でも
  69. 69. AWS Mobile SDKの使い方は 参考になる
  70. 70. まとめ • User Sign-in • Facebookログイン • Cloud Logic • iOSアプリからLambdaファンクションを起 動
  71. 71. まとめ • 機能指向でサービスを構成できる • 2-Tierアーキテクチャ • モバイルアプリ開発者にとってAWSの敷居がかなり低くなった • サンプルプロジェクトを参考にAWS Mobile SDKの使い方を学 べる • できることは既存AWSサービスの範囲内
  72. 72. まだβ版 • まだ対応していない機能(Twitterログインな ど) • サンプルプロジェクトのSwift対応
  73. 73. 正式版リリースを 待ちましょう!
  74. 74. ご清聴ありがとうございました

×