SlideShare a Scribd company logo
1 of 26
Download to read offline
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
CAMPFIRE iOS #01
作井 吉満
Yahoo! JAPAN アプリという
大規模アプリの設計と開発
2017年3月16日
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
About me
2
• 作井吉満
• 2009年新卒入社
• フロントエンド開発を経て、2012年からアプリ開発
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPAN アプリについて
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPAN アプリ
4
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
今日話したいこと
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
話したいこと
6
開発体制は事業戦略やプロダクトの成長によって変わる
その変化の中で、開発や設計にどう取り組んでいくか
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
現在の体制
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
エンジニア
8
専属のiOSエンジニア 10数名
サービス連携などによる一時的ジョイン 数名
…
…
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Yahoo! JAPAN の特徴
9
• 異動こそ最大の人材育成
• http://business.nikkeibp.co.jp/article/report/20131129/256491/?rt=nocnt
• 越境して、自己主張し、課題解決して感謝される──特殊部隊「SWAT」で学んだこと
• http://linotice.tumblr.com/post/153250089339/20161116
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
同時に開発している案件
10
20以上の施策
• 大(数ヶ月)、小(数日程度)の案件
• 社内サービスとの連携
• ユーザービリティ改善(ABテスト)
• 技術推進(Swift3対応、新OS対応など)
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
開発フローとリリースサイクル
11
2週間に1度
仕様検討 プロト開発
設計
レビュー
事前テスト PullRequest
コード
レビュー
結合テスト Submit
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
現在の設計
12
View
ViewController
Multi
DataFetcher
DataFetcher
HogeManager
API
Cache
UI layer Domain layer Data layer
Application layer
Entity
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
開発体制の変化
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
きっかけ
14
約1年前に、
これからの開発をよりスケールさせるために
フルスクラッチでコードの刷新を実施
• Swiftへの移行
• レガシーコードの撤廃
• 全体的な仕様の見直し
• パフォーマンス改善
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
どう変化していったか
15
既存版
Swift版
2016.01 2016.06 2016.08 2017.02
約10名
2名
案件ストップ
既存版のタスクが終わった
メンバーから順次移動
5名 8名 12名 10名超10名
移行期間
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
10人以上になって起きた課題
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
10人以上になって起きた課題
17
• 全員で集まることが難しい(所属組織も拠点も違う)
• こまかな仕様や、詳細な設計の共有が困難になっていく
• 誰が何をやっているかわからない
• 修正箇所のコンフリクトが増える
• 知らないところで案件がうまれ、仕様が決まり、実装が進む
• すべてをコードレビューすることも、量が多く困難
• 曖昧な設計であるため、コードの統一性は失われていく
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
学んだこと
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
学んだこと
19
開発体制は事業戦略やプロダクトの成長によって変わる
その変化に素早く対応できるようにしておかなければいけない
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
設計の改善に着手
20
同じ思想、パターンで並行開発できる設計が必要
設計を改善していく取り組みを開始
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
どこから手をつけるべきか?
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Viewとロジックを分離する
22
• Viewの操作はPresenterで行う
• ビジネスロジックはUseCaseに集約する
• 新メンバーが入ってもスムーズに開発できるような状態にしておく
• 最初はUIの修正や追加から入ってもらうケースが多い
View Presenter UseCase
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
View同士の依存性をなくす
23
View Presenter UseCase
Router
• 画面遷移はRouterを介して行う
• ABテストや仕様変更による画面遷移の変更に対応できるようにしておく
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
役割を明確にして疎結合にする
24
• 役割を明確に定義したレイヤーに分割する
• レイヤー間のインターフェースはプロトコルを定義
• それぞれが差し替えられる疎結合な作りにする
• 仕様変更に素早く対応できるようにしておく
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
まとめ
25
• 開発体制は事業戦略やプロダクトの成長によって変わる
• メンバーの増加や役割の変更など
• 変化に素早く対応していくため、同じ思想で開発できる設計が必要
• プロダクトにとって効果の大きいところから改善する
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ご清聴ありがとうございました
Connpassのフォローお願いします!
https://yj-meetup.connpass.com/

More Related Content

Viewers also liked

Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo!デベロッパーネットワーク
 
グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかグロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかYahoo!デベロッパーネットワーク
 
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋Yahoo!デベロッパーネットワーク
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!デベロッパーネットワーク
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みYahoo!デベロッパーネットワーク
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④Yahoo!デベロッパーネットワーク
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Yahoo!デベロッパーネットワーク
 
[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App DevelopmentEmi Takahashi
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo!デベロッパーネットワーク
 

Viewers also liked (20)

Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
 
グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかグロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのか
 
市場で勝ち続けるための品質とテストの技術②
市場で勝ち続けるための品質とテストの技術②市場で勝ち続けるための品質とテストの技術②
市場で勝ち続けるための品質とテストの技術②
 
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
 
Storm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreadingStorm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreading
 
市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション④
 
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
データ利活用を促進するメタデータ
データ利活用を促進するメタデータデータ利活用を促進するメタデータ
データ利活用を促進するメタデータ
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
 
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjpElasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
 
Vue.js with Go
Vue.js with GoVue.js with Go
Vue.js with Go
 
[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③
 
第2回 NIPS+読み会・関西 発表資料 山本
第2回 NIPS+読み会・関西 発表資料 山本第2回 NIPS+読み会・関西 発表資料 山本
第2回 NIPS+読み会・関西 発表資料 山本
 
大規模クラスタでのHadoop課題
大規模クラスタでのHadoop課題大規模クラスタでのHadoop課題
大規模クラスタでのHadoop課題
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
 

More from Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

More from Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (9)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

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

  • 1. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. CAMPFIRE iOS #01 作井 吉満 Yahoo! JAPAN アプリという 大規模アプリの設計と開発 2017年3月16日
  • 2. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. About me 2 • 作井吉満 • 2009年新卒入社 • フロントエンド開発を経て、2012年からアプリ開発
  • 3. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPAN アプリについて
  • 4. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPAN アプリ 4
  • 5. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 今日話したいこと
  • 6. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 話したいこと 6 開発体制は事業戦略やプロダクトの成長によって変わる その変化の中で、開発や設計にどう取り組んでいくか
  • 7. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 現在の体制
  • 8. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. エンジニア 8 専属のiOSエンジニア 10数名 サービス連携などによる一時的ジョイン 数名 … …
  • 9. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Yahoo! JAPAN の特徴 9 • 異動こそ最大の人材育成 • http://business.nikkeibp.co.jp/article/report/20131129/256491/?rt=nocnt • 越境して、自己主張し、課題解決して感謝される──特殊部隊「SWAT」で学んだこと • http://linotice.tumblr.com/post/153250089339/20161116
  • 10. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 同時に開発している案件 10 20以上の施策 • 大(数ヶ月)、小(数日程度)の案件 • 社内サービスとの連携 • ユーザービリティ改善(ABテスト) • 技術推進(Swift3対応、新OS対応など)
  • 11. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 開発フローとリリースサイクル 11 2週間に1度 仕様検討 プロト開発 設計 レビュー 事前テスト PullRequest コード レビュー 結合テスト Submit
  • 12. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 現在の設計 12 View ViewController Multi DataFetcher DataFetcher HogeManager API Cache UI layer Domain layer Data layer Application layer Entity
  • 13. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 開発体制の変化
  • 14. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. きっかけ 14 約1年前に、 これからの開発をよりスケールさせるために フルスクラッチでコードの刷新を実施 • Swiftへの移行 • レガシーコードの撤廃 • 全体的な仕様の見直し • パフォーマンス改善
  • 15. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. どう変化していったか 15 既存版 Swift版 2016.01 2016.06 2016.08 2017.02 約10名 2名 案件ストップ 既存版のタスクが終わった メンバーから順次移動 5名 8名 12名 10名超10名 移行期間
  • 16. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 10人以上になって起きた課題
  • 17. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 10人以上になって起きた課題 17 • 全員で集まることが難しい(所属組織も拠点も違う) • こまかな仕様や、詳細な設計の共有が困難になっていく • 誰が何をやっているかわからない • 修正箇所のコンフリクトが増える • 知らないところで案件がうまれ、仕様が決まり、実装が進む • すべてをコードレビューすることも、量が多く困難 • 曖昧な設計であるため、コードの統一性は失われていく
  • 18. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 学んだこと
  • 19. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 学んだこと 19 開発体制は事業戦略やプロダクトの成長によって変わる その変化に素早く対応できるようにしておかなければいけない
  • 20. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 設計の改善に着手 20 同じ思想、パターンで並行開発できる設計が必要 設計を改善していく取り組みを開始
  • 21. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. どこから手をつけるべきか?
  • 22. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Viewとロジックを分離する 22 • Viewの操作はPresenterで行う • ビジネスロジックはUseCaseに集約する • 新メンバーが入ってもスムーズに開発できるような状態にしておく • 最初はUIの修正や追加から入ってもらうケースが多い View Presenter UseCase
  • 23. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. View同士の依存性をなくす 23 View Presenter UseCase Router • 画面遷移はRouterを介して行う • ABテストや仕様変更による画面遷移の変更に対応できるようにしておく
  • 24. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 役割を明確にして疎結合にする 24 • 役割を明確に定義したレイヤーに分割する • レイヤー間のインターフェースはプロトコルを定義 • それぞれが差し替えられる疎結合な作りにする • 仕様変更に素早く対応できるようにしておく
  • 25. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. まとめ 25 • 開発体制は事業戦略やプロダクトの成長によって変わる • メンバーの増加や役割の変更など • 変化に素早く対応していくため、同じ思想で開発できる設計が必要 • プロダクトにとって効果の大きいところから改善する
  • 26. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ご清聴ありがとうございました Connpassのフォローお願いします! https://yj-meetup.connpass.com/