今すぐ使える!他人の書いたソースコードを読むコツ【保存版】

今すぐ使える!他人の書いたソースコードを読むコツ
shin-memo

エンジニアだけど実務で機能改修を担当することになった。でもコードの量が多くてどう読めばいいのかわからないから納期に間に合うか不安。他人の書いたソースコードを効率よく読むコツとかあれば教えてほしい。

こんなお悩みにお答えします。

この記事の著者

shin

名前 / Name  
シン

実績 / Achievements
フリーランスエンジニア【保有資格】Oracle認定JavaGold/ITパスポート/認定SEOスペシャリスト/SEO検定全級

この記事で解説する「ソースコードを読むコツと注意点」を読めば、コードを読む力が圧倒的に向上し、いますぐ実務に活用できるようになりますよ。

シン
シン

僕自身、上記の方法を実践した結果、エンジニア歴2年半で月収50万円の案件に参画できています。プログラミング言語資格「Java Gold」も保有しておりますので、実体験をもとに解説しますね。

記事前半でコツを解説し、後半で注意点を紹介します。実際にプログラミング言語Javaのコードを用いて紹介します。

最後までお読みいただければ、プログラマーとして一段階スキルアップでき市場価値を高められるので、ぜひ試してみてください!

他人の書いたソースコードを読む必要性

前提として、他人の書いたソースコードをなぜ読むべきなのか、必要性を解説しますね。まず、他人の書いたソースコードは、エンジニアなら頻繁に読む機会があります。自社開発や受託開発にかかわらずです。

既存のシステムへの機能追加や新規開発など、他の機能を真似する際にも他人が書いたコードを読む場合があります。コードレビューの際にも他人が書いたコードを読む必要がありますね。

効率よく開発して納期に間に合わせるには、他人の書いたソースコードをいかに素早く読み切れるかが重要です。

他人の書いたソースコードを読むコツ6つ

他人の書いたソースコードを読むコツを紹介していきますね!

  1. 目的を実現する手段を考える
  2. システムの構成を理解する
  3. 読むべき箇所を特定する
  4. 必要な箇所を一行ずつデバッグ
  5. コメントやメソッド名から読み解く
  6. 論理的に考えながらコードを読む

順番に見ていきましょう。

目的達成に必要な手段を考えよう

ソースコードを読む前にすべきことが、今から何をするのかを確認することです。当然ですが、「今から自分は何を実現したいのか」を明確にしなければ、作業を進められないです。実装内容の確認は、プロジェクトリーダーや現場の責任者から指示があると思います。指示がなければ自分から聞きに行く必要があります。

実施したいことは言語化して解像度をあげることがポイントです。僕の場合はエクセルでこれから行う作業内容を書き出しています。目的を明確にしたあとは、それを達成するために必要な手段を考えましょう。設計書があれば基本的には設計書通りに進めればいいですが、設計書は日本語で書かれていることがほとんどなので、コードに置き換えてみて目的をどう実現するのかをイメージしてみましょう。

まずは自分がやりたいことを明確にし、その目的を達成するために必要な手段を把握してから作業に取り掛かりましょう。

システムの構成を理解する

ソースコードを読む際のポイントが、システムのクラスやファイル構成を理解することです。システムの構成とは、どのクラスが大まかにどんな役目を果たしているのかです。たとえば、JavaやRubyなどのオブジェクト指向の言語を扱う開発では、「MVC」と呼ばれる構成が用いられることが多いです。

MVCとは?

Mode(モデルl): データやアプリケーションのロジックを表す。データの操作、変更、および処理を担当。モデルは、アプリケーションのデータやビジネスロジックを保持し、必要に応じて更新や変更を行う。

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クラスがメインになります。その他のログイン機能に関連性のないクラスは基本的に見なくて良いです。見る必要があるのはLoginクラスとそれに関わるクラスやファイルだけでOKです。

読まなくて良い箇所も特定しよう

読むべき箇所を特定した後に、読まなくて良い箇所も把握しておきましょう。先程のJavaのコードを例にすると、「// ユーザー名とパスワードの存在確認メソッドを呼び出す」の条件分岐で呼び出している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メソッドなら、ユーザーを検索するんだなと予想できますよね。こんな感じでクラス名やメソッド名から、どんな役割をしているのかがわかることが多いのです。

論理的に考えながらコードを読む

ソースコードを読む最大のコツは、「論理的に考えながらコードを読む」です。なぜなら、多くのシステムのコードは処理が複雑だからですね。

断片的に読んでも、その前後の処理が理解できていなければ、全体感を掴めず結果的に仕様を理解できないです。仕様を理解できないと、なんとなくの実装をするしかなくなり、後々重大なバグに繋がり兼ねません。

「何でこのコードはこう書かれているのか?」「何でこのシステムはこう動くのか?」といった感じで読み進めていくと良いです。プログラミング言語は、「言語」なので、日本語などと同じように文を意識して読むのがコツです。

シン
シン

もちろん全て完璧に仕様を理解しなくてもOKです。でも少なくとも「自分がそう思った根拠」は誰かに説明する際に必要です。なので論理的に考えながら、人に説明できるようにコードを読む癖をつけると良いですね。

他人の書いたソースコードを読む際の注意点5つ

他人の書いたソースコードを読む際の注意点もご紹介しますね。これを知っているかいないかだけでモチベーションがかなり変わるので、ぜひ読んでみてください。

以下の流れで見ていきましょう。

  1. 扱う言語の基礎学習はしておく
  2. 不明点はその都度ググる
  3. 設計書がない場合は仕様をメモ
  4. 繰り返しソースコードを読む
  5. 読んでも不明な箇所は飛ばす

扱う言語の基礎学習はしておく

ソースコードを読む前に、実務で扱う言語の基礎学習はしておきましょう。これをしていないと、実務で一から調べながら作業をする必要があり、時間がかかってしまいます。結果的に納期に間に合わなくなる可能性がでてくるのです。

新人でもベテランプログラマーでも同じ。現場が変わって新しい言語を扱うことになったとしても、基礎文法やよく使うメソッド、条件分岐や繰り返し処理の書き方などは事前に学習しておくと、ソースコードを読む速さが向上します。

僕自身、Javaをメインに使ってきたのですが、3年目のタイミングでTypeScriptを使うことになりました。そのため、事前にUdemyでTypeScriptの動画教材を購入して基礎を学習しました。おかげで実務に入った時に迷いが少なくコードを読めたので、やはり基礎学習は必要だと感じたんですよね。

シン
シン

個人的に、基礎学習は書籍よりもUdemyなどの動画教材の方が理解しやすいと思っています。ぜひ学習の際にはUdemyを活用してみてください。セール中であれば1つの動画を大体2,000円から3,000円ほどで購入できますよ!

Udemyはこちら

不明点はその都度ググる

ソースコードを読んでいるとわからないことがでてきます。もし理解が必要なのであれば、放置せずにその都度ググりましょう。

たとえば、メソッドの意味や変数名の付け方など。基本的なことも含めて自分が理解できていないのであれば都度調べる必要があります。

以下でプログラマーにおすすめのググり方を解説していますので、ぜひ参考にしてみてください。

あわせて読みたい
プログラマーは検索力が必要!最強のググり方を解説します
プログラマーは検索力が必要!最強のググり方を解説します

設計書がない場合は仕様をメモ

現場によっては設計書がなかったり、設計書はあるけれど情報が古かったりして使い物にならないケースがあります。その際は自分でソースコードを読みながら仕様をメモっていくと良いですよ。

たとえば僕は、エクセルやmacのメモ帳に、「Aクラスは〇〇をするクラス、Aクラスのaメソッドは〇〇をしている、aメソッドからbメソッドが呼び出される」というようにざっくり処理の流れをメモしています。もちろん全てのコードをメモしているわけではなく、自分が実装するところだけなのと、処理が複雑な箇所だけをメモしています。

システムの規模が大きいほどソースコードの量も増えるので、記憶だけに頼るのは非効率です。忘れないように自分が実装する箇所の仕様はメモしておくと、後でいつでも見返せるようになるので、効率よく開発を進められます。

繰り返しソースコードを読む

プログラマーは繰り返しソースコードを読んで理解していきます。一度コードを読んだだけで仕様や処理の流れを理解するのは、よほどの天才か長年そのシステムに関わっている人でない限り不可能に近いです。

僕自身はフリーランスエンジニアとして働いており、半年から1年ごとに案件を変えるケースが多いので、1つのシステムに長く携わることは少ないです。フリーランスやSESで働いているエンジニアはみなさんそうだと思います。

そのため、一度で理解できないのは当然のことです。なので繰り返しソースコードを読んで1つずつ理解していければOKです。

読んでも不明な箇所は飛ばす

コードを読んでもわからない箇所がでてくるとことがあります。その際に深追いするかしないか迷う時ってありますよね。深追いしてわかればいいのですが、それでわからなかったら時間がもったいないです。

なので読んでも不明な箇所は、時には一旦読み飛ばすことが大事です。他のコードを読んでいくことで、読んでもわからなかった箇所との関連性がわかり、理解できるケースもあります。

どうしても今すぐ理解しないといけないなら、質問できる環境であれば質問するのもありですね。以下でエンジニアの良い質問の仕方を紹介していますので、特に新人の方は参考にしてみてください。

あわせて読みたい
【基本】ITエンジニアの良い質問の仕方【質問力は超重要】
【基本】ITエンジニアの良い質問の仕方【質問力は超重要】

最初はざっくり理解することがポイント

他人の書いたソースコードを読むには、システムの構成を理解し、不明点はその都度ググりましょう。

最初から完璧にコードを読んだり仕様を理解することは難しいです。まずはどのクラスがどんな役割をしているのかなど、全体をざっくり理解することがポイントです。

シン
シン

その上で細かいところまでフォーカスしていき、読むべき箇所と読まなくて良い箇所を特定してみてくださいね。

今回は以上です。

運営者情報
シン
シン
フリーランスエンジニア
フリーランスエンジニア【経歴】配送業→販売員→プログラマー→独立【保有資格】Oracle認定Java Gold、全日本SEO協会認定SEOスペシャリスト、SEO検定全級、ITパスポート【発信内容】プログラミング、エンジニア転職、SEO
記事URLをコピーしました