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.

ヘルスケアサービス開発の裏側 〜品質と開発効率の両立〜 [DeNA TechCon 2019]

257 views

Published on

DeNAでは複数のヘルスケアサービスを開発しています。我々はこれらのサービスを通してユーザーの意識や行動を変え、それによって健康寿命をのばし、日本の医療費増大を抑制することを試みています。
これらのサービス開発過程では、多数のステークホルダーがいる中でシステムが複雑化していたり、セキュリティレベルの維持と開発スピードの両立が困難、などの課題がありました。本発表ではこれらに対する以下の試みについて話します。
■オンプレミス環境からクラウドに移行してマイクロサービス化する試み
■セキュアな状態と開発スピード向上の両立を図る試み

Published in: Healthcare
  • Be the first to comment

ヘルスケアサービス開発の裏側 〜品質と開発効率の両立〜 [DeNA TechCon 2019]

  1. 1. #denatechcon ヘルスケアサービス開発の裏側 ~品質と開発効率の両立~ DeSCヘルスケア株式会社 池松 恭平 四方 裕
  2. 2. #denatechcon DeNAでは、 どのようなヘルスケアサービスを提供し、 それらをどのように開発していているのか?
  3. 3. #denatechcon DeNAのヘルスケアサービス バックエンドのアーキテクチャ刷新 リーン開発と仕組み化
  4. 4. #denatechcon そもそもDeNAでは、 どのようなヘルスケアサービスを提供しているのか?
  5. 5. #denatechcon 有名(?)どころ
  6. 6. #denatechcon 実は、2015年からほかにも色々 健診結果閲覧や健康情報 歩くだけでdポイントを獲得 歩いてキャラを育成 生活習慣病リスクの予測 KenCoM 歩いておトク さんぽジスタ ひさやま元気予報
  7. 7. #denatechcon Q. なぜこのようなサービスを? A. 健康寿命を延ばすために
  8. 8. #denatechcon 普通に過ごした Aさん 30歳で大きな病気になり その後は療養を継続 健康寿命70年 人生 人生 0歳 80歳 0歳 80歳 70歳で大きな病気になり その後は療養を継続20代で我々の プロダクトを利用し始め、 意識や行動が変わる 我々のプロダクトに 出会ったAさん 健康寿命30年 🙂🙂 🙂🙂 🤮🤮 🤮🤮😳😳
  9. 9. #denatechcon 1つのプロダクトだけで 多くの人の健康寿命を、大幅に伸ばすのは、 容易ではない
  10. 10. #denatechcon 🙂🙂 睡眠 健診結果 の閲覧 疾患リスク の予測 運動 (歩数向上) 食事 禁煙 ・・・ ・・・ 🙂🙂🙂🙂 健康に資する多くのプロダクトを提供し、 多くの人々の健康寿命の延伸を実現したい
  11. 11. #denatechcon 人生 0歳 80歳 70歳で大きな病気になり その後は療養を継続プロダクトを利用し始め、 意識や行動が変わる 長期にわたってプロダクトを使い続けていただき、 健康になり、健康状態を維持していただくことが重要 🤮🤮😄😄 😳😳
  12. 12. #denatechcon 長期間にわたって使い続けていただくためには、 機能面で重要なことと、 技術面で重要なことがある
  13. 13. #denatechcon 機能面では、長期にわたって無理なく、 自然に、楽しく利用していただくための仕組みが重要 ・今日はあと3,000歩、歩いてください ・お昼ご飯は700キロカロリーまでにしてくださいね 人生 0歳 80歳 🙂🙂 ・会社の同僚とチームを組んで、歩数を競う ・知らない人同士で励まし合いながら、減量に挑む 楽しく続けられる 無機質で続けにくい😒😒 😄😄
  14. 14. #denatechcon 技術面では、 セキュリティなどの品質を担保しつつ、 長期にわたりスピードを維持して開発できる アーキテクチャやプロセスが重要
  15. 15. #denatechcon DeNAのヘルスケアサービス バックエンドのアーキテクチャ刷新 リーン開発と仕組み化
  16. 16. #denatechcon セキュリティなどの品質を担保しつつ、 長期にわたりスピードを維持して開発できる アーキテクチャやプロセスが重要なのですが・・・
  17. 17. #denatechcon 技術面では、 セキュリティなどの品質を担保しつつ、 長期にわたりスピードを維持して開発できる ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ アーキテクチャやプロセスが重要 ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ アーキテクチャやプロセスが起因で、開発スピードが低下
  18. 18. #denatechcon 具体的な状況
  19. 19. #denatechcon 提携先 バックエンド 2015年くらいの最初のころ ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・健診結果 プロダクト サービス1 サービス2 エンジニア データ連携 4. 少人数(数名)での開発 3. 数個のマイクロ(?)サービス 2. ごく少数の外部連携 😃😃 😃😃 😃😃 1. 少数のプロダクト
  20. 20. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア ・・・ データ連携 データ連携 数年後(最近の状態) 😰😰 😰😰 😰😰 😰😰 😰😰
  21. 21. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 プロダクト数が増加 増加したプロダクト ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰
  22. 22. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 自社以外の外部プロダクトとの連携が追加 外部プロダクトとの連携 ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰 OAuth
  23. 23. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 提携先が増え、IFが多様な外部連携が増加 増加した外部連携 (しかもIFは多様) ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰
  24. 24. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 プロダクトや機能の増加に伴い、サービスが増加 増加したサービス (分割が割と適当) ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰
  25. 25. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 巨大サービスの登場 ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰 元マイクロサービス
  26. 26. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 数名だったエンジニアは十数名~数十名に増加 増加したエンジニア (色々なサービスを触る) ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰
  27. 27. #denatechcon 提携先 バックエンド 2015年くらいの最初のころ(再掲) ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・健診結果 プロダクト サービス1 サービス2 エンジニア データ連携 4. 少人数(数名)での開発 3. 数個のマイクロ(?)サービス 2. ごく少数の外部連携 😃😃 😃😃 😃😃 1. 少数のプロダクト
  28. 28. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 数年後(再掲) 増加したプロダクト 外部プロダクトとの連携 増加した外部連携 (しかもIFは多様) 増加したサービス (分割が割と適当) 増加したエンジニア (色々なサービスを触る) ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰 元マイクロサービス
  29. 29. #denatechcon 事業を前に進めるために、 新機能開発に注力して、数年間を過ごしてきた
  30. 30. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 1. サービス分割が不適切で、密結合 2. 改修時の影響範囲が広大 長期間にわたりスピードを維持して開発することは困難な状態に ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰 3. 調査やQAコストがかかりかつ、 エンジニアが増えた割に開発スピードが低下
  31. 31. #denatechcon しかし、我々が目指したいのは…
  32. 32. #denatechcon 睡眠改善 健診結果 の閲覧 疾患リスク の予測 運動促進 (歩数向上) ダイエット 禁煙 ・・・ ・・・ 😄😄 😄😄😄😄 健康に資する多くのプロダクトを提供し、 多くの人々の健康寿命の延伸を実現したい(しかもスピード感を持って)
  33. 33. #denatechcon アーキテクチャ刷新でやろうとしていること
  34. 34. #denatechcon 外部プロダクト 提携先1 ・認証 ・ポイント ・メディア ・歩数計測 ・お知らせ ・OAuth ・体験談 ・… ・健診結果 ・処方箋情報 ・… 提携先N ・ ・ ・ サービス1 サービス2 プロダクト1 プロダクトN ・ ・ ・ ・管理ツール 系機能その1 サービス4 ・管理ツール 系機能その2 ・XX機能 サービス3 サービスN ・・・ エンジニア データ連携 データ連携 1. サービス分割が不適切で、密結合 2. 改修時の影響範囲が広大 このような複雑性が増した状態から ・・・ 😰😰 😰😰 😰😰 😰😰 😰😰 3. 調査やQAコストがかかりかつ、 人が増えた割に開発スピードが低下
  35. 35. #denatechcon マイクロ サービス郡 外部プロダクト 提携先1 このような状態へ変えたい 健診結果 提携先N ・ ・ ・ プロダクト1 プロダクトN ・ ・ ・ BFF (管理ツール) ・・・ データ連携 データ連携 BFF BFF BFF ・ ・ ・ 処方箋情報 認証 ポイント 歩数 iOS/Android エンジニア フロントエンド エンジニアなど サーバーサイド エンジニア 3. プロダクトやサービスと、 チームの対応付け 1. サービスの分割と統合2. BFF構成 (Backend For Frontend)
  36. 36. #denatechcon マイクロ サービス郡 外部プロダクト 提携先1 1. サービスの分割と統合 健診結果 提携先N ・ ・ ・ プロダクト1 プロダクトN ・ ・ ・ BFF (管理ツール) ・・・ データ連携 データ連携 BFF BFF BFF ・ ・ ・ 処方箋情報 認証 ポイント 歩数 iOS/Android エンジニア フロントエンド エンジニアなど サーバーサイド エンジニア巨大なサービスを分割し、改修時の影響範囲を限定可能にし、 さらに複数プロダクトから利用する機能、例えば、 ポイント、歩数などのライフログ系機能を共通化する 1. サービスの分割と統合
  37. 37. #denatechcon マイクロ サービス郡 外部プロダクト 提携先1 2. BFF構成 健診結果 提携先N ・ ・ ・ プロダクト1 プロダクトN ・ ・ ・ BFF (管理ツール) ・・・ データ連携 データ連携 BFF BFF BFF ・ ・ ・ 処方箋情報 認証 ポイント 歩数 iOS/Android エンジニア フロントエンド エンジニアなど サーバーサイド エンジニア バックエンドのマイクロサービスのAPIレスポンスを集約し、 プロダクトごとに求められる形式で返したり、viewを生成する 2. BFF構成 (Backend For Frontend)
  38. 38. #denatechcon マイクロ サービス郡 外部プロダクト 提携先1 3. プロダクトやサービスと、チームの対応付け 健診結果 提携先N ・ ・ ・ プロダクト1 プロダクトN ・ ・ ・ BFF (管理ツール) ・・・ データ連携 データ連携 BFF BFF BFF ・ ・ ・ 処方箋情報 認証 ポイント 歩数 iOS/Android エンジニア フロントエンド エンジニアなど サーバーサイド エンジニア マイクロサービス、BFF、プロダクトごとなどにチームを対応付け、
 エンジニアの人数に応じたスピードを出せるようにする 3. プロダクトやサービスと、 チームの対応付け
  39. 39. #denatechcon 実現のための大方針
  40. 40. #denatechcon 今のプロダクトや環境は、 一旦今までの環境で開発を続けて… ・・・ ・・・ ・・・ ・・・ ・・・
  41. 41. #denatechcon 新規プロダクトを、新環境で開発 マイクロ サービス郡 提携先 健診結果 BFF (管理ツール) ・・・ データ連携 BFF 認証 ポイント 歩数フロントエンド エンジニアなど サーバーサイド エンジニア iOS/Android エンジニア 新規プロダクト 新環境
  42. 42. #denatechcon 新環境に機能を拡充しつつ… マイクロ サービス郡 提携先 健診結果 BFF (管理ツール) ・・・ データ連携 BFF 認証 ポイント 歩数 新機能 新機能フロントエンド エンジニアなど サーバーサイド エンジニア iOS/Android エンジニア
  43. 43. #denatechcon ・・・ ・・・ ・・・ ・・・ ・・・ マイクロ サービス郡 提携先 健診結果 BFF (管理ツール) ・・・ データ連携 BFF 認証 ポイント 歩数 BFF 新機能 新機能 既存環境のプロダクトを、 段階的に新環境に移行 フロントエンド エンジニアなど サーバーサイド エンジニア iOS/Android エンジニア
  44. 44. #denatechcon 今までの環境はそのまま 新しい環境にあるべき姿を構築 既存プロダクトを新環境に移行
  45. 45. #denatechcon 新環境の技術スタック
  46. 46. #denatechcon マイクロ サービス郡 提携先 健診結果 BFF (管理ツール) ・・・ データ連携 BFF 認証 ポイント 歩数 フロントエンド エンジニアなど サーバーサイドエン ジニア iOS/Android エンジニア 新環境の技術スタック:基盤 今までオンプレスミスにおいて、Linuxサーバー上に構築する形だったのを、 新環境はGCP上に構築し、コンテナとマネージドサービスを活用する形で構築 セキュリティなど非機能要件についての懸念があったが、GKEを用いたかったのと、 懸念は運用や構成の工夫によって払拭していく、という方針のもと、GCPの利用を決定
  47. 47. #denatechcon マイクロ サービス郡 提携先 健診結果 BFF (管理ツール) ・・・ データ連携 BFF 認証 ポイント 歩数 フロントエンド エンジニアなど サーバーサイドエン ジニア iOS/Android エンジニア 新環境の技術スタック:アプリケーション Kubernetes(GKE) と Istio サービス間の通信制限、サービス間通信の暗号化、 outbound通信の制限などのセキュリティ要件も実現
  48. 48. #denatechcon マイクロ サービス郡 提携先 健診結果 BFF (管理ツール) ・・・ データ連携 BFF 認証 ポイント 歩数 フロントエンド エンジニアなど サーバーサイドエン ジニア iOS/Android エンジニア 新環境の技術スタック:データストア DBには Cloud SQL キャッシュには Cloud Memorystore オブジェクトストレージには Cloud Storage インターネットから直接アクセスできないように設定
  49. 49. #denatechcon マイクロ サービス郡 提携先 健診結果 BFF (管理ツール) ・・・ データ連携 BFF 認証 ポイント 歩数 フロントエンド エンジニアなど サーバーサイドエン ジニア iOS/Android エンジニア BFFは Node.js 新環境の技術スタック:言語 マイクロサービスは Golang
  50. 50. #denatechcon マイクロ サービス郡 提携先 健診結果 BFF (管理ツール) ・・・ データ連携 BFF 認証 ポイント 歩数 フロントエンド エンジニアなど サーバーサイドエン ジニア iOS/Android エンジニア 新環境の技術スタック:その他 その他にも以下などを用い、各種データへの参照ログ取得、 許可されていないデータ参照や通信発生時の検知、暗号化鍵の管理を実施   ・ロギング  :Stackdriver Logging   ・監視    :Stackdriver Monitoring   ・分散トレース:Stackdriver Trace   ・脆弱性対策 :Cloud Armor(脆弱性対策は他にも色々)   ・暗号化鍵管理:Cloud KMS   ・ログ分析  :BigQuery
  51. 51. #denatechcon マネージドサービスの活用により、セキュリティなどの 非機能要件をライトに実現できるように、 新環境の構築を進行中
  52. 52. #denatechcon 現プロダクトの移行方法の詳細化や、 同じ過ちを繰り返さないための開発体制の構築も、 現在進行中
  53. 53. #denatechcon 睡眠改善 健診結果 の閲覧 疾患リスク の予測 運動促進 (歩数向上) ダイエット 禁煙 ・・・ ・・・ 😄😄 😄😄😄😄 使っていると、自然に、楽しく健康になれる多くのプロダクトを提供し、 多くの人々の健康寿命の延伸を実現していく
  54. 54. #denatechcon ここまでのまとめ DeNAのヘルスケアサービス  ・使っていると自然に健康になれる多くのプロダクトを提供し、   長期間にわたって利用していただくことで、多くの人々の健康寿命を延伸 バックエンドの課題  ・数年間の運営により複雑性が増しており、開発スピードが低下 課題に対する取り組み  ・GCP上にマネージドサービスを活用した新環境を構築し、   新環境にて再設計を行い、既存プロダクトを移行
  55. 55. #denatechcon ここまでの話し手の自己紹介 池松 恭平(いけまつ きょうへい)   ・2014年に新卒でDeNA入社し、今5年目   ・DeNA入社後はEC系サービスやSNSサービスの    バックエンド開発、システムリプレイス等に従事   ・約2年前の2016年度後半から、ヘルスケア事業部にて    バックエンド開発や、グループリーダー等に従事
  56. 56. #denatechcon DeNAのヘルスケアサービス バックエンドのアーキテクチャ刷新 リーン開発と仕組み化
  57. 57. #denatechcon リーン開発と設計
  58. 58. #denatechcon 自己紹介 四方 裕(しかた ひろし) • 元海上自衛隊員 • iOSアプリエンジニア & モバイルテックリード • 2018年6月 DeNA入社 • ヘルスケア事業部にて新規サービスを開発中
  59. 59. #denatechcon 前提 • 自社サービス × 新規開発 × 内製 • 大枠のテーマが決まっており、テーマに沿ったサービスを開発 - 例) 歩く×ゲーミフィケーション、減量×コーチング • 開発チームは少数精鋭のスペシャリスト構成
  60. 60. #denatechcon ヘルスケア領域の特性
  61. 61. #denatechcon 睡眠改善 健診結果 の閲覧 疾患リスク の予測 運動促進 (歩数向上) ダイエット 禁煙 ・・・ ・・・ 😄😄 😄😄😄😄 使っていると、自然に、楽しく健康になれる多くのプロダクトを提供し、 多くの人々の健康寿命の延伸を実現していく
  62. 62. #denatechcon 人生 0歳 80歳 70歳で大きな病気になり その後は療養を継続プロダクトを利用し始め、 意識や行動が変わる 長期にわたってプロダクトを使い続けていただき、 健康になり、健康状態を維持していただくことが重要 🤮🤮😄😄 😳😳
  63. 63. #denatechcon ヘルスケア領域の特性 セキュリティ → セキュリティ、再利用性、保守性、拡張性が求められる サービスの運用期間が長い (使い続けることで価値が生まれる)(センシティブな情報を扱う) 複数プロダクト並走 (市場規模が大きく、課題や切り口が多い)
  64. 64. #denatechcon モバイルアプリ開発の現在
  65. 65. #denatechcon モバイルアプリ開発の現在 変化し続ける環境 誰でも無料で高品質のアプリを使えるスマートフォン完全普及 → リリースまでの速度と初回リリース時点で高い完成度が求められる
  66. 66. #denatechcon Chat Feed Security Animation Scalability Notification Maintainability Offline Background
  67. 67. #denatechcon 不確定要素の多いプロダクト開発
  68. 68. #denatechcon Planning Development Release
  69. 69. #denatechcon Planning Development Release 👻👻 👻👻 👻👻👻👻 実際に作り始めるといろいろな問題が発覚する
  70. 70. #denatechcon Planning Development Release 👻👻 👻👻 👻👻👻👻 😇😇😱😱😨😨😐😐 問題の発覚がリリースに近づくほどダメージが大きくなる
  71. 71. #denatechcon 機能や品質をあきらめるパターン
  72. 72. #denatechcon Planning Development Release 🛴🛴🚗🚗 🚲🚲🛠🛠 🛵🛵 👻👻 👻👻 👻👻👻👻
  73. 73. #denatechcon リリースする?
  74. 74. #denatechcon 📦📦お蔵入り リリースする? No
  75. 75. #denatechcon 📦📦お蔵入り リリースする? Yes No 🏚🏚誰も使わない
  76. 76. #denatechcon 📦📦お蔵入り リリースする? 保守し続ける? Yes No 🏚🏚誰も使わない
  77. 77. #denatechcon 📦📦お蔵入り リリースする? 保守し続ける? Yes No 🏚🏚誰も使わない No
  78. 78. #denatechcon 📦📦お蔵入り リリースする? 保守し続ける? Yes No 🏚🏚誰も使わない 🧟🧟ゾンビ化 Yes No
  79. 79. #denatechcon 後手に回るパターン
  80. 80. #denatechcon Planning Development 開発が終わらずリリースが遅れる Release 👻👻 👻👻 👻👻👻👻
  81. 81. #denatechcon Planning Development 最初から完璧な要件や仕様を固めようと頑張るも… Release
  82. 82. #denatechcon Planning Development 👻👻 👻👻 👻👻👻👻 実際に作ってみるとやっぱり問題が起こってリリースが見えなくなる
  83. 83. #denatechcon 開発をあきらめる?
  84. 84. #denatechcon 📦📦お蔵入り 開発をあきらめる? Yes
  85. 85. #denatechcon 📦📦お蔵入り 開発をあきらめる? 開発期間を延長する? Yes No
  86. 86. #denatechcon 📦📦お蔵入り 開発をあきらめる? 💸💸コスト増 ⏱リリースが遅れる 開発期間を延長する? Yes No Yes
  87. 87. #denatechcon 📦📦お蔵入り 開発をあきらめる? 💸💸コスト増 ⏱リリースが遅れる 開発期間を延長する? Yes No Yes No 品質や機能を削減する?
  88. 88. #denatechcon 📦📦お蔵入り 開発をあきらめる? 💸💸コスト増 ⏱リリースが遅れる 開発期間を延長する? Yes No Yes No 品質や機能を削減する? 「機能や品質をあきらめるパターン」へ Yes 🧟🧟
  89. 89. #denatechcon 📦📦お蔵入り 開発をあきらめる? 😇😇デスマ 💸💸コスト増 ⏱リリースが遅れる 開発期間を延長する? Yes No Yes No 品質や機能を削減する? No 「機能や品質をあきらめるパターン」へ Yes
  90. 90. #denatechcon Prototyping
  91. 91. #denatechcon Prototyping & Planning Development Release
  92. 92. #denatechcon Prototyping • 実際の端末とリアルに近いデータで一通り触れるものを作る • 議論はプロトタイプをたたき台にする • 使ってみたい技術やライブラリなどもこの時点で試してみる

  93. 93. #denatechcon Prototyping & Planning Development Release 👻👻 👻👻 👻👻👻👻 🛠🛠 🚗🚗🛠🛠🚲🚲🚗🚗🛵🛵
  94. 94. #denatechcon Planning Development Release 👻👻 👻👻 👻👻👻👻 👻👻 👻👻 👻👻👻👻 Prototyping & Planning Development Release
  95. 95. #denatechcon Dog fooding と alpha / beta test
  96. 96. #denatechcon Prototyping & Planning Development Releasealpha / beta test
  97. 97. #denatechcon Prototyping & Planning Development Release Dog fooding alpha / beta test
  98. 98. #denatechcon Dog fooding • プランナーもデザイナーも開発者も、とにかく自分で使ってみる • 開発中のアプリは関係者へ常に配信する • UIやドメインモデルを積極的にブラッシュアップしていく

  99. 99. #denatechcon alpha / beta test • フェーズ、完成度によって配布対象を広げていく • フィードバックは常に収集して定期的に棚卸し、プロダクトに反映する • 本当に健康に効果があるのかデータを集める

  100. 100. #denatechcon Prototyping & Planning Development Release 👻👻 👻👻👻👻 🚲🚲 🚙🚙🚗🚗🛵🛵 alpha / beta test 🚐🚐🚙🚙 👻👻 Dog fooding 🚗🚗🚐🚐
  101. 101. #denatechcon 配布を使い分ける
  102. 102. #denatechcon 目的 Apple Developer ビルド 端末登録 配布方法 インストール制限 Dog fooding AppStore AdHoc 必要 社内beta Enterprise InHouse 不要 社外beta(Closed) AppStore AppStore 不要 Apple ID 社外beta(Open) AppStore AppStore 不要 OTA Webページ(https) ※インストール制限はないが ページへのアクセス制限が必 要
  103. 103. #denatechcon 配布を使い分ける • Enterpriseは社内なら端末登録やアカウント設定の必要なく配布できる • AppStoreとEnterprise両方をうまく使い分ける • AppStoreとEnterpriseでBundle Identifier は共通化できない

  104. 104. #denatechcon 変更に強い仕組み
  105. 105. #denatechcon Prototyping & Planning Development Release Dog fooding alpha / beta test
  106. 106. #denatechcon Prototyping & Planning Development Release 👻👻 👻👻 👻👻👻👻 😨😨🙁🙁😐😐🙂🙂 alpha / beta test
  107. 107. #denatechcon Prototyping & Planning Development Release 👻👻 👻👻 👻👻👻👻 🙂🙂🤖🤖 alpha / beta test 🙂🙂🤖🤖 🙂🙂🤖🤖 🙂🙂🤖🤖
  108. 108. #denatechcon データモデルの変更
  109. 109. #denatechcon API DocsAPI Spec API Server Backend Mobile App App • APIClient • DataModel
  110. 110. #denatechcon API DocsAPI Spec API Server Backend Mobile App App • APIClient • DataModel バージョン管理が必要 陳腐化しやすい APIが開発されるまでサーバがない 仕様と実装の差異が生まれる
  111. 111. #denatechcon Swagger とコード自動生成
  112. 112. #denatechcon API Spec
  113. 113. #denatechcon Backend Mobile App API Spec PR PR
  114. 114. #denatechcon Backend Mobile App API Spec PR PR Open API Generator API Lib • APIClient • DataModel
  115. 115. #denatechcon Backend Mobile App API Spec PR PR Open API Generator API Lib • APIClient • DataModel CocoaPods Carthage
  116. 116. #denatechcon Backend Mobile App API Spec API Docs Mock Server PR PR Open API Generator API Lib • APIClient • DataModel Docker CocoaPods Carthage
  117. 117. #denatechcon UIや画面遷移の変更
  118. 118. #denatechcon 画面の独立性を担保する
  119. 119. #denatechcon Storyboard ViewController A ViewController B ViewController C Monolithic Storyboard
  120. 120. #denatechcon Storyboard ViewController A ViewController B ViewController C Monolithic Storyboard • ダイナミックな画面の繋ぎ変えが複雑化 • 画面遷移の責務が曖昧になる • 複数人開発でコンフリクトする
  121. 121. #denatechcon ViewController A Storyboard ViewController B Storyboard ViewController C Storyboard 1 ViewController - 1 Storyboard & Routing AppDelegate RootController
  122. 122. #denatechcon リソースへの安全なアクセス
  123. 123. #denatechcon Resources • Storyboard • Text • Image • Color App
  124. 124. #denatechcon Resources R.swift • Storyboard • Text • Image • Color Generated Code SwiftGen App
  125. 125. #denatechcon Resources R.swift • Storyboard • Text • Image • Color Generated Code SwiftGen App
  126. 126. #denatechcon Prototyping & Planning Development Release 👻👻 👻👻 👻👻👻👻 🙂🙂🤖🤖 alpha / beta test 🙂🙂🤖🤖 🙂🙂🤖🤖 🙂🙂🤖🤖
  127. 127. #denatechcon まとめ • モバイルアプリは成熟期に入り、開発難易度は上がってきている • 最初から完璧を目指すのではなく、素早く効率的に失敗する • 変更に強い仕組みでプロダクトのブラッシュアップを支える

  128. 128. #denatechcon 告知 • エンジニア募集中 • オートモーティブ×ヘルスケア TechNight • 2019/3/6 

  129. 129. #denatechcon

×