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

Post on 22-Jan-2018

4.138 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

開発プロセスの話

Yuji Hato

AbemaTV DEVELOPER CONFERENCE 2017

Yuji Hato

CyberAgent, Inc. / AbemaTV, Inc.

dekatotoro

@dekatotoro

Contributed services

About me

Agenda

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

開発体制

AbemaTV 開発局 50人〜

開発体制

開発体制

Server Web iOS AndroidDesignDirector QA

Board

開発体制

Server Web iOS AndroidDesignDirector QA

Board

開発体制

iOS AndroidDirector

ビデオ

グロース

本質改善

テレビデバイス

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

iOSチーム

iOSチーム 10名

iOSチーム 10名

iOSチーム

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

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

AbemaTV 対応デバイス

PC

iPhone / iPad

Android / タブレットApple TV

AndroidTV / Amazon Fire TV

Google Cast

AbemaTV 対応デバイス

PC

iPhone / iPad

Android / タブレットApple TV

AndroidTV / Amazon Fire TV

Google Cast

iOSチーム

Codebase

Codebase

ios … iOSアプリ

tvos … tvOSアプリ

api … API周りのモジュール

protobuf-swift … proto swift

cmdshelf-ios … script郡

etc.. (mock, tool, sample)

repositories

ios

Codebase

tvos

api

ios

Codebase

tvos

api

ios

Codebase

ios

Codebase

tvos

Codebase

tvos

Codebase

api

Codebase

api

Codebase

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

開発フロー

開発フロー

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

2週間

スクラム開発

開発

QA

1週間 1週間

開発 開発 開発

QA QA

申請 申請 申請申請

QA

開発フロー

開発

QA

1週間 1週間

開発 開発 開発

QA QA

申請 申請 申請申請

QA

開発フロー

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

開発フロー

改善

開発フロー

QA

1週間 1週間

QA QA

申請 申請 申請申請

QA 開発 開発 開発

開発フロー

QA

1週間 1週間

QA QA

申請 申請 申請申請

QA 開発 開発 開発

長い開発

開発フロー

QA

1週間 1週間

QA QA

申請 申請 申請申請

QA 開発 開発 開発

開発フロー

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

タスク

タスク

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

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

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

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

パターン1

タスク

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

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

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

パターン2

タスクの見積もり

タスクの見積もり

ストーリーポイント

1 … 軽微なもの

2 … 0.5スプリント

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

ストーリーポイント

1 … 軽微なもの

2 … 0.5スプリント

おおざっぱ !?

タスクの見積もり

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

優先度定義

優先度定義

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

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

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

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

会議体

会議体

スプリント計画

スプリントレビュー

iOSチーム定例(週一)

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

ツール

ツール

Slack

JIRA

Confluence

esa

GitHub

Jenkins

etc..

cmdshelf

Bitrise

ツール

Slack

JIRA

Confluence

esa

GitHub

Jenkins

etc..

cmdshelf

Bitrise

ツール

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

https://github.com/toshi0383/cmdshelf

Swift製

ツールcmdshelf-ios repository

ツールcmdshelf-ios repository

ツールcmdshelf-ios repository

ツールcmdshelf-ios repository

開発スタイル

Pull RequestsCONTRIBUTING.md抜粋

開発スタイル

Pull Requestspull request 抜粋

活発なレビュー文化

開発スタイル

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

開発スタイル

テスト

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

(21.345) seconds

テスト極力書く!

2017/10/19

開発スタイル

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

開発スタイル

iOS定例シート

ブランチ戦略

ブランチ戦略

基本はGitHub Flow

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

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

ブランチ戦略

qa

master

qa

merge merge

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

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

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

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

(できる人だけ)

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

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

Beta配信

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull request

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull requestpull request

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull request

push, merge

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull request

継続的delivery

対象ブランチは以下master

qa

qa-xxxx

Beta配信

bitriseGitHub

iTunes

ConnectTestFlight

Crashlytics

Tester

Designer

Others

Developer

hook delivery

pull request

QA期間中delivery

Slack通知

Slack通知

Slack通知

Slack通知

Slack通知

Slack通知

Slack通知

Slack通知

Slack通知

QA効率化

QA効率化

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

CPU, メモリ使用率表示

QA効率化

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

QA効率化

UserDefaults, Keychain, DB,

画像キャッシュの削除

QA効率化

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

QA効率化

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

QA効率化

再生動画のbitrateやresolution,

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

QA効率化

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

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

QA効率化

その他

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

まとめ

まとめ

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

Thank you

We’re hiring!

https://abe.ma/2gnzras

top related