Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オンボーディングのために 私はプロダクト考古学者になりました!
Search
AkitoTsukahara
May 17, 2023
Programming
3
350
オンボーディングのために 私はプロダクト考古学者になりました!
この登壇では、新しく入社してくれたメンバー達へのオンボーディングをするために、考古学した(弊社のプロダクトのアーキテクチャを研究、文言化して、社内で勉強会)取り組みについて発表させていただきます!
AkitoTsukahara
May 17, 2023
Tweet
Share
More Decks by AkitoTsukahara
See All by AkitoTsukahara
PHP8.2にバージョンアップして もっと型表現を豊かにしよう
akitotsukahara
0
300
プロダクトチームから他部署に 伝播するふりかえり文化
akitotsukahara
0
330
スピンオフサービス構築で培われた開発ノウハウをご紹介!
akitotsukahara
0
98
ビルドツールViteを10分で解説!
akitotsukahara
0
680
今日からSvelteで開発だ! どうする?何から始める?
akitotsukahara
0
210
どのくらい速くなるの?Laravel MixとViteを性能比較してみました!
akitotsukahara
0
8.3k
スクラムマスターを経験して得られた学びとエンジニアとしての成長
akitotsukahara
0
310
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
0
1.9k
気づいた時にリファクタしよう! Laravelのデータベースクエリを最適化するTips_PHPerKaigi2022 LT
akitotsukahara
0
1.6k
Other Decks in Programming
See All in Programming
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
170
Open Source Swiftc Workshop
kitasuke
1
290
どうしてこうなった命名集 ~🔥編~ / OOC 2024 LT
pictiny
4
2.9k
OpenAPI を守るのは難しい
ohmori_yusuke
2
150
Ruby製社内ツールのGo移行
bgpat
2
270
オブジェクトしこう
okuramasafumi
2
130
Understanding Ast By Looking
inouehi
0
120
チームでモデリングを育てるうえで 考えたこと・気づいたこと / Cultivating Modeling in Teams: Thoughts and Insights
mackey0225
5
2.5k
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
130
TDDと今まで
kanayannet
0
140
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Model Design
suzushin54
1
1.5k
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
512
39k
Statistics for Hackers
jakevdp
789
220k
GraphQLの誤解/rethinking-graphql
sonatard
48
9.1k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.8k
GraphQLとの向き合い方2022年版
quramy
28
12k
Reflections from 52 weeks, 52 projects
jeffersonlam
343
19k
Mobile First: as difficult as doing things right
swwweet
215
8.5k
A designer walks into a library…
pauljervisheath
199
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
67
38k
Become a Pro
speakerdeck
PRO
8
4.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.3k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Transcript
Copyright© M&Aクラウド オンボーディングのために 私はプロダクト考古学者になりました! 第152回PHP勉強会@東京 Akito.Tsukahara
Copyright© M&Aクラウド 2 自己紹介 塚原彰仁 AkitoTsukahara 株式会社M&Aクラウド AkitoTsukahara akito_tsukahara
Copyright© M&Aクラウド この発表で聞けることは? 今日話すこと • プロダクトの考古学とは? • 我々の考古学の取り組み • 考古学で取り上げた題材を一部紹介
• まとめ
Copyright© M&Aクラウド プロダクトの考古学とは? プロダクトの考古学 • リリースからしばらくして安定稼働しているアプリケーションがどのように 実装されてきたのか?現在の形になった経緯をまとめる取り組みです • プロダクト・アーキテクチャの成長過程を知ることで、設計思想を知る・理 解する機会を作ること
Copyright© M&Aクラウド プロダクトの考古学とは? なぜこの取り組みが必要なのか? • 新しく入ってくるメンバーがプロダクトの理解度を高めて、積極 的に開発(アーキテクチャの提案、負債解消)に取り組めるよう にするためです
Copyright© M&Aクラウド プロダクトの考古学とは? 新しくメンバーが増えるぞ! リソースが足りなくて進捗 が鈍かった負債解消に取り 組めるぞ!
Copyright© M&Aクラウド プロダクトの考古学とは? 実装で気になるところ があれば、どんどん修 正してもらって大丈夫 ですよ! とある1on1で
Copyright© M&Aクラウド プロダクトの考古学とは? プロダクトの理解が 深まったら、やりま すね! 気になるところはあるけど、 そもそもなぜこうなっているのか分から んのよ... 下手に口出しするのも...
とある1on1で
Copyright© M&Aクラウド プロダクトの考古学とは? なぜこの取り組みが必要なのか? • 新しく入ってくるメンバーがプロダクトの理解度を高めて、積極的に開発 (アーキテクチャの提案、負債解消)に取り組めるようにするためです • プロダクト・アーキテクチャの成長過程を知ることで、設計思想を知る・理 解する機会になる
「なぜそうなっているのか?」が分からなければ、プロダクトの 実装は難しいし、アーキテクチャの改善・提案なんてもっと難しいよね
Copyright© M&Aクラウド プロダクトの考古学とは? プロダクト考古学のメリット • なぜ現在の形になったのか?を新メンバーが知る・理解することが できる • チームの設計思想について、触れることができる •
いずれ誰も分からなくなることを防ぐことができる
Copyright© M&Aクラウド この発表で聞けることは? 弊社での取り組みをご紹介 • 目的は新メンバーが「思想を理解できる」と言える状態になること • 運用の秘訣は ◦ 頑張り過ぎない。持続可能なペースで
◦ ディスカッションを促すこと
Copyright© M&Aクラウド 我々の考古学の取り組み 弊社での取り組みをご紹介 • 毎週の社内LT会(30min)で気になった設計を共有する機会を作る ◦ 最初は2名が推進メンバーになって、交代制でLTを行う ▪ LTは5分そこそこで後は、ディスカッション
◦ 資料はそこまで気合いを入れなくても大丈夫 ▪ 分からないことがあれば、何が分からなかったのか そのまま共有する
Copyright© M&Aクラウド 我々の考古学の取り組み 弊社での取り組みをご紹介 • LTで設計の肝になりそうなテーマを解説し、最後に問いかける ◦ 古参メンバーはプロダクトの歴史を語る ◦ 新メンバーはさらに不明点を掘り下げる
◦ ディスカッション内容を整理して、オンボーディング資料に • LTからの設計に関するディスカッションは結構盛り上がる! ◦ みんな設計について語り合いたいんだね! ◦ プロダクトについて語り会えるいい機会になる • 毎回アンケートとふりかえりを実施
Copyright© M&Aクラウド 我々の考古学の取り組み
Copyright© M&Aクラウド 考古学で取り上げた題材を一部紹介 これまでにテーマに上がったものを参考に紹介 • ドメイン層の構成と改善について • この実装なら、このテスト!
Copyright© M&Aクラウド 考古学で取り上げた題材を一部紹介 ドメイン層の構成と改善について レイヤードアーキテクチャで設計されたプ ロダクトがあり、ドメイン層にあるクラス を整理しました。 こんなクラスがドメイン層にまとめられてるよ • Value
Object • Entity • Domain Service • Repository • その他ロジック
Copyright© M&Aクラウド 考古学で取り上げた題材を一部紹介 ドメイン層の構成と改善について 「複数のドメインが共存している狙いは何か?」という問 いかけがありました。 ドメイン層内で3つに分けるアイデアも提案された。 • PhpStorm使っている限り、あまり困っていない •
正し、VOとEntityが混ざっていてわからなくなっている場合 はある • Entityは現状テーブルがauto incrementになっているので、 リポジトリから取得する時ぐらいしか得られない( ドメイン層 でEntityを生成することがほとんどない ) • FilterRuleは外部から持ち込まれたもので、扱いが難しい • HashMapはあまり使わず、DTO使いましょ
Copyright© M&Aクラウド 考古学で取り上げた題材を一部紹介 この実装なら、このテスト! Unitテストの「モックの泥沼」を脱却するために、 あえてDBデータにアクセスするDbIntegrationテ ストを用意した歴史を解説 「テストしやすくなったが、そもそも外部データに依存 した処理が多い設計に問題がある?」という、当時はな かった新しい視点も生まれる
Copyright© M&Aクラウド 考古学で取り上げた題材を一部紹介 この実装なら、このテスト! メンバーが実際にテストを書くときに意識してい ることを可視化する こんな議論があったよ • 外部サービスもモック使わずにテストしたいよね •
テストを自由に書いて良いというが、自由に書い た実例が欲しい • DbIntegrationテストは臭いもの(テストしづらい 設計)に蓋をしているのでは? • PHPUnit_ver10でdataProviderの新しい書き方 が追加されるの知ってた?
Copyright© M&Aクラウド まとめ 20
Copyright© M&Aクラウド まとめ • プロダクトの考古学を通じて、プロダクトの歴史背景やアーキテク チャの設計思想をまとめましょう! • 新メンバーにはプロダクトの説明だけでなく、背景や設計思想を踏 まえて伝えよう! •
日頃からチームでプロダクトについて語り合おう! ぜひ、あなたもプロダクトの考古学者になりましょう!
Copyright© M&Aクラウド ありがとうございました! 22