Yahoo! JAPAN アプリという 大規模アプリの設計と開発 #yjcamp

450 Views

March 17, 17

スライド概要

2017.03.16 CAMPFIRE iOS #1
https://yj-meetup.connpass.com/event/51735/
での発表内容です。

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

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 .

2.

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 .

3.

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

4.

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

5.

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

6.

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

7.

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

8.

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

9.

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 .

10.

同時に開発している案件 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 .

11.

開発フローとリリースサイクル 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

12.

現在の設計 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 .

13.

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

14.

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

15.

どう変化していったか 既存版 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名超

16.

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

17.

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

18.

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

19.

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

20.

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

21.

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

22.

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 .

23.

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 .

24.

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

25.

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

26.

ご清聴ありがとうございました 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 .