---
title: Yahoo! JAPAN アプリという 大規模アプリの設計と開発 #yjcamp
tags:  #yjcamp  
author: [Yahoo!デベロッパーネットワーク](https://www.docswell.com/user/ydnjp)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GJ555RVMJ4.jpg?width=480
description: 2017.03.16 CAMPFIRE iOS #1  https://yj-meetup.connpass.com/event/51735/ での発表内容です。
published: March 17, 17
canonical: https://www.docswell.com/s/ydnjp/K6DMWZ-2017-03-17-123201
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GJ555RVMJ4.jpg)

Yahoo! JAPAN アプリという
大規模アプリの設計と開発
2017年3月16日
CAMPFIRE iOS #01
作井 吉満
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LE3NNPD9E5.jpg)

About me
• 作井吉満
• 2009年新卒入社
• フロントエンド開発を経て、2012年からアプリ開発
2
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 3

![Page Image](https://bcdn.docswell.com/page/8EDWWLP87G.jpg)

Yahoo! JAPAN アプリについて
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 4

![Page Image](https://bcdn.docswell.com/page/V7P992NWJ8.jpg)

Yahoo! JAPAN アプリ
4
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 5

![Page Image](https://bcdn.docswell.com/page/2JVMMDK9JQ.jpg)

今日話したいこと
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 6

![Page Image](https://bcdn.docswell.com/page/5EGGGYQ4EL.jpg)

話したいこと
開発体制は事業戦略やプロダクトの成長によって変わる
その変化の中で、開発や設計にどう取り組んでいくか
6
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4JQXXMKREP.jpg)

現在の体制
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 8

![Page Image](https://bcdn.docswell.com/page/K7466VPQE1.jpg)

エンジニア
専属のiOSエンジニア 10数名
…
サービス連携などによる一時的ジョイン 数名
…
8
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LJ1VV39LEG.jpg)

Yahoo! JAPAN の特徴
• 異動こそ最大の人材育成
• http://business.nikkeibp.co.jp/article/report/20131129/256491/?rt=nocnt
• 越境して、自己主張し、課題解決して感謝される──特殊部隊「SWAT」で学んだこと
• http://linotice.tumblr.com/post/153250089339/20161116
9
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GJWLLPQQE2.jpg)

同時に開発している案件
20以上の施策
• 大(数ヶ月)、小(数日程度)の案件
• 社内サービスとの連携
• ユーザービリティ改善(ABテスト)
• 技術推進(Swift3対応、新OS対応など)
10
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4EZMMKW3J3.jpg)

開発フローとリリースサイクル
11
仕様検討
プロト開発
設計
レビュー
事前テスト
PullRequest
コード
レビュー
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
2週間に1度
結合テスト
Submit


# Page. 12

![Page Image](https://bcdn.docswell.com/page/Y76NNQGZ7V.jpg)

現在の設計
UI layer
Domain layer
Data layer
View
Multi
DataFetcher
ViewController
API
Entity
DataFetcher
Cache
HogeManager
Application layer
12
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 13

![Page Image](https://bcdn.docswell.com/page/G7555RV974.jpg)

開発体制の変化
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 14

![Page Image](https://bcdn.docswell.com/page/9J2NND35ER.jpg)

きっかけ
約1年前に、
これからの開発をよりスケールさせるために
フルスクラッチでコードの刷新を実施
• Swiftへの移行
• レガシーコードの撤廃
• 全体的な仕様の見直し
• パフォーマンス改善
14
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 15

![Page Image](https://bcdn.docswell.com/page/DEYPP216EM.jpg)

どう変化していったか
既存版
2016.06
2016.01
2016.08
2017.02
案件ストップ
既存版のタスクが終わった
メンバーから順次移動
約10名
Swift版
2名
15
移行期間
5名
8名
10名
Co p yrig ht © 2 0 1 7
12名
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .
10名超


# Page. 16

![Page Image](https://bcdn.docswell.com/page/VJN558Q178.jpg)

10人以上になって起きた課題
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 17

![Page Image](https://bcdn.docswell.com/page/YE9YYKDYJ3.jpg)

10人以上になって起きた課題
• 全員で集まることが難しい(所属組織も拠点も違う)
• こまかな仕様や、詳細な設計の共有が困難になっていく
• 誰が何をやっているかわからない
• 修正箇所のコンフリクトが増える
• 知らないところで案件がうまれ、仕様が決まり、実装が進む
• すべてをコードレビューすることも、量が多く困難
• 曖昧な設計であるため、コードの統一性は失われていく
17
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 18

![Page Image](https://bcdn.docswell.com/page/GE866R3K7D.jpg)

学んだこと
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 19

![Page Image](https://bcdn.docswell.com/page/LEL99KVPJR.jpg)

学んだこと
開発体制は事業戦略やプロダクトの成長によって変わる
その変化に素早く対応できるようにしておかなければいけない
19
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 20

![Page Image](https://bcdn.docswell.com/page/4JMZZ2G2EW.jpg)

設計の改善に着手
同じ思想、パターンで並行開発できる設計が必要
設計を改善していく取り組みを開始
20
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 21

![Page Image](https://bcdn.docswell.com/page/PJR66MZ579.jpg)

どこから手をつけるべきか？
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 22

![Page Image](https://bcdn.docswell.com/page/PEXMMV9X7X.jpg)

Viewとロジックを分離する
View
UseCase
•
Viewの操作はPresenterで行う
•
ビジネスロジックはUseCaseに集約する
•
新メンバーが入ってもスムーズに開発できるような状態にしておく
•
22
Presenter
最初はUIの修正や追加から入ってもらうケースが多い
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 23

![Page Image](https://bcdn.docswell.com/page/3EKGGQP9JD.jpg)

View同士の依存性をなくす
View
Presenter
UseCase
Router
23
•
画面遷移はRouterを介して行う
•
ABテストや仕様変更による画面遷移の変更に対応できるようにしておく
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 24

![Page Image](https://bcdn.docswell.com/page/L73NNPX975.jpg)

役割を明確にして疎結合にする
24
Co p yrig ht © 2 0 1 7
•
役割を明確に定義したレイヤーに分割する
•
レイヤー間のインターフェースはプロトコルを定義
•
それぞれが差し替えられる疎結合な作りにする
•
仕様変更に素早く対応できるようにしておく
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 25

![Page Image](https://bcdn.docswell.com/page/87DWWL28JG.jpg)

まとめ
• 開発体制は事業戦略やプロダクトの成長によって変わる
• メンバーの増加や役割の変更など
• 変化に素早く対応していくため、同じ思想で開発できる設計が必要
• プロダクトにとって効果の大きいところから改善する
25
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


# Page. 26

![Page Image](https://bcdn.docswell.com/page/VJP9921WE8.jpg)

ご清聴ありがとうございました
Connpassのフォローお願いします！
https://yj-meetup.connpass.com/
Co p yrig ht © 2 0 1 7
Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .


