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

98
AbemaTV モバイルアプリの開発体制と 開発プロセスの話 Yuji Hato AbemaTV DEVELOPER CONFERENCE 2017

Upload: yuji-hato

Post on 22-Jan-2018

4.141 views

Category:

Software


1 download

TRANSCRIPT

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

AbemaTVモバイルアプリの開発体制と

開発プロセスの話

Yuji Hato

AbemaTV DEVELOPER CONFERENCE 2017

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

Yuji Hato

CyberAgent, Inc. / AbemaTV, Inc.

dekatotoro

@dekatotoro

Contributed services

About me

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

Agenda

ざっくりAbemaTV iOSチームってどうやって開発しているの?

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

開発体制

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

AbemaTV 開発局 50人〜

開発体制

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

開発体制

Server Web iOS AndroidDesignDirector QA

Board

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

開発体制

Server Web iOS AndroidDesignDirector QA

Board

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

開発体制

iOS AndroidDirector

ビデオ

グロース

本質改善

テレビデバイス

その他案件 A, B, C..

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

iOSチーム

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

iOSチーム 10名

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

iOSチーム 10名

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

iOSチーム

ビデオ グロース 本質改善 テレビデバイス

その他案件 A, B, C..

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

AbemaTV 対応デバイス

PC

iPhone / iPad

Android / タブレットApple TV

AndroidTV / Amazon Fire TV

Google Cast

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

AbemaTV 対応デバイス

PC

iPhone / iPad

Android / タブレットApple TV

AndroidTV / Amazon Fire TV

Google Cast

iOSチーム

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

Codebase

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

Codebase

ios … iOSアプリ

tvos … tvOSアプリ

api … API周りのモジュール

protobuf-swift … proto swift

cmdshelf-ios … script郡

etc.. (mock, tool, sample)

repositories

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

ios

Codebase

tvos

api

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

ios

Codebase

tvos

api

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

ios

Codebase

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

ios

Codebase

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

tvos

Codebase

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

tvos

Codebase

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

api

Codebase

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

api

Codebase

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

毎日の大量のコードの変更がされている

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

開発フロー

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

開発フロー

スプリント スプリント スプリント

2週間

スクラム開発

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

開発

QA

1週間 1週間

開発 開発 開発

QA QA

申請 申請 申請申請

QA

開発フロー

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

開発

QA

1週間 1週間

開発 開発 開発

QA QA

申請 申請 申請申請

QA

開発フロー

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

開発とQA期間の重複がつらい

開発フロー

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

改善

開発フロー

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

QA

1週間 1週間

QA QA

申請 申請 申請申請

QA 開発 開発 開発

開発フロー

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

QA

1週間 1週間

QA QA

申請 申請 申請申請

QA 開発 開発 開発

長い開発

開発フロー

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

QA

1週間 1週間

QA QA

申請 申請 申請申請

QA 開発 開発 開発

開発フロー

フライング開発できる人だけ

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

タスク

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

タスク

プロデューサー/プランナーが案件を立案

プロデューサー/プランナーがサービスの理想状態を定義し、それを実現させるための機能を考える

プロデューサー/プランナーとディレクター、エンジニアで内容すり合わせ。実現可能性を検討など。

ディレクター/エンジニアが細かい仕様に落とし込み案件化

パターン1

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

タスク

エンジニアがコード品質やパフォーマンス、継続的な開発のための施策を洗い出してタスク化

エンジニアがモックを作って「どうすか、これ?」

エンジニアが勝手に実装して「これ入れていいですか?」

パターン2

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

タスクの見積もり

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

タスクの見積もり

ストーリーポイント

1 … 軽微なもの

2 … 0.5スプリント

3 … 1スプリント、またはそれ以上

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

ストーリーポイント

1 … 軽微なもの

2 … 0.5スプリント

おおざっぱ !?

タスクの見積もり

3 … 1スプリント、またはそれ以上

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

優先度定義

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

優先度定義

優先度は5段階 S, A, B C, D

スプリント期間に開発完了 / テスト / リリース必須。定常リリース日に間に合わなければリリース日を遅らせる判断もする

スプリント期間に開発完了 / テスト / リリース必

須ではない。開発着手はするものの、開発締め日に間に合わなければ次回リリースに回す

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

会議体

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

会議体

スプリント計画

スプリントレビュー

iOSチーム定例(週一)

各自の案件ごとのミーティング

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

ツール

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

ツール

Slack

JIRA

Confluence

esa

GitHub

Jenkins

etc..

cmdshelf

Bitrise

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

ツール

Slack

JIRA

Confluence

esa

GitHub

Jenkins

etc..

cmdshelf

Bitrise

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

ツール

リモートリポジトリの実行可能ファイルをローカルファイルのように統合して扱える

https://github.com/toshi0383/cmdshelf

Swift製

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

ツールcmdshelf-ios repository

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

ツールcmdshelf-ios repository

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

ツールcmdshelf-ios repository

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

ツールcmdshelf-ios repository

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

開発スタイル

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

Pull RequestsCONTRIBUTING.md抜粋

開発スタイル

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

Pull Requestspull request 抜粋

活発なレビュー文化

開発スタイル

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

コーディング規約CONTRIBUTING.md抜粋

開発スタイル

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

テスト

Executed 2009 tests, with 0 failures (0 unexpected) in 20.517

(21.345) seconds

テスト極力書く!

2017/10/19

開発スタイル

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

週一の定例やGitHub、Slack上での議論から随時開発ルールを更新

開発スタイル

iOS定例シート

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

ブランチ戦略

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

ブランチ戦略

基本はGitHub Flow

各自トピックブランチをmaster / qaから作って作業

開発用のmasterブランチとQA用のqaブランチ

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

ブランチ戦略

qa

master

qa

merge merge

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

ブランチ戦略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

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

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

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

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

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

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

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

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開発

(できる人だけ)

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

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してる)

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

ブランチ戦略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

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

Beta配信

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

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull request

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

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull requestpull request

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

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull request

push, merge

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

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull request

継続的delivery

対象ブランチは以下master

qa

qa-xxxx

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

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull request

QA期間中delivery

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

Slack通知

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

Slack通知

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

Slack通知

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

Slack通知

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

Slack通知

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

Slack通知

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

Slack通知

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

Slack通知

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

Slack通知

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

QA効率化

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

QA効率化

QAやデバッグ用に様々なデバッグメニューを用意

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

CPU, メモリ使用率表示

QA効率化

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

リモート、ローカル通知のシミュレート

QA効率化

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

UserDefaults, Keychain, DB,

画像キャッシュの削除

QA効率化

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

1週間に何回起動したなどのサービスユーザ区分ステータスを変更

QA効率化

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

アニメーション速度の変更

QA効率化

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

再生動画のbitrateやresolution,

segmentファイルの転送時間などAVPlayerから取得できる情報を全て動画上にoverlay

QA効率化

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

ログ出力確認QAチームでは「iOS Console

」というツールで実機をつないで確認

QA効率化

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

その他

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

チーム内ランチ勉強会(隔週)カンファレンス登壇

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

まとめ

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

まとめ

開発スピードとアプリの安定性、コード品質を保った継続的な開発に取り組んでいます

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

Thank you

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

We’re hiring!

https://abe.ma/2gnzras