f4エンジニアブログ

f4samuraiの中の人たちが書いています

新卒のインストラクターだったらコードリーディングを教えたい

前置き

CTO/CHROの松野です。
最近は暖かい日も増えてきて、春を感じるようになりました。f4samuraiにも、4月には4名の新入社員が入社する予定です(この文章「4」が多いですね)。

そこで今回は、僕が新卒時代に教わって今も役に立っていることを書きたいと思います。

新卒で教わったこと

新卒で入社した会社はSIerでした。そこで最初に配属されたプロジェクトがオープンソースソフトウェア(OSS)を調査研究するプロジェクト」でした。

僕は2003年入社なのですが、当時はいろんなOSSが誕生していました。中にはエンタープライズ用途を想定したOSSもありましたが、金融業界や流通業界などミッションクリティカルなシステムにも使えるのか?を調査をするプロジェクトです。

調査したOSSを例にあげますと、

などがありました。会社で一番使われていたプログラミング言語Javaなので、Javaで書かれたソフトが多いです。

ちゃんと使えるかどうかを判断するために、OSSなのでソースコードを読んでみよう、ということで、先輩と一緒にコードリーディングをしていきました。

コードリーディングの進め方

コードリーディングについては、以前このブログで掲載した他メンバーの記事も参考になりますので、ご覧下さい。

f4samurai.hateblo.jp

この記事と違うのは、対象がプロジェクトのコードではなく、世の中で広く流通しているオープンソースだ、というところでしょうか。

最初に読んだソースコードJUnit

JUnitは、ソフトウェア開発において自動テストという概念を持ち込んだ画期的なソフトウェアです。 JavaのプログラムをテストするコードをJavaで書くためのライブラリで、ご存じの方も多いと思います。

JUnitソースコードは、GitHubで公開されています(僕が見たのはJUnit4なのでリンクもJUnit4に貼りますが、最新バージョンはJUnit5ですね)。

github.com

コードを見ると分かるのですが、めちゃくちゃきれいなんですよね。 本当に見本みたいな書き方がされていて、心が震えたことを覚えています。

もう一つすごいのは、JUnitのテストコード自体も、JUnitで書かれていることです。自分自身で思想を体現しているし、テストコードのサンプルにもなっているし、このソフトウェアの中ですべてが完結していて美しいです。

対象のソースコードが多い場合は

OSSによっては、ソースコードの量がめちゃくちゃ多いこともあります。その場合は、

  • ディレクトリ単位で、どんな機能を持っているの考える(仮説を立てる)
  • 重要そうなソースファイルをいくつか開いて、仮説を検証する
  • それぞれの機能がどのように結びついているのかを確認する
  • HTTPリクエストの処理や、サーバの起動処理など、一つのシーケンスに沿って処理を追う

などがポイントかなと思います。

やって良かったこと

コードリーディングの対象がオープンソースだったので、一流のエンジニアが書いたソフトウェアを読むこと自体がとても勉強になりました。

 

例えば、デザインパターンを勉強したときに「概念は分かるけどどうやって使うの?」と疑問に思っていたのですが、実際にオープンソースとして実装されているのを見ることで理解を深めることができました。また、コメントはこの粒度で、こういった内容を書くといいのか、みたいなことも参考になりました。

 

僕は最近CHROの業務割合が多くなり、プログラミングからは離れているのですが、たまに人手の足りない新規事業チームから「アプリの改修したいんだけど、やってもらえませんか?」とお願いされることがあります。
全然知らない人が書いたコードを渡されても、あまり抵抗感なく読み始められたのは、新卒のときにコードリーディングをやっていたおかげかな、と感じて、新卒時代の僕に感謝しています。