NexusCore
マルチエージェント与えられた目標に向かって、自分で手順を組み立てて作業を進めるAIプログラム。質問に答えるだけのチャットAIと違い、「調べる→書く→確認する」を自律的に行うAI開発フレームワーク。12の専門エージェントが協調動作し、 要件分析→設計→コード生成→テスト→品質保証まで自動化。
なぜ作ったか
ソフトウェア開発の各フェーズ(要件定義「何を・何のために作るか」を言葉に整理して関係者で合わせる最初の作業。ここが曖昧だと手戻りが最大になる・設計・実装・テスト・レビュー)は、本来それぞれ異なる視点と専門性が必要です。一人のエンジニアが全フェーズを兼務すると、どうしても視点が偏ります。そこで各フェーズに専門のAIエージェントを割り当て、協調させることで、一人開発でも多様な視点での品質担保を実現できないか——という構想から生まれました。
アーキテクチャ
12の専門エージェント
エージェントは大きく3つのグループに分かれています:
① 開発パイプライン(上流→下流)
Requirement(要件分析)
↓ 要件仕様書
Planner(実装計画)
↓ 実装プラン
Architect(アーキテクチャ設計)
↓ 設計書
Coder(コード生成)
↓ コード
Tester(テスト自動生成)
↓ テスト結果
Guardian(品質ゲート判定)
↓ 合格/不合格
② 品質保証・分析
| エージェント | 役割 |
|---|---|
| Debugger | エラー修正・デバッグ |
| Mutation Tester | テストスイートの強度測定(ミューテーションテスト) |
| Postmortem | 失敗分析・事後検証 |
③ ガバナンス・管理
| エージェント | 役割 |
|---|---|
| Policy | ポリシー適用(コーディング規約等) |
| Constitutional Council | ガバナンス・意思決定 |
| Knowledge Curator | ナレッジ管理 |
設計上の判断と理由
Q: なぜ12エージェントに分割したのか?
1つの巨大エージェントに全役割を担わせることも可能ですが、あえて分割した理由は:
- 責任の分離: 各エージェントが単一責任を持つことで、出力の品質が安定する
- 品質ゲート次の工程(例: 本番公開)に進んで良いかを判定する関門。テストが全部通っているか・コード検査で警告が出ていないか等を機械的にチェックし、不合格なら先に進めないようにするの客観性: Coderが書いたコードをGuardianが品質ゲートで判定できる(自分の書いたコードを自分で検証する問題を回避)
- 差し替え可能性: 各エージェントの背後にあるLLMを独立に変更できる(コスト最適化)
Q: なぜ2層の品質ゲートにしたのか?
- Tier 1(静的解析): カバレッジテストがコードのどれくらいの割合を確認できているかを表す数字(%)。80%なら、コードの8割が少なくとも1回はテストで実行されたことになる80%+ / Pylint 8.0+ / Mypy / Bandit → 機械的に検出できる問題は即座に弾く
- Tier 2(動的テスト): ミューテーションテスト → テストコードが「本当にバグを検出できるか」を検証する
- 理由: 静的解析だけでは「テストが形式的で実質的にバグを検出できない」問題を発見できないため
LLMルーティングタスクの内容に応じて、どのLLM(AIモデル)に処理させるかを振り分ける(ルーティング=経路選択する)仕組み。品質とコストのバランスを取るのが目的(8プロバイダー)
Task → LLM Router → [品質ティア: GPT-5.5 / Sonnet 4.6 / Gemini 3.1 Pro]
[軽量ティア: Claude / 代替プロバイダー / DeepSeek / Moonshot]
↕
Budget Manager(日次上限・フォールバック制御)
33種のタスクを自動分類し、最適なLLMにルーティングします。コード生成などの重要タスクは品質ティアLLM(AI)を能力と値段のランク(ティア=階層)で分けて使い分けること。難しい仕事は高性能・高コストのモデルへ、簡単な仕事は低コストのモデルへ振り分けて、全体のコストを下げる、チャットや分類は軽量ティアに振り分け、月額コストを最適化しています。
面接で聞かれそうなポイント
「ミューテーションテストとは?」
通常のテストは「コードが正しく動くか」を検証します。ミューテーションテストは逆に「テストが本当にバグを見つけられるか」を検証します。
具体的には:
- 本体コードに意図的に小さなバグ(ミュータント)を注入する
- テストを実行する
- テストがバグを検出(kill)できればOK、見逃せばテストが不十分
例:if a > 0 を if a >= 0 に変えて、テストが失敗するか確認する。失敗しなければ a == 0 の境界値テストが漏れていることになります。
「Authority Runnerとは?」
変更の重要度に応じて、実行の自動化レベルを3段階に切り替える仕組みです:
| レベル | 名称 | 動作 |
|---|---|---|
| 1 | HUMAN_CONTROLLED | 人間の承認が必要 |
| 2 | PARTIALLY_AUTONOMOUS | 重要な変更のみ人間確認 |
| 3 | FULLY_AUTONOMOUS | 完全自動実行 |
技術スタック
- PythonAI・データ分析の分野で最も使われるプログラミング言語(読み: パイソン)。AI関連の道具が最も豊富で、文法が読みやすいのが特徴 3.12 / FastAPIPythonでWeb API(他のプログラムから呼び出せる機能)を作るためのフレームワーク(骨組み部品のセット)。処理を待たせない「非同期」方式に対応して高速で、APIの説明書(OpenAPIドキュメント)を自動生成する / Gradio
- pytest(5,000+テストケース)
- GitHub Actions CI/CDコードの変更のたびに、自動でビルド・テスト・公開まで行う仕組み。CI=継続的インテグレーション(自動テスト等)、CD=継続的デリバリー(自動公開等)。人的ミスとチェック忘れを防ぐ
- Apache 2.0 ライセンス
用語の平易な解説(専門用語を読み解く)
🤖 マルチエージェント(multi-agent)
一言で: 「複数のAIに役割を分担させて、一緒に1つの仕事を仕上げる仕組み」。
- エージェント: 与えられた役割を自律的にこなすAIのこと。人間で言えば「担当者」
- マルチエージェント: 担当者を複数用意し、それぞれ別の専門領域を担う仕組み。NexusCore では12人の担当(要件分析・設計・コード生成・テスト等)が協調
- なぜ1つでなく複数か: 1人の担当に全役割を任せると視点が偏る。分割することで「書いた人とチェックする人が別」等の客観性が生まれる
🏗️ アーキテクチャ(architecture)
一言で: 「システム全体の構造設計・骨組み」。
- 建築でいう「設計図」に当たる。どの部品をどう組み合わせてシステムを作るかの全体構造
- 「アーキテクチャを設計する」=「全体の骨組みを決める」という意味
🚪 品質ゲート(quality gate)
一言で: 「品質基準を満たすまで次の工程へ進めない、関所のような仕組み」。
- ゲート(門): 通過チェックのこと。「テストが通らないと公開できない」等の関所
- NexusCore では2層(静的解析+動的テスト)のゲートで、品質不足のコードを工程に進めない
🔍 静的解析(せいてきかいせき)・Pylint / Mypy / Bandit
一言で: 「コードを実行せずに、文字として読んで問題を見つける検査」。
- 静的解析: プログラムを動かさずにソースコードを検査する手法。「動的解析(実際に動かす)」の対義語
- Pylint(ピーリント): Pythonコードの書き方の規約違反を検出するツール
- Mypy(エムワイピー): 型ヒント変数や関数の入出力が「数値か文字列か」等の型であると予め宣言する書き方。書き間違いを実行前に機械が検出できるようになる(変数の種類)の矛盾を検出するツール
- Bandit(バンディット): セキュリティ上の危ない書き方を検出するツール
- いずれもPython界隈でよく使われる「コード検査員」
📊 カバレッジ(coverage)
一言で: 「テストがコードのどれくらいの割合を網羅しているか、を示す数値」。
- 例:「カバレッジ80%」=コードの8割はテストで通った、という意味。残り2割は未検証
- 高いほどバグが潜みにくいが、100%でも完璧ではない(網羅しても判定が不十分なことはある)
🔀 LLMルーティング(LLM routing)
一言で: 「タスクの内容に応じて、最適なAI(LLM)に振り分ける仕組み」。
- LLM(大規模言語モデル): ChatGPTやClaudeのような、文章を扱うAIの総称
- ルーティング(振り分け): 電話交換手が「お客様をどの窓口へつなぐか」決めるように、タスクをどのLLMへ回すか決めること
- なぜ振り分けるか: 重要な仕事は高性能(高コスト)なLLMへ、簡単な仕事は軽量(低コスト)なLLMへ、と使い分けて全体コストを下げる
🔁 フォールバック(fallback)・ティア(tier)
一言で: 「メインが故障した時、自動で予備に切り替える仕組み」と「階層・ランク」。
- フォールバック: 本命がダメな時に備えて予備へ退避すること。「予備系へ切り替え」
- ティア: 階層・ランクのこと。「品質ティア(上位ランク)」「軽量ティア(下位ランク)」のようにランク分けして使う
🌐 FastAPIApplication Programming Interface(エーピーアイ)の略。あるプログラムの機能を、別のプログラムから呼び出せるようにした「窓口」。予約システムがLINE社の機能とやり取りするのもAPI経由(ファストエーピーアイ)・Gradio(グラディオ)
一言で: 「Webサービスを簡単に作るためのPython道具」。
- FastAPI: Web API(他のプログラムから利用される機能)を高速に作る枠組み。非同期1つの処理の完了を待たずに、他の処理を同時に進める方式。ファストフードで注文を受けて番号で呼ぶイメージ。Webサーバーが多数の利用者を同時に捌く時に効く処理が得意
- Gradio(グラディオ): AIの機能をブラウザ画面から試せるようにするツール。「ボタンを押したらAIが答える」ような簡易画面を数行で作れる
- 非同期(ひどうき)処理: 「待ち時間に別の仕事を進める」仕組み。1つの作業が終わるまで他を待たせない
🔁 CIContinuous Integration(シーアイ・継続的インテグレーション)の略。コードを変更するたびに自動でテストとチェックを回し、壊れていないかを常に確認する仕組み/CD(シーアイスラシーディー)・pytest
一言で: 「更新のたびに自動でテスト・公開まで回す仕組み」と「テストを書く道具」。
- CI/CD(継続的インテグレーション/継続的デリバリー): コードを更新するたび自動でビルド・テスト・公開まで回す仕組み。GitHub Actions がその代表
- pytest(パイテスト): Pythonでテストコードを書くための定番道具。「この関数にこの入力を与えたらこの結果になるべき」を簡潔に書ける