ソースコードリーディング会をやってみることにしました

ソースコードリーディング会をやってみることにしました

以前、

というブログエントリーで、社内で行っている「技術情報キャッチアップ会」についてご紹介しました。

ただ、最近は各担当が業務優先になっていて、あまり開催ができていなかったので、もっと各自がモチベーション高くできそうな方法はないか、もっと業務にも活かせそうな別の取り組みはできないだろうか、とチーム内で話し合いを行いました。

今回はその話し合いと、そこで決まった新しい取り組みについてご紹介します。

新しい取り組みの案

今回のミーティングで新しい取り組みの案として出たのは下記の3案でした。

  • テスト駆動開発(TDD)演習
  • ソースコードリーディング会
  • ワークショップ

実際に手を動かすような形式で、普段の業務からは少しだけ離れて学ぶ形式のほうがモチベーションが上がりそうという考えで案を出してくれました。

3つの候補から多数決(複数回投票OK)を取ってみたところ、「ソースコードリーディング会」を行うことに決まりました。

ソースコードリーディングの題材候補

ソースコードリーディングの題材の候補として上がったのは下記のとおりです。

  • Terraform本体のソースコード
  • Serverless Framework本体のソースコード
  • Docker本体のソースコード
  • Go言語の標準ライブラリのソースコード
  • Vue / Nuxt / React などの本体のソースコード
  • Swagger本体もしくはプラグインのソースコード
  • PlantUML本体のソースコード
  • Linuxコマンドのソースコード
  • VSCode本体もしくはプラグインのソースコード
  • GinなどのWebフレームワークのソースコード

Go言語で書かれているソースコードが候補として多かったのは、弊社でGo言語を扱うことが多いからだと思います。Go言語は比較的読みやすい言語だから良さそうという意見もあり、この中から「Go言語の標準ライブラリのソースコード」と「GinなどのWebフレームワークのソースコード」で多数決と取ったところ、

「Go言語の標準ライブラリのソースコード」を対象にすることに決まり、さらにどのパッケージを読むかの多数決で、まずは testing のパッケージを対象とすることになりました。

※ 途中の「じわる…」リアクションは「sortは相当難しいって!」という kuniの あるチームメンバーのダジャレに対するもの

ソースコードリーディング会で期待したいこと

早速来週から第1回目のソースコードリーディング会を行う予定なのですが、このリーディング会を通じて個人的に期待したいこととして

  • 標準ライブラリの仕様や実装に対する理解が深まる
  • 標準ライブラリを読むことで、「Go言語らしい書き方」を学ぶことができる
  • 経験が豊富で高スキルを保有しているエンジニアが、どのようにソースコードを読んでいるのかというナレッジをチーム内で共有できる
  • モブプログラミングを通じて複数人の視点で読むことで、1人では気づかなかったことに気づく

などがあります。
期待通りの結果が得られるかやってみないとわかりませんが、今からどのような会になるか非常に楽しみです!