嘘ペディア
B!

コードレビュー

この記事はAIが生成したフィクションです。実在の人物・団体・事象とは一切関係ありません。
コードレビュー
分野ソフトウェア品質管理/開発プロセス
成立時期(起源とする説)
中心対象ソースコード、設計意図、変更履歴
実施単位変更単位(差分)と説明単位(意図)
関連技術静的解析、監査ログ、レビュー記録
役割レビューアー/監査担当/合意形成者
評価軸保守性、可読性、再現性、責任分界

コードレビュー(code review)は、ソースコードに対する「人間の思考」を点検するための職能体系である。もともとはの手作業デバッグ文化に端を発し、のちに企業の標準手順として制度化されたとされる[1]

概要[編集]

コードレビューは、変更されたソースコードの内容だけでなく、その背後にある「なぜそうしたか」を確認する仕組みとして理解されることが多い。実務上は、指摘の技術的妥当性と、修正後にその妥当性が再現されているかを両輪として扱うことが特徴とされる。

また、コードレビューは「エラーを減らす行為」であると同時に、チーム内の責任分界を言語化する儀式でもある。たとえばレビュー記録には、修正の正しさに加え「誰が決めたか」を残す慣行があり、監査可能性が重視されてきたとされる。もっとも、後述のようにその制度化には揺り戻しもあり、運用の解釈は組織ごとに差異があると指摘されている。

(やや細かい説明として)一般にレビューは「差分の読了」「意図の照合」「反証の採取」「合意の刻印」という4工程に分解される。工程ごとに標準所要時間の目安が与えられ、東京の開発拠点では「初回所要15分以内、二回目以降は20分上限制」が運用されていたという証言もある。ただし、この数値は社内資料にのみ見られ、外部報告では再現されにくいともされる[2]

歴史[編集]

起源:計算機室の「声の監査」[編集]

コードレビューの起源として、周辺で「声の監査」と呼ばれた手順が挙げられることがある。当時、プログラムの修正は紙テープにパンチし、計算機室の前で読み上げながら動作確認を行う必要があったとされる。ところが、読み上げの誤りがそのままバグに転化することが判明し、「読み上げた人が、読み上げた意図をもう一度確認される」文化が生まれたという[3]

この文化が制度化される過程で、レビューアーには「ミスを探す役」ではなく「ミスを“責任を負って”言葉にする役」が割り当てられたと説明されている。具体的には、変更票には必ず「変更理由の一文要約」と「反証の可能性」を別欄で書かせる様式が整えられた。のちのレビュー記録の様式は、この二欄制を踏襲したものとされる。

なお、起源説のなかには、名古屋市の研究機関で採用された「21行ルール」が根拠として挙げられることもある。すなわち、変更が21行を超える場合は口頭レビューではなく「記録レビュー」に切り替える運用があったとされる。ただし、このルールの出所は不明で、当時の管理簿が散逸したため「伝聞に基づく」とされることが多い[4]

企業導入:品質部門が“会議”を設計した[編集]

次に重要なのは、後半〜1980年代における「品質部門主導の会議設計」である。各社は増大する開発規模に対し、ソースコード検査のコストを下げる必要に迫られた。そこで品質部門は、レビューを“人手の読解作業”としてではなく“会議プロトコル”として規格化した。

規格化では、指摘の分類が導入されたとされる。分類は大きく「誤り」「曖昧」「重複」「意図不一致」の4種類で構成され、レビューアーは分類コードを添えて発言することが求められた。さらに会議の最後には、変更案の採否ではなく「意図の一致率」を合意形成の主指標にする運用が広がったという。意図の一致率は、レビュー記録に基づき「合意した意図数/指摘した意図数」で算出されたと説明される。

一例として、東京都の某大手製造系企業では、意図の一致率を「0.92以上」を目標に掲げたとされる。しかし、運用開始から3か月で「0.92は高すぎる」という現場反発が起き、品質部門が目標値を「0.89へ緩和」したと報告される[5]。この“微調整”が、レビューが技術ではなく組織の期待値と結びついた象徴として語られている。

ツール時代:静的解析は“反証者”を雇った[編集]

に入ると、コードレビューは自動化と結びつくようになった。とくには、レビューアーの“反証採取”を肩代わりする存在として位置づけられたとされる。社内運用の中では、静的解析が出す警告は「人の指摘より先に拾う」と定義され、レビュー会議の前に“反証候補リスト”として提示されたという。

この時代の特徴は、レビューの目的が「バグを減らす」から「説明可能性を維持する」へと広がった点にある。たとえば、ツールが検出した問題が修正されない場合でも、「なぜ修正しないのか」の説明がレビューに必須化されるようになった。結果として、修正量が増えるよりも、説明の文章量が増える組織が現れたという。

また、レビュー記録の形式は、後述の批判と絡む形で肥大化した。レビュー欄に「根拠リンク」「仕様の該当章」「反例」を追加し続けた結果、1件あたり平均で約43フィールドが必要になり、入力担当の負荷が増大したとされる。とはいえ、入力負荷は“責任の流出を防ぐためのコスト”だと正当化されることも多く、社会的には「レビューは遅くなるほど安全だ」という言説さえ生まれたと記録されている[6]

運用と実例[編集]

コードレビューは一般に、差分を材料として「変更の意味」を判定する工程であると説明される。実務ではレビューアーが、行単位の可否ではなく、変更が達成しようとしている振る舞いの整合性を確認することが重視されることが多い。

実例として、金融系の開発現場では、特定の期限処理で不整合が発生した際、差分は小さかったにもかかわらずレビューに1週間を要したとされる。理由は、変更理由の一文要約が「仕様を更新したため」としか書かれておらず、結果として反証の採取ができなかったからだという[7]。この出来事は、コードレビューが“文章のレビュー”でもあることを象徴する逸話として、後の教育資料に転載された。

一方で、大阪府の物流会社では、レビュー会議を短縮するために「指摘は最大で5件まで」という内規が導入された。ところが、5件を超えそうになるとレビューアーが意図的に指摘を“曖昧”カテゴリーに振り替えた結果、修正の優先順位が乱れたとされる。結果として、会議は短縮したが、次のリリースで不具合が再発し、内規が撤回されたという。ここでは、分類コードが“逃げ道”として機能することで品質が下がり得ることが示されたとされる[8]

批判と論争[編集]

コードレビューは、品質向上の仕組みとして称賛される一方で、「時間コストが増える」「責任の押し付け合いになる」などの批判もある。とくに、レビュー記録の形式が標準化されるほど、現場では“記録を作ること自体”が目的化しやすいと指摘されている。

また、「意図の一致率」を指標に据える運用は、心理的圧力を生むとして批判されることがある。意図の一致率を上げるために、レビューアーが“反証の可能性”を過小に見積もるよう誘導されるとする見方がある。ただし反対に、誤差を許容することで会議が荒れずに済むという主張もあり、評価軸の正当性をめぐり継続的な議論が行われている。

加えて、レビューを監査目的に転用した組織では、ログが法務対応の武器として使われた経緯があるとされる。たとえば案件で、レビュー未実施の変更が後日“重大過失”として扱われたという伝聞があり、レビューアーは確認責任により強く縛られるようになった。この点については、技術的安全性と法的安全性を同一視する危険性があるとの指摘が出ている[9]

脚注[編集]

関連項目[編集]

脚注

  1. ^ E. H. Rutherford, “The Spoken Audit: Early Human Checks in Computational Rooms,” Journal of Systems Reliability, Vol. 12, No. 3, pp. 41-58, 1958.
  2. ^ 渡辺精一郎『差分と意図の工学』技術出版, 1974.
  3. ^ Margaret A. Thornton, “Intent Consistency as a Quality Metric,” Proceedings of the International Conference on Software Process, Vol. 2, pp. 203-219, 1982.
  4. ^ K. Matsudaira, “The Twenty-One-Line Rule and Its Oral Transmission,” Memoirs of the Nagoya Computing Society, 第7巻第2号, pp. 77-96, 1986.
  5. ^ 田中順之『品質部門は会議を設計する』中央品質研究所, 1989.
  6. ^ S. L. Penrose, “Tools as Contradiction Vectors: Static Analysis in Review Meetings,” ACM Transactions on Code Workflows, Vol. 8, No. 1, pp. 1-24, 1996.
  7. ^ M. O’Connor, “When Explanations Fail: A Case Study from the Deadline Ledger,” Software Engineering Review, Vol. 15, pp. 310-329, 2001.
  8. ^ 藤堂アヤ『記録過多の組織論』文芸技術社, 2007.
  9. ^ R. Nakamura, “Audit-Driven Development and the Review Log Paradox,” IEEE Software, Vol. 28, No. 6, pp. 12-29, 2012.
  10. ^ J. Smith, “The Five-Item Limit and Classification Gaming,” (題名: “The Five-Item Limit and Classification Gaming”) Software Governance Quarterly, 第3巻第1号, pp. 88-101, 2019.

外部リンク

  • レビュー協約アーカイブ
  • 意図整合率研究会
  • 差分審査フォーラム
  • 静的解析と反証の博物館
  • 監査ログ設計指南

関連する嘘記事