エージェントベース市場採用シミュレーター -- サービスアイデアの市場浸透をシミュレーション
日本市場の仮想空間にエージェントを配置し、Bass拡散理論に基づくエージェントベースシミュレーションを実行。サービスアイデアの採用曲線・売上予測・改善ポイントを可視化します。
テキストエリアにサービスのアイデアを自由に記述します。「AIで分析」ボタンをクリックすると、Claude APIがサービス内容を分析し、シミュレーションパラメータを自動推論します。
AIが推論したJTBD(ジョブ)、ターゲット、カテゴリ、推奨価格、競合状況が左パネルに表示されます。推論されたパラメータは手動で調整も可能です。シミュレーション結果がリアルタイムでダッシュボードに表示されます。
| 指標 | 説明 |
|---|---|
| 推定TAM | AI推論に基づく日本市場の推定TAM(Total Addressable Market)人数 |
| 総採用者数 | シミュレーション期間中にサービスを採用したエージェントの累計数 |
| 最大日次採用数 | 1日あたり最も多くの新規採用があった日の人数。採用のピークタイミングを示す |
| 採用率 | TAMに対する採用者の割合。市場浸透の到達度を表す |
| 市場機会スコア | ODI (Outcome-Driven Innovation) に基づく機会スコア(0-10)。高いほど市場に未充足ニーズがあり、サービスの成功可能性が高い |
Claude APIが推論した内容:
- ジョブ (JTBD): ユーザーが「片付けたい用事」。Functional / Emotional / Social の3種類
- ターゲット: 年代(20代、30代...)、職業(会社員、学生...)、世帯(単身、夫婦...)
- カテゴリ: 25カテゴリから最適なものを選択(教育、ヘルスケア、SaaS等)
- 推奨価格: 市場相場とターゲットの支払意欲に基づく推奨月額価格
- 競合状況: なし / 弱い / 強い。市場の競争環境の評価
- 推論理由: AIの推論プロセスの説明。TAM推定の根拠も含む
- 青い実線(累積採用): S字カーブ(シグモイド曲線)。イノベーターから始まり、マジョリティへ普及する過程を表す
- 緑の点線(日次採用): ベル型カーブ。1日あたりの新規採用者数。ピーク後に減少するのが典型的なBass拡散パターン
- 赤い線(現在位置): タイムラインスライダーで選択した日の位置
タイムラインコントロール: スライダーでシミュレーション日を移動でき、再生ボタンでアニメーション表示が可能。速度(0.5x / 1x / 2x / 4x)の調整も可能。
AIDMA購買ファネルの各段階にいるエージェント数を横棒グラフで表示:
| ステージ | 説明 |
|---|---|
| 未認知 (Unaware) | サービスの存在を知らないエージェント |
| 認知 (Aware) | サービスを知っているが興味がないエージェント |
| 関心 (Interest) | 興味を持ち、情報収集を始めたエージェント |
| 検討 (Consideration) | 購入を具体的に検討しているエージェント |
| 採用 (Adopted) | サービスを採用(購入)したエージェント |
各段階間の遷移確率はBass拡散モデル(イノベーション係数p + 模倣係数q)、JTBD適合度、価格受容性、ソーシャルネットワーク上の隣接エージェントの影響によって決定されます。
- エージェントベース市場シミュレーション -- 日本市場の人口統計(e-Stat 2020国勢調査ベース)に基づくエージェント生成。Watts-Strogatz小世界ネットワークで接続し、Rogersの普及カテゴリ(イノベーター〜ラガード)別に行動を個別化
- Bass拡散モデル + AIDMA購買ファネル -- イノベーション係数(p)・模倣係数(q)に基づく拡散モデルと5段階ファネルモデルを統合
- JTBD + ODI機会スコア -- 25カテゴリのプリセットJob定義とODI指標による機会スコア計算
- Claude API自動推論 -- サービス説明文を入力するだけで、AIがJTBD・ターゲット・カテゴリ・価格・競合状況を自動推論
- What-If分析 -- パラメータ変更の影響を即座にプレビュー
git clone https://github.com/PM-DAO/value-simulator.git
cd value-simulator
docker compose up
# ブラウザで http://localhost:3000 を開く前提条件: Python 3.11+, Node.js 20+, uv
# バックエンド
cd backend
uv sync
PYTHONPATH=src uv run uvicorn simulator.api:app --reload # http://localhost:8000
# フロントエンド(別ターミナル)
cd frontend
npm install
NEXT_PUBLIC_API_URL=http://localhost:8000 npm run dev # http://localhost:3000Frontend (Next.js 16) Backend (FastAPI)
┌──────────────────┐ ┌──────────────────────────────┐
│ 入力フォーム │ REST │ api.py ← エンドポイント │
│ 結果ダッシュボード│ ──────→ │ engine.py ← シミュレーション │
│ シナリオ比較 │ JSON │ agent.py ← BDIエージェント │
│ (Recharts) │ │ population.py ← 人口生成 │
└──────────────────┘ │ network.py ← ソーシャルグラフ │
│ diffusion.py ← Bass拡散 │
│ funnel.py ← AIDMAファネル │
│ jtbd.py ← JTBD/ODI計算 │
│ market.py ← 市場エンジン │
└──────────────────────────────┘
| モジュール | 説明 |
|---|---|
agent.py |
BDI (Beliefs-Desires-Intentions) エージェントモデル。年齢・性別・所得・地域・世帯タイプ・Rogersカテゴリ・ファネルステージを管理 |
population.py |
日本市場人口統計(e-Stat 2020国勢調査ベース)に基づく層化サンプリングでエージェント生成 |
network.py |
Watts-Strogatz小世界ネットワーク(k=6, p=0.1)によるソーシャルグラフ構築 |
diffusion.py |
Bass拡散モデル。イノベーション係数(p)で自発的採用、模倣係数(q)で口コミ採用を計算 |
funnel.py |
AIDMA購買ファネル。認知→関心→検討→採用の段階的遷移と減衰処理 |
jtbd.py |
JTBD/ODI機会スコア計算 + Claude APIによるLLM推論 |
market.py |
価格モデル適用(無料/フリーミアム/サブスク/従量/買い切り)、競合影響の計算 |
engine.py |
シミュレーション実行エンジン。全モジュールを統合しステップ実行 |
api.py |
FastAPIエンドポイント |
| エンドポイント | 説明 |
|---|---|
POST /api/simulate |
手動パラメータ指定によるシミュレーション実行 |
POST /api/simulate/auto |
AI自動推論モード(Claude APIでパラメータを推論) |
POST /api/simulate/compare |
シナリオ比較(最大3シナリオ同時実行) |
APIドキュメント(Swagger UI): http://localhost:8000/docs
AI自動推論機能を利用するには、環境変数に Anthropic APIキー を設定してください。
export ANTHROPIC_API_KEY=sk-ant-...APIキーなしでも、手動でパラメータを設定してシミュレーションを実行できます。
# バックエンド単体テスト
cd backend && uv run pytest
# カバレッジ付き
cd backend && uv run pytest --cov
# E2Eテスト(バックエンド・フロントエンドを自動起動)
cd frontend && npx playwright test| レイヤー | 技術 |
|---|---|
| Backend | Python 3.11+, FastAPI, NetworkX, NumPy, SciPy, Pydantic |
| Frontend | Next.js 16 (App Router), React 19, Tailwind CSS v4, Recharts |
| LLM | Anthropic Claude API |
| Test | pytest, Playwright |
| インフラ | Docker Compose |
Pull Requestsを歓迎します。
- このリポジトリをFork
- Feature branchを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add amazing feature') - Pushしてプルリクエストを作成
バグ報告や機能要望は Issues へ。
このソフトウェアはAGPL-3.0ライセンスの下で公開されています。SaaSとして提供する場合、ネットワーク経由でアクセスするユーザーに対してもソースコードの公開義務が発生します。詳細は LICENSE を参照してください。





