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
410
オンボーディングのために 私はプロダクト考古学者になりました!
この登壇では、新しく入社してくれたメンバー達へのオンボーディングをするために、考古学した(弊社のプロダクトのアーキテクチャを研究、文言化して、社内で勉強会)取り組みについて発表させていただきます!
AkitoTsukahara
May 17, 2023
Tweet
Share
More Decks by AkitoTsukahara
See All by AkitoTsukahara
PHP8.2にバージョンアップして もっと型表現を豊かにしよう
akitotsukahara
0
410
プロダクトチームから他部署に 伝播するふりかえり文化
akitotsukahara
0
400
スピンオフサービス構築で培われた開発ノウハウをご紹介!
akitotsukahara
0
120
ビルドツールViteを10分で解説!
akitotsukahara
0
980
今日からSvelteで開発だ! どうする?何から始める?
akitotsukahara
0
260
どのくらい速くなるの?Laravel MixとViteを性能比較してみました!
akitotsukahara
0
10k
スクラムマスターを経験して得られた学びとエンジニアとしての成長
akitotsukahara
0
340
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
1
2.3k
気づいた時にリファクタしよう! Laravelのデータベースクエリを最適化するTips_PHPerKaigi2022 LT
akitotsukahara
0
1.8k
Other Decks in Programming
See All in Programming
為你自己學 Python
eddie
0
540
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
0
340
functionalなアプローチで動的要素を排除する
ryopeko
1
800
AWSのLambdaで PHPを動かす選択肢
rinchoku
2
410
Flatt Security XSS Challenge 解答・解説
flatt_security
0
800
BEエンジニアがFEの業務をできるようになるまでにやったこと
yoshida_ryushin
0
250
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
370
Swiftコンパイラ超入門+async関数の仕組み
shiz
0
190
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
680
チームの立て直し施策をGoogleの 『効果的なチーム』と見比べてみた
maroon8021
0
190
最近のVS Codeで気になるニュース 2025/01
74th
1
230
asdf-ecspresso作って 友達が増えた話 / Fujiwara Tech Conference 2025
koluku
0
1.6k
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1367
200k
Practical Orchestrator
shlominoach
186
10k
Done Done
chrislema
182
16k
Making Projects Easy
brettharned
116
6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Rails Girls Zürich Keynote
gr2m
94
13k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
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