Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Yuji Hato
PPTX, PDF
8,380 views
AbemaTV モバイルアプリの開発体制と開発プロセスの話
AbemaTV DEVELOPER CONFERENCE 2017
Software
◦
Read more
12
Save
Share
Embed
Embed presentation
Download
Downloaded 24 times
1
/ 98
2
/ 98
3
/ 98
4
/ 98
5
/ 98
6
/ 98
7
/ 98
8
/ 98
9
/ 98
10
/ 98
11
/ 98
12
/ 98
13
/ 98
14
/ 98
15
/ 98
16
/ 98
17
/ 98
18
/ 98
19
/ 98
20
/ 98
21
/ 98
22
/ 98
23
/ 98
24
/ 98
25
/ 98
26
/ 98
27
/ 98
28
/ 98
29
/ 98
30
/ 98
31
/ 98
32
/ 98
33
/ 98
34
/ 98
35
/ 98
36
/ 98
37
/ 98
38
/ 98
39
/ 98
40
/ 98
41
/ 98
42
/ 98
43
/ 98
44
/ 98
45
/ 98
46
/ 98
47
/ 98
48
/ 98
49
/ 98
50
/ 98
51
/ 98
52
/ 98
53
/ 98
54
/ 98
55
/ 98
56
/ 98
57
/ 98
58
/ 98
59
/ 98
60
/ 98
61
/ 98
62
/ 98
63
/ 98
64
/ 98
65
/ 98
66
/ 98
67
/ 98
68
/ 98
69
/ 98
70
/ 98
71
/ 98
72
/ 98
73
/ 98
74
/ 98
75
/ 98
76
/ 98
77
/ 98
78
/ 98
79
/ 98
80
/ 98
81
/ 98
82
/ 98
83
/ 98
84
/ 98
85
/ 98
86
/ 98
87
/ 98
88
/ 98
89
/ 98
90
/ 98
91
/ 98
92
/ 98
93
/ 98
94
/ 98
95
/ 98
96
/ 98
97
/ 98
98
/ 98
More Related Content
PDF
VPC Reachability Analyzer 使って人生が変わった話
by
Noritaka Sekiyama
PDF
Teslaにおけるコンピュータビジョン技術の調査 (2)
by
Kazuyuki Miyazawa
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
PPTX
組織利用におけるMFA管理方法を考える OpsJAWS Meetup#8
by
Kohei Hoshi
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
by
NTT DATA Technology & Innovation
PDF
社内ドキュメント検索システム構築のノウハウ
by
Shinsuke Sugaya
PDF
MLflow + Kubeflow MLプラットフォーム事例 #sparktokyo
by
Yahoo!デベロッパーネットワーク
VPC Reachability Analyzer 使って人生が変わった話
by
Noritaka Sekiyama
Teslaにおけるコンピュータビジョン技術の調査 (2)
by
Kazuyuki Miyazawa
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
組織利用におけるMFA管理方法を考える OpsJAWS Meetup#8
by
Kohei Hoshi
マイクロサービス 4つの分割アプローチ
by
増田 亨
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
by
NTT DATA Technology & Innovation
社内ドキュメント検索システム構築のノウハウ
by
Shinsuke Sugaya
MLflow + Kubeflow MLプラットフォーム事例 #sparktokyo
by
Yahoo!デベロッパーネットワーク
What's hot
PDF
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
PDF
モノタロウの商品データ連携について
by
株式会社MonotaRO Tech Team
PDF
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
by
都元ダイスケ Miyamoto
PDF
[AKIBA.AWS] VPN接続とルーティングの基礎
by
Shuji Kikuchi
PPTX
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
PDF
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
by
Yoshitaka Kawashima
PDF
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
by
Yahoo!デベロッパーネットワーク
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
3分でわかるAzureでのService Principal
by
Toru Makabe
PDF
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
by
Yahoo!デベロッパーネットワーク
PDF
Laravelを用いたゲームサーバーのチューニング
by
NOW PRODUCTION
PDF
Teslaにおけるコンピュータビジョン技術の調査
by
Kazuyuki Miyazawa
PDF
SolrとElasticsearchを比べてみよう
by
Shinsuke Sugaya
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
PDF
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
by
Hajime Fujita
PPTX
Azure API Management 俺的マニュアル
by
貴志 上坂
PDF
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
by
Takuya Takaseki
PDF
継続的なモデルモニタリングを実現するKubernetes Operator
by
Yahoo!デベロッパーネットワーク
PPTX
AWSで作る分析基盤
by
Yu Otsubo
PDF
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
by
NTT DATA Technology & Innovation
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
モノタロウの商品データ連携について
by
株式会社MonotaRO Tech Team
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
by
都元ダイスケ Miyamoto
[AKIBA.AWS] VPN接続とルーティングの基礎
by
Shuji Kikuchi
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
by
Yoshitaka Kawashima
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
by
Yahoo!デベロッパーネットワーク
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
3分でわかるAzureでのService Principal
by
Toru Makabe
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
by
Yahoo!デベロッパーネットワーク
Laravelを用いたゲームサーバーのチューニング
by
NOW PRODUCTION
Teslaにおけるコンピュータビジョン技術の調査
by
Kazuyuki Miyazawa
SolrとElasticsearchを比べてみよう
by
Shinsuke Sugaya
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
by
Hajime Fujita
Azure API Management 俺的マニュアル
by
貴志 上坂
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
by
Takuya Takaseki
継続的なモデルモニタリングを実現するKubernetes Operator
by
Yahoo!デベロッパーネットワーク
AWSで作る分析基盤
by
Yu Otsubo
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
by
NTT DATA Technology & Innovation
Viewers also liked
PDF
AbemaTV デザインのBefore & After
by
Shunsuke Matsumoto
PDF
最新版Hadoopクラスタを運用して得られたもの
by
cyberagent
PPTX
アドテクスタジオのデータ分析基盤について
by
kazuhiro ito
PDF
マッチングサービスにおけるKPIの話
by
cyberagent
PPTX
HLSについて知っていることを話します
by
Moriyoshi Koizumi
PDF
Amebaにおけるレコメンデーションシステムの紹介
by
cyberagent
PDF
こわくない Git
by
Kota Saito
AbemaTV デザインのBefore & After
by
Shunsuke Matsumoto
最新版Hadoopクラスタを運用して得られたもの
by
cyberagent
アドテクスタジオのデータ分析基盤について
by
kazuhiro ito
マッチングサービスにおけるKPIの話
by
cyberagent
HLSについて知っていることを話します
by
Moriyoshi Koizumi
Amebaにおけるレコメンデーションシステムの紹介
by
cyberagent
こわくない Git
by
Kota Saito
Similar to AbemaTV モバイルアプリの開発体制と開発プロセスの話
PDF
iQONの開発手法 at iQONエンジニアセミナー
by
Imamura Masayuki
PDF
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
by
feedtailor
PDF
Team Development for iOS / Android
by
baroqueworksdev
PDF
市場で勝ち続けるための品質とテストの技術①
by
Yahoo!デベロッパーネットワーク
PDF
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
by
Masaru Gushiken
KEY
iPhoneアプリ開発を楽に楽しくするサイトまとめ
by
Hiramatsu Ryosuke
PDF
スクラムの知られざる勘所
by
Yoshifumi Tsuda
PDF
iPhone、Android両対応アプリ開発講座 概論
by
Takakuni Furukawa
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
PDF
iOS豆知識ver0.0.5
by
ppengotsu Name
PDF
デザイナーとエンジニアが話す、iOSアプリケーション開発
by
Kenta Ohsugi
PPTX
1月からAndroidアプリ開発をやってみての近況
by
takathemax
PDF
Conference withdevelopers 第二版
by
Tamura Koya
PDF
ぼくのかんがえた iOSテスト戦略
by
Naoki Umehara
PDF
アプリUI勉強会 in ネットイヤーグループ
by
Kenichi Suzuki
PPTX
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
by
Toshiyuki Hirata
PPTX
QuizNow yapcasia
by
Yosuke Furukawa
PDF
20141003 webマーケティングエンジニアリング
by
Innova Inc.
PDF
もう怖くないモバイルアプリ開発!【デブサミ関西2014】
by
Toshiki Iga
PPTX
はじめてのアジャイルのその後 ーシン・サービス立ち上げ、スクラムぽくなってきたー
by
Otsuka Reina
iQONの開発手法 at iQONエンジニアセミナー
by
Imamura Masayuki
第2回 近JASA セミナー 「組み込みの世界に影響を与える エンタープライズiOS」
by
feedtailor
Team Development for iOS / Android
by
baroqueworksdev
市場で勝ち続けるための品質とテストの技術①
by
Yahoo!デベロッパーネットワーク
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
by
Masaru Gushiken
iPhoneアプリ開発を楽に楽しくするサイトまとめ
by
Hiramatsu Ryosuke
スクラムの知られざる勘所
by
Yoshifumi Tsuda
iPhone、Android両対応アプリ開発講座 概論
by
Takakuni Furukawa
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
iOS豆知識ver0.0.5
by
ppengotsu Name
デザイナーとエンジニアが話す、iOSアプリケーション開発
by
Kenta Ohsugi
1月からAndroidアプリ開発をやってみての近況
by
takathemax
Conference withdevelopers 第二版
by
Tamura Koya
ぼくのかんがえた iOSテスト戦略
by
Naoki Umehara
アプリUI勉強会 in ネットイヤーグループ
by
Kenichi Suzuki
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
by
Toshiyuki Hirata
QuizNow yapcasia
by
Yosuke Furukawa
20141003 webマーケティングエンジニアリング
by
Innova Inc.
もう怖くないモバイルアプリ開発!【デブサミ関西2014】
by
Toshiki Iga
はじめてのアジャイルのその後 ーシン・サービス立ち上げ、スクラムぽくなってきたー
by
Otsuka Reina
More from Yuji Hato
PDF
継続的な開発スタイル 「AbemaTV iOSアプリを週一でリリースしている話」
by
Yuji Hato
PPTX
Adaptive UI - 解像度の異なるデバイスや画面の向きに対応する 最適なレイアウトへ -
by
Yuji Hato
PPTX
iOSDC 2018 動画をなめらかに動かす技術
by
Yuji Hato
PPTX
5分で学ぶ差分更新とRxDataSources
by
Yuji Hato
PPTX
Apple TV tvOS入門 Iosdc2017
by
Yuji Hato
PPTX
AbemaTV on tvOS
by
Yuji Hato
PPTX
Flux with RxSwift
by
Yuji Hato
PPTX
CarPlayの対応方法と日本での現状
by
Yuji Hato
PPTX
AWA with Realm
by
Yuji Hato
継続的な開発スタイル 「AbemaTV iOSアプリを週一でリリースしている話」
by
Yuji Hato
Adaptive UI - 解像度の異なるデバイスや画面の向きに対応する 最適なレイアウトへ -
by
Yuji Hato
iOSDC 2018 動画をなめらかに動かす技術
by
Yuji Hato
5分で学ぶ差分更新とRxDataSources
by
Yuji Hato
Apple TV tvOS入門 Iosdc2017
by
Yuji Hato
AbemaTV on tvOS
by
Yuji Hato
Flux with RxSwift
by
Yuji Hato
CarPlayの対応方法と日本での現状
by
Yuji Hato
AWA with Realm
by
Yuji Hato
AbemaTV モバイルアプリの開発体制と開発プロセスの話
1.
AbemaTV モバイルアプリの開発体制と 開発プロセスの話 Yuji Hato AbemaTV DEVELOPER
CONFERENCE 2017
2.
Yuji Hato CyberAgent, Inc.
/ AbemaTV, Inc. dekatotoro @dekatotoro Contributed services About me
3.
Agenda ざっくりAbemaTV iOSチームってど うやって開発しているの?
4.
開発体制
5.
AbemaTV 開発局 50人〜 開発体制
6.
開発体制 Server Web iOS
AndroidDesignDirector QA Board
7.
開発体制 Server Web iOS
AndroidDesignDirector QA Board
8.
開発体制 iOS AndroidDirector ビデオ グロース 本質改善 テレビデバイス その他案件 A,
B, C..
9.
iOSチーム
10.
iOSチーム 10名
11.
iOSチーム 10名
12.
iOSチーム ビデオ グロース 本質改善
テレビデバイス その他案件 A, B, C..
13.
AbemaTV 対応デバイス PC iPhone /
iPad Android / タブレット Apple TV AndroidTV / Amazon Fire TV Google Cast
14.
AbemaTV 対応デバイス PC iPhone /
iPad Android / タブレット Apple TV AndroidTV / Amazon Fire TV Google Cast iOSチーム
15.
Codebase
16.
Codebase ios … iOSアプリ tvos
… tvOSアプリ api … API周りのモジュール protobuf-swift … proto swift cmdshelf-ios … script郡 etc.. (mock, tool, sample) repositories
17.
ios Codebase tvos api
18.
ios Codebase tvos api
19.
ios Codebase
20.
ios Codebase
21.
tvos Codebase
22.
tvos Codebase
23.
api Codebase
24.
api Codebase
25.
毎日の大量のコードの変 更がされている
26.
開発フロー
27.
開発フロー スプリント スプリント スプリント 2週間 スクラム開発
28.
開発 QA 1週間 1週間 開発 開発
開発 QA QA 申請 申請 申請申請 QA 開発フロー
29.
開発 QA 1週間 1週間 開発 開発
開発 QA QA 申請 申請 申請申請 QA 開発フロー
30.
開発とQA期間の重複がつらい 開発フロー
31.
改善 開発フロー
32.
QA 1週間 1週間 QA QA 申請
申請 申請申請 QA 開発 開発 開発 開発フロー
33.
QA 1週間 1週間 QA QA 申請
申請 申請申請 QA 開発 開発 開発 長い開発 開発フロー
34.
QA 1週間 1週間 QA QA 申請
申請 申請申請 QA 開発 開発 開発 開発フロー フライング開発 できる人だけ
35.
タスク
36.
タスク プロデューサー/プランナーが案件を立案 プロデューサー/プランナーがサービスの理想状態を定 義し、それを実現させるための機能を考える プロデューサー/プランナーとディレクター、エンジニ アで内容すり合わせ。実現可能性を検討など。 ディレクター/エンジニアが細かい仕様に落とし込み案 件化 パターン1
37.
タスク エンジニアがコード品質やパフォーマンス、継続的な 開発のための施策を洗い出してタスク化 エンジニアがモックを作って「どうすか、これ?」 エンジニアが勝手に実装して「これ入れていいですか ?」 パターン2
38.
タスクの見積もり
39.
タスクの見積もり ストーリーポイント 1 … 軽微なもの 2
… 0.5スプリント 3 … 1スプリント、またはそれ以上
40.
ストーリーポイント 1 … 軽微なもの 2
… 0.5スプリント おおざっぱ !? タスクの見積もり 3 … 1スプリント、またはそれ以上
41.
優先度定義
42.
優先度定義 優先度は5段階 S, A,
B C, D スプリント期間に開発完了 / テスト / リリース必 須。定常リリース日に間に合わなければリリース 日を遅らせる判断もする スプリント期間に開発完了 / テスト / リリース必 須ではない。開発着手はするものの、開発締め日 に間に合わなければ次回リリースに回す
43.
会議体
44.
会議体 スプリント計画 スプリントレビュー iOSチーム定例(週一) 各自の案件ごとのミーティング
45.
ツール
46.
ツール Slack JIRA Confluence esa GitHub Jenkins etc.. cmdshelf Bitrise
47.
ツール Slack JIRA Confluence esa GitHub Jenkins etc.. cmdshelf Bitrise
48.
ツール リモートリポジトリの実行可能 ファイルをローカルファイルの ように統合して扱える https://github.com/toshi0383/cmdshelf Swift製
49.
ツール cmdshelf-ios repository
50.
ツール cmdshelf-ios repository
51.
ツール cmdshelf-ios repository
52.
ツール cmdshelf-ios repository
53.
開発スタイル
54.
Pull Requests CONTRIBUTING.md抜粋 開発スタイル
55.
Pull Requests pull request
抜粋 活発なレビュー文化 開発スタイル
56.
コーディング規約 CONTRIBUTING.md抜粋 開発スタイル
57.
テスト Executed 2009 tests,
with 0 failures (0 unexpected) in 20.517 (21.345) seconds テスト極力書く! 2017/10/19 開発スタイル
58.
週一の定例やGitHub、 Slack上での議論から随時 開発ルールを更新 開発スタイル iOS定例シート
59.
ブランチ戦略
60.
ブランチ戦略 基本はGitHub Flow 各自トピックブランチをmaster /
qaから 作って作業 開発用のmasterブランチとQA用のqaブランチ
61.
ブランチ戦略 qa master qa merge merge
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.
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.
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.
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.
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.
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.
ブランチ戦略 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.
Beta配信
70.
Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request
71.
Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request pull
request
72.
Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request push,
merge
73.
Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request 継続的 delivery 対象ブランチは以下 master qa qa-xxxx
74.
Beta配信 bitriseGitHub iTunes Connect TestFlight Crashlytics Tester Designer Others Developer hook delivery pull request QA期間中delivery
75.
Slack通知
76.
Slack通知
77.
Slack通知
78.
Slack通知
79.
Slack通知
80.
Slack通知
81.
Slack通知
82.
Slack通知
83.
Slack通知
84.
QA効率化
85.
QA効率化 QAやデバッグ用に様々なデバ ッグメニューを用意
86.
CPU, メモリ使用率表示 QA効率化
87.
リモート、ローカル通知のシ ミュレート QA効率化
88.
UserDefaults, Keychain, DB, 画像キャッシュの削除 QA効率化
89.
1週間に何回起動したなどの サービスユーザ区分ステータ スを変更 QA効率化
90.
アニメーション速度の変更 QA効率化
91.
再生動画のbitrateやresolution, segmentファイルの転送時間 などAVPlayerから取得できる 情報を全て動画上にoverlay QA効率化
92.
ログ出力確認 QAチームでは「iOS Console 」というツールで実機をつな いで確認 QA効率化
93.
その他
94.
チーム内ランチ勉強会(隔週)カンファレンス登壇
95.
まとめ
96.
まとめ 開発スピードとアプリの安定性、 コード品質を保った継続的な開発 に取り組んでいます
97.
Thank you
98.
We’re hiring! https://abe.ma/2gnzras
Editor's Notes
#4
では早速開発体制についてですが、
#5
ということで早速開発体制についてですが、
#6
現在AbemaTVの開発局は約50名程度います
#7
えー図にするとこのような感じで、左からDirector, Server Design, Web, iOS, Android, QAといたチームに分かれていて、それぞれのチームの代表でBoardメンバーが構成されています.
#8
今日はこの中で、iOSチームについての開発体制や開発スタイルについてお話したいと思います。
#9
まずiOSチームの中でもチームが分かれていて ビデオチーム、グロースチーム、本質改善チーム、テレビデバイスチームと大きく4つに分かれていて、その他にどれに属さない案件、プロジェクトなどがあったりします。
#10
iOSチームですが、
#11
現在10名体制で開発しています。 立ち上げ初期は4名程度だったのでだいぶ大きなチームになりました。
#12
はい、みんなに顔出しOKもらったので載せておきますw
#13
で、具体的には、先程お話したビデオ、グロース、本質改善、テレビデバイスチームはこのような形で分かれていて、その他の案件はケースバイケースでその時の状況で調整して対応しています。
#14
AbemaTVの対応デバイスはPC, iPhone/iPad, Android/タブレット、 AppleTV, AndroidTV, Google Castがあります。
#15
この中でiOSチームはiPhone, iPad, AppleTV, あとGoogle Castはテレビ側のrecieverとクライアント側のsenderがありますが、sender側が担当範囲になります。
#16
iOSチームが管理しているcodebaseですが、
#17
代表的なレポジトリはiosとtvosの2つになります あとは共通のapiモジュールや あっprotocolBuffer使っているのですが、protoのswiftのレポジトリ 共通のscript郡のcmdshelfレポジトリなどがあります
#18
これはcodeのfile数や行数を出したものですが
#19
iosで約9万行、tvosで27000行、apiで3800行くらいですね
#20
こちらはiosレポジトリのGitHubのinsightsになります
#21
iosのレポジトリだと、これは9月19~ 10月19日の1ヶ月で162個のpull requestがマージされていて、営業で1日平均すると、、だいたい7~8個のpull requestがマージされています、 ちなみに一番右の全然commitしてないのはデザイナーで画像差し替えとか文言変更はデザイナーが対応してくれたりします
#22
こちらはtvOSですが、おもに2人で開発していて
#23
tvosのレポジトリだと、57個のpull requestが1ヶ月でマージされていて、営業で1日平均すると、、だいたい2~3個のpull requestがマージされています
#24
こちらは共通のapiモジュールのレポジトリですが
#25
こちらもちょくちょく変更がはいります
#26
何が言いたいかといいますと、まぁみんな仕事していますとw もとい毎日大量のコードが変更されていることがわかると思います
#27
では、そういった開発をしているフローはどうなっているかというと、
#28
こちらの図のような感じで、基本はスクラム開発でsprintを2週間に区切って開発しています。
#29
もうちょっと細かくした図ですが、これは少し前に実践していたフローですが、 開発を二週間、QAを1週間で2週間ごとの申請でやっていました。 ただこれでやっていると問題がありまして、
#30
ここの期間ですね。
#31
開発とQA期間の重複がつらいですと。 QA中にバグ対応などがお主に発生すると、次のsprintへの影響がもろにでてしまうのでこれは無理があるということで、
#32
改善しました。
#33
開発期間1週間、QA期間1週間という定義でやることにしました。 今のところこれでスムーズにいっています。
#34
長い開発はこのような形でsprintを跨いだ開発になります
#35
厳密に1週間/1週間にはならないときも、もちろんあるので、QA期間中から開発をはじめているものもあります。計画ミーティングごとに何をやるか決めますが、ある程度先のsprintの開発まで決めているのでこういった調整が容易になっています。
#36
ではそもそもタスクはどうやって発生しているのかということですが、
#37
パターン1として、、、、、いわゆるトップダウン的なものですね
#38
パターン2は、、、、、といったボトムアップでタスク化することも多々あります。
#39
ではどうやってタスクを見積もっているかということですが、
#40
一応タスクにストーリーポイントを付けています。1ポイントが軽微なもの、2ポイントが0.5スプリント、3ポイントが1スプリント、またはそれ以上といった定義しかしていません
#41
ものすごいおおざっぱですねw この数値の付け方はスクラム開発だと変な定義だと思いますが、 AbemaTVは事業の流れによって案件の優先度がけっこう変わるので、ガチガチにポイントつけてSprintを回すのは向いてなくて、一人ひとりが今どれくらい案件を抱えていて、どのくらい重い開発をしているかを見える化する程度にしています。 ただここももう少しちゃんとポイント定義して回せるようにしていきたいと考えています
#42
タスクの優先度定義ですが、
#43
チケットを見ただけでこれは今回マストで入れないといけないのか、次に回してもいいのかエンジニアが判断できるようにしています。こういった共通言語の定義があることで、ディレクターなどとの会話がスムーズにいくといった利点もあります。
#44
あと会議体ですが、
#45
大きく4つありまして、スプリント計画を行うスプリント計画ミーティング、スプリントの振り返りを行うスプリントレビュー、メンバー各自の案件ごとのミーティングとiOSチームの週一の定例をやっています。毎日の行うようなデイリースクラムはやっていません
#46
あと使っているツールの紹介します
#47
使っているツールですが、いわゆる一般的なものでチャットツールのSlack、チケット管理にJIRA, ドキュメントツールにConfluenceとesa、ソースコード管理にGitHub、CI用にBitriseと自動化用にJenkinsとcmdshelfなどを使っています。
#48
cmdshlefはオリジナルなので知らない人も多いかと思うので少し紹介すると
#49
リモートリポジトリの実行可能ファイルをローカルファイルのように統合して扱えるようにするもので、iOSチームのトッシーさんという方がつくっていてSwift製です
#50
こちら実際の例になります。
#51
最初の方でお話しましたが、iOSチームで管理している共通script置き場のcmdshelf-iosというレポジトリがあります
#52
cmdshelfをinstallしてこのレポジトリをaddして、cmdshelf listを実行すると実行できるコマンド郡が表示されるようになります
#53
listで表示されたものをcmdshelf runで実行できるといった形で、リモートのレポジトリのscript郡を手軽に使えてけっこう便利なものになります。
#54
はい、次に開発スタイルですが、
#55
こちらはContributing.mdのPullRequestsについての抜粋ですが、、、 といったルールも定義しています
#56
これはPull Requestsのリストの抜粋ですが、ちょっと多いとか少ないとかの平均はわかりませんが、自分の経験上、けっこう活発なレビュー文化だと思います。
#57
こちらはコーディング規約でGoodな書き方とBadの書き方というのを明示して、なるべくチーム内でコードの統一性を出すようにしています。
#58
こちらはテストの実行結果ですが、現在2009ケースのテストがあり、極力テストは書くという方針ですすめています。ViewやViewControllerのテストはデザインや仕様も頻繁に変わる現状だとコストが大きいのと、ViewとModelを分離する設計にしているので、Viewのテストは書かなくてよい、Model層やロジックはテスト書くようにしましょうといった方針にしています。
#59
右の図はiOSの週一定例のシートですが、急ぎでないものは各自思いついた時に議題を入れてもらって、定例で結論を出してアクションしていくといったやり方をしています。あとはGitHubやSlack上での議論から開発ルールを更新していっています。
#60
次にブランチ戦略についてお話します
#62
シンプルにこのような形になります。masterブランチがあってQA期間中はqaブランチを使うといったやり方にしています。
#63
これにsprintの図を当てはめるとこのような感じです 左が仮でスプリント2.2.0、真ん中がスプリント2.3.0、右が2.4.0になります
#64
真ん中のスプリント2.3.0を例に見てみますと
#65
2.3.0の開発期間中はmasterブランチからトピックブランチを切ってmsterにプルリクしてmasterにマージします
#66
2.3.0のQA期間中はqaブランチからトピックブランチを切ってプルリクエスト、qaブランチにマージします
#67
2.3.0QA期間中のmasterブランチは2.4.0(次のversion)の開発ブランチになります
#68
2.3.0の申請が終わったらqaブランチをmasterにマージします。 ここは申請というよりは適時マージしているイメージになります
#69
このブランチ戦略の良いところとしては、プルリクエストのmergeができないということがあまり発生しないということと、基本はGitHubフローでシンプルでわかりやすい点です。スクラム開発のsprintサイクルにうまくはまるのではないかと思います。
#70
えー、Beta配信ということで、テスト用アプリの配信の自動化とフローについてです
#71
図のような感じになります
#72
まず Developerがプルリクエストします。
#73
レビューを通ってmergeされると、bitriseがhookでjobを起動します
#74
対象ブランチは先程お話したmasterとqaを対象にしていて、Crashlyticsにuploadして、TesterやDesigner、Directorなどがすぐに確認できるようなっています。 あとはmasterとqa以外にqa-xxxxといった名前でブランチを上げると配信するようにしていて、特別なversionで何か確認してもらいたい時などにも配信できるようにしています
#75
あとはQA期間中はTestFlightにも配信して、本番と同じ状態で確認できるようにしています
#76
はい、あとはSlackの通知もいくつか自動化しているものを紹介します
#77
いくつかピックアップしたいと思います
#78
左上はCocoaPodsのライブラリのアップデートある場合に〜通知しているものです
#79
これは最新のqaビルドが配信されたよ〜といったお知らせで
#80
Crashがけっこう起きてるよ〜といったお知らせ、
#81
これは自前のbotですが、レビューがしばらくされてないプルリクエストがあるよとお知らせしているものです。
#82
あとはp12の証明書が切れそうだよ〜とか
#83
App Storeのレビュー評価
#84
iOS11のbeta10でたよ〜といったAppleのRSSなどをSlackに通知しています。
#85
はい、最後にQAの効率化についての取り組みについてです
#86
機能が多くなり複雑になってくると、QAの時間も比例して大きくなってきてしまいます。その効率化にも取り組んでいて、デバッグメニューを容易しています 現状のデバッグメニューの機能についていくつかピックアップすると
#95
その他としてカンファレンスへの登壇や、チーム内でのランチ勉強会などを行うことによって直接だけでなく間接的に知見の共有になったりしています
#97
はい、まとめです。AbemaTVは事業的に先を見据えたサービスなので、その場しのぎで開発していると長期的な開発のどこかで破綻してしまう可能性もあると思います。なのでAbemaTVのモバイル開発においても長期的な視点で、開発スピードとアプリの安定性、コードの品質を保った継続的な開発ができるように意欲的に取り組んでいます。 簡単になりますがまとめということで、発表を終わりにしたいと思います
Download