みちよみ 開発の記録
このデータ基盤がいつ・何から作られたかの記録。2026-08-23版。
経緯
みちよみは、都知事杯オープンデータ・ハッカソン2026の応募作として2026年7月16日に着手し、提出日の8月22日までの38日間で作られました。最初の言語化がデータベースに記録されたのは着手当日、プロダクト名「みちよみ(michiyomi)」が決まったのは締切の11日前、ドメイン michiyomi.dev を取得したのは提出の前日です。
期間より前から存在したのは、素材である市民撮影の公開街路画像(Mapillary、撮影は2003〜2026年で99.95%が2014年以降)と、机の上の機材、汎用の自作ツール(来歴管理CLI)だけです。言語化パイプライン・データベース・API・MCP・各UIと、名前・ドメインを含むみちよみ自体は、すべてこの38日の産物です。
このページの日付と件数は、作業ログと各SQLiteデータベースの集計(2026-08-23時点)に基づきます。
タイムライン
| 日付(2026) | できごと |
|---|---|
| 7/16 | 着手。Mapillaryメタデータを364万シーンに集約、モデル選定、最初の言語化プロンプト(約2KB)を作成。同日中に世田谷区で最初のL1言語化がデータベースに記録される |
| 7/17 | プロンプトをv3系へ全面改稿(この日だけで4版)。情報量が初版の3〜5倍に |
| 7/22 | ハッカソンにエントリー。方向規約(方角語の禁止・左右はカメラ基準)を導入したプロンプトv3.4を採用 |
| 7/27–28 | 世田谷区パイロット全量完了 — L1 29,764地点・L2 3,048区間・L3 152グループ。主語を「通学路リスクマップ」から「視覚の言語化データ基盤」へ転換 |
| 7/31–8/1 | 渋谷区・新宿区へ展開(L1 35,010地点)。REST APIの骨格(Cloudflare Workers + D1)がローカルで動く |
| 8/4 | 中央区(銀座)へ展開(L1 13,043地点) |
| 8/9 | 言語化エンジンをクラウドから自宅GPU 1枚のローカルVLM(Qwen系)へ移行。同時に「世代(generation)」による来歴管理をAPIに実装 |
| 8/10–11 | 23区全域を道路チャンク化(94,232本)し、経年変化検出6,197グループを完遂 |
| 8/11–12 | 経年変化の全5,798主張に、文脈を分離した別セッションによる反証裁定を実施 |
| 8/12 | 人間向けのカルテUIを1日で作り、同日中に廃番。「AIが現実を読むための基盤」に再定義し、MCPサーバとして再構築。「michiyomi」の名前が決まったのはこの日 |
| 8/14 | 優先エリアの言語化が完走(135,594シーン) |
| 8/15–22 | 被覆優先の区単位キューで残りの区を連続処理(第1〜5陣)。エンジンをQwen3.8系へ刷新し最大2,667枚/時に |
| 8/21 | michiyomi.dev を取得し、本番公開(release 2026-08-21-r1) |
| 8/22 | 全量588,220シーンの release 2026-08-22-r1 を公開し、ハッカソンに提出 |
提出後も残りの区の処理は自宅GPUで継続中で、8月末に23区全域の収録完了を見込んでいます(現在の収録状況)。
作り直しの記録
38日の大半は、書いては壊す作業でした。主な作り直しを残しておきます。
- 言語化プロンプトはL1で12版(初版2,061バイト→最終13,026バイト)、L2で6版。検証の結果捨てた版もあります — 精度向上が見込めた地図情報の注入案(v3.5b)は「言語化は純粋視覚のみ」の原則を守って棄却、軽量スキーマ案は「1.5倍速」の見積りが実測1.06倍で棄却されました。
- 出力スキーマの規約は運用中に増えました。「右」はカメラの右であって東ではない(方角語の禁止)、瞬間のカウントは書かせない、「なし/不明/画角外不明」を区別する — いずれも初版には無く、失敗から追加された規約です。
- データベースは初代の設計ミスを引き継いでいます。初代には「どのプロンプト版で生成したか」の列が無く、実行日から版を推定するはめになりました。この失敗が、2代目の全行来歴(モデル・プロンプト版・生成日時)と、その後の「行来歴・世代・リリース」の3層管理につながっています。
- プロダクトの形は3回変わりました。通学路リスクマップ(7月中旬)→ 視覚言語化データ基盤(7/27)→ 人間向けカルテUI(8/12朝)→ AI向けMCP基盤(8/12夜)。カルテUIは完成した当日に廃番です。
- 撤回した分析もあります。無電柱化の国道・都道比較(高架区間との交絡)、経年変化の年差仮説(検定で棄却)、コスト試算の検算ミス — いずれも作業記録に撤回として残しています。
費やした計算資源
| 系統 | 何に使ったか | 規模 |
|---|---|---|
| クラウドVLM GPT-5.6系(Codex CLI) | L1初期世代 77,676シーン / L2区間 15,666本 / 経年変化検出 6,197グループ / 反証裁定 5,798主張 | 約30億トークン(作業ログの平均消費からの概算) |
| ローカルVLM Qwen系 × 自宅GPU 1枚 | L1全量 588,220シーン(8/9〜8/21) | 49.5億トークン(データベース実測) |
| 補助 Gemini / Claude ほか | 同一48枚でのモデル比較ベイクオフ、デモ候補の画像精査、実装・レビュー | 集計なし |
合計で約80億トークン。同じ量をクラウドの従量課金で買えば、単価の安いモデルを選んでも数十万円規模になる計算です。実際には、定額サブスクリプションの週次上限に張り付く運用が続き(上限到達で追加クレジットを買い足した週もあります)、8月9日からは自宅のGPU 1枚に切り替えることで、全量処理を成立させました。
クラウド・ローカルの2世代を同一シーンで保持しているのはこの経緯によるもので、世代間の回帰比較にそのまま使っています(設計思想 原則3.3)。
確かめ方
このページの記述は、次の方法で外側から確認できます。
- 生成の来歴 — 全シーンのAPI応答に、言語化したモデル名と世代が付いています(
model/generation)。世代ごとの件数とプロンプト版の分布は GET /v1/generations、リリースの来歴連鎖は GET /v1/provenance が返します。 - 素材の撮影日 — 各シーンはMapillaryの元画像へリンクしており、撮影日時はMapillary側でも確認できます。
- 公開の履歴 — 全API応答の
snapshotフィールドが、どのreleaseへの問い合わせかを示します。最初の公開releaseは 2026-08-21-r1 です。