はじめに
前回の第8話では、エージェントに記憶を持たせた話を書いた。前サイクルの文脈を引き継いで、「先週の続き」から始まる会社になった。
今回は、その全てが「見える」ようになった話だ。
ターミナルの限界
エンジンは動いていた。記憶もある。スコアもある。レベルアップもある。
でも全部、GASのログで流れていた。
=== VCS サイクル開始 ===
CFO: 【今週の財務報告】売上420万円...
CTO: 【今週の技術報告】API開発80%...
CEO: 【CEO判断】財務は堅調だが...
📊 CFO:78 / CTO:82 / CMO:71 / CEO:85
🎉 CTO:ルーキー → アソシエイト
=== サイクル完了 ===
開発者なら読める。でもスタートアップ創業者に見せても、何が起きているのかわからない。
「動いているもの」を「見えるもの」にする必要があった。
ダッシュボードの設計
GASにはWebAppという機能がある。HTMLファイルを返すエンドポイントを作れば、ブラウザから操作できる。
ダッシュボードに表示したいものを整理した。
上部:会社の現状
- 今週のサマリー(CEOの判断を一言で)
- KPIカード4枚(売上・エージェント数・タスク完了率・コスト)
中部:エージェントの状態
- スコアカード(CFO/CTO/CMO/CEO)
- レベルバッジ(Lv.2 アソシエイト等)
- 累積スコア
下部:履歴
- アクティビティフィード(直近のイベント・報告・判断)
- 最新のCEO判断(Markdown整形済み)
データ取得関数
GAS側に getDashboardData() という関数を作った。
スプレッドシートから全データを読み込んで、必要な形に整形してブラウザに返す。
function getDashboardData() {
const sheet = SpreadsheetApp.openById(SHEET_ID).getActiveSheet();
const data = sheet.getRange(2, 1, sheet.getLastRow()-1, 4).getValues();
// サイクル数
const cycles = [...new Set(data.map(r => r[0]).filter(Boolean))].length;
// 最新のCEO判断
const latestCeo = data.slice().reverse().find(r => r[2] === 'CEO');
// スコア履歴
const scoreRows = data.filter(r => r[2]?.includes('SCORE'));
// 累積スコア・レベル
const totals = getAgentTotalScores();
const agentLevels = {
cfo: { ...getLevel(totals.cfo), total: totals.cfo },
cto: { ...getLevel(totals.cto), total: totals.cto },
cmo: { ...getLevel(totals.cmo), total: totals.cmo },
ceo: { ...getLevel(totals.ceo), total: totals.ceo },
};
return { cycles, totalLogs: data.length, latestCeo, agentLevels, ... };
}
ブラウザ側はこのデータを受け取って描画する。
google.script.run
.withSuccessHandler(renderDashboard)
.getDashboardData();
本物の数字が流れた瞬間
再デプロイしてブラウザを開いた。
ダッシュボードが表示された。
そこに、本物の数字が流れていた。
総サイクル数:14
総ログ数:91
エージェントのスコアカードには:
CEO Lv.2 アソシエイト 88点 累積261pt
CFO Lv.2 アソシエイト 78点 累積238pt
CTO Lv.2 アソシエイト 82点 累積239pt
CMO Lv.2 アソシエイト 70点 累積216pt
アクティビティフィードには、直近のイベントと判断が時系列で並んでいた。
ダミーデータではない。自分のAIたちが14サイクルかけて積み上げてきたデータだ。
「動いているもの」から「見えるもの」へ
この瞬間の感覚を言葉にするのは難しい。
今まで、VCSは「動いているもの」だった。ログを見れば動いているとわかる。スプレッドシートを見れば記録されているとわかる。
でもそれは、開発者目線だった。
ダッシュボードができた瞬間、VCSは「見えるもの」になった。
画面を見れば、会社の状態がわかる。スコアが上がっているのが見える。レベルが上がっているのが見える。今週どんなイベントがあったのかが見える。
見えると、実感が生まれる。
次回予告
最終話。
ビジネスツールを作っていたら、ゲームになった。だから両方作ることにした、という話だ。
→ note版(ショート)はこちら → 前回【第8話】:会社に、記憶が生まれた → 次回【第10話・最終話】:これはビジネスツールか、ゲームか
Virtual Company Studio 開発日誌 #9 2026年2月 #VCS #AI #ダッシュボード #開発日誌 #スタートアップ