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
310
プロダクトチームから他部署に 伝播するふりかえり文化
akitotsukahara
0
330
スピンオフサービス構築で培われた開発ノウハウをご紹介!
akitotsukahara
0
98
ビルドツールViteを10分で解説!
akitotsukahara
0
750
今日からSvelteで開発だ! どうする?何から始める?
akitotsukahara
0
220
どのくらい速くなるの?Laravel MixとViteを性能比較してみました!
akitotsukahara
0
8.6k
スクラムマスターを経験して得られた学びとエンジニアとしての成長
akitotsukahara
0
310
チームでカレーを作ろう!アジャイルカレークッキング
akitotsukahara
0
1.9k
気づいた時にリファクタしよう! Laravelのデータベースクエリを最適化するTips_PHPerKaigi2022 LT
akitotsukahara
0
1.6k
Other Decks in Programming
See All in Programming
Kotlin Multiplatform at Stable and Beyond (Android Makers 2024)
zsmb
0
280
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
260
見た目から始める生産性向上
ikumatadokoro
7
850
Tailwind CSSを本気でカスタマイズする方法
fsubal
13
5.3k
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
43
19k
Let's learn code review
riofujimon
2
410
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
140
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
370
Micro Frontends for Java Microservices - Devnexus 2024
mraible
PRO
0
490
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
220
雑に思考を整理する技術と効能
konifar
60
29k
Featured
See All Featured
In The Pink: A Labor of Love
frogandcode
138
21k
How to train your dragon (web standard)
notwaldorf
73
5.2k
Web Components: a chance to create the future
zenorocha
305
41k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Music & Morning Musume
bryan
41
5.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
116
18k
Statistics for Hackers
jakevdp
789
220k
KATA
mclloyd
15
12k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
Designing the Hi-DPI Web
ddemaree
276
33k
YesSQL, Process and Tooling at Scale
rocio
164
13k
Designing Experiences People Love
moore
136
23k
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