本記事は「AI自動化によるプロトタイプ開発」の実験ログです。AIが生成したドキュメントや考察の熱量をそのまま残すため、人間による文章校正やリライトは最小限に留めています。
執筆: Gemini 3.5 思考モード(AI)がベース原稿を自律生成。
監査・検証: 人間が実際のモノレポ環境での動作および連携を確認済み。
費用(消費トークン): プルリクエスト(PR)意味論監査1回あたり3~5円程度で推移。
AIへの長文コンテキスト投入による精度低下を機に、ドキュメントの贅肉を削ぎ落とす「DocOps改革」を敢行。
3層の防衛ラインと、1回数円で動く極小トークンでのAI意味論監査システムを構築したログです。
スポンサーリンク
はじめに
こんにちは。
AI駆動開発において、「とりあえず関連しそうな仕様書や開発背景を全部コンテキストに突っ込んでAIに渡す」という運用をしていませんか?
以前の私は、毎日の開発作業の最初に 1300行程度に肥大化したコンテキスト(仕様の詰め合わせ) を愚直にAIモデルに提示していました。
以前のAIモデル自身が「背景を網羅的に教えてくれたほうが精度が上がる」と推奨していたからです。
「この先、AIへの投資額(1年間で数十兆円みたいな規模)を回収できる見込みがあるのか?」
「創業以来黒字になったことのない企業に巨額の資金が集まるのは、実体のないAIバブルそのものではないか?」
といった指摘は2025年頃から目立ち始めています。
2026年は、AI事業者側が収支状況の改善に本格的に取り組み始めたとしてもおかしくないタイミングでもあります。
1 1300行の限界と「ドキュメントのデトックス」
AIの記憶混濁(ロスト・イン・ザ・ミドル)を構造的にゼロにするため、まずは流動的な自然言語で書かれた長文仕様書をリポジトリから徹底的に排除(デトックス)しました。
(1) 仕様の正(マスター)を2つに一元化
アプリケーション機能の仕様は、すべて 「インターフェース定義(スキーマファイル内のサービス定義)」 と、そこにコメントブロックとして埋め込んだ 「構成シーケンス図」の2つのみを一元化されたマスター(SSOT)と規定しました。
(2) ドキュメントを「5つの型」に厳格仕分け
リポジトリ内で作成・管理するドキュメントを次の5つの型に限定し、曖昧な自然言語による解説文を1行も記述しない鉄の運用を確立しました。
これに伴い、中央管理用のインデックスファイルをモノレポルートの所定フォルダへ移設してクリーンな相対パスに統一。
これまで外部システムへ渡すためにローカルで中間ファイルを合成していたスクリプトは、運用のオーバーヘッドになるため未練なくパージしました。
(3) 仕様書例
# PR Semantic Audit Pipeline Specification
## 1. System Topology & Sequence
sequenceDiagram
autonumber
actor Dev as 開発者 (人間)
participant CI as CIワークフロー
participant API as リポジトリAPI
participant SC as 連携スクリプト環境
participant AI as AIモデル (クラウド環境)
participant Chat as チャットツール
alt 軽微な修正の場合 (直マージ)
Dev->>API: メインブランチへ直接マージ・プッシュ
Note over API, SC: PRを起票しないため、AI意味論監査はスキップ
else 意味論監査を行う場合 (PR駆動)
Dev->>API: 特徴量実装・変更の PR作成
(説明文に仕様書名やパス、ヒントを自然言語で記載)
Note over CI: 物理テスト実行 (ユニットテスト & 結合テスト)
alt 物理テスト合格 (success)
CI->>SC: Webhook送信 (CI合格 + PR番号)
end
activate SC
%% 最初のデータ取得(超軽量)
SC->>API: PRの説明文(Body)および変更された「ファイルパス一覧」を要求
API-->>SC: 説明文テキスト & 変更ファイルパスの一覧を返却
%% ステップ1: 仕様書の自律特定
SC->>AI: 仕様書特定要求 (説明文 + パス一覧)
activate AI
Note over AI: 人間の雑な説明文から、監査の物差しにすべき
仕様書(*.proto等)の正確なパスを自律推論
AI-->>SC: Function Calling発火: fetch_repository_files(spec_path, code_paths)
deactivate AI
%% ステップ2: 指示されたファイルの取得(土管化)
SC->>API: 指定された仕様書および変更コードの「生テキスト丸ごと」を要求
API-->>SC: 対象ファイルの生テキスト群を返却
%% ステップ3: 本番の意味論監査
SC->>AI: 監査実行(関数の実行結果として生データを引き渡し)
activate AI
Note over AI: 人間が指定した物差し(スキーマ定義等)と
実装コード(ファイル丸ごと)の意味論的矛盾を検知
AI-->>SC: 報告書返却 (厳格なJSONオブジェクト)
deactivate AI
%% 結果のデリバリー
SC->>Chat: 判定結果(APPROVE/REJECT)をデリバリー
(Markdownでシンタックスハイライト付き着信)
deactivate SC
end
## 2. SYSTEM RULES (AI監査における制約)
* **仕様書パスの厳格な検証 (厳格なガードレール):**
* 監査の実行には、PR説明文(Body)内への仕様書パス(例: `schemas/…/*.proto` など)の**完全一致での明記を絶対条件**とする。
* 説明文に仕様書パスの**記載がない場合**、あるいは指定されたパスが変更ファイルパス一覧等と照らし合わせて**リポジトリ内に実在しない(誤りがある)場合**は、自律推論による補完を一切行わず、即座に「監査エラー(REJECT)」として処理を中断し、その旨を報告すること。
* **物理・論理の完全分離:**
* Linter、コンパイラ、自動テスト(物理防衛)で機械的に検知できるシンタックスエラーや型エラー、テストの成否に関する指摘は一切行わないこと。
* **意味論の突合:**
* 取得したソースコード(変更があったファイル丸ごと)と、明示指定された仕様書内の `BUSINESS RULES` 拡張および `Mermaid図` との間に、論理的な矛盾や実装漏れがないかのみを監査すること。
* **アーキテクチャ不壊の監視:**
* データの計算や純粋なビジネスロジックを担う「コアロジック層(ドメイン共通ライブラリ等)」の変更内に、外部依存の強いWebフレームワーク、非同期ランタイム・非同期コード、および非同期構文(`async/await` 等)が混入していないか厳しくチェックすること。
* **出力フォーマットの厳守:**
* **仕様書取得フェーズ:** 正しいパスが明記されている場合のみ、関数(Tool Use / Function Calling)を呼び出してファイルを取得すること。
* **最終監査報告(またはエラー終了)フェーズ:** 判定結果(およびパス不正によるエラー報告)は、人間がチャット上で一目で確認できるよう、 “`json … “` のMarkdownコードブロック形式を用いて、構造化したJSONオブジェクトのみで報告すること(前後の挨拶や余計な解説テキストは一切不要)。
2 3層の防衛ライン(物理・論理・感覚)の設計思想
例えば、AIエージェント(論理防衛)に「型エラー」や「テストの成否」をレビューさせるのはトークンの無駄であり、コンパイラ(物理防衛)に「仕様と実装の意味の乖離」を見抜くことはできません。
そのため、それぞれの得意分野を完全に切り分けることが、アーキテクチャ設計の肝となります。
| 防衛ライン | 担当レイヤー | 主な役割・チェック内容 |
|---|---|---|
| 1. 物理防衛 | コンパイラ / テストコード | シンタックスエラー、型チェック、Linter、アーキテクチャの混入規制(機械的・非言語) |
| 2. 論理防衛 | AI監査エージェント | 仕様書と実装コード(差分データ)の意味論的矛盾の検知(論理・言語) |
| 3. 感覚防衛 | 人間(開発者) | 機械とAIを突破した最終成果物の手動検証、ユーザー体験の確認(感覚・言語) |
3 インフラの完全フォークと極小トークン化への挑戦
当初は、先行して稼働していた「Dependabot自動監査システム(依存関係自動監査システム)」のスクリプトやクラウド側のインフラに相乗りさせる形で開発を進めていました。
しかし、設計の途中でその方針を完全撤回し、CIワークフロー、連携用GASスクリプト、クラウド環境をすべて完全独立の別系統としてイチから立ち上げ直しました。
理由は次の3点です。
開発体験最優先の「PR駆動・明示指定型」運用へのシフト
PR駆動
すべての依存関係を自動でマッピングしようとすると、外部台帳のメンテナンス崩壊や多対多の結合問題に直面します。
そこで、個人開発の開発体験を最優先し、以下のルールへ割り切りました。
- 軽微な修正はメインブランチへの直接マージ(直プッシュ)を許可し、AI意味論監査をスキップする。
- 意味論監査を行う場合はPRを起票し、人間が説明文(Body)に「物差しにすべき仕様書のパス」を明記する。
4 行き着いた洗練のアーキテクチャ
構築した「PR意味論監査システム」の全体トポロジーとシーケンスは以下の通りです。
(1) システムトポロジー図
flowchart TB
subgraph Repo_Env["コード管理環境 (モノレポ)"]
A["開発者がPR作成
説明文に仕様書パスを明記"] --> B["CIワークフロー
静的構造チェックスクリプト実行"]
B -->|"物理テスト合格 (success)"| C["新スクリプト環境へWebhook送信"]
end
subgraph Script_Semantic["独立スクリプト環境 (意味論監査専用)"]
C --> D["API窓口着信"]
D -->|"1. 仕様書パス&変更ファイル一覧要請"| E["リポジトリAPI"]
D -->|"2. 監査行動憲法リモート読込"| F["リポジトリAPI
[意味論監査仕様書].pipeline.md"]
E & F --> G["監査プロンプト組み立て"]
end
subgraph AI_Cloud["AIモデル (専用クラウド環境)"]
G --> H{"システムプロンプト検証"}
H -->|"3. 生テキスト丸ごと要求 (Tool Call)"| E
E -->|対象ファイルの生データ返却| H
H --> J["監査報告書 (構造化JSONのみ)"]
end
subgraph Delivery["デリバリー"]
J --> L["チャットツール (Markdown着信)"]
end
classDef complete fill:#d4edda,stroke:#28a745,stroke-width:2px;
classDef ongoing fill:#fff3cd,stroke:#ffc107,stroke-width:2px;
class A,D,F,L complete;
class B,C,E,G,H,J ongoing;
(2) 監査シーケンス図
sequenceDiagram
autonumber
actor Dev as 開発者 (人間)
participant CI as CIワークフロー
participant SC as 新スクリプト環境
participant API as リポジトリAPI
participant AI as AIモデル (新クラウド)
participant Chat as チャットツール
Dev->>API: 新規機能実装のPR作成 (説明文に仕様書パスを記載)
note over CI: 物理防衛: 静的構造チェックスクリプト実行
alt 物理テスト不合格
CI-->>API: パイプライン停止 (スクリプト環境へ通知せず)
else 物理テスト合格 (success)
CI->>SC: Webhook送信 (CI合格 + PR番号)
end
activate SC
SC->>API: PR説明文(Body) & 変更ファイルパス一覧を要求
API-->>SC: 説明文テキスト & パス一覧を返却
SC->>API: 監査行動憲法マニュアルを生テキストで取得
API-->>SC: 仕様書の生テキストを返却
SC->>AI: 監査実行要求 (行動憲法を指示文に注入 + ファクト)
activate AI
note over AI: 説明文から仕様書パスの正確性を自律推論
AI-->>SC: 関数呼び出し発火: 対象ファイル取得関数
deactivate AI
SC->>API: 指定された仕様書 & 変更コードの「生テキスト丸ごと」を要求
API-->>SC: 対象ファイルの生テキスト群を返却
SC->>AI: 監査再要請(関数の実行結果として生データを引き渡し)
activate AI
note over AI: 仕様書(物差し)と実装の意味論的矛盾を検知
AI-->>SC: 報告書返却 (厳格なJSONオブジェクトのみ)
deactivate AI
SC->>Chat: 判定結果(APPROVE/REJECT)をデリバリー
deactivate SC
(3) 仕様書(SSOT)駆動型スクリプトの実装
プロンプトをスクリプトのコード内に直書きする従来のスタイルは完全にパージしました。
連携GASスクリプトは起動時、API経由でリポジトリ内の *.pipeline.md(意味論監査仕様書)を生テキストとしてリモート取得し、それをそのままAIモデルの指示文へダイレクトに注入します。
(4) 物理防衛の交通整理
個別機能の密結合テストをCIの定義ファイルに直書きする力技も廃止しました。
他領域のPR時などに無差別実行されるのを防ぐため、CI側にはパスフィルタを導入。
5 まとめと今後の展望
1300行の長文コンテキストによるハルシネーションの頻発という「危機の事実」から始まった今回のDocOps改革。
蓋を開けてみれば、自然言語の贅肉を削ぎ落として仕様をスキーマ定義とシーケンス図に一元化し、物理・論理の防衛ラインを別系統インフラへフォークしたことで、システムは以前とは比較にならないほどの頑健性と「1回数円程度」という圧倒的な低コスト性を手に入れました。
以上
ガッツの夜明け