最新記事公開時にプッシュ通知します
2026年3月6日


1977年生まれ、大阪府豊中市出身。株式会社ソニックガーデンのRailsプログラマ、およびプログラミングスクール「フィヨルドブートキャンプ」のメンター。ブログやQiitaなどでプログラミング関連の記事を多数公開している。将来の夢はプログラマーをみんなの憧れの職業にすること。主な著書に「プロを目指す人のためのRuby入門 改訂2版 言語仕様からテスト駆動開発・デバッグ技法まで」(技術評論社)などがある。
みなさん、コードレビューしていますか?
やってます! という人の中でも「わざわざ誰かからコードレビューのやり方を細かくレクチャーされたことがある人」は、少ないのではないでしょうか? 「なんとなく見よう見まねでやって、ここまで来た」なんていう人も、きっと多いと思います。まあ、筆者もその一人なんですけどね(苦笑)。
というわけで、この記事では、「コードレビューってどうやるの?」「コードレビューするときは、どんな点に着目すればいいの?」といったポイントを解説していきます。
この記事は以下のような読者を想定して書かれています。
つまり、これまでコードレビューを受けることは何度かあったけど、コードレビューする側に回るのは初めてで、どうコードレビューすればいいか迷っている、という若手を対象にしています。
また、開発チームで新人エンジニアを指導しているリードエンジニアのみなさんも、チーム内で「コードレビューの手順や観点」を議論するための叩き台として本記事の内容をご活用ください。
この記事では前編と後編に分けて、以下のような内容を解説します。
前編
後編
注意してほしいのは、この記事では「コードの良し悪しをどう評価するか」というテクニカルな側面にフォーカスしている点です。「相手を怒らせない、うまいコメントの書き方」といったコミュニケーション面のテクニックについては、すでに『伝わるコードレビュー』のような良書があることから、本記事では対象外としています。
近年では「コードレビューはAIにやらせているよ」という現場も増えてきていると思います。もちろん、それ自体は問題ありません。
ただし、ITエンジニアがコードレビューのやり方をよく理解しないままでよいのか、という疑問は残ります。少なくとも、AIが出してきたレビューコメントを読んで、
「うん、適切だね」
「ここはちょっと的外れだな」
「あれっ、この問題が見落とされているぞ?」
というように、その妥当性を評価できるスキルは身につけておくべきではないでしょうか。
そのためにも若手エンジニアはまず、自分でコードレビューする経験をある程度積んでおく必要があります。だからこそ筆者は、この記事を通じて若手エンジニアが自分の頭でコードレビューできるようになるための考え方や観点を伝えたいと考えています。
この記事を読んで基本を学び、コードレビューの経験を積み、自分の中に確固たる「物差し」をつくりましょう。
さて、前置きはこれぐらいにして、いよいよ本編に入りたいと思います。
最初にコードレビューの目的を確認しておきましょう。
コードレビューをするのは、ひとことで言うと「良いコードにするため」です。
では「良いコードとはどんなコードなのか?」というと、これはひとことでまとめるのが難しいですね。コードの良し悪しにはいくつかの観点があります。
最初の3つは長期的な観点と言えます。つまり、今後も継続して開発しやすいコードが「良いコード」になります。
後半の3つは短期的な観点です。つまり、そのコードをリリースしたときに問題を起こさないコードが「良いコード」になります。
これら6つの観点に、優先順位は付けられるのでしょうか?―――いえ、付けられません。いずれも重要です。
ですが、現実的にはコードレビューでは最初の3つ(可読性、保守性、堅牢性)が自ずと重視されるのかな、と思います。
なぜ可読性、保守性、堅牢性がコードレビューで重視されるのかというと、コードレビューは文字通り「コード」のレビューであり、動作確認ではないからです。
もちろん、レビューの一環として「実際に動かしてみる」という作業を加えることはありますが、それはオプションです。「レビュアーが必ずやらなければいけないこと」には含まれていません(少なくとも筆者の現場ではそうです)。
というのは、コードからある程度は読み解けるものの、これらは動かして確認するのが一番確実です。
一方、
というのは、まさに目の前にある「コード」に対する評価です。そして、それらはコードを読める人にしか判断できません。
というわけで、「可読性、保守性、堅牢性、正しさ、セキュリティ、パフォーマンス」は、いずれもコードレビューする際には確認すべき観点ですが、後半の3つについては「コードレビューを最後の砦」にするのは危険です。そうではなく、コードレビューとは別に「実際に動かして検証する作業(品質保証、QA)」を設けましょう。
逆に言えば、可読性、保守性、堅牢性に関しては「コードレビューが最後の砦」になるので、レビュアーが責任を持ってその妥当性を判断する必要があります。
コードレビューの目的を理解したら、次は「どんなふうにコードレビューを進めればいいのか」を見ていきましょう。
コードレビューのやり方や進め方は人それぞれだと思いますが、そもそも他のエンジニアがどんなふうにコードレビューしているのか、実際に見たり聞いたりしたことがある人は少ないのではないでしょうか。
そこで、参考までに筆者がどんなふうにコードレビューを進めているのかをここで紹介します。
コードレビューのトリガーはプルリクエスト(以下PR)です。筆者の現場ではこんな感じでコードレビューが始まります。
なお、場合によっては「伊藤さん、コードレビューお願いします」とバイネームでレビュアーが指定されることもあります(筆者がレビュアーとして最適と判断された場合など)。
筆者はPRの規模を確認するために、まずdiffの量に注目します。具体的には以下の画像の赤丸部分です。
ここのプラス(+)の値を見て、なんとなくPRの規模感を測ります。この数字を見たときの筆者の感触は以下の通りです。
もちろん、これはあくまで目安でしかありません。コードとは直接関係のない設定ファイルやテキストファイルが大量に更新されてdiffが増えることもありますし、diffが少なくても予想以上にややこしい修正でレビューに苦労するケースもあります。とはいえ、ざっくりとPRの規模感をつかむには、とりあえずこれで十分です。
次に、PRのdescriptionやコミットメッセージを眺めて、このPRがどんなPRなのか(不具合修正なのか、機能追加なのか、単なる設定変更なのか、etc.)を把握します。
そして、descriptionの内容やdiffの大きさなどから、「たぶん、こんな変更が入ってるんだろうな」というふうに、変更内容を予想します。
変更内容を予想するのは、実際にコードをレビューする際に次のような判断をするためです。
次に“Files changed”のタブを開きます。
タブを開いたらそのままコードレビューに進んでもいいのですが、diffが大きい場合はいったん左側に表示されるファイルリストを確認します。
ファイルリストを確認するのは、どのファイルに手が加えられたのかを事前にざっくり把握するためです。
さて、ここまできたら、いよいよコードレビューのスタートです。
筆者は基本的に上から下へ順番にコードを見ていきます。Ruby on Railsの場合、アルファベット順に、
とファイルが並ぶため、上から下にレビューしていくと、以下のような手順でレビューできます。
ただし、diffの内容によっては上から下に見ていく方式だと、修正内容が複雑すぎて「何をやっているのか、さっぱりわからん」と思うときもあります。このあたりはケースバイケースで、その都度コードレビューしやすい順番でコードを読んでいきます。
先にテストコードを確認して、「今回はどういう仕様変更が入ったのか」をテストコードから把握することもあります。また、先に上から下まで、ざーっとコードを眺めて、「どこにどんな変更が入ったのか」をざっくり頭に叩き込んでから、あらためて最初からコードをじっくりレビューしていくこともあります。
コードを読みながら気になった部分や、改善できそうな点をコメントしていきます。
観点としては、前述の通り「可読性、保守性、堅牢性、正しさ、セキュリティ、パフォーマンス」の6つです。これらの観点でコードを見ていったときに、「ん?」と思う点があればコメントを入れます。
なお、具体的にどんなコードにどんなコメントを入れたらいいのか、といったポイントは、後編の記事で紹介する予定です。
最後に念のため、CIのテストが全部パスしているかどうかを確認します。
もしテストが落ちている場合は「テストが落ちてるけど、大丈夫?」とコメントします。どこでどんな理由で落ちているのかまでは確認しません。それはPRを出した人に確認してもらいます。
このとき、CIのテストがフレーキー(不安定でたまに落ちる状態)だと、しょっちゅう「大丈夫?」というコメントを入れることになってしまいます。この記事のテーマからは逸れてしまいますが、CIのテストを安定化させることも非常に大事です。
一通りコメントが終わったら、“Submit review”ボタンをクリックして1回目のレビューコメントを確定します。
その後、必要に応じて掲示板などで、レビューが終わったことをPRの作成者に連絡します。
もちろん、致命的な問題がないなら1回目のレビューでapproveすることもあります。
以上が筆者のコードレビューの進め方です。
コードレビューは、する側の努力だけでなく、される側の協力も必要不可欠です。PRの作成者はレビュアーの負担を減らすために、下のような点に配慮しましょう。
先ほど筆者は、1000行を超えるPRを見ると「多すぎ!なんで分割してくれないんだ!!😫」と感じる、と書きました。
開発をしている本人はコードを書きながら、PRのサイズがだいたいどれくらいになりそうか想像が付くはずです。「これは軽く1000行を超えてきそうだな」と思ったら、PRを複数回に分けること(PRの小口化)を検討してください。
小口化の具体的なアプローチは、筆者が以前執筆した以下の記事で詳しく説明しています。
調査をサクサク進めるために。伊藤淳一が考える「良いプルリクエスト、悪いプルリクエスト」 | レバテックラボ(レバテックLAB)

descriptionはPRの概要をつかむための重要な手がかりです。どんな目的で、どんな変更が入ったのか、という概要を箇条書きでまとめましょう。
UIにも大きく手が入った場合は、スクショや動画を使って説明しましょう。
開発チケットがある場合は、そのURLを載せることも忘れずに。仕様変更や機能追加の背景を詳しく知りたい場合、レビュアーはそこから詳細を確認できます。
なお、最近ではAIにdescriptionの作成をお願いすることもできますが、筆者の経験ではAIの説明は、冗長・饒舌になりがちで要点がつかみづらいことが多い気がします(下図参照)。なので、なるべく人間が書いてくれる方がありがたいです。

PRをつくったら「あとはレビューよろ!」で終わらせずに、一度レビュアー視点で自分のPRをセルフレビューしてみてください。自分自身で「可読性、保守性、堅牢性、正しさ、セキュリティ、パフォーマンス」を確認していくと、まだ改善できそうなポイントがいくつか見つかるかもしれません。
さらに、レビュアーの負担を減らすために、以下のような補足説明を入れておきましょう。
PRを小口化する場合は、異常系の実装やテストコードの追加を後回しにすることもあると思います。
もし「このPRではあえてやってないんですよ、後続のPRで対応する予定なんですよ」というポイントがあれば、それもdescriptionで明記しておきましょう。そうしないとレビュアーに「なんで異常系を考慮してないんですか?」と無駄なコメントをさせることになってしまいます。
先ほど筆者は、コードレビューの最後のステップとして「CIのテストがパスしているかどうかを確認すること」を挙げました。
CIのテストがパスしていない場合、レビュアーは「フレーキーなテストがたまたま落ちたのか」それとも「本当に不具合があってテストが落ちたのか」の判断が付きません。
再実行すれば通るテストなら、予め再実行してオールグリーンにしておいた方がレビュアーに余計な心配をさせずに済みます。
Linterやコーディング規約チェックツールによる静的コード解析もCIで実行している場合は、こちらも当然すべてパスさせるべきです。なので、警告が出ていたら事前に対応しておきましょう。
もしルールが厳しすぎて実際の運用にマッチしていないようであれば、ルールを変更することをチーム内で検討してください。
最近ではAIを使った自動コードレビューを導入している現場も多いと思います。筆者の現場でもClaudeが自動的にコードレビューを入れてくれるようになっています。
AIのレビューコメントは「百発百中で正しい」とは限らないため、ものによっては「対応不要」とするケースもあると思います。
しかし、AIのコメントをそのまま放置していると、レビュアーから見たときに、PRの作成者が意図的に無視しているのか、それともその指摘に気付いていないだけなのかの判断がつきません。
対応不要なら、「〜のため、対応不要とする」と明示的にコメントを入れるなど、レビュアーから見て「ちゃんとAIのレビューコメントも見てますよ!」とわかるような対応をしましょう。

責任感の強いレビュアーは、「自分がボトルネックになってはいけない」と、今持っているタスクよりもあなたのコードレビューを優先してくれます。しかし、そこまで急ぐ必要がないなら、急いでないことを事前に教えてあげた方がレビュアーも優先順位を調整しやすくなります。
反対に、早くレビューを終わらせてリリースしないといけないPRの場合、その旨をきちんと伝えておかないと、レビュアーは「手が空いたときにレビューしよう」と、のんびり構えるかもしれません。
コードレビューはレビュアーの協力なしでは完了しない、ということを念頭において、急ぐのか、急いでいないのか、急ぐならいつまでにapproveがほしいのかをdescriptionに明記しましょう。一番シンプルかつ、誤解が少ない方法は具体的な期日を書いておくことです。
さて、先ほどは1回目のコードレビューが完了した時点で説明が終わっていました。
1回でapproveにならなかったPRは、修正後の再レビューが発生します。というわけで、2回目以降のコードレビューの進め方も見ていきましょう。
diffが大きいPRの場合、最初から全部レビューし直すと時間がかかりますし、前回のレビューから日が空くと、どこをどう直してほしいと伝えたのか忘れてしまいます。
そのため、筆者は基本的に「前回のレビュー以降の変更点」だけをレビューするようにしています。
前回入れたコメントの下に以下のような“View changes”ボタンが表示されている場合、このボタンをクリックすれば「前回のレビュー以降の変更点」をまとめて確認できます。
ただし、“File changed”タブを一度開くと、このボタンは表示されなくなります。ボタンが表示されなくなった場合は、以下のような形式で「前回のレビュー以降の変更点を確認するURL」を自作できます。
https://github.com/your-org/your-app/pull/1234/files/abcd567..HEAD
ポイントは以下の通りです。
abcd567/files/上でコピーしたID..HEADを付ける/files/abcd567..HEADこのほか、“all commits”を開いて、差分を見たいコミットの始点と終点を「シフト+クリック」する方法もあります。
ここでは「前回のレビュー以降の変更点」に大きな問題がなかったと仮定します。
であれば、指摘事項がすべて解消されたということで、approve!……してもいいのですが、念のため最終チェックをしておきましょう。
筆者は以下のようなポイントを最終チェックします。
再レビューして、「これ以上ツッコミどころがないな」と思えたら、それがレビュー完了の合図です。
approveを選択して“Submit review”ボタンをクリックしましょう。どうもお疲れ様でした!
GitHubのプルリク表示画面にはいろいろと便利な機能が隠されて(?)います。

上のアニメーションgifでは以下のような機能を動かしています。
また、「?」キーを押すと、GitHub上で使えるショートカットの一覧が表示されます。

これを見ると、たとえば「レビューコメントの表示・非表示(Show or hide comments)」には「I」キーが割り当てられていることがわかります。

こうした便利機能を活用して、コードレビューを効率化してみましょう!
※本記事の執筆時点ではGitHubのPRページのアップデートが進行中です。本記事では従来のUI(classic experience)をベースに説明していますが、一足先にパブリックプレビュー版を使っている場合は、画面の見た目や機能が若干異なる点にご注意ください。
というわけで、この記事では「コードレビューの目的」や「コードレビューの進め方」をまとめてみました。
なお、本記事で解説した内容は、あくまで筆者の考え方の一例です。そのため、開発の現場によって異なる部分があって当然です。むしろ、開発現場によって異なる部分があって当然です。もしご自身の開発チームの考え方にそぐわない部分があれば「この記事にはこう書いてあるけど、ウチのチームではこうしようね」と、チーム内の意識を揃えておきましょう。
さて、続く後編では以下のような、より実践的な内容をお伝えしていきます。
次回もどうぞお楽しみに!
筆者の新刊『技術記事を書く技術 ITエンジニアの価値を高めるアウトプットのすべて』(翔泳社)が、2026年4月27日に発売されます!
そんなITエンジニアのために、Qiitaやブログで15年以上情報発信を続けてきた筆者が、アウトプットの知見やテクニックを惜しみなく伝える珠玉の一冊です。
日々の学びや経験を発信するスキルを身につけ、エンジニアとしての価値を一段引き上げてみませんか?Amazonほかで予約受付中なので、興味がある方はぜひ!
関連記事



人気記事