Salesforceモバイル案件で経験した3つの難しい要件とその対応方法

2,227 views
2,112 views

Published on

Salesforce1のイベントで発表につかう(つかった)資料

Published in: Technology

Salesforceモバイル案件で経験した3つの難しい要件とその対応方法

  1. 1. Salesforceモバイル案件で経験した
 3つの難しい要件とその対応方法 株式会社 プレセナ・ストラテジック・パートナーズ 瀬戸山 雅人 1
  2. 2. Agenda 1. 自己紹介 2. 難しかった3つの要件 • 要件1. Salesforceの文字をログイン画面に出さない • 要件2. Web画面をアプリ内に組み込んで費用を安く • 要件3. 別のアプリとシングルサインオンする 2
  3. 3. 1. 自己紹介 • 名前
 瀬戸山 雅人 • 趣味
 ドライブ、ミノムシの研究、洋菓子 ダイハツの中で 最も販売期間の短かった「ソニカ」 マンゴーワッフル 蓑からはみ出るオオミノガ 3
  4. 4. 1. 自己紹介 • 過去に作ったもの 2012年ころ、Rails + Herokuで英会話サービスを開発 4
  5. 5. 1. 自己紹介 • 過去に作ったもの 友人とAmbientPlayerという iPhoneアプリを開発 ! リラックスしたいときなどの BGMどうぞ 5
  6. 6. 1. 自己紹介 • 過去に作ったもの データサイエンス系の技術書の翻訳 6
  7. 7. 1. 自己紹介 • 過去に作ったもの 2013 - 2014に
 テラスカイにて某社向けの iPadアプリを開発 7
  8. 8. 1. 自己紹介 • 今作っているもの 株式会社 プレセナ・ストラテジック・パートナーズ にて、ビジネス研修を動画配信するWebサービスを開発中 8
  9. 9. 2. 難しかった3つの要件 9
  10. 10. 要件1. 
 Salesforceの文字をログイン画面に出さない 独自ブランディングしたいので、
 これを出さないで欲しいという要件 ! (しかも、文字やロゴだけの変更ではなく、本格的にログイン画 面をデザイン変更したいとのご要望) 10
  11. 11. 要件1. 
 Salesforceの文字をログイン画面に出さない 11 それだと、公式のMobile SDKを使うのが難しそう・・・
  12. 12. 要件1. 
 Salesforceの文字をログイン画面に出さない 12 • 結局どうしたか?
 Mobile SDKを使わずにzkSforce( https://github.com/superfell/zkSforce )を使用
 独自のログイン画面を実装し、SOAP APIのログインメソッドを使って認証を行った • 詳細は、テラスカイのブログに書きました • Salesforceモバイル案件の要件定義で注意すべき3つのポイント
 http://www.terrasky.co.jp/blog/?p=4613 • zkSforceを使ったiOSアプリでSalesforceにログインする
 http://www.terrasky.co.jp/blog/?p=4625
  13. 13. 要件2. 
 Web画面をアプリ内に組み込んで費用を安く 13 • この要件が出た時の思い出 作れますけど、結構複雑なグラフなので、おそらく工数 は大きくなると思います。つまり、費用が高くなります。 グラフ機能って、ネイティブアプリで作れますか? じゃあ、ブラウザで見るのと同じ画面をアプリにも出 せば安くなります? えっと・・・、たぶん、大丈夫です。
 (認証どうしようかな・・・)
  14. 14. 要件2. 
 Web画面をアプリ内に組み込んで費用を安く 14 • お客様の想定していた画面イメージ メニュー ここだけWeb(Visualforce)で作った ページを表示すればいいのではないか
  15. 15. 要件2. 
 Web画面をアプリ内に組み込んで費用を安く 15 • しかし、何も工夫しなければこうなるはず・・・ メニュー 該当のグラフ画面は、ログイン後のページなので、アプリ にSOAP APIでログインしたとしても別途Web認証が必要
  16. 16. 要件2. 
 Web画面をアプリ内に組み込んで費用を安く 16 • 対応方法 1. Communityではない場合 https://<instance>.salesforce.com/secur/frontdoor.jsp?sid=セッショ ンID&retURL=表示したい画面のURL(URLエンコーディング必要) 
 を使う。Winter’14以降から、SOAP APIで取得したセッションIDでも frontdoor.jspを使ったWeb認証が可能になった。 2. Communityの場合 SAMLベースのSSOなどを使う それ以外だと力技系・・・
  17. 17. 要件3. 
 別のアプリとシングルサインオンする 17 • この要件が出た時の思い出 SSOですか、それは、調べてみないとできるかどうか分か りません・・・ 別のベンダーが作っているiPadアプリと認証を共通化 して、別々にログインしないで済むようにしたいです
  18. 18. 要件3. 
 別のアプリとシングルサインオンする 18 iOSアプリは、基本的には
 他のアプリの領域にあるデータにアクセス出来ません AmbientPlayer /Documents /Library /tmp Salesforce1 /Documents /Library /tmp
  19. 19. 要件3. 
 別のアプリとシングルサインオンする 19 • 複数のiOSアプリで認証情報のような重要情報を共有する場合は、 KeyChainServicesを使用する • 複数アプリでのKeyChainServices共有に必要な前提条件 1. 同じ開発者による同じプロビジョニングプロファイルを使ってビル ドされている
 このため、ワイルドカードAppIDを使用する必要あり 2. ワイルドカードAppIDを使うと、AppIDが一意にならないため、 Game Center、In App Purchase、Push Notificationを使用できない
  20. 20. 要件3. 
 別のアプリとシングルサインオンする 20 iOS Dev Centerの設定画面で、
 Wildcard App IDを指定する。
  21. 21. 要件3. 
 別のアプリとシングルサインオンする 21 各アプリで、Xcodeのcapabilitiesの設定画面で、
 同じKeyChainGroupのIDを指定する。
  22. 22. 要件3. 
 別のアプリとシングルサインオンする 22 KeyChainにSOAP APIで取得したSession IDを保存しておき、 複数アプリで使いまわせば、シングルサインオンを実現可能 SessionID:hogehoge KeyChain 起動時にKeyChainに有効なSessionID があれば、認証を省略する
  23. 23. まとめ • 独自ブランディング要件には、Mobile SDKを使う のが困難なので、zkSforceなどを使う • Web画面を組み込んだアプリは開発コストは安くな るが、認証に工夫が必要 • アプリ間シングルサインオンは、制約はあるが KeyChainServicesで実現可能
  24. 24. ご清聴ありがとうございました!

×