Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オンボーディングのために 私はプロダクト考古学者になりました!
Search
AkitoTsukahara
May 17, 2023
Programming
3
470
オンボーディングのために 私はプロダクト考古学者になりました!
この登壇では、新しく入社してくれたメンバー達へのオンボーディングをするために、考古学した(弊社のプロダクトのアーキテクチャを研究、文言化して、社内で勉強会)取り組みについて発表させていただきます!
AkitoTsukahara
May 17, 2023
Tweet
Share
More Decks by AkitoTsukahara
See All by AkitoTsukahara
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
890
PHP8.2にバージョンアップして もっと型表現を豊かにしよう
akitotsukahara
0
460
プロダクトチームから他部署に 伝播するふりかえり文化
akitotsukahara
0
480
スピンオフサービス構築で培われた開発ノウハウをご紹介!
akitotsukahara
0
160
ビルドツールViteを10分で解説!
akitotsukahara
0
1.1k
今日からSvelteで開発だ! どうする?何から始める?
akitotsukahara
0
300
どのくらい速くなるの?Laravel MixとViteを性能比較してみました!
akitotsukahara
0
11k
スクラムマスターを経験して得られた学びとエンジニアとしての成長
akitotsukahara
0
410
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
1
2.5k
Other Decks in Programming
See All in Programming
チームをチームにするEM
hitode909
0
310
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
140
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
110
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
9
1.1k
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
1k
AIコーディングエージェント(NotebookLM)
kondai24
0
180
AWS CDKの推しポイントN選
akihisaikeda
1
240
How Software Deployment tools have changed in the past 20 years
geshan
0
29k
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
790
connect-python: convenient protobuf RPC for Python
anuraaga
0
400
Integrating WordPress and Symfony
alexandresalome
0
150
開発に寄りそう自動テストの実現
goyoki
1
860
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Balancing Empowerment & Direction
lara
5
790
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