プログラミングを始めたばかりの頃は、自分の書いた小さなコードを理解するのも一苦労かもしれません。
しかし、成長したり会社に入ってチーム開発する機会が増えてくると、他人が書いた大規模なコードを読む機会も増えてきます。
大規模なコードを初めて目にすると、その複雑さに圧倒されることがあります。
実際筆者も初めてのチーム開発の際に、それなりのコード量があるものを読んだ時大変な思いをしました。
けれども正しいアプローチを身に付ければ、どんなコードも読み解くことができるようになっていきます。
今回は、様々な人が大規模なコードを読むにあたって大事にしている共通部分をまとめていこうと思います。
大規模コードを読み解くための基本ステップ
プロジェクトの全体像を把握する
まずはプロジェクトの目的や概要を理解することが重要です。
(何の目的もなしに、すべてのコードを網羅しようと思ってはいけません。)
これにはGithubのREADMEファイルや書き残されているドキュメントを読むことが挙げられます。
READMEファイルには、プロジェクトの背景、機能、依存関係などが記載されているはずです。
ドキュメントを読むことで、このプロジェクトが何を達成しようとしているのか、どのような構造をもっているのかが分かります。
主要なディレクトリとファイルを確認する
次にプロジェクトのディレクトリ構造を確認しましょう。
大規模なプロジェクトでは、コードが複数のディレクトリに分かれています。
以下のようなディレクトリが含まれていることが多いです。
- ‘src’
ソースコードが含まれるディレクトリ
- ‘tests’
テストコードが含まれるディレクトリ
- ‘docs’
ドキュメントが含まれるディレクトリ
- ‘config’
設定ファイルが含まれるディレクトリ
この他にもMVCモデルで開発が進められているなら、‘Model’, ‘views’, ‘Controller’というようなディレクトリがあるかもしれません。
このようにディレクトリの構造を理解することで、コードのどの部分に注目すればいいか分かります。
エントリーポイントを見つける
多くのプロジェクトには、コードの実行が開始されるエントリーポイントがあります。
webアプリケーションであれば、‘main’関数や‘index.js’ファイルがエントリーポイントになっていることがあります。
ここからコードの流れを追い始めると、プロジェクトの動作を理解しやすくなります。
コードのフローを追う
エントリーポイントや自分が理解したい機能部分のファイルが見つかったら、実際にコードのフローを追ってみましょう。
関数やメソッドの呼び出しを追跡し、それぞれの役割を理解します。
ここで重要なのは、一度にすべて理解しようとしないことです。
一発勝負のテストなんかじゃないので、初めのうちは大まかな流れを把握し、徐々に詳細部分を掘り下げていくことがポイントです。
効率的なコードリーディングのコツ
コメントを活用する
他人が書いたコードには多くの場合コメントが含まれています。
(全く書かれていなかったり、意味のないコメントが書かれていることもあります…)
コメントは先人が残したコードの意図や、動作を理解するための仕様書です。
特に関数やメソッドの上に記載されたコメントは、その関数が何をするものなのか簡潔に説明しています。
読み飛ばさすに、しっかり目を通してみましょう。
デバッガを使用する
デバッガはコードの動作をリアルタイムで追跡する便利なツールです。
ブレークポイントを設定し、コードがどのように実行されるかステップバイステップで確認することで、コードの理解が深まります。
特に複雑なロジックを含む部分では、デバッガの使用は有効です。
簡単な部分から理解する
最初からビジネスロジックの最深部や難しい部分を理解するのではなく、比較的簡単な部分から理解を始めるといいでしょう。
簡単な部分でプロジェクト全体の理解が進みます。
よくある課題とその対策
ネーミングの問題
大規模なコードベースでは、変数名や関数名が適切でない場合があります。
技術者界隈で有名な書「リーダブルコード」でも挙げられますが、ネーミングの問題は簡単に見えて奥深い問題です。
リーダブルコード ?より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) 新品価格 |
頑張って意味を推測しても分からない、名前を変更して問題ない場合は、リファクタリングツール等を用いて名前を変更することを検討しましょう。
「リーダブルコード」についての紹介記事はこちら。
コードの一貫性の欠如
プロジェクトでは異なる開発者が同時に進めていくので、異なるスタイルでコードが書かれてしまうことがあります。
その結果、コードの一貫性が欠如している事があります。
なのでコーディング規約やスタイルガイドを確認し、チーム内で共有しておくことが大事です。
テストコードの不足
テストコードが不足しているプロジェクトでは、コードの動作を確認するのが難しくなります。
まずは既存のテストコードを確認し、テストが不足してる部分については、自分でテストコードを書いて動作を確認するといった検討も必要です。
大規模コードを読む際の心構え
忍耐強く取り組む
大規模なコードを理解するのには時間がかかるものです。
一度にすべて理解しようとせず、少しずつ着実に進めることが大切です。
助けを求める
自分一人で理解することが難しい場合、同僚やコミュニティに積極的に助けを求めましょう。
継続的な学習
コードを読む力は経験と共に向上していきます。
継続的に他人のコードを読むことで、自分の理解力が向上します。
また、自分が知らない新しい技術やパターンを学ぶことで、より効率的にコードを書けるようになるはずです。
まとめ
大規模なコードを読み解くことは、一見難しそうに思えるかもしれませんが、正しいアプローチと心構えを持てば、確実に理解できるようになります。
プロジェクトの全体像を把握する部分から始め、そこから木の根を張るように広げていくことでコードの動作を明確に理解できます。
焦らず、地道に進めていくことが大規模なコードを読む解くのに必要な力です。