Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オンボーディングのために 私はプロダクト考古学者になりました!

オンボーディングのために 私はプロダクト考古学者になりました!

この登壇では、新しく入社してくれたメンバー達へのオンボーディングをするために、考古学した(弊社のプロダクトのアーキテクチャを研究、文言化して、社内で勉強会)取り組みについて発表させていただきます!

AkitoTsukahara

May 17, 2023
Tweet

More Decks by AkitoTsukahara

Other Decks in Programming

Transcript

  1. Copyright© M&Aクラウド
    オンボーディングのために
    私はプロダクト考古学者になりました!
    第152回PHP勉強会@東京 Akito.Tsukahara

    View Slide

  2. Copyright© M&Aクラウド 2
    自己紹介
    塚原彰仁
    AkitoTsukahara
    株式会社M&Aクラウド
    AkitoTsukahara
    akito_tsukahara

    View Slide

  3. Copyright© M&Aクラウド
    この発表で聞けることは?
    今日話すこと
    ● プロダクトの考古学とは?
    ● 我々の考古学の取り組み
    ● 考古学で取り上げた題材を一部紹介
    ● まとめ

    View Slide

  4. Copyright© M&Aクラウド
    プロダクトの考古学とは?
    プロダクトの考古学
    ● リリースからしばらくして安定稼働しているアプリケーションがどのように
    実装されてきたのか?現在の形になった経緯をまとめる取り組みです
    ● プロダクト・アーキテクチャの成長過程を知ることで、設計思想を知る・理
    解する機会を作ること

    View Slide

  5. Copyright© M&Aクラウド
    プロダクトの考古学とは?
    なぜこの取り組みが必要なのか?
    ● 新しく入ってくるメンバーがプロダクトの理解度を高めて、積極
    的に開発(アーキテクチャの提案、負債解消)に取り組めるよう
    にするためです

    View Slide

  6. Copyright© M&Aクラウド
    プロダクトの考古学とは?
    新しくメンバーが増えるぞ!
    リソースが足りなくて進捗
    が鈍かった負債解消に取り
    組めるぞ!

    View Slide

  7. Copyright© M&Aクラウド
    プロダクトの考古学とは?
    実装で気になるところ
    があれば、どんどん修
    正してもらって大丈夫
    ですよ!
    とある1on1で

    View Slide

  8. Copyright© M&Aクラウド
    プロダクトの考古学とは?
    プロダクトの理解が
    深まったら、やりま
    すね!
    気になるところはあるけど、
    そもそもなぜこうなっているのか分から
    んのよ...
    下手に口出しするのも...
    とある1on1で

    View Slide

  9. Copyright© M&Aクラウド
    プロダクトの考古学とは?
    なぜこの取り組みが必要なのか?
    ● 新しく入ってくるメンバーがプロダクトの理解度を高めて、積極的に開発
    (アーキテクチャの提案、負債解消)に取り組めるようにするためです
    ● プロダクト・アーキテクチャの成長過程を知ることで、設計思想を知る・理
    解する機会になる
    「なぜそうなっているのか?」が分からなければ、プロダクトの
    実装は難しいし、アーキテクチャの改善・提案なんてもっと難しいよね

    View Slide

  10. Copyright© M&Aクラウド
    プロダクトの考古学とは?
    プロダクト考古学のメリット
    ● なぜ現在の形になったのか?を新メンバーが知る・理解することが
    できる
    ● チームの設計思想について、触れることができる
    ● いずれ誰も分からなくなることを防ぐことができる

    View Slide

  11. Copyright© M&Aクラウド
    この発表で聞けることは?
    弊社での取り組みをご紹介
    ● 目的は新メンバーが「思想を理解できる」と言える状態になること
    ● 運用の秘訣は
    ○ 頑張り過ぎない。持続可能なペースで
    ○ ディスカッションを促すこと

    View Slide

  12. Copyright© M&Aクラウド
    我々の考古学の取り組み
    弊社での取り組みをご紹介
    ● 毎週の社内LT会(30min)で気になった設計を共有する機会を作る
    ○ 最初は2名が推進メンバーになって、交代制でLTを行う
    ■ LTは5分そこそこで後は、ディスカッション
    ○ 資料はそこまで気合いを入れなくても大丈夫
    ■ 分からないことがあれば、何が分からなかったのか
    そのまま共有する

    View Slide

  13. Copyright© M&Aクラウド
    我々の考古学の取り組み
    弊社での取り組みをご紹介
    ● LTで設計の肝になりそうなテーマを解説し、最後に問いかける
    ○ 古参メンバーはプロダクトの歴史を語る
    ○ 新メンバーはさらに不明点を掘り下げる
    ○ ディスカッション内容を整理して、オンボーディング資料に
    ● LTからの設計に関するディスカッションは結構盛り上がる!
    ○ みんな設計について語り合いたいんだね!
    ○ プロダクトについて語り会えるいい機会になる
    ● 毎回アンケートとふりかえりを実施

    View Slide

  14. Copyright© M&Aクラウド
    我々の考古学の取り組み

    View Slide

  15. Copyright© M&Aクラウド
    考古学で取り上げた題材を一部紹介
    これまでにテーマに上がったものを参考に紹介
    ● ドメイン層の構成と改善について
    ● この実装なら、このテスト!

    View Slide

  16. Copyright© M&Aクラウド
    考古学で取り上げた題材を一部紹介
    ドメイン層の構成と改善について
    レイヤードアーキテクチャで設計されたプ
    ロダクトがあり、ドメイン層にあるクラス
    を整理しました。
    こんなクラスがドメイン層にまとめられてるよ
    ● Value Object
    ● Entity
    ● Domain Service
    ● Repository
    ● その他ロジック

    View Slide

  17. Copyright© M&Aクラウド
    考古学で取り上げた題材を一部紹介
    ドメイン層の構成と改善について
    「複数のドメインが共存している狙いは何か?」という問
    いかけがありました。
    ドメイン層内で3つに分けるアイデアも提案された。
    ● PhpStorm使っている限り、あまり困っていない
    ● 正し、VOとEntityが混ざっていてわからなくなっている場合
    はある
    ● Entityは現状テーブルがauto incrementになっているので、
    リポジトリから取得する時ぐらいしか得られない( ドメイン層
    でEntityを生成することがほとんどない )
    ● FilterRuleは外部から持ち込まれたもので、扱いが難しい
    ● HashMapはあまり使わず、DTO使いましょ

    View Slide

  18. Copyright© M&Aクラウド
    考古学で取り上げた題材を一部紹介
    この実装なら、このテスト!
    Unitテストの「モックの泥沼」を脱却するために、
    あえてDBデータにアクセスするDbIntegrationテ
    ストを用意した歴史を解説
    「テストしやすくなったが、そもそも外部データに依存
    した処理が多い設計に問題がある?」という、当時はな
    かった新しい視点も生まれる

    View Slide

  19. Copyright© M&Aクラウド
    考古学で取り上げた題材を一部紹介
    この実装なら、このテスト!
    メンバーが実際にテストを書くときに意識してい
    ることを可視化する
    こんな議論があったよ
    ● 外部サービスもモック使わずにテストしたいよね
    ● テストを自由に書いて良いというが、自由に書い
    た実例が欲しい
    ● DbIntegrationテストは臭いもの(テストしづらい
    設計)に蓋をしているのでは?
    ● PHPUnit_ver10でdataProviderの新しい書き方
    が追加されるの知ってた?

    View Slide

  20. Copyright© M&Aクラウド
    まとめ
    20

    View Slide

  21. Copyright© M&Aクラウド
    まとめ
    ● プロダクトの考古学を通じて、プロダクトの歴史背景やアーキテク
    チャの設計思想をまとめましょう!
    ● 新メンバーにはプロダクトの説明だけでなく、背景や設計思想を踏
    まえて伝えよう!
    ● 日頃からチームでプロダクトについて語り合おう!
    ぜひ、あなたもプロダクトの考古学者になりましょう!

    View Slide

  22. Copyright© M&Aクラウド
    ありがとうございました!
    22

    View Slide