コドモン Product Team Blog

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

『良いコード/悪いコードで学ぶ設計入門』輪読会入門

プロダクト開発部の小堀です。

コドモンには0.5投資という学習制度があり、業務時間を使って勉強会を実施したりセミナーに参加したりできます。

そこで私は、有志のエンジニア10名弱といっしょに『良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方』(以下『良いコード』)の輪読会を実施しています。

gihyo.jp

この輪読会がとても楽しくやれているので、本記事では輪読会の内容や工夫した点を紹介します!

背景

以前から「良いコード」をテーマに、開発者たちと話せる場をつくりたいと思っていました。

というのは「良いコード」を書くためには、誰か一人ができるだけでは意味がありません。グループもしくは組織全体で「良いコードとは何か?」という前提を揃えていく必要があるためです。

そのようなことを考えていたとき、ファンであるミノ駆動さんの『良いコード/悪いコードで学ぶ設計入門』が出版されることを知りました。

出版後、実際に読んでみると、自分がこれまでに学んだことやみんなで話したかった内容がたくさん詰まっており、これを教本にしたいなと感じました。

Slackでもちらほらと『良いコード』に関する言及があったので、「これ輪読会が開けるかも!」と参加者を募集し、興味あるエンジニアが集まってくれました。

輪読会の進め方

「一度に勉強する量は短くして、回数を増やそう」という作戦のもと、次のように開催しています。

  • 毎日9:00から9:15の15分間やる
  • 1回でとりあつかう分量は1節、つまり数ページ程度

さらに短い時間でも発見や学びがあるように、次のようなルールで輪読会を運営しています。

  • 担当者が要約や疑問点を発表
  • ファシリテーター司会のもと、それぞれの感想や意見を出し合う
  • 話し足りない箇所は、Slackの専用チャンネルに投稿

プレゼン資料の例
プレゼン資料の例

特徴は、参加者がまんべんなく話せるようにファシリテーターを置いていることです。コドモンでは会議にファシリテーターを置くことがよくあるため、このような開催の仕方に抵抗もありませんでした。

またプレゼンテーション内容をベースにやるので、15分間のほとんどを話し合いに割くことができ、お互いに無言で本を読むような時間もありません。

ちなみに、担当者が関係しているプロダクトのコードを例としてプレゼンしてくれるメンバーもいます。「このコードは〜と変更できそうだね」なんて話しています。

現在

この輪読会は、5月下旬から始まって2か月ほど続いています。ゆっくりとした歩みですが、ほとんど読み終わるところまで来ています!

このような有志のイベントは失速することもよくありますが、嬉しいことにまだ脱落者もおらず、むしろ「一日のはじまり」の楽しいイベントになっています。

これまでは、とくに次のテーマが盛り上がりました。

  • クラスのコンストラクタ内でのバリデーション(第3章)
  • 再代入を防ぐこと=不変の重要性(第4章)
  • 関心事の整理(第5章)
  • ファーストクラスコレクション(第7章)
  • nullを返さないようにする、適切な例外をつくるようにする(第9章)

またこれまでに学んだ内容を実践しているチームもいて、次のような変化が出ています。

  • ペアプログラミング、コードレビューの最中に『良いコード』の観点で話をしている
    輪読会に関するSlackのやりとり
    「生焼けオブジェクト」がチーム内の用語になっている図
  • クラス設計やリファクタリングに勇気を持って踏み込めた
  • 「これから書くコードはすべて不変にします!」という宣言をした
    • ※本書にもある通り、状況に応じて可変を採用することも必要です

まとめ

輪読会を主催するのは初めてでしたが、以下に気をつけることで楽しいものになると感じました。

  • 業務時間の中で行う
    • コドモンでは週のうちの3〜4時間程度を、このような学習に充てることが認められています
  • 朝にやる
    • 日中帯だと、どうしても業務が優先されがちなので
  • とっても小さな負荷をかける
    • 参加者のモチベーションに応じて、事前の読書やプレゼンの準備、サンプルコードの作成など、「これならできそう」と感じるものを必ずやるのが良い
  • ファシリテーターを置く
    • 輪読会中にみんなが発言できるよう調整すると、参加者の満足度が上がる
    • 輪読会の終わりのタイミングで「〜についてわかりましたね」とか「〜に関する議論が深まりましたね」など、1回ごとにポジティブな成果を明言するとなおよし

コドモンでは仕事しながら勉強もしたいというモチベーションの高い仲間を募集中です。ぜひお気軽にエントリーください。

また、デザインチームもnoteを投稿中です! ぜひご覧ください👇

note.com