
この状況は、純粋に“苦痛”であるとともに、ソフトウェアデリバリーのフロー上でボトルネックとなりうる。つまり、開発生産性を低下させる要因だ。SPACEフレームワークで言えば、「満足度と幸福度」だけでなく、「効率とフロー」に関する指標も悪化していることを示す。
本稿では、コードレビューだけでなく、仕様、設計、実装に至るまでの成果物レビューをどのように仕組み化すべきかについて考察した結果を、一つの“ガイドライン”として示す。
その目的は、素早いソフトウェアデリバリーを通じてビジネス価値やユーザー価値を探索するための、高速なフィードバックループを実現することである。
🎧本記事のAI音声解説版をポッドキャストで公開中
open.spotify.com
参考資料
本稿は、先週火曜(2026年6月2日)のイベント登壇で話した内容を土台としつつ、その背景や考え方、具体的な実践方法についてさらに踏み込んで整理したものだ。
また、この登壇自体は、2026年4月に公開した記事「人間によるコードレビューに依存しすぎない“速さと品質の両立”を開発ライフサイクル全体で支える」を出発点としている。
ガイドライン
1. 基本方針
- ソフトウェア開発における品質(内部品質・外部品質を含む)は、自動化・AI Agent・人間の3者で構成される“システム”によって保証する。
- ルールやアルゴリズムに基づいて検証・評価可能な既知の制約や品質基準は、自動化によって保証する。
- 自動化では扱えない品質観点については、AI Agentが学習した知識や与えられたContextに基づく推論によって保証する。
- AI Agentは品質保証の実施によって得た知見をシステムへフィードバックし、継続的な品質保証能力の向上に活用する。
- 以下に該当するケースは、人間を品質保証プロセスに含める。ここで人間が行った判断およびその理由は、今後の品質保証に活用できるよう、自動・半自動でシステムへ反映する。
- 高度な意思決定を伴う事項
- 例: 複数の選択肢に明確な正解がなく、トレードオフを伴う判断
- 事前に定義された高リスク領域や事業上の重要度が高い領域
- 例: お金を扱うコンポーネントや、他社との差別化となる技術など
- 高度な意思決定を伴う事項
- 人間は品質基準や判断基準を定義するとともに、本システムによる品質保証が有効に機能するための設計・運用・改善に責任を持つ。
- システムの整備が不十分で、自動化およびAI Agentが未対応または十分な精度で対応できない領域については、人間が暫定的に品質保証を補完する。
2. 開発ワークフロー内での各レビューの考え方
- 上流のアウトプット品質が低い場合、それを入力として生成・評価される下流のアウトプット品質は保証できない。そのため、品質保証は可能な限り各工程で完結(自工程完結)し、後工程へ不良を流さない。
- ソフトウェア開発は不確実性が高く、後工程で前工程のアウトプットに対する問題や改善点が発見されることがある。そのため、必要に応じて前工程へフィードバックしながら反復的に品質を向上させる。
- フィードバックによる手戻りコストを抑えるため、一度に扱う成果物や変更は、品質保証と開発効率のバランスを考慮した適切な大きさに保つ。
3. 仕様レビュー
前提: 仕様書とそれに関連するドキュメントがあらかじめAI Agentによって生成されている。
3.1. 自動化の役割
- 自動化が担える範囲が非常に限定的であるため、ここでは定義しない。
3.2. AI Agentの役割
- 要求と仕様の整合性を検証する。
- 仕様の抜け漏れ(非機能要求への対応含む)を検出する。
- 曖昧な記述や複数解釈可能な表現を検出する。
- 既存機能の仕様との矛盾や不整合を検出する。
- 仕様の検証可能性や受け入れ条件の妥当性を評価する。
3.3. 人間の役割
- AI Agentが参照できないContextや暗黙知に起因する誤解や抜け漏れを補完する。
- AI Agentが提示した課題や改善案に対し、要求や業務上の意図を踏まえて対応方針を判断する。
4. 設計レビュー
前提: 設計書とそれに関連するドキュメントがあらかじめAI Agentによって生成されている。
4.1. 自動化の役割
- 自動化が担える範囲が非常に限定的であるため、ここでは定義しない。
4.2. AI Agentの役割
- 設計ガイドラインとの整合性を検証する。
- 仕様と設計の整合性を検証する。
- 設計の抜け漏れ(非機能要求への対応含む)を検出する。
- 曖昧な記述や複数解釈可能な表現を検出する。
- 既存設計・既存実装との矛盾や不整合を検出する。
- 設計構造(責務分割、依存関係、コンポーネント境界、データの構造とフロー、I/Fなど)の妥当性を評価する。
- テスト観点の設計への反映漏れを検出する。
- 設計上の課題やリスクに対する代替案を提示する。
4.3. 人間の役割
- AI Agentが提示した課題や代替案に対し、トレードオフを踏まえて採用方針を判断する。
- 高リスク領域や事業上の重要度が高い領域について、人間の観点から設計を評価する。
5. 実装レビュー
前提: テストを含め、必要なすべてのコードがあらかじめAI Agentによって生成されている。
5.1. 自動化の役割
- コンパイル、型チェック、静的解析により、機械的に検出可能な欠陥を検証する。
- Linter・Formatter等により、コーディング規約への準拠を検証する。
- 自動テストにより、振る舞いと構造(アーキテクチャ)に関する既知の制約や品質基準への準拠を検証する。
- 依存ライブラリ、ライセンス、脆弱性など、外部依存に関する既知の制約への準拠を検証する。
5.2. AI Agentの役割
- 設計・仕様と実装の整合性を検証する。
- 実装の抜け漏れや過剰実装を検出する。
- コードの保守性(理解容易性、変更容易性、テスト容易性など)を評価する。
- 既存実装との矛盾や不整合を検出する。
- テスト観点・テスト対象・テスト内容の不足や誤りを検出する。
- 自動テストによる検証が困難な箇所や品質特性を検証する。
5.3. 人間の役割
- AI Agentが提示した課題や改善案に対し、トレードオフを踏まえて対応方針を判断する。
- 高リスク領域や事業上の重要度が高い領域について、人間の観点から実装を評価する。
ソフトウェアシステム内部をどこまで理解しておくべきか?
AI時代において、開発者はどこまでコードを理解すべきだろうか。
自身ではコードを書かず、AI Agentに任せることが多くなるほど、コードへの理解は薄れていく。たとえコードレビューを通して理解したとしても、自分の手で書いた時より理解度は浅くならざるを得ない。
これは、ブラックボックス化が進むということだ。そこに仕様変更を加えなければならなくなったり、本番トラブルが発生したりした時はどうするのか。そう考えると、不安になるのも無理はない。
しかし、少なくとも構造については理解しておくべきだろう。レイヤーごとのアーキテクチャ、内部で適用されているデザインパターン、データ設計だ。マルチリポの構成や、コードのディレクトリ構造もそうだろう。それに加え、インフラ構成やデプロイメント構成、トポロジーといったシステム構成も含まれる。
これらを理解しているかどうかで、コードリーディングの速さや深みは大きく変わる。また、トレードオフを伴う高度な意思決定を行う際にも欠かせない。
一方で、次の3つの理由から、コードの細部まですべて理解しようと構えすぎるのも、あまり生産的ではないと考える。
- 外部品質の保証はテストが高効率である
- AI Agentを活用することでコードリーディングは効率化できる
- 変更箇所のトレーサビリティはドキュメントで担保されている
≫外部品質の保証はテストが高効率である
まず、本ガイドラインが目指す品質保証システムでは、外部品質を可能な限りテストによって保証することを目指している。
それによって本番トラブル発生リスクを抑えるとともに、たとえ障害が発生したとしても、「障害範囲の局所化」と「修復時間の短縮」に向けた仕組みでカバーすることを想定している。これらについては、登壇資料のP31-P33にまとめた。
≫AI Agentを活用することでコードリーディングは効率化できる
次に、AI Agentによるコードリーディングを活用すれば、コードの理解は比較的素早く、容易になる。変更箇所の要約や処理フローの説明、関連モジュールの特定などは、AI Agentが得意とする領域である。これは言うまでもないだろう。
ここで、構造に対する前提知識が大いに役立つはずだ。
≫変更箇所のトレーサビリティはドキュメントで担保されている
さらに、従来のやり方でも、誰もがすべてのコードを把握していたわけではなかった。本番トラブル発生時に、原因となったコードを書いたエンジニアが常に対応していたわけでもない。ログや症状を手掛かりに、その場で原因を突き止め、対処していた。特に、開発と保守・運用を分離している組織では、ドキュメントをもとにこういった対応をやってきた。
そういった観点からも、コードを完全に理解しなければ保守や運用ができないと考えるべきではない。
そのうえ、本品質保証システムでは、トレーサビリティによってコードを理解しやすい環境が作られている。仕様や設計に関するドキュメントが作成され、それらが実装へと落とし込まれるからだ。
このように述べると、各種ドキュメントをコード変更に合わせて常に最新化し続けることを想像するかもしれないが、そうではない。PRやcommitのコメントから、その当時に作成したドキュメントへ辿れるよう、コードと一緒にリポジトリへ保存されていれば十分である。
それによって、コード変更の背景や意思決定の経緯を後から追跡できる。我々は以前から、コミット履歴や関連資料を手掛かりにコードを理解してきたのだから。
さいごに
私自身は、AI時代の開発ワークフローとして「Spec-firstなSDD(仕様駆動開発)」に一定の期待を寄せている。その理由は、ドキュメントの連鎖によって、AI Agentに十分なContextを与えながら開発を進められるからだ。また、その仕組みは、本稿で述べてきた品質保証システムの基盤にもなる。
ただしこれは、「ソース」と呼ばれるもの、いわゆる「SSoT(Single Source of Truth)」を、コードから仕様書に変えようという話ではない。コードの変更とそのためのドキュメントを一緒にリポジトリへコミットし、必要に応じて過去の意思決定や設計意図を参照できれば十分である。この点は前節で述べたとおりであり、Spec-anchoredやSpec-as-sourceである必要はない。
一方で、設計や実装、そしてそれらのレビューの多くをAI Agentに任せる時代において、人間は何に責任を持つのだろうか。
従来通りの説明責任を負うとするならば、人間が設計や実装の細部まで理解しておかなければならない。だが、それでは自分でコードを書いた方が効率が良いかもしれない。AI Agentに頼ると、どうしても理解が浅くなる。AI Agentを利用する価値はどこにあるのだろうか。それではAI Agentは、単にコストだけが増える存在になってしまう。
おそらくここが、パラダイムシフトとなるポイントなのだろう。
そもそもこれまでも、一人ひとり、あるいはチーム全体でも、コードベースのすべてを深く理解しているとは限らなかった。レガシーシステム化し、ブラックボックスとなったソフトウェアシステムであっても、責任を持って変更・運用してきた。
ソフトウェアデリバリーにおいて、今後、人間が負う責任とは、AI Agentに設計や実装を行わせる仕組みそのものに対する責任ではないだろうか。誤った設計・実装をAI Agentが作り上げたなら、その成果物を修正するだけでなく、それを生み出した仕組み上の欠陥を正すのだ。
そして、本番への欠陥流出を最小化し、たとえ障害が発生してもその影響を局所化し、迅速に復旧できる仕組みを構築する。そして、そのシステムを継続的に改善し続ける。
AI時代のエンジニアに求められる責任とは、個々の設計や実装に対する責任よりも、そのようなソフトウェアデリバリーシステムそのものに対する責任に重きが置かれるのだろう。
しかし、それは技術力が不要になることを意味しない。高度な意思決定や、例外的な状況への対応が求められるからだ。手を動かす機会が失われつつある時代に、どのように技術力を身につけ、維持し続けるか。新たな課題に向き合うことになる。
◇ ◇ ◇ ◇ ◇
本稿では品質保証システムを中心に述べた。しかし、その有効性はチーム設計や組織設計とも切り離せない。
この「組織設計」というテーマにも関心がある方は、拙著『チームの力で組織を動かす』で扱っているチーム責務や組織設計の話も参考にして欲しい。カバー裏にも書いてあるのだが、本書はアジャイル、リーン、DevOps、マイクロサービス、チームトポロジー、コンウェイの法則といった考え方をもとに、チーム設計・組織設計を論じたものである。






















