第11章 ― KPIダッシュボード v2(成長編)

第11章 ― KPIダッシュボード v2(成長編)

Step1の20行が、Step2の200行になる日。

創業編 第6章で書いた kpi/dashboard.mjs(Step1 20行)を、Step2 に進化させる日。ASC Sales Reports API を統合して、毎日のDL/MRR/解約率を自動取得する。

Step2の要件

1. ASC Sales Reports API を毎朝6:00に叩く

2. 各アプリの daily DL / daily MRR / 国別 / 解約率 を取得

3. registry.json の各エントリに kpi_today / kpi_7d / kpi_30d をマージ

4. dashboard.mjs で5本のアプリの KPI を1画面で出す

5. CFO Agent(02_cfo.md) が30日連続赤字を自動検出

ASC API 認証の実装

認証情報は HANDOFF.md / CLAUDE.md / 21_carefam_master.md に共通で書いてある: Key `775PX32QH5` / Issuer `d89909ec-...` / p8 `/tmp/apple_keys/AuthKey_775PX32QH5.p8`。

JWT 生成は ES256(P-256)。トークン有効期限は20分。`jsonwebtoken` ライブラリで生成し、Bearer ヘッダで `https://api.appstoreconnect.apple.com/v1/salesReports?filter[reportType]=SALES&filter[reportSubType]=SUMMARY&filter[frequency]=DAILY&filter[reportDate]=YYYY-MM-DD&filter[vendorNumber]=XXXXXXXX` を叩く。レスポンスは TSV(gzip)。

1日のフロー(cron)

毎日の自動実行スケジュール

時刻ジョブ出力
6:00asc_sales_fetch.mjskpi/raw/YYYY-MM-DD.tsv.gz
6:05asc_sales_parse.mjskpi/daily/YYYY-MM-DD.json
6:10registry_merge.mjsapps/registry.json 更新
7:00Trend Hunter Agentmarket_research/YYYY-MM-DD_trends.md
8:00CFO Agentkpi/cfo_report_YYYY-MM-DD.md
9:00CEO Agent当日のアプリ判断
20:00dashboard.mjsstdout: 5本のKPIサマリ

200行のdashboard.mjs

Step2 の dashboard.mjs は約200行。中身は:

* registry.json + kpi/daily/*.json を読む(20行)

* 各アプリの 1日 / 7日 / 30日 MRR/DL/解約率 を計算(40行)

* console.table で出力(20行)

* 30日連続赤字アプリをフラグ立て(40行)

* CFOレポート用 markdown 出力(60行)

* CLI フラグ `--json` `--cfo` `--mrr-only` 対応(20行)

Step1 から Step2 への増分は約180行。これは1日で書けた。

CFO Agent の自動判断

CFOレポートに『停止推奨アプリ』が自動で入る。判定ロジックはこう:

30日連続でMRR < (Claude API課金 + Supabase維持費 + ストア手数料) なら停止推奨

agents/02_cfo.md より導出

1本あたりの最低運用コストは、Supabase shared inst の按分1本¥500/月、Claude API使用分(雛形時消費)¥200/月、ストア手数料15-30%。実質、月¥800のMRRが立たないアプリは6ヶ月以内に停止候補になる。

5本の現在地(Step2 連携初日)

サンプル出力(数字は概算想定):

kpi/dashboard.mjs --mrr-only の出力例

slugMRR(30d)DL(30d)解約率判定
carefam¥80,0001,2005%伸長 ⭐︎
read-big-ocr¥25,0008008%順調
focus-timer-adhd¥18,00065012%改善中(★1対応後)
sleep-mind-link¥8,00030010%監視
cat-litter-log¥12,0004506%立ち上がり
合計¥143,0003,4001ヶ月目KPI(¥100k)達成

**2026年6月初週時点で、1ヶ月目KPI ¥100,000 を達成見込み。** これは1本のアプリでは到達しなかった数字。5本の合計で立てたという事実が、量産戦略の正しさを証明する。

「JSONファイルベース」哲学を保つ

Step2でも DBは使わない。すべて JSON ファイル + Markdown。git で全変化を追える。Mixpanel契約しない、Datadog契約しない。透明性とコスト最適化の両立。

理由は CLAUDE.md の絶対ルール:「全リポジトリ読込は禁止。指定ファイルのみ読む」。Claude Code が必要に応じて registry.json / kpi/cfo_report_*.md を読み、判断材料にする。SaaS連携はメリットよりブラックボックス化のコストが大きい。

4コマ漫画 ― 「ダッシュボードに5本並んだ朝」

Step1 20行 → Step2 200行。1日でアップグレード
Step1 20行 → Step2 200行。1日でアップグレード
  1. 1コマ目Step1: registry.jsonを読むだけの20行スクリプト
  2. 2コマ目ASC API JWT認証を1日で実装。p8キー読み込み完了
  3. 3コマ目毎朝6:00 cron: 5本のKPIが自動更新される
  4. 4コマ目1ヶ月目KPI ¥100,000、達成見込み。次は¥500,000

次回、第12章は「TikTokショート動画でDLが増えた日」。Growth Hacker Agent が初めてTikTokを回した日の記録。

この記事が役に立ったらシェアしてください