アイキャッチ

「価値は変わらない。でも、やり方は変わる」AI時代に考える“良いコードレビュー”の条件

NEW!  スキル

コードレビューは、単にコードの間違いを見つけるための作業ではない。

コードの品質を高めることはもちろん、エンジニア同士が知見を共有し、互いの技術力を磨く場でもある。さらには、将来の開発を見据え、長く保守・改善し続けられるコードを残すためにも欠かせない営みだ。

しかし、生成AIの進化によって、そのあり方が大きく変わろうとしている。

AIが大量のコードを短時間で生成できるようになった一方で、人間によるレビューが開発のボトルネックになりつつある。かといって、効率化のためにレビューを省略すれば、品質の低下やエンジニアの理解不足を招く恐れもある。

では、これからのコードレビューでは、何を大切にし、何を変えていくべきなのだろうか。

今回は、エンジニアtypeがこれまで取材してきた識者たちの言葉を振り返りながら、良いレビューを実践するための工夫や、コードを改善し続けることの意義、そしてAI時代に求められる新しいレビューのあり方を考えていこう。

コードレビューは「間違い探し」でも「テスト」でもない

「このコード、なんでこう書いたの?」

コードレビューでこんな質問を受け、思わず身構えてしまった経験はないだろうか。

指摘されることをネガティブに捉えてしまうエンジニアもいるかもしれない。しかし、ソニックガーデンのプログラマー・伊藤淳一さんは、そもそもレビューを「減点方式のテスト」のように考えるべきではないと語る。

コードはコードにしか過ぎず、「自分が書いたコード=自分自身」ではありません。

でもエンジニアを始めたばかりの人は、「コメントが何もつかなければ百点」「何か言われたら減点」といった風に、コードレビューを学校のテストのようなものだと感じやすい。そうやって“減点方式”で捉えてしまうと、仮に指摘を受けた際、「自分は間違っていたんだ」「ダメ出しされた、自分はダメだ」とネガティブな気持ちになってしまいます。

なので、先輩が「そうじゃないんだよ」とちゃんと伝えてあげることが大事なんです。コードレビューはあくまでも「コードを良くするためのやり取り」であって、コーディングテストとは違います。

コードレビューは「間違い探し」でも「テスト」でもない。“気持ちいいレビュー文化”が育つチームに共通すること

伊藤さんが大切にしているのは、コードレビューを「未来の自分を助ける行為」として捉えることだ。

ソニックガーデンでは、一つのプロダクトに10年単位で関わり続けることも珍しくないという。だからこそ、今の自分が理解できるコードであっても、数カ月後、数年後にそのコードを読む人が困らないようにすることが重要になる。

では、そんな「良いレビュー」を実践するためには、何が必要なのだろうか。

まずは何より、「プルリクエストのサイズをなるべく小さく保つ」こと。そして、ディスクリプションには「全体としてどんな変更を加えたのか」を丁寧に書くことが重要です。それに加えて、「レビューの濃淡をリクエスト」してもらえるとすごく助かりますね。

「この部分はツールが自動生成したコードなので、ざっと見てもらえれば大丈夫です」とか、「AIの出力を参考に書いたので不安があり、しっかり確認してほしいです」といったように、見てほしいポイントの重み付けを伝えてもらえると、レビューの精度も効率も格段に上がります。

コードレビューは「間違い探し」でも「テスト」でもない。“気持ちいいレビュー文化”が育つチームに共通すること

なお伊藤さんは「レビューはコードの質を上げる場であると同時に、関係性の質が問われる場でもある」と述べている。

レビューを通じてコードの品質を高めるだけでなく、互いの考え方を知り、チームとして成長していく。そのための具体的な工夫や心構えについては、伊藤さんと後輩エンジニアの石崎海渡さんが詳しく語っている。

コードレビューは「間違い探し」でも「テスト」でもない。“気持ちいいレビュー文化”が育つチームに共通すること
コードレビューは「間違い探し」でも「テスト」でもない。“気持ちいいレビュー文化”が育つチームに共通すること

リファクタリングは「将来の選択肢」を増やす投資

コードレビューは、言わば「未来の自分を助ける行為」だ。数カ月後、数年後にそのコードを読む人が困らないようにする。その考え方は、レビューの場だけで完結するものではない。

機能追加や仕様変更を重ねるうちに、コードが複雑になり、扱いづらくなることもある。だからこそ、既存のコードを見直し、改善し続ける「リファクタリング」も重要な営みだ。

しかも、その価値はコードの品質や保守性の向上だけにとどまらない。エンジニアとしても知られるチームみらい党首の安野貴博さんは、アジャイルコーチの吉羽 龍太郎さんとの対談で、次のように語っている。

コードベースの悪さがもたらすエンジニアの精神衛生って、めちゃくちゃ大きな問題ですよね。個人的には、以前から「エンジニアの精神衛生を改善するためのリファクタリング」というのは、考え方の一つとしてアリかなって思ってます。

実際に、他の経営メンバーにリファクタリングの必要性を説明するとき、「これはエンジニアの福利厚生施策でもあり、採用費用の削減にもつながる施策でもある」と話して理解を得たことがありました。

リファクタリングを「やるか、やらないか」で語るのはもうやめよう【安野たかひろ×吉羽 龍太郎】

コードが複雑で読み解きづらければ、日々の開発に余計な労力がかかり、エンジニアの負担も増えてしまう。裏を返せば、リファクタリングは開発効率だけでなく、働きやすい環境づくりにもつながるというわけだ。

さらに吉羽さんは、リファクタリングを将来への投資として捉える考え方を紹介している。

ケント・ベック著『Tidy First?』(オライリー・ジャパン)では、金融をメタファーに「リファクタリングはオプションを増やすプレミアム」と表現していました。

つまり「将来、プロダクトがどうなっているかは分からないけれど、その選択肢はなるべく多い方がいいですよね。今の段階で多少お金を払っておけば、将来取り得る選択肢が広がりますよ」ということです。

リファクタリングを「やるか、やらないか」で語るのはもうやめよう【安野たかひろ×吉羽 龍太郎】

リファクタリングによって、今の開発を進めやすくするだけでなく、将来の仕様変更や機能追加にも対応しやすい状態をつくる。そんな長期的な視点も欠かせない。

とはいえ、日々の開発業務に追われる中で、いつ、どこまでリファクタリングに時間を割くべきかは悩ましい問題だ。

両者の対談では、プロダクトの成長段階に応じたリファクタリングの判断基準や、改善すべきコードの見極め方についても、具体的な議論が交わされている。

リファクタリングを「やるか、やらないか」で語るのはもうやめよう【安野たかひろ×吉羽 龍太郎】
リファクタリングを「やるか、やらないか」で語るのはもうやめよう【安野たかひろ×吉羽 龍太郎】

コードレビューは「解体」する時代へ

ここまで紹介してきたように、コードレビューやリファクタリングは、ソフトウエアの品質を維持し、将来にわたって開発を続けていくための重要な営みだ。

しかし今、生成AIの急速な進化によって、そのあり方が大きく変わろうとしている。AIが大量のコードを短時間で生成できるようになったことで、人間がコードを確認する作業が追いつかなくなりつつあるのだ。

テスト駆動開発の実践者として知られる和田卓人(t-wada)さんは、現在の開発現場が直面する課題について、次のように語る。

AIが高速に大量のコードを書けるようになった現在のソフトウエア開発における最大のボトルネックは、間違いなく「コードレビュー」にあります。だからといって、安易にレビューをやめてしまえば品質の崩壊を招くだけです。

では、どうすべきか。ヒントは、これまでコードレビューが担っていた役割を解体し、五つの工程へ分散させることにあります。

AIでコード生成は加速、でも人間の確認が追いつかない問題。t-wadaが示す「レビュー解体」という答え

和田さんが提案するのは、コードレビューをなくすのではなく、その役割を開発プロセス全体に分散させる「レビュー解体」という考え方だ。

例えば、仕様の矛盾や抜けを上流工程で見つけたり、テスト駆動開発(TDD)や型システムを活用して、従来は人間が確認していた項目を機械的に検証したりする。さらに、ビジネスへの影響度によってレビューの濃淡を変えるなど、人間が確認すべき領域を見極めることも重要になるという。

ただし、レビューの効率化には別の課題もある。コードレビューは品質チェックだけでなく、エンジニア同士が知識を共有し、理解を深める場でもあったからだ。

では、そうした価値を失わずに、レビューの負荷をどう減らしていくのか。

和田さんが示す五つのアプローチと、AI時代に新たに浮上する「認知負債」の問題について、詳細は記事を読んで確かめて欲しい。

AIでコード生成は加速、でも人間の確認が追いつかない問題。t-wadaが示す「レビュー解体」という答え
AIでコード生成は加速、でも人間の確認が追いつかない問題。t-wadaが示す「レビュー解体」という答え

編集/今中康達(編集部)

エンジニアtypeが提供する「12種類のキャラタイプで分かる!エンジニアタイプ診断」へ誘導するバナー。コードの深淵を覗く「技術探求タイプ」など、ITエンジニアが自身の志向性や強みを客観的に自己分析し、キャリアパスや適した働き方を発見できるインタラクティブなWeb診断コンテンツへの導線を示す

Xをフォローしよう

この記事をシェア

RELATED関連記事

JOB BOARD編集部オススメ求人特集

RANKING人気記事ランキング





サイトマップ