リベロエンジニア公式オウンドメディア。

IT・TECH

コードレビューを受ける側・する側それぞれ気を付けるポイント6選!

開発プロダクトの品質向上のためにやっていることはありますか?上流工程での丁寧なヒアリング、開発者のスキルに合ったプロダクトであること…。

いろいろ大切ですが、開発工程でできる品質向上の一つにコードレビューがあります。

あれ、受けるの緊張するんだよなぁ…

第三者の目が入ると違う見え方するから大事じゃない

コードレビューは本当に最適なコードの書き方がされているか、第三者が見てもわかりやすいコードとして成立しているか確認する手段です。

重要なのはわかるけど…

受ける側もする側も緊張しちゃう!

開発環境や熟練度によりますが、コードレビューは毎回するわけではありません。今回はいざコードレビューに臨む際の心構えや、AIを活用したセルフコードレビューの方法についてご紹介しましょう。

AIを活用したコードレビューで、おすすめのアプリも紹介しますね~

\エンジニアが大企業並みの給与と自由をGet/

コードレビューってなんで必要?


そもそも、コードレビューの必要性とは何でしょうか?改めて考えていきます。

この項目では、コードレビューそのもののメリットと、若手エンジニアがコードレビューに関わることで得られるメリットをご紹介!

コードレビューを行う5つのメリット

コードレビューそのもののメリットは以下の5つです。

  • バグが見つけやすい
  • ソースコードの最適化ができる
  • チームワークが強化できる
  • スキルアップに繋がる
  • 知識の共有や認識合わせができる

バグの検出は言わずもがなでしょう。開発者以外の目が入ることで、思わぬバグが見つかることも多いです。

また「ここのコードが読みにくい」「もっとすっきり記載できるよ」など、誰でも見やすいコードに整えられます。後から別の人が触ることになった際に、「わけがわからないよ」とならずに済むわけです。

コードレビューは、レビューを受ける側・する側で自然と連携して仕事をできます。

コードレビューがきっかけでチームワークを強化し、協力体制をより強くすることも可能。同時にお互い持っている知識を共有できるので、スキルアップにも繋がります。

最後の「知識の共有や認識合わせができる」ってのは?

「この書き方はバグにつながるから気を付けよう」「この表現は使いやすいから、他の開発にも応用しよう」など、レビュー参加者以外にも、有効な知識を共有・展開できるという意味。

コードレビューを通して、コーディングのルールが決まるということも結構多いです

若手エンジニアがレビューを行う3つのメリット


そんなコードレビューをする側に、若手エンジニアが回るメリットは何でしょうか?

できればしたくない

そんなこと言わないで

メリットは主に3つです。

1つ目は単純に本人のスキルアップです。人のふり見てわがふり直せではないですが、他人のコードを見て学べることはたくさんあります。コードの書き方だけでなく、フィードバックの言葉遣いなども勉強になります。

2つ目はコミュニケーションの活性化です。開発上関わりが深くないのに、急に質問されたら誰でもびっくりしてしまいます。

コードレビュー中に疑問に思ったことを聞く、というのは自然な流れ。普段関わりがあまりない仲間とのやり取りが生まれやすいです。

3つ目はレビューへのフィードバックでさらに学びが深まることです。これは若手ならではですが、コードレビューに慣れていないと、どうしてもぎこちないレビューになってしまいがち。

もっとこういう言い回しするとわかりやすいよ

てか、ここも直さないとエラーになるよ

など、ここでもコミュニケーションや学びが生まれます。

総じて、経験関係なくコードレビューをする側は挑戦する価値がありますよ

コードレビューを受ける側の心得3つ


いきなり「●●さんのコードレビューをやって!」と言われることは少ないでしょう。最初はコードレビューを受ける側から始まるはずです。

より学びをたくさん得るため、コードレビューを受ける側も気を付けると良いポイントがあります。今回は特に注意するといい3つの心得を紹介しましょう!

①レビュー依頼はふさわしい人へ

あなたが書いたコードの不備を的確に指摘できる人は誰でしょうか?

う~ん…上司かな?それとも専門分野がある先輩?

実は状況によって違う

単純なコードなら、誰か1人に任せれば問題ないでしょう。しかし、より高品質なプロダクト開発には1人のコードレビューでは心もとないです。

状況次第では複数の中堅・ベテランの力が必要になるかもしれません。チーム全員を巻き込んでもOK!

どの程度のクオリティを求めるかによって、レビューを頼む相手を決めましょう。

誰が良いか分からないときは、とりあえず上司に相談すればOK

②意図してやっていることがあれば伝える

ソースコードをどのような目的で書いているかは、書いた本人しかわかりません。コードレビューはあくまで、より良いコードにするための取り組み。

良いコードにするために、意図的にやっていることがあれば事前に伝えましょう。

え!そこダメなの!?そうした方が動きがいいのに…

あ、そうなんだ。言われないと分かんないって

このような不毛な時間が生まれないよう、作成意図や参考資料があれば併せて共有しましょう。

③レビュー内容は受け入れよう

コードレビューに限った話ではありませんが、指摘された内容は素直に受け入れましょう。素直に受け入れることが今後の成長には欠かせません。

レビュー内容にいちゃもんをつけるのはよくありませんが、疑問点を聞くことは問題ありません。

よくわからないことは放置せずにすぐ聞いて、自分の学びにしちゃいましょう!

\エンジニアが大企業並みの給与と自由をGet/

コードレビューをする側の心得3つ


コードレビューって怖い

それは相手にも問題があるかもしれないから凹まないで

コードレビューに恐怖感を覚えるのは、レビューする側に問題がある可能性があります。もしレビューをする側に回った際は、これから紹介する3つに配慮してレビューを行いましょう。

①相手へのリスペクトを忘れずに

最早大前提ともいえますが、コードを書いた本人の努力を認めましょう。上下関係がある状態でレビューをする際は、気を付けないと上から目線になってしまいます。

相手の頑張りを認め、そのうえでスキルアップを促すのがコードレビューの本来の姿。この姿勢を忘れずにレビューに取り組みましょう。

このマインドがあれば、次の注意点の意味もわかるはず

②言葉遣いに注意

コードレビューは、相手のミスやコードの悪いところを伝える場ではありません。また、文章でレビューすることが多いので、どうしても冷たく感じがちです。なので、冷たく感じさせない工夫が必要です。

ここがダメ、そこもダメ、こういう風に直して

こんな言い方だと、トゲを感じて嫌な気分になる人もいます。同じ内容でも…

ここはいい!でも、ここは直すともっとよくなるよ🤗

という感じで、言い方を柔らかくすると相手も安心するでしょう。

使っているツールによっては、絵文字を使うと印象がもっと柔らかくなるのでおすすめ!

③根拠なきレビューはNG

レビューする際、なぜそのような変更をしなければいけないか、根拠がないと相手は納得しません。コーディングのルール、これまでの事例、参考文献など根拠を示したうえでレビューしましょう。

「絶対直さないといけない」「直せたら直して」「今回はOKだけど今後は気を付けて」など、修正の重要度もわかると、すご~く親切なのでおすすめ!

AIを使ってコードレビューってできる?


さて、ここまでは第三者の他人の力を借りて、コードレビューを行う場合の例を説明してきました。しかし、現代にはAIという最強の第三者が存在しています。

AIを使ったレビューはどれほどの内容なのか、実際のコードを使って実演してみました。

コードはIBMが公開しているソースサンプルを引用しました

ChatGPT(Open AI)の場合

まずはAIの代名詞ともいえるChatGPT(Open AI)です。今回は無料版のChatGPTを使います。ソースコードを入力してみると、以下について指摘してくれました。

  • 戻り値や配列の変更
  • 出力メッセージの変更
  • 可読性の向上のためのトライグラフ変更

併せて、今回の変更案を反映したコードも出してくれました。

#include <stdio.h>
#include <ctype.h>#define MAXLEN 60  // 最大入力サイズint main(void)
{
int c;
int i = 0, j = 0;
int sum = 0;
int count, cnt;
int num[MAXLEN] = {0};  // 数字の配列(初期化)
char letter[MAXLEN];    // 文字の配列while ((c = getchar()) != EOF && c != '+')
{
if (isalpha(c))  // アルファベットのチェック
{
if (i < MAXLEN) {
letter[i++] = c;
}
}
else if (isdigit(c))  // 数字のチェック
{
if (j < MAXLEN) {
num[j++] = c - '0';
}
}
}// 文字の出力
printf("Characters: ");
for (count = 0; count < i; ++count)
{
printf("%c", letter[count]);
}
printf("\n");// 数字の合計計算と出力
printf("Sum of Digits: ");
for (cnt = 0; cnt < j; ++cnt)
{
sum += num[cnt];
}
printf("%d\n", sum);return 0;
}

※画像内の矢印はキャプチャソフトの仕様で入っているだけです。

これを20秒くらいで出してくれるので、時間がないときは非常に有効です。人間のレビュアーにはない視点もあり、斬新な改修案を提案してくる場合もあります。

ただ、複雑な処理になると漏れが増えがち。人の目と併用した方が正確な場合もあります。

GitHubの場合

GitHubにはGPT-4をベースにしたコードレビュー機能が搭載されています。同じコードを入れると、このような修正案が出てきました。


1
/* This program reads input from the terminal, displays characters, */
2
/* and sums and prints the digits. Enter a "+" character to
*/
3
/* indicate EOF (end-of-file).
*/
4
5
#define MAXLEN 60
/* The maximum input line size.
*/
6
7 #include <stdio.h>
8
#include <ctype.h>
9
10
int main(void)
11
{
12
int c;
13
int
i = 0, j
= 0;
14
int
sum =
0;
15
int
count, cnt;
16
17
18
19
20
{
21
22
int num[MAXLEN];
char letter [MAXLEN];
while ((c = getchar()) != '+' )
if (isalpha ( c ) )
{
/* A test for an alphabetic
*/
*/
/* character.
/* An array of digits.
*/
/* An array of characters.
*/

無料版のChatGPTよりシンプルなコードになってる

ChatGPTと異なり、GitHubアカウントに入ればコードを複数人で共有できる点が一番の特徴。GitHub経由でレビュー依頼をして、AIで分析後に人の目を加えることだって可能です。

ただし、日本語で操作ができないので慣れないと苦労します。

日本語でAIへの指示出しはできるものの、指示出し文であるプロンプトの工夫が必要

こんなAIツールもおすすめ

ChatGPTやGitHub以外にも、こんなAIツールが存在します。日本語で操作できるものもあるので、一度使ってみてはいかがでしょうか?

  • PR-Agent(Qodo Merge)…Codium AI(Qodo)提供のツール
  • Code Rabbit…AIの選択肢が多い
  • Amazon CodeGuru Reviewer…AWSで使えるレビューツール
  • SonarQube…SonarSource提供のツール

AIは使い方を間違えなければ強い味方になってくれます。相棒として使ってみるのはいかが?

さいごに


コードレビューは、スキル向上とチームワークを円滑にできるイベント。経験年数関係なくいろいろな学びを得られる絶好の機会です。

初めはレビューを受ける側の立場が多いですが、いずれは後輩などのコードレビューをする側に回ります。

今回説明した心得をもとに、より良いレビューの場にしましょう!

え、今1人現場だからレビューも何もないんだけど…全然スキル伸びないじゃん…

それなら、複数人でプロジェクトに参画できる会社に転職してみませんか?

そもそも今の状態でスキルアップが狙えるかどうか、キャリア面談のような気持ちでリベロエンジニアの無料面談を受けてみてください。転職の意向は関係ありませんよ!

\エンジニアが大企業並みの給与と自由をGet/

弊社が気になった方は是非、お気軽にカジュアル面談にご応募ください!

  • 記事を書いたライター
  • ライターの新着記事
片山たみこ

夫は経験10年以上の現役エンジニア(オープン系)、Indeedなどの求人広告を9年以上書いているワーママです。文系卒なのにIT系はじめ様々な理系に囲まれる大学生活を送った結果、理系職種に対する肩入れが激しくて上司に呆れられること5年くらい経過したところです。

  1. 在宅勤務者注目!フルリモートで快適&気持ちよく働くためのライフハック

  2. 【若手エンジニアおすすめ】リスキリングで今勉強すべき言語・資格11選

  3. エンジニア発信の文章コミュニケーションのコツはここ!文章作成のコツ教えます

  4. コードレビューを受ける側・する側それぞれ気を付けるポイント6選!

  5. 【書き方例付き】基本設計で押さえるポイントは●●!?若手エンジニアが今すぐ知るべき基本設計のコツ4選

  6. SaaS?XaaS?PaaS とは?ぶっちゃけ良くわからない「○aaS系」をまとめて簡単解説

会社概要

wantedly

Shuhey Kaneko Official Shop

【業務委託】オウンドメディアライター募集中!!

リベロエンジニアのオウンドメディアでは、自由な発想で「楽しく読める記事」を企画から書いてくださるライターさんを募集中です!

 

○「SEO記事以外も書きたい!」

○「オタクの情熱を記事にぶつけたい!」

○「真面目にふざけるのが得意!」

 

そんな方は、ぜひ奮ってご応募ください。詳細だけでも見ていただけると嬉しいです!

【詳細はこちらへ】

RANKING

DAILY
WEEKLY
MONTHLY
  1. 1
  2. 2
  3. 3
  1. 1
  2. 2
  3. 3
  1. 1
  2. 2
  3. 3

RECOMMEND

RELATED

気になるなら一緒に読んでほしい関連記事

PAGE TOP