1年目から身につけたい! チーム開発 6つの心得

第6章 ほかの人のコードを読もう―無理なく始められるコードリーディングのコツ

この記事を読むのに必要な時間:およそ 5 分

日々のコミットを読む

コードの読みかたとして最後に挙げるのは,テレビやラジオを付けっぱなしにしておくように日々流れてくるコミットを読むやりかたです。

日々のコミットを読む方法はいくつかありますが,クリアコードではコミットメールを読むという方法を最もよく利用しています注8)⁠

コミットメールの内容

コミットメールとは,リポジトリにコミットされたことを契機に送信される,そのコミットに関する情報を含めたメールのことです。具体的には次のような内容が含まれます。

  • コミット日時
  • コミットした人の情報(名前,メールアドレスなど)
  • コミットメッセージ
  • ソースコードの差分

ここでは,これらすべてを含むメールをコミットメールと呼びます図7注9)⁠

内容を理解すること以外の目的でとにかく「コードを読む」ということを最優先に考えると,この方法であれば比較的低コストでさまざまなコードに触れることができます図8)⁠

図7 コミットメール

図7 コミットメール

図8 流れてくるコミットを見ることを通じて,多くのコードに触れられる

図8 流れてくるコミットを見ることを通じて,多くのコードに触れられる

ただし,間違い探しのためのコードレビューのようにすべてのコミットを1行ずつ丹念に読んでいると,時間がいくらあっても足りません。そのため,この方法では次のような読みかたを推奨します。

  • まず,コミットメッセージを読む
  • 次に,コードを軽く眺める
  • 気になる個所があれば,詳しく読む
  • なければ,次のコミットメールを読む

クリアコードでは,GitHub上の自分のリポジトリに行われたpushの結果を受け取るgithub-web-hooks-receiver他の人のリポジトリに行われたpushの結果を受け取るgithub-event-watcherコミットメールを流すためのgit-commit-mailerといったツール群を公開しています。詳しいセットアップ手順はリポジトリ内の説明を参照してください。

注8)
ほかには,GitHubなどのWebサービスでリポジトリが公開されているプロジェクトであれば,フィードをフィードリーダーで購読する方法などもあります。
注9)
世の中にはソースコードの差分を含まないコミットメールもあります。

日々のコミットを起点にした読みかた

コミットメールのようなしくみを使って日々のコミットを流し見する方法は,現実的に無理なく続けやすいです。コミットメッセージの書きかたや,コードの書きかたの工夫など,プログラムの内容によらない一般的な作法を学ぶにはうってつけと言えます。

その一方で,個々のコミットには現れない,設計やアルゴリズムの話のような情報を読み取りにくいという欠点があります。また,まったく関心のないソフトウェアやまったく知らないプログラミング言語のコミットは,見ていても頭に入ってきにくいでしょう。

ですので,まずは自分が使っているソフトウェアや読み書きできる言語を採用しているプロジェクトのコミットから読み始めるのがお勧めです。興味のあるキーワードが登場していれば,それを手掛かりにソースコードを探索できますし,ひいては設計上の工夫も学べます。

最後に,本章で紹介した3通りのコードの読みかたのそれぞれについて,メリット/デメリットと適した場面を表1にまとめました。目的に即した読みかたを選ぶ際の参考にしてください。

表1 コードの読みかたとそれぞれのメリット/デメリット

読みかたメリットデメリット適した場面
すべてのコードを読む
  • 対象ソフトウェアの全体を理解できる
  • どこから読めばよいのかわかりづらい
  • 心が折れやすい
  • オフラインで読む場合,ソースコード全体を用意する必要があり,リモートリポジトリの更新に追随するのも面倒
小規模なソフトウェアの全容の把握
興味のある個所だけを読む
  • 興味のある個所の概要や詳細を理解できる
  • より短い時間で読める
  • 対象のソフトウェアの全容は理解できない
  • 初級者にとっては,興味のある個所を見つけるのが難しい
  • オフラインで読む場合,ソースコード全体を用意する必要があり,リモートリポジトリの更新に追随するのも面倒
バグ修正や機能追加
日々のコミットを読む
  • 最初にソースコード全体を用意しなくてもよい
  • コミットメールで読んでいる場合,日々のコミットは自動的に流れてくる
  • 日々流れてくるので,その時点から読み始められる
  • 日々流れてくるので,流れてくる限り読み続けられる
  • 最新の変化にいち早く気がつける
  • 開発が活発でコミット数の多いソフトウェアだと読むのが大変
  • 対象のソフトウェアの全容は理解できない
たくさんのコードに触れる


文書化されたベストプラクティスを学ぶのも大事だけど,それだけじゃ不十分だね。ソースコードやコミット,先人たちが呼吸するかのように無意識に実践していることの中には,まだ文書化されていない活きたノウハウがたくさん詰まっているんだ。そういうところから学ぶのも大事だよ

コミットが流れてくるのって,まるで,開発の様子をライブで見ているみたいですね! これはいろんなことが学べそうです

一度だけ読んでそれ以後は読まないんじゃあ,知識はすぐに古びてしまうからね。流れてくるコミットを眺めるようにすれば,継続的にコードを読むのも習慣にしやすいんじゃないかな


コメント

コメントの記入