コドモン Product Team Blog

株式会社コドモンの開発チームで運営しているブログです。エンジニアやPdMメンバーが、プロダクトや技術やチームについて発信します!

『良いコード/悪いコードで学ぶ設計入門』の輪読会にミノ駆動さんを招待しました

こんにちは! 保護者機能チームの所属の千田です。

先日『良いコード/悪いコードで学ぶ設計入門』(以下『良いコード』)の著者であるミノ駆動さんこと仙塲 大也さんをお招きして、輪読会の情報交換会をオンラインで開催しました。 今回はその様子をご紹介します。

gihyo.jp

きっかけ

コドモンには0.5投資という学習制度があり、業務時間を使って『良いコード』の輪読会を行っていました。

tech.codmon.com

私がたまたまTwitterを見ていたところ、ミノ駆動さんがこのようなツイートをしていたため、このツイートの直後にコドモンの輪読会に来ていただきたい旨をお伝えしました。

突然のご連絡にも関わらず、快く引き受けてくださいました。輪読会は終盤に差し掛かかっていたため、本の感想やミノ駆動さんへの質問などを行う会として開催することにしました。

当日の様子

当日は以下の順序で会を進めました。

  • 初めまして!
  • コドモンプロダクトの状況
  • 輪読会について
  • ワイワイするタイム(フリースタイル)
  • 締め

コドモンではこのような形式で交流する場がほぼ初めてだったので、「誰からも質問が出なかったらどうしよう」「お互いが楽しめる場になるかな」といった不安がありました。

そのような不安を抱えつつ始まった会ですが、自己紹介でミノ駆動さんから「マサカリを投げたり、噛み付いたりしたりしないので安心してください!」と言っていただけて笑いが起きました。そこから和やかな雰囲気で進みました。

ワイワイするタイム

ワイワイするタイムでは事前に「もっとも刺激になった章とその理由」や「ミノ駆動さんに聞いてみたいこと、伝えたいこと」などを用意し、それに対してお答えいただきました。

以下はコドモンのメンバーからの質問や感想と、それに対する回答の一部です。

Managerクラスについて

コドモンメンバー:本で紹介されているManagerクラスについて、自分も作りがちだったけどそう考えたら分離できるんだなぁと気づいた(Managerという命名は役割が広すぎるため、負債になり良くない)。

ミノ駆動さん:開発を先に進めるために仮ぎめで管理は使っていいが、既に負債なので開発が進んだら適切な名前をつけていくといい。ビジネスはスピードが命、短い時間でリリースせざるを得ない状況もある。最初に作ったモデルが完璧だと思ってても、実はこの概念とこの概念が重なったものでしたみたいなこともある。やっていって初めて実は負債だとわかることもある。いつでも変えられる、のマインドを持つことが大事。

クラス分割について

コドモンメンバー:そんな細かくクラス分割したらファイル増えて管理しきれないよ! みたいな派閥には何を話したか。

ミノ駆動さん:1ファイルに何千行となろうが、複数ファイルになっていようが、自分たちが扱っているビジネスが複雑であることに変わりはない。複雑なものがひとつにまとまっていると人間の認知の限界を超えてしまう。分割統治の考えに基づいて分けていって、一つ一つシンプルにしていくのが大事なので、ちゃんとクラスは適切な粒度に分ける必要がある。

本を勧めるとき

コドモンメンバー:新卒メンバーが読む本として『良いコード』をお勧めしたいと思った。

ミノ駆動さん:他の方に本を勧めるときは「この本の書き方が絶対じゃない、銀の弾丸ではない」を伝えてほしい。技術を取捨選択することがエンジニアリングだ!

といった答えをいただきました。

変更容易性が高い設計をすることで「このコードはいつでも変えられる!」という自信につながると思うと、負債のあるコードをリファクタリングすることがより重要と実感しました。それと同時にコドモンは、リファクタリングの重要性に理解ある経営層がいるので恵まれていると感じました。

最後に

ミノ駆動さんはとても気さくな方で質問に対しても快くお答えいただいたので、お互いにいいコミュニケーションが取れました。

コドモンのサービスはリリースしてから7年が経ち、技術負債に対してリプレイスやリファクタリングをしており、このような取り組みも行っています。 tech.codmon.com

『良いコード』の輪読会やミノ駆動さんからいただいたお言葉を活かし、今後もプロダクトをより改善しユーザーに価値を届け続けていきたいです。

ミノ駆動さんが書いた記事もありますので、宜しければご覧ください。 tech.readyfor.jp