Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Developers.IO / Developer day 2015 ”モバイル アプリ開発現場でよくある課題と対策”

Developers.IO / Developer day 2015
”モバイル アプリ開発現場でよくある課題と対策”
資料。

  • Login to see the comments

Developers.IO / Developer day 2015 ”モバイル アプリ開発現場でよくある課題と対策”

  1. 1. Developer Day モバイル アプリ開発現場で よくある課題と対策 1 A-1 深澤 豪 Ⓒ Classmethod, Inc. 2015年03月29日
  2. 2. Ⓒ Classmethod, Inc. Twitter   #cmdevio2015D 2
  3. 3. Ⓒ Classmethod, Inc. •深澤豪(ふかさわ  たけし)   •iPhoneアプリサービス事業部   •プロジェクト回し ⾃自⼰己紹介
  4. 4. Ⓒ Classmethod, Inc. •深澤豪(ふかさわ  たけし)   •iPhoneアプリサービス事業部   •プロジェクト回し ⾃自⼰己紹介 Androidも開発します
  5. 5. Ⓒ Classmethod, Inc. モバイルアプリ開発で起こる   課題と現状の対応について   iOSとAndroid2つのOSを   開発する想定でお話します
  6. 6. Ⓒ Classmethod, Inc. 1.App  Store  レビュー申請   2.強制アップデート   3.iOS/Androidでの認識識違い   4.⾒見見積り 今⽇日のお題
  7. 7. Ⓒ Classmethod, Inc. App  Storeレビューを通って   予定通りリリースできるか不不安 7 課題1
  8. 8. Ⓒ Classmethod, Inc. iOS:アプリレビューあり   Android:アプリレビューなし 8
  9. 9. Ⓒ Classmethod, Inc. ※  Androidも2015年年5⽉月から   主に各地域の審査団体から   年年齢ベースで評価される   アンケートによる   ⾃自動審査が始まるようです。 9
  10. 10. Ⓒ Classmethod, Inc. .oO(そもそもこのアプリは   レビューが通るのかな?) 10
  11. 11. Ⓒ Classmethod, Inc. 例例えば 11
  12. 12. Ⓒ Classmethod, Inc. 個⼈人情報が必須 12
  13. 13. Ⓒ Classmethod, Inc. 会員専⽤用で特定のハードウェア と連携しなきゃ使えない 13
  14. 14. Ⓒ Classmethod, Inc. とか 14
  15. 15. Ⓒ Classmethod, Inc. 15 〜~  解決案  〜~
  16. 16. Ⓒ Classmethod, Inc. 16 早めにレビュー申請出す
  17. 17. Ⓒ Classmethod, Inc. 17 基本機能   の開発 7⽉月20⽇日リリースしたい テスト 4/1 5/1 6/1 7/1 付加機能   の開発 リリース 7/20
  18. 18. Ⓒ Classmethod, Inc. 18 ”夏休みに間に合わせたいから   リリースは厳守で”
  19. 19. Ⓒ Classmethod, Inc. 19 Case   特に問題無い場合
  20. 20. Ⓒ Classmethod, Inc. 20 基本機能   の開発 ここで⼀一回レビュー申請 テスト 4/1 5/1 6/1 7/1 付加機能   の開発 7/20 リリース
  21. 21. Ⓒ Classmethod, Inc. 21 基本機能   の開発 レビューが通った! テスト 4/1 5/1 6/1 7/1 付加機能   の開発 リリース 7/20
  22. 22. Ⓒ Classmethod, Inc. 22 iTunes  Connectで   ⾃自動リリース&リリース⽇日付を 未来⽇日に設定する。次回の申請 はアップデート扱いになる。
  23. 23. Ⓒ Classmethod, Inc. 23 基本機能   の開発 余裕をもってアップデート申請 テスト 4/1 5/1 6/1 7/1 付加機能   の開発 リリース 7/20
  24. 24. Ⓒ Classmethod, Inc. 24 基本機能   の開発 リリースが間にあった! テスト 4/1 5/1 6/1 7/1 付加機能   の開発 リリース 7/20
  25. 25. Ⓒ Classmethod, Inc. 25 Case   リジェクトされた場合
  26. 26. Ⓒ Classmethod, Inc. 26 基本機能   の開発 ここで⼀一回レビュー申請 テスト 4/1 5/1 6/1 7/1 付加機能   の開発 リリース 7/20
  27. 27. Ⓒ Classmethod, Inc. 27 基本機能   の開発 リジェクト‥ テスト 4/1 5/1 6/1 7/1 付加機能   の開発 リリース 7/20
  28. 28. Ⓒ Classmethod, Inc. 28 基本機能   の開発 レビュー申請 テスト 4/1 5/1 6/1 7/1 リジェクト 対応の開発 リリース 7/20
  29. 29. Ⓒ Classmethod, Inc. 29 基本機能   の開発 テスト 4/1 5/1 6/1 7/1 リジェクト 対応の開発 リリース レビューが通った! 7/20
  30. 30. Ⓒ Classmethod, Inc. 30 基本機能   の開発 アップデート申請 テスト 4/1 5/1 6/1 7/1 リリース リジェクト 対応の開発 7/20
  31. 31. Ⓒ Classmethod, Inc. 31 基本機能   の開発 リリースが間にあった! テスト 4/1 5/1 6/1 7/1 リリース リジェクト 対応の開発 7/20
  32. 32. Ⓒ Classmethod, Inc. 早い段階でレビュー申請を   出してリジェクトに   対処できる期間を設ける 32 アプリレビューを通って   予定通りリリースできるか不不安 課題1のまとめ
  33. 33. Ⓒ Classmethod, Inc. (何かあるかもしれないから)   強制アップデートできる   仕組みを⼊入れておきたい 33 課題2
  34. 34. Ⓒ Classmethod, Inc. .oO(強制アップデートか) 34
  35. 35. Ⓒ Classmethod, Inc. 「今このアプリが使いたいのに 強制アップデートかよ!」   (クーポンアプリ  20才) 35
  36. 36. Ⓒ Classmethod, Inc. 「古いアプリの⽅方が   使いやすかった」   (オシャレ系アプリ  25才) 36
  37. 37. Ⓒ Classmethod, Inc. 「アップデートって何?」   (孫と繋がるアプリ  60才) 37
  38. 38. Ⓒ Classmethod, Inc. 強制アップデートは   アプリ提供側の都合 38
  39. 39. Ⓒ Classmethod, Inc. ⼀一⾔言で⾔言えば保険 39
  40. 40. Ⓒ Classmethod, Inc. 事故を減らす事はできても   無くすことはできないので   仕組みは⼊入れておきたい 40
  41. 41. Ⓒ Classmethod, Inc. 41 〜~  解決案  〜~
  42. 42. Ⓒ Classmethod, Inc. 全てのリクエストヘッダで   APIに対してOSとアプリ⾃自⾝身の バージョン番号を渡す   ※  あるアプリ専⽤用の   Web  APIという前提 42
  43. 43. Ⓒ Classmethod, Inc. どんな時に強制アップデート   が必要になるか 43
  44. 44. Ⓒ Classmethod, Inc. Case   重⼤大なバグがある 44
  45. 45. Ⓒ Classmethod, Inc. iOSはレビュー中に   正常に動作させる必要がある 45 ポイント
  46. 46. Ⓒ Classmethod, Inc. レビュー申請中 46
  47. 47. Ⓒ Classmethod, Inc. 47 重⼤大なバグある 申請中 リリース済み v1.0 v2.0
  48. 48. Ⓒ Classmethod, Inc. 48 重⼤大なバグある 申請中 リリース済み OK! OK! v1.0以上ならOK v1.0 v2.0
  49. 49. Ⓒ Classmethod, Inc. 新バージョンがストアに出た 49
  50. 50. Ⓒ Classmethod, Inc. 50 重⼤大なバグある リリース済み リリース済み v1.0 v2.0
  51. 51. Ⓒ Classmethod, Inc. 51 重⼤大なバグある リリース済み リリース済み OK! アップデートしれ! v2.0以上ならOK v1.0 v2.0
  52. 52. Ⓒ Classmethod, Inc. x.x.x以上ならアップデート   対象にしないという   仕組みにする 52 Androidもそれに合わせればOK  
  53. 53. Ⓒ Classmethod, Inc. APIが⼤大幅に変更更   Ver.1  -‐‑‒>  Ver.2とか   &   古いバージョンのAPIを   提供しない 53 Case
  54. 54. Ⓒ Classmethod, Inc. iOSはレビュー期間が   あるので、   ⼀一時的に新旧のAPIを正常に   動作させる必要がある 54 ポイント
  55. 55. Ⓒ Classmethod, Inc. ※  Amazon  Web  Services   の例例 55
  56. 56. Ⓒ Classmethod, Inc. レビュー申請中 56
  57. 57. Ⓒ Classmethod, Inc. 57 APIが⼤大幅に変更更 申請中 リリース済み v1.0 v2.0
  58. 58. Ⓒ Classmethod, Inc. 58 APIが⼤大幅に変更更 申請中 リリース済み v1.0 v2.0
  59. 59. Ⓒ Classmethod, Inc. 59 APIが⼤大幅に変更更 申請中 リリース済み 申請時には   2つのAPIバージョンを   動作させる必要がある v1.0 v2.0
  60. 60. Ⓒ Classmethod, Inc. 60 APIが⼤大幅に変更更 申請中 リリース済み ELBにリクエストヘッダと かで振り分ける機能があれ ば… v1.0 v2.0
  61. 61. Ⓒ Classmethod, Inc. 61 APIが⼤大幅に変更更 申請中 リリース済み これができればいいな v2⽤用API v1⽤用API v1.0 v2.0
  62. 62. Ⓒ Classmethod, Inc. 62 APIが⼤大幅に変更更 申請中 リリース済み v2⽤用API v1⽤用API この⼿手もあるが‥ nginxとかリバース プロキシで振り分け v1.0 v2.0
  63. 63. Ⓒ Classmethod, Inc. 63 APIが⼤大幅に変更更 申請中 リリース済み v2⽤用API v1⽤用API nginxとかリバース プロキシで振り分け レアな強制アップデートのためだけに   インスタンスを⽤用意したくない&複雑 v1.0 v2.0
  64. 64. Ⓒ Classmethod, Inc. なので 64
  65. 65. Ⓒ Classmethod, Inc. 65 APIが⼤大幅に変更更 申請中 リリース済み v2⽤用API v1⽤用API v1.0 v2.0
  66. 66. Ⓒ Classmethod, Inc. 66 APIが⼤大幅に変更更 申請中 リリース済み 同じインスタンスに新旧バージョンを 共存させてAPI内で処理理を振り分ける v2⽤用API v1⽤用API v1.0 v2.0
  67. 67. Ⓒ Classmethod, Inc. 67 APIが⼤大幅に変更更 申請中 リリース済み v2⽤用API v1⽤用API v1.0 v2.0 v1.0以上ならOK OK! OK!
  68. 68. Ⓒ Classmethod, Inc. 新バージョンがストアに出た 68
  69. 69. Ⓒ Classmethod, Inc. 69 APIが⼤大幅に変更更 リリース済み v2⽤用API v1⽤用API リリース済み v1.0 v2.0
  70. 70. Ⓒ Classmethod, Inc. 70 APIが⼤大幅に変更更 リリース済み v2⽤用API v1⽤用API OK! アップデートしれ! 新バージョンをリリースしたら   強制アップデートさせる v1.0 v2.0 v2.0以上ならOK リリース済み
  71. 71. Ⓒ Classmethod, Inc. 71 APIが⼤大幅に変更更 リリース済み v2⽤用API v1⽤用API OK! アップデートしれ! 各OSが最新になったら適当な所で   古いバージョンのAPIを抜く v1.0 v2.0 v1.0以上ならOK リリース済み
  72. 72. Ⓒ Classmethod, Inc. 新旧バージョンが同居する時が あるので、⼀一時的に   ソース管理理が煩雑になる 72
  73. 73. Ⓒ Classmethod, Inc. 環境も含めてデプロイできれば   もっとシンプルになりそう 73
  74. 74. Ⓒ Classmethod, Inc. 74 これか
  75. 75. Ⓒ Classmethod, Inc. 75 WebApp   v1⽤用API WebApp   v1⽤用API WebApp   v2⽤用API nginx     リバースプロキシ WebApp   v2⽤用API API共存の⽅方法案 古いバージョン レビュー申請中 新しいバージョン
  76. 76. Ⓒ Classmethod, Inc. 76 nginx     リバースプロキシ API共存の⽅方法案 構成ごとデプロイすればソース管理理も煩雑にならないかも WebApp   v1⽤用API WebApp   v1⽤用API WebApp   v2⽤用API WebApp   v2⽤用API
  77. 77. Ⓒ Classmethod, Inc. Dockerに関しては妄想の域   ですが。 77
  78. 78. Ⓒ Classmethod, Inc. という設計にしてます 78
  79. 79. Ⓒ Classmethod, Inc. iOSのレビュー中も正常に   動作するように設計する 79 強制アップデートできる   仕組みを⼊入れておきたい 課題2のまとめ
  80. 80. Ⓒ Classmethod, Inc. ※  リリース済みのアプリで   強制アップデートを   発動した実績はまだありません 80
  81. 81. Ⓒ Classmethod, Inc. iOS  /  Androidで   認識識が合ってない 81 課題3
  82. 82. Ⓒ Classmethod, Inc. .oO(アレッ?動きが違うな…   どっちが正しいんだっけ) 82
  83. 83. Ⓒ Classmethod, Inc. 特に両OS同時に開発した   場合に起こりやすい 83
  84. 84. Ⓒ Classmethod, Inc. ただし 84
  85. 85. Ⓒ Classmethod, Inc. iOSとAndroidはデザインガイ ドラインも制約も考え⽅方も違う から、同じ名前のアプリでも   全てが⼀一緒になるわけではない 85
  86. 86. Ⓒ Classmethod, Inc. が 86
  87. 87. Ⓒ Classmethod, Inc. やりたいことは⼀一緒だよね 87
  88. 88. Ⓒ Classmethod, Inc. 88 〜~  解決案  〜~
  89. 89. Ⓒ Classmethod, Inc. Case   モデルを共通化する 89
  90. 90. Ⓒ Classmethod, Inc. 90 Objective-‐‑‒C Java
  91. 91. Ⓒ Classmethod, Inc. 91 Objective-‐‑‒C Java 標準的なネイティブアプリ開発
  92. 92. Ⓒ Classmethod, Inc. あるアプリの場合 92
  93. 93. Ⓒ Classmethod, Inc. 93 Objective-‐‑‒C Java
  94. 94. Ⓒ Classmethod, Inc. 94 モデル   C++ Objective-‐‑‒C Java
  95. 95. Ⓒ Classmethod, Inc. 95 モデル   C++ NDK(JNI) Objective-‐‑‒C Java
  96. 96. Ⓒ Classmethod, Inc. 96 モデル   C++ NDK(JNI) Objective-‐‑‒C Java ジェネレータ   Python 定義   YAML
  97. 97. Ⓒ Classmethod, Inc. 97 モデル   C++ NDK(JNI) Objective-‐‑‒C Java ジェネレータ   Python 定義   YAML なるほど!
  98. 98. Ⓒ Classmethod, Inc. 98 モデル   C++ NDK(JNI) Objective-‐‑‒C Java ジェネレータ   Python 定義   YAML Objective-‐‑‒C   Java   NDK   C++   YAML   Python
  99. 99. Ⓒ Classmethod, Inc. 環境構築が⾟辛かった 99
  100. 100. Ⓒ Classmethod, Inc. デバッグが難しかった 100
  101. 101. Ⓒ Classmethod, Inc. フルスタックエンジニア   が居ないと回らなそうだ 101
  102. 102. Ⓒ Classmethod, Inc. これは諦めた‥ 102
  103. 103. Ⓒ Classmethod, Inc. Case   OS間でコードと動作の   レビューをする 103
  104. 104. Ⓒ Classmethod, Inc. 104 プルリクエスト コードレビューと   動作検証
  105. 105. Ⓒ Classmethod, Inc. 105 プルリクエスト コードレビュー   と動作検証
  106. 106. Ⓒ Classmethod, Inc. 106 プルリクエスト コードレビュー   と動作検証 あれっ?⽇日付の表⽰示は   和暦だよね?
  107. 107. Ⓒ Classmethod, Inc. 107 プルリクエスト コードレビュー   と動作検証 そうだっけ?確認しよう
  108. 108. Ⓒ Classmethod, Inc. ソースと動くアプリでレビュー   するので、まず齟齬があれば   ⾒見見つけられる 108
  109. 109. Ⓒ Classmethod, Inc. レビューするOSの開発経験が   無くてもある程度度の   コードレビューは可能 109
  110. 110. Ⓒ Classmethod, Inc. だけど 110
  111. 111. Ⓒ Classmethod, Inc. SDKやガイドラインなど、   もっと知りたくなってしまうのが   エンジニア 111
  112. 112. Ⓒ Classmethod, Inc. お互いの事を   もっと知りたくなる 112
  113. 113. Ⓒ Classmethod, Inc. 開発が   もっと楽しくなる 113
  114. 114. Ⓒ Classmethod, Inc. 認識識違いも減った 114
  115. 115. Ⓒ Classmethod, Inc. お互いでレビューする 115 iOSとAndroidで   認識識が合ってない 課題3のまとめ
  116. 116. Ⓒ Classmethod, Inc. 116 iOSとAndroid開発でかかる   ⼯工数ってどれだけ違うの? 課題4
  117. 117. Ⓒ Classmethod, Inc. .oO(最近はiOSも機種が増えて きたけど⾒見見積りは   どうなってんだろ?) 117
  118. 118. Ⓒ Classmethod, Inc. Web  APIと通信して表⽰示や   更更新するような⼀一般的な   アプリの場合 118
  119. 119. Ⓒ Classmethod, Inc. 119 iOS  7,8   iPhone Android  4系   タブレットも同⼀一UI
  120. 120. Ⓒ Classmethod, Inc. 120 iOS  7,8   iPhone Android  4系   タブレットも同⼀一UI 若若⼲干Androidが多いかな   ※  弊社エンジニアの声を総合
  121. 121. Ⓒ Classmethod, Inc. 前提条件 121
  122. 122. Ⓒ Classmethod, Inc. 各OS専⽤用にUI/デザイン/機能 が設計されていること 122
  123. 123. Ⓒ Classmethod, Inc. iOS先⾏行行で決まる事が多いが、 Andoridの事も同時に   考えておかないと後で⼤大変 123
  124. 124. Ⓒ Classmethod, Inc. UI/デザイン/機能を   OS専⽤用に考えれば   ほとんど変わらない 124 iOSとAndroid開発でかかる   ⼯工数ってどれだけ違うの? 課題4のまとめ
  125. 125. Ⓒ Classmethod, Inc. 125 iOSとAndroidの特徴を   理理解すること。   コミュニケーションを   ⼤大切切にすること。 まとめ
  126. 126. Ⓒ Classmethod, Inc. おしまい 126

×