エンジニアだけど実務で機能改修を担当することになった。でもコードの量が多くてどう読めばいいのかわからない。納期に間に合うか不安だなぁ…。他人の書いたソースコードを効率よく読む方法を教えてほしい。
こんなお悩みにお答えします。
本記事で解説する「ソースコードを読むコツと注意点」を読めば、コードを読む力が圧倒的に向上し、すぐに実務に活用できますよ。
記事を書いている僕はフリーランスエンジニアです。現在はフルスタックエンジニアとしてWeb開発企業で働いています。それらの経験をもとに解説していきますね。
前半で「他人の書いたソースコードを読む必要性」、後半で「ソースコードを読むコツや注意点」を解説します。
ぜひ参考にしてみてください。
本記事ではプログラミング言語Javaのコードを用いて紹介します
他人の書いたソースコードを読む必要性

前提として、他人の書いたソースコードを読む必要性を解説します。
他人の書いたソースコードは、エンジニアなら頻繁に読む機会があります。自社開発や受託開発にかかわらずです。
どういった時に、他人が書いたソースコードを読むのか?
それは主に以下の場面です。
- 機能追加をする際の影響範囲を調べるとき
- 新規開発時に他の機能を参考にしながら実装するとき
- 人の書いたソースコードをレビューするとき
効率よく開発して納期に間に合わせるには、ソースコードをいかに早く正確に読み切れるかが重要です。
他人の書いたソースコードを読むコツ7選

他人の書いたソースコードを読むコツを紹介していきます。
- コードを読む目的を明確にする
- システムの構成を理解する
- 読むべき箇所を特定する
- 必要な箇所を一行ずつデバッグ
- コメントやメソッド名から読み解く
- AIに聞く(AI使用可の場合)
- 論理的に考えながらコードを読む
順番に見ていきましょう。
コードを読む目的を明確にする
ソースコードを読む前に、コードを読む理由を明確にすることが重要です。
コードを読む目的を明確にしなければ、何のためにそのコードを読むのかがわからず、モチベーションが上がらないからです。
モチベが上がらないと、よくわからないコードが出てきた時に、すぐに読むのを諦めてしまいがちです。
- 機能追加時の影響範囲を調べたい
- 他の機能を参考にして効率よく開発したい
- コードレビューをしないといけないから
- セルフレビューをしたいから
- バグの調査
- 新人教育
上記がコードを読む目的として多いかなと。
まずはご自身が「コードを読む目的」を明確にしてから読み始めていきましょう。
システムの構成を理解する
ソースコードを読むコツは、まず「システムの構成を理解すること」です。
システムの構成とは、どんなフォルダ構成になっていて、どんなファイルやクラスがあるのかなどですね。各フォルダやファイル、クラスにはそれぞれ役割があるはずです。
システムの構成を先に理解すべき理由は、「木を見て森を見ず」の状態をなくすためです。
全体を把握してから、徐々に細かい部分に絞っていくことで、コードがどんな流れで動いているのかイメージしやすくなります。
たとえば、JavaやRubyなどのオブジェクト指向言語を扱う開発をするとします。
これらのオブジェクト指向言語では、「MVC」と呼ばれる構成を用いられることが多いです。
- Model(モデル)
アプリの「データ係」。
データの保存や変更、計算などをする場所。 - View(ビュー)
アプリの「見た目係」。
画面に何をどう表示するかを担当。ユーザーが見る部分、触る部分は全部ここ。 - Controller(コントローラー)
アプリの「調整係」。
ユーザーの操作(クリック・入力など)を受け取り、その内容に応じてモデルに指示を出したり、ビューを更新したりする役目。
上記の通り。
たとえば、〇〇Model.javaというクラスがあるとします。このクラスはModelなので、データベースから取得した値を格納する役割があります。
Viewはフロントエンドに関するファイルで、htmlやjspなどが該当します。これらは画面に関するファイルだとわかりますよね。
このように、多くのシステムは意味を持った構成になっているはずです。
システムの全体の構成を理解することで、コードを読むべき箇所を特定しやすくなり、効率よく読むことができます。
読むべき箇所を特定する
ソースコードは先に読む箇所を特定しましょう。
全ファイルや全クラスのコードを、上から下まで読むのは非効率だからですね。規模の大きいシステムほど膨大な時間がかかります。
読むべき箇所を特定するには、システムの動作とコードを照らし合わせると良いです。
ログイン機能の例
たとえば、ログイン機能に関するソースコードを読みたいとします。
ログイン機能の動きは「ログインボタンを押す→ログインクラスが動く」と予想できますよね。
なので、この場合はログイン機能を実装しているクラスを探して、その中のコードを見ればOKです。
実際にコードの例をみてみましょう。以下はJavaで書いたログイン機能のソースコードです。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
// ログインクラス
public class Login {
private static Map<String, String> users = new HashMap<>();
public static void main(String[] args) {
// ユーザーを追加
users.put("user1", "password1");
users.put("user2", "password2");
Scanner scanner = new Scanner(System.in);
System.out.print("ユーザー名を入力してください: ");
String username = scanner.nextLine();
System.out.print("パスワードを入力してください: ");
String password = scanner.nextLine();
// ユーザー名とパスワードの存在確認メソッドを呼び出す
if (login(username, password)) {
System.out.println("ログインに成功しました。");
} else {
System.out.println("ログインに失敗しました。");
}
}
// ユーザー名とパスワードの存在確認
private static boolean login(String username, String password) {
if (users.containsKey(username) && users.get(username).equals(password)) {
return true;
}
return false;
}
}ログイン機能なので、Loginクラスをチェックします。
ちなみにクラスを特定するには、URLやクラス名を参考にすればわかりやすいかと。
たとえばログイン機能なら「https://sample.com/login」だったり、「Login.java」という名前になっているケースが多いですね。
その他のログイン機能に関連性のないクラスは、基本見なくて良いです。見る必要があるのは、Loginクラスと関連するクラスやファイルだけでOKです。
読まなくて良い箇所も特定しよう
読まなくて良い箇所も把握しておきましょう。
先程のLoginクラスのコードを例にすると、「// ユーザー名とパスワードの存在確認メソッドを呼び出す」の条件分岐で呼び出しているloginメソッドの中身は、読まなくてOKです。
// ユーザー名とパスワードの存在確認メソッドを呼び出す
if (login(username, password)) { // loginメソッドは読まなくて良い
System.out.println("ログインに成功しました。");
} else {
System.out.println("ログインに失敗しました。");
}このloginメソッドは、ユーザー名とパスワードの存在確認をしていることが、コメントやメソッド名から読み取れますよね。なのでここは別に読まなくて良いです。
もちろん「勉強のために読みたい」とか、「レビューで質問された時に答えられるようにしておきたい」という考えがあるなら、読んでもOKです。
ただし、完璧に理解しようとして納期に遅れるのはよくないので、その辺りは臨機応変に対応してください。
読むべき箇所と読まなくて良い箇所を判断していくと、効率よくソースコードを読めます。
必要な箇所を一行ずつデバッグ
他人の書いたソースコードを読む際は、読みたい箇所にブレークポイントをおいて、一行ずつデバッグすると効率よく読み進められます。
デバッグすることで、変数にはどんな値が入っているのかがわかりますし、処理がどういう流れで動いていくのかも把握できます。
デバッグは、ソースコードを読む際には必須の作業と言っても過言ではないです。
迷ったらすぐブレークポイントをおいて、デバッグするくらいでもいいですね。
コメントやメソッド名から読み解く
ソースコードを読む際は、コメントやメソッド名をよくチェックしてみてください。
コメントは処理の目的が書かれていることが多いので、コメントをみながらコードを見ると理解の速度が向上します。(中にはわかりにくいコメントがあったり、そもそもコメントがなかったりしますが…)
メソッド名や変数名、クラス名がどんな名前なのかも確認すると良いです。多くの現場ではメソッド名1つにしても、意味のある名前でつけられていることが多いです。
具体例
以下で具体例をあげてみますね。
// SNSアプリクラス
class SNSApp {
private List<User> users;
public SNSApp() {
this.users = new ArrayList<>();
}
// 新しいユーザーを登録
public void registerUser(String username) {
・・・・
}
// 指定されたユーザーに投稿を作成
public void postToUser(String username, String content) {
・・・・
}
// ユーザー名でユーザーを検索
private User findUserByUsername(String username) {
・・・・
}
}上記のコードを解説します。
まず、クラス名が「SNSApp」となっていることから、SNSアプリに関するクラスだとわかりますよね。
続いてメソッド名です。「registerUserメソッド」を見ると、registerUserと書いてあることから、新規ユーザーを登録するんだなと予想できます。
同様にfindUserByUsernameメソッドなら、ユーザーを検索するんだと予想できますよね。
もちろん予想だけで決めつけはダメですので、最終的にはデバッグをしながら、予想を確信に変える必要はあります。
こんな感じでクラス名やメソッド名から、どんな役割をしているのか予測できる場合もあります。
AIに聞く(AI使用可の場合)
できれば自力でコードを読める力を身につけた方が、エンジニアとして成長しやすいです。
ただ、時には業務スピードを優先したい時もあるかなと。そのような場合は、現場でAI使用可能ならAIにコードの処理の目的を聞くのもありですね。
AIならわりと精度の高い答えをくれます。
やり方としては、ChatGPTやGeminiに一部コードを貼り付けて、「このコードは何をしていますか?」と質問すればOKです。
AI使用に関する注意点
AI使用に関して注意点があります。それが以下のとおり。
- 機密情報を送信しないこと
- 特有のクラス名や変数名がついている場合は別名に置き換える
- クラス全体のコードを丸ごと貼り付けるなどはしないこと
- 自己責任で使用すること
あと会社や現場によっては、AIの使用を推奨しているところもあれば、逆にAI使用禁止のところもあります。
なので、以下は必ず現場責任者に確認しておきましょう。
- 現場でAIを使用してもいいか
- AIの使用ルールはあるか
- 使っても良いAIツールは何か
論理的に考えながらコードを読む
ソースコードを読む最大のコツは、「論理的に考えながらコードを読む」ことです。
論理的に考えることで、
- プログラムの処理の理解度が高まり
- 影響範囲の把握がしやすくなったり
- 事前にバグを防いだりできるようになる
からです。
- 「何でこのコードはこう書かれているのか?」
- 「何でこのシステムはこう動くのか?」
といった感じで読み進めていくと良いですね。
プログラミング言語は、言語なので、日本語と同じように文を意識して読むのがコツです。
他人の書いたソースコードを読む際の注意点

他人の書いたソースコードを読む際の注意点もご紹介します。
これを知っているだけで、コードを読むモチベーションがかなり変わるので、ぜひ参考にしてみてください。
以下の流れで見ていきましょう。
- 扱う言語の基礎学習はしておく
- 不明点はその都度ググる
- 設計書がない場合は仕様をメモ
- 繰り返しソースコードを読む
- 読んでも不明な箇所は飛ばす
扱う言語の基礎学習はしておく
ソースコードを読む前に、扱う言語の基礎学習はしておきましょう。
これをしていないと、開発時に一から調べながら作業する必要があり、時間がかかって納期に間に合わなくなる可能性がでてきます。
新人でもベテランでも同じ。現場が変わって新しい言語を扱う場合、
- 基礎文法やよく使うメソッド
- 条件分岐や繰り返し処理の書き方
などは、事前に学習しておくと序盤から効率よく開発を進められます。
事前に言語の基礎学習をするメリット
たとえば僕は、Javaをメインに使ってきたのですが、3年目のタイミングでTypeScriptを使う案件にシフトしました。
そのため、事前にTypeScriptの動画教材を購入して基礎を学習しました。そのおかげで実務に入った時に、迷いが少なくコードを読めたので、やはり基礎学習は必要だなと感じたんですよね。
なので、これから扱う言語の基礎学習はしておくと良いですよ。
不明点はその都度ググる
ソースコードを読んでいると、不明点がでてきます。
もし理解しないと前に進めないのであれば、スルーせずにその都度ググりましょう。
たとえば、
- 標準クラスやメソッドの役割
- 基礎文法の意味
などなど。基本的なことも含めて、自分が理解できていないのであれば、都度調べる必要があります。
以下でエンジニアにおすすめのググり方を解説していますので、ぜひ参考にしてみてください。

設計書がない場合は仕様をメモ
設計書がない場合は仕様をメモすると良いですよ。
現場によっては設計書がなかったり、設計書はあるけれど、情報が古かったりして使い物にならないケースがあります。
たとえば僕は、エクセルやmacのメモ帳に、「Aクラスは〇〇をするクラス、Aクラスのaメソッドは〇〇をしている、aメソッドからbメソッドが呼び出される」というように、処理の流れをメモしています。
もちろん全てのコードをメモしているわけではなく、
- 自分が修正するところ
- 処理が複雑な箇所
だけをメモしています。
システムの規模が大きいほどソースコードの量も増えるので、記憶だけに頼るのは非効率です。
仕様をメモしておくことで、後でいつでも見返せるようになるので、効率よく開発を進められます。
もし「いつも仕様が理解できないことが多い…」という方は、以下で仕様を理解できない原因と対策を解説しているので、あわせて参考にしてみてください。

繰り返しソースコードを読む
プログラマーは繰り返しソースコードを読んで理解していきます。
一度コードを読んだだけで仕様や処理の流れを理解するのは、よほどの天才か長年そのシステムに関わっている人でない限り不可能に近いです。
具体例
たとえば僕は、フリーランスエンジニアとして働いており、半年から1年ごとに案件を変えるケースが多いです。
なので、1つのシステムに長く携わることは少ないです。現場が変わればシステムも変わります。その都度、繰り返しコードを読んで理解度を高めています。
ソースコードは繰り返し読んで、1つずつ理解していければOK。
- 1周目はなんとなくの理解
- 2週目は理解度60%
- 3週目は90%
といった感じですね。
読んでも不明な箇所は飛ばす
コードを読んでも、全くわからない箇所がでてくるとことがあります。
基本はまず調べることが大事なのですが、それでもすぐに理解できないこともあるかなと。
その際に、「深追いするかしないか」迷う時ありますよね。深追いしてわかればいいのですが、それでわからなかったら時間がもったいないです。
なので読んでも不明な箇所は、時には一旦読み飛ばすことが大事です。
他のコードを読んでいくことで、読んでもわからなかった箇所との関連性がわかり、理解できるケースもあります。
どうしても今すぐ理解しないといけないなら、質問できる環境であれば、実装者やリーダーに質問するのもありですね。
以下記事で、エンジニアの良い質問の仕方を紹介していますので、ぜひ参考にしてみてください。

まとめ:コードを読むなら最初はざっくり理解することがポイント

他人の書いたソースコードを読むには、システムの構成を理解し、不明点はその都度ググりましょう。
最初から完璧にコードを読んだり仕様を理解することは難しいです。
まずはどのクラスがどんな役割をしているのかなど、全体をざっくり理解することがポイントです。
その上で、細かいところまでフォーカスしていき、読むべき箇所と読まなくて良い箇所を特定してみてください。
他人の書いたコードを読むコツを把握した後は、自分が書いたコードを読んでレビューする方法も押さえておくと、さらに品質の高いコードが書けるようになりますよ。
セルフレビューのやり方は、以下記事をチェックしてみてくださいね。

