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.

AbemaTV モバイルアプリの開発体制と開発プロセスの話

5,816 views

Published on

AbemaTV DEVELOPER CONFERENCE 2017

Published in: Software
  • Be the first to comment

AbemaTV モバイルアプリの開発体制と開発プロセスの話

  1. 1. AbemaTV モバイルアプリの開発体制と 開発プロセスの話 Yuji Hato AbemaTV DEVELOPER CONFERENCE 2017
  2. 2. Yuji Hato CyberAgent, Inc. / AbemaTV, Inc. dekatotoro @dekatotoro Contributed services About me
  3. 3. Agenda ざっくりAbemaTV iOSチームってど うやって開発しているの?
  4. 4. 開発体制
  5. 5. AbemaTV 開発局 50人〜 開発体制
  6. 6. 開発体制 Server Web iOS AndroidDesignDirector QA Board
  7. 7. 開発体制 Server Web iOS AndroidDesignDirector QA Board
  8. 8. 開発体制 iOS AndroidDirector ビデオ グロース 本質改善 テレビデバイス その他案件 A, B, C..
  9. 9. iOSチーム
  10. 10. iOSチーム 10名
  11. 11. iOSチーム 10名
  12. 12. iOSチーム ビデオ グロース 本質改善 テレビデバイス その他案件 A, B, C..
  13. 13. AbemaTV 対応デバイス PC iPhone / iPad Android / タブレット Apple TV AndroidTV / Amazon Fire TV Google Cast
  14. 14. AbemaTV 対応デバイス PC iPhone / iPad Android / タブレット Apple TV AndroidTV / Amazon Fire TV Google Cast iOSチーム
  15. 15. Codebase
  16. 16. Codebase ios … iOSアプリ tvos … tvOSアプリ api … API周りのモジュール protobuf-swift … proto swift cmdshelf-ios … script郡 etc.. (mock, tool, sample) repositories
  17. 17. ios Codebase tvos api
  18. 18. ios Codebase tvos api
  19. 19. ios Codebase
  20. 20. ios Codebase
  21. 21. tvos Codebase
  22. 22. tvos Codebase
  23. 23. api Codebase
  24. 24. api Codebase
  25. 25. 毎日の大量のコードの変 更がされている
  26. 26. 開発フロー
  27. 27. 開発フロー スプリント スプリント スプリント 2週間 スクラム開発
  28. 28. 開発 QA 1週間 1週間 開発 開発 開発 QA QA 申請 申請 申請申請 QA 開発フロー
  29. 29. 開発 QA 1週間 1週間 開発 開発 開発 QA QA 申請 申請 申請申請 QA 開発フロー
  30. 30. 開発とQA期間の重複がつらい 開発フロー
  31. 31. 改善 開発フロー
  32. 32. QA 1週間 1週間 QA QA 申請 申請 申請申請 QA 開発 開発 開発 開発フロー
  33. 33. QA 1週間 1週間 QA QA 申請 申請 申請申請 QA 開発 開発 開発 長い開発 開発フロー
  34. 34. QA 1週間 1週間 QA QA 申請 申請 申請申請 QA 開発 開発 開発 開発フロー フライング開発 できる人だけ
  35. 35. タスク
  36. 36. タスク プロデューサー/プランナーが案件を立案 プロデューサー/プランナーがサービスの理想状態を定 義し、それを実現させるための機能を考える プロデューサー/プランナーとディレクター、エンジニ アで内容すり合わせ。実現可能性を検討など。 ディレクター/エンジニアが細かい仕様に落とし込み案 件化 パターン1
  37. 37. タスク エンジニアがコード品質やパフォーマンス、継続的な 開発のための施策を洗い出してタスク化 エンジニアがモックを作って「どうすか、これ?」 エンジニアが勝手に実装して「これ入れていいですか ?」 パターン2
  38. 38. タスクの見積もり
  39. 39. タスクの見積もり ストーリーポイント 1 … 軽微なもの 2 … 0.5スプリント 3 … 1スプリント、またはそれ以上
  40. 40. ストーリーポイント 1 … 軽微なもの 2 … 0.5スプリント おおざっぱ !? タスクの見積もり 3 … 1スプリント、またはそれ以上
  41. 41. 優先度定義
  42. 42. 優先度定義 優先度は5段階 S, A, B C, D スプリント期間に開発完了 / テスト / リリース必 須。定常リリース日に間に合わなければリリース 日を遅らせる判断もする スプリント期間に開発完了 / テスト / リリース必 須ではない。開発着手はするものの、開発締め日 に間に合わなければ次回リリースに回す
  43. 43. 会議体
  44. 44. 会議体 スプリント計画 スプリントレビュー iOSチーム定例(週一) 各自の案件ごとのミーティング
  45. 45. ツール
  46. 46. ツール Slack JIRA Confluence esa GitHub Jenkins etc.. cmdshelf Bitrise
  47. 47. ツール Slack JIRA Confluence esa GitHub Jenkins etc.. cmdshelf Bitrise
  48. 48. ツール リモートリポジトリの実行可能 ファイルをローカルファイルの ように統合して扱える https://github.com/toshi0383/cmdshelf Swift製
  49. 49. ツール cmdshelf-ios repository
  50. 50. ツール cmdshelf-ios repository
  51. 51. ツール cmdshelf-ios repository
  52. 52. ツール cmdshelf-ios repository
  53. 53. 開発スタイル
  54. 54. Pull Requests CONTRIBUTING.md抜粋 開発スタイル
  55. 55. Pull Requests pull request 抜粋 活発なレビュー文化 開発スタイル
  56. 56. コーディング規約 CONTRIBUTING.md抜粋 開発スタイル
  57. 57. テスト Executed 2009 tests, with 0 failures (0 unexpected) in 20.517 (21.345) seconds テスト極力書く! 2017/10/19 開発スタイル
  58. 58. 週一の定例やGitHub、 Slack上での議論から随時 開発ルールを更新 開発スタイル iOS定例シート
  59. 59. ブランチ戦略
  60. 60. ブランチ戦略 基本はGitHub Flow 各自トピックブランチをmaster / qaから 作って作業 開発用のmasterブランチとQA用のqaブランチ
  61. 61. ブランチ戦略 qa master qa merge merge
  62. 62. ブランチ戦略 master 2.3.0 開発 master 2.4.0 開発 tag 2.2.0 申請 qa master qa 2.2.0 QA qa 2.3.0 QA スプリント2.3.0 qa スプリント2.2.0 スプリント2.4.0 tag 2.3.0 申請 merge merge
  63. 63. master 2.3.0 開発 master 2.4.0 開発 tag 2.2.0 申請 qa master qa 2.2.0 QA qa 2.3.0 QA スプリント2.3.0 qa スプリント2.2.0 スプリント2.4.0 tag 2.3.0 申請 merge merge ブランチ戦略 スプリント2.3.0
  64. 64. master 2.3.0 開発 master 2.4.0 開発 tag 2.2.0 申請 qa master qa 2.2.0 QA qa 2.3.0 QA スプリント2.3.0 qa スプリント2.2.0 スプリント2.4.0 tag 2.3.0 申請 merge merge ブランチ戦略 2.3.0 開発期間中 はmaster
  65. 65. master 2.3.0 開発 master 2.4.0 開発 tag 2.2.0 申請 qa master qa 2.2.0 QA qa 2.3.0 QA スプリント2.3.0 qa スプリント2.2.0 スプリント2.4.0 tag 2.3.0 申請 merge merge ブランチ戦略 2.3.0 QA期間中 はqa
  66. 66. master 2.3.0 開発 master 2.4.0 開発 tag 2.2.0 申請 qa master qa 2.2.0 QA qa 2.3.0 QA スプリント2.3.0 qa スプリント2.2.0 スプリント2.4.0 tag 2.3.0 申請 merge merge ブランチ戦略 2.3.0 QA期間中の masterは2.4.0開発 (できる人だけ)
  67. 67. master 2.3.0 開発 master 2.4.0 開発 tag 2.2.0 申請 qa master qa 2.2.0 QA qa 2.3.0 QA スプリント2.3.0 qa スプリント2.2.0 スプリント2.4.0 tag 2.3.0 申請 merge merge ブランチ戦略 2.3.0申請後 qa -> masterにmerge (適時mergeしてる)
  68. 68. ブランチ戦略 master 2.3.0 開発 master 2.4.0 開発 tag 2.2.0 申請 qa master qa 2.2.0 QA qa 2.3.0 QA スプリント2.3.0 qa スプリント2.2.0 スプリント2.4.0 tag 2.3.0 申請 merge merge
  69. 69. Beta配信
  70. 70. Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request
  71. 71. Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request pull request
  72. 72. Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request push, merge
  73. 73. Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request 継続的 delivery 対象ブランチは以下 master qa qa-xxxx
  74. 74. Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request QA期間中delivery
  75. 75. Slack通知
  76. 76. Slack通知
  77. 77. Slack通知
  78. 78. Slack通知
  79. 79. Slack通知
  80. 80. Slack通知
  81. 81. Slack通知
  82. 82. Slack通知
  83. 83. Slack通知
  84. 84. QA効率化
  85. 85. QA効率化 QAやデバッグ用に様々なデバ ッグメニューを用意
  86. 86. CPU, メモリ使用率表示 QA効率化
  87. 87. リモート、ローカル通知のシ ミュレート QA効率化
  88. 88. UserDefaults, Keychain, DB, 画像キャッシュの削除 QA効率化
  89. 89. 1週間に何回起動したなどの サービスユーザ区分ステータ スを変更 QA効率化
  90. 90. アニメーション速度の変更 QA効率化
  91. 91. 再生動画のbitrateやresolution, segmentファイルの転送時間 などAVPlayerから取得できる 情報を全て動画上にoverlay QA効率化
  92. 92. ログ出力確認 QAチームでは「iOS Console 」というツールで実機をつな いで確認 QA効率化
  93. 93. その他
  94. 94. チーム内ランチ勉強会(隔週)カンファレンス登壇
  95. 95. まとめ
  96. 96. まとめ 開発スピードとアプリの安定性、 コード品質を保った継続的な開発 に取り組んでいます
  97. 97. Thank you
  98. 98. We’re hiring! https://abe.ma/2gnzras

×