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
390
オンボーディングのために 私はプロダクト考古学者になりました!
この登壇では、新しく入社してくれたメンバー達へのオンボーディングをするために、考古学した(弊社のプロダクトのアーキテクチャを研究、文言化して、社内で勉強会)取り組みについて発表させていただきます!
AkitoTsukahara
May 17, 2023
Tweet
Share
More Decks by AkitoTsukahara
See All by AkitoTsukahara
PHP8.2にバージョンアップして もっと型表現を豊かにしよう
akitotsukahara
0
380
プロダクトチームから他部署に 伝播するふりかえり文化
akitotsukahara
0
380
スピンオフサービス構築で培われた開発ノウハウをご紹介!
akitotsukahara
0
110
ビルドツールViteを10分で解説!
akitotsukahara
0
940
今日からSvelteで開発だ! どうする?何から始める?
akitotsukahara
0
240
どのくらい速くなるの?Laravel MixとViteを性能比較してみました!
akitotsukahara
0
10k
スクラムマスターを経験して得られた学びとエンジニアとしての成長
akitotsukahara
0
330
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
1
2.2k
気づいた時にリファクタしよう! Laravelのデータベースクエリを最適化するTips_PHPerKaigi2022 LT
akitotsukahara
0
1.8k
Other Decks in Programming
See All in Programming
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
300
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
2k
Macとオーディオ再生 2024/11/02
yusukeito
0
370
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
120
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
130
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
220
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
130
LLM生成文章の精度評価自動化とプロンプトチューニングの効率化について
layerx
PRO
2
190
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
340
Creating a Free Video Ad Network on the Edge
mizoguchicoji
0
120
役立つログに取り組もう
irof
28
9.6k
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
540
Featured
See All Featured
Thoughts on Productivity
jonyablonski
67
4.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Why Our Code Smells
bkeepers
PRO
334
57k
Embracing the Ebb and Flow
colly
84
4.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Building Adaptive Systems
keathley
38
2.3k
Automating Front-end Workflow
addyosmani
1366
200k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
420
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