📖 テーマ設定
🔊 音声設定
1.2
1.0
1.0
▶️ 再生コントロール
🎵 BGM設定
0.3
🔔 効果音設定
0.3

実装スプリント3〜チームコードレビュー

概要

  • 日程: Day 13 / セッション 2
  • 時間: [9:40-12:20](途中休憩11:00-11:10を含む)
  • 形式: 実習
  • ゴール: チームメンバーの実装内容を相互レビューし、改善のフィードバックを1人1件以上出せる
  • 学習形式: ハンズオン実習、相互レビュー

導入(5分)

今日のテーマはチームコードレビューです。書いたコードをチームに見せ、見せられる側になります。

最初に確認したい原則が1つあります。

レビューは「人格」ではなく「成果物」へのフィードバック。良い点も必ず伝える。

レビュー初心者がやりがちな失敗は2つです。1つ目は人格に踏み込むこと(「Aさんはいつも雑だね」)。2つ目は改善点しか言わないこと(「ここがダメ、あそこもダメ」)。どちらも次のレビューが地獄になります。

レビューはチームでコードを良くするための共同作業です。書いた人を裁判するための場ではありません。

本編(20分)

1. レビューの3原則〜成果物・具体的・両面

レビューで守る3つの原則です。

flowchart LR A["原則1
人格ではなく成果物"] --> D["良いレビュー"] B["原則2
具体的に指摘"] --> D C["原則3
良い点も伝える"] --> D

コード例・実例

NGとOKの対比です。

NG(人格に踏み込む)

「ここの命名、Aさんっぽい雑さが出てるよね」

OK(成果物への具体的な指摘)

「変数名 `d` が何を指すか読み取れません。
`registeredDate` のように内容が分かる名前にすると、
半年後の自分が読んでも迷わないと思います。
他の箇所では `customerName` のように分かりやすいので、
そろえると統一感が出ますね。」

NG(改善点しか言わない)

「ここダメ。ここも直して。あと全体的に読みにくい。」

OK(良い点と改善点をペアで)

【良い点】
入力チェックを関数に切り出していて、テストしやすい構造になっています。

【提案】
チェック関数のエラーメッセージが固定文字列になっています。
将来多言語対応するなら定数化しておくと楽です。
ただ、今は中間発表優先で良いので、メモを残しておけば十分です。

「ただし今は◯◯優先で良い」のような判断ラインも示すと、相手は対応の優先度を決めやすくなります。

ここがポイント

  • 主語を「あなた」ではなく「このコード」「この変数」にする
  • 指摘は「場所・現状・提案・理由」をセットで
  • 良い点は必ず1つ以上探して伝える

コラム

Googleの社内ガイドラインでは、コードレビューのルールとして「Be kind(親切に)」が最初に書かれています。技術的に正しくても言い方がきつければチームは壊れ、長期的には品質も下がる、という経験則からです。「相手が翌日もう一度レビューに出したくなる」レビューが良いレビュー、と社内では言われているそうです。

2. レビュー観点チェックリスト〜何を見るか

「全体的に見て」と言われると人間は何も見られません。観点を5つに分けて見ます。

flowchart TB A["レビュー観点"] --> B["1.設計書との整合"] A --> C["2.異常系の対応"] A --> D["3.読みやすさ"] A --> F["4.重複と再利用"] A --> G["5.セキュリティ"]

コード例・実例

観点ごとの具体的な見方。

【1. 設計書との整合】
- 機能設計書の入力項目とコードの入力項目が一致しているか
- 画面遷移図通りに遷移するか

【2. 異常系の対応】
- 空入力、極端に長い入力、想定外の文字(記号など)に耐えるか
- データベース接続エラーの処理が入っているか

【3. 読みやすさ】
- 変数名・関数名が内容を表しているか
- 1つの関数が長すぎないか(目安30行)
- コメントが必要な箇所にあるか

【4. 重複と再利用】
- 同じ処理が複数箇所にコピペされていないか
- 共通化できる処理が個別に書かれていないか

【5. セキュリティ】
- パスワードが平文で保存されていないか
- ユーザー入力がそのままSQLに入っていないか(SQLインジェクション)

5つ全部を1人で見るのが大変なら、ペアで観点を分担します。

ここがポイント

  • 観点を持って見る(漠然と見ない)
  • 1コードレビューで全観点を見る必要はない。優先順を決める
  • セキュリティ系は新人だけでは見落としがち。AIにも相談する

コラム

NASAでは、宇宙機のソフトウェアレビューに「悪魔の代弁者(devil's advocate)」役を必ず置きます。良いところを褒めるのではなく、わざと「ここで失敗したらどうなる?」と疑問を投げ続ける役です。これにより善意の確認漏れを防ぎます。皆さんのチームレビューでも、1人「もし◯◯だったらどうなる?」役を置くと、観点が広がります。

3. AIにもレビューを頼む〜観点の補完

人間のレビューに加えて、AIにもコードを見てもらいます。AIは観点の補完役として優秀です。

コード例・実例

AIへのレビュー依頼テンプレ。

以下のコードをレビューしてください。
言語: [言語名・バージョン]
機能: [このコードが実現する機能を1文で]
設計書の該当部分: [画面仕様書または機能設計書を貼る]
コード:
[コードを貼る]

次の観点で見て、それぞれ「良い点」と「改善提案」をペアで出してください。
1. 設計書との整合
2. 異常系の対応
3. 読みやすさ
4. 重複と再利用
5. セキュリティ

改善提案には理由と、優先度(高/中/低)も付けてください。
中間発表が明日なので、優先度の低いものは「後回しでOK」と明記してOKです。

AIの指摘を全部反映する必要はありません。「これは明日のデモまでに必要」「これは発表後でいい」を人間が選別します。

ここがポイント

  • 人間のレビューの「あと」にAIを使うと観点の漏れを補える
  • AIには設計書も一緒に渡す(コードだけだと表面的になる)
  • 指摘の取捨選択は人間の仕事。AIの言いなりにならない

コラム

コードレビューはもともと1976年にIBMのMichael Fagan氏が提唱した「Faganインスペクション」が起源で、当時から「短時間・少人数・観点指定」が3原則でした。半世紀経った今もこの3原則は変わっていません。AIが加わっても、観点を持って・時間を区切って・全部反映しない、という基本は同じです。

💬 AIに聞いてみよう

レビューで迷ったらAIに相談。

  • 「コードレビューで使える観点を、優先度順に教えて」
  • 「『良い点』を探すのが苦手。コツを教えて」
  • 「Faganインスペクションの3原則を新人向けに解説して」

実習・演習(130分+休憩10分)

課題

朝会で決めた時間配分に沿って、相互レビューを実施してください。

  1. セルフレビュー準備(20分)
    • 自分のコードと設計書の対応を整理
    • レビューしてほしい観点をメモ
    • AIに事前レビューを依頼して指摘の傾向を把握
  2. 相互レビュー(80分/途中休憩あり)
    • 1人20〜30分でペア組で実施
    • 良い点を必ず1つ以上伝える
    • 指摘は「場所・現状・提案・理由」をセットで
    • 指摘の優先度(高/中/低)を付ける
  3. 修正と残実装(50分)
    • 優先度「高」を中心に修正
    • 明日のデモに必要な残実装を仕上げる
  4. 明日のデモシナリオ通し確認(10分)
    • 朝会で決めた必達ラインを1回操作
    • 動かない箇所があればチームに即共有

成果物

  • レビュー済みコード(指摘事項を反映または記録)
  • レビュー指摘メモ(次回以降に活かす)
  • 中間発表の準備チェックリスト(次セッションで使う)

ヒント

  • 良い点が見つからない → 「動いていること自体」が立派な良い点。1日かけて動かしたこと自体に価値がある
  • 指摘が偉そうになりがち → 「私だったら〜してみるかも」「〜してみるとどうですか?」のような言い回しに変える
  • 指摘を全部反映する時間がない → 優先度「高」だけ反映。「中・低」はかんばんにタスク追加して後日
  • レビューされる側がへこむ → 終わったあと「指摘ありがとう」を口にする。レビュアーも勇気を出して言っている

まとめ(5分)

今回学んだことを一言でまとめると「レビューは成果物への具体的な指摘+良い点。AIは観点の補完」です。

  • 人格ではなく成果物に焦点
  • 良い点と改善点をペアで
  • AIは観点の補完役。最終判断は人間
  • 全指摘を反映せず、優先度で選別

次のセッションは終会。中間発表の準備状況を確認します。

🔄 振り返りチェック

  • レビューの3原則は?
  • レビュー観点を5つ挙げられますか?
  • 指摘の優先度を分ける目的は?
  • AIにレビューを頼むとき、コード以外に渡すべきものは?

補足資料

  • 参考リンク: 自チームの設計書、レビュー観点チェックリスト
  • 発展課題: 今日もらった指摘の中で「優先度低」のものをかんばんのバックログに積み、いつ対応するか決めておく

学習ガイド

このセクションは、受講者が理解を深めることをサポートする参考情報です。

想定される質問と回答例

質問 ヒント
レビューでなんと言えばいいか分からない 観点リストを順に見ながら、該当するものを「場所・現状・提案・理由」テンプレで埋める
自分のコードに自信がないのに人のコードを指摘していいの? レビューは「教える側」ではなく「一緒に良くする側」。疑問形(〜なのはなぜ?)で出せばOK
AIの指摘と人間の指摘が矛盾したら? 人間優先。AIの指摘は観点リストとして使い、採用判断は人間がする
良い点が見つからない 動いている、設計書通り、命名が分かりやすい、構造が整理されている、コメントが適切、など5観点から1つ探す

つまずきやすいポイント

つまずきポイント ヒント
指摘が人格攻撃に聞こえてしまう 主語を「このコード」「この変数名」にする。「Aさんは」と言わない
指摘の量が多すぎてレビュー時間が膨らむ 観点を3つに絞る。残りは次回レビューで
「指摘ゼロ」のレビューになる 観点リストに必ず触れる。良い点でも構わないので各観点で発言する
指摘を反映できずに発表当日を迎える 優先度「高」のみ反映、「中・低」は後日タスク化。完璧主義を捨てる
読み上げを開始します...

AIに質問する