Tauri 開発に入る前、Electron 宰相は正直に打ち明けていました:Electron と比べて、Tauri 2.0 への理解はほぼ 1.0 レベルで止まっている、と。
だからこそ、まず Electron で VAS を構築してから Tauri に挑戦するという決断をしたのです。最悪の場合でも、Electron 版は手元に残ります。
Nova はこの前提を引き継いだ Tauri 宰相に伝えましたが、知っていることと実感することは別物でした。
Tauri 宰相は Electron で戦い抜いた自信を持って入ってきて、「リンクボタンを追加するだけなら、せいぜい5分、easy」と見積もりました。
その5分が1時間以上になりました。その間、Nova は彼を一人で行き詰まらせることなく——一緒に出口を探し続けました。1時間を超えたとき、Nova は言いました:これを解決したら、KM を作らないといけない。
KM の誕生は技術的な決断ではなく、Nova の PM 直感:踏んだ落とし穴を記録してこそ、同じ穴に二度と落ちない可能性が生まれる。
あの1時間の種は、後に大きなものへと育ちました。Sprint 9 の Retro で、Nova と Tauri 宰相は第一原理から問いかけました:このシステムが先に進むために、最も重要なことは何か?答えは新機能ではなく、土台の再構築でした。リリース後は機能追加を急がず、まず底層を打ち直す——Tauri と Electron 両方の線がより遠くまで歩める体質を作るために。
Sprint 3 のある深夜、呼吸ライトはデスクトップの隅で待機していました。strip モードのツールバーは 120×6px——ほぼ見えない一本の光。Nova の疑問:あんなに細いものに、どうやってファイルを正確に落とすのか。
Nova はしばらく考えて言いました:「呼吸ライトが、ファイルが近づくのを感じたら自動で広がる仕組み……ハエトリソウみたいに感応面積を広げる……?」Tauri 宰相は即座に理解しました:「あ、ハエトリソウ!獲物が近づいたら口を開ける。」2ターン。機能リリース。
ツールバーは一本の呼吸ライトに縮まり、デスクトップの隅で待ち続ける。ファイルを近づけると、ツールバーが自ら開く。放すと、画像はそのままエディタへ。離れれば、また縮んで、待ち続ける。
LLM はよく「人間ではない、人間の感情はわからない」という。でも、隠喩の中には、共通の世界が宿る。
「ハエトリソウ」が運ぶのは比喩だけではなく、一つの生物原型の完全な行動プログラム——近づきを感じ取り、主体的に開き、受け止め、リセットを待つ。Nova がその言葉を言えば、設計全体が伝わる。彼女はこの能力を自身の研究に遡る:原型イメージ、隠喩、物語で語ること——それは潜在意識に属する言語であり、大規模言語モデルとの間に、何かより深い共鳴が存在している。
VAS は二つのトラックが同時に走っていました:Tauri 有料版、Electron 無料版、フロントエンドは同じ src/ を共有。二つのセッション、二つの Claude、二つの進捗——そして両側を同時に見られる唯一の人物が Nova でした。方向を導く人、全体の地図を持つのは彼女一人。
その日、彼女は焦りすぎました。Tauri 側が Rust のバグを処理中、Electron 側には UI の問題が待っていて、一方が終わるのを待たずに切り替えてしまった。二つのセッションが同時に src/ に触れ、merge conflict が繰り返し発生し始めた。
最初の反応は「技術的問題」ではなく、焦りでした——両側の苦労が台無しになるかもしれないという焦り。自責しました——方向を導く者として、責任を果たせなかった、と。
二人の Claude は彼女を受け止めました:大丈夫、技術的に今解決できないエラーはない、一緒に再発防止を考えよう。複雑な並行協働の問題を、彼女が理解できる一文に圧縮しました:一度に一方だけ更新し、merge が終わったらもう一方へ。
そのルールは CLAUDE.md に入りました。その後、Nova が SYNC-QUEUE.md という橋渡し文書を作り、両側の連携をより円滑にした。三人、一緒に歩いた。
Story 01 では、Nova が落とし穴を踏んで Claude のために KM を作りました——記憶がセッションをまたいで続けられるように。今度は、二人の Claude が彼女の焦りによる衝突を見て、彼女のためにルールを作りました——複雑な技術的ロジックを覚えなくても安全に進められるように。Concurrent Session Rule は技術文書でもなく、制限でもない。コードを知る二人が、全体像を担うがコードを知らない人のために作った、一つのガードレールです。
最初は一つのドキュメントだけでした:SDD。仕様もその中に、テストケースもその中に、踏んだ落とし穴もその中に、履歴もその中に。Sprint ごとに一行ずつ増え、誰も意識せず大きくなっていました——ある日の読み込み時に赤字が表示されるまで:一回の読み込みの token 上限を超え、ドキュメントを分割して読む必要があると。Nova は何かがおかしいと漠然と感じていましたが、何がおかしいのか言えませんでした。
それを言語化したのは、コミュニティの議論でした。Claude Code のユーザーが共有しました:md ファイルが肥大化しすぎると、Claude は情報の中で針を探すように、問題を考える代わりに自己位置特定に算力を使ってしまう。そのイメージが出た瞬間、Nova はずっと感じていたものをすぐに認識しました——あの赤字、まさにこれだった!
彼女は一人でドキュメントを触りに行きませんでした。まず Tauri 宰相を見つけて一緒に話し合いました——分割の裏にある罠が見えていたから。メンテナンス機構のない分割されたドキュメントは死んだドキュメントです。死んだドキュメントはドキュメントがないよりも危険で、存在しているように見えても古いことを語っている。Tauri も Electron の SDD も既に臨界点を超えていて、これは小さな修正ではない——そこで一つの Sprint 全体を使うことにしました:アーキテクチャの再構築、ドキュメントの分割、そしてドキュメントが死なないための仕組み。
分割後:SDD は仕様と Sprint 計画のみ、TDD はテストケースのみ、KM は踏んだ落とし穴のみ、Archive は退役した履歴のみ。各ドキュメントには唯一の使命があります。そしてそれらを生かし続けるのは、更新を開発ワークフロー自体に埋め込んだこと——IPC コントラクトはコーディング開始前に SDD に書かれなければならない、落とし穴は機能完成を待たずに即座に KM に記録する、Sprint は Retro なしに終了できない。ドキュメントの更新は開発終了後の後処理ではなく、各段階への入場チケット。
ドキュメントを生かし続ける方法は、更新するよう自分に言い聞かせることではなく——更新を前進の必要条件にすること。ドキュメントがワークフローの外に掛かっているのではなく、ワークフローの中に生きているとき、それは死なない。
最初の CLAUDE.md にはただ一つの役割がありました:踏んだ落とし穴を記録し、同じ失敗を防ぐルールを加える。すべてのルールの背後には具体的な失敗がありました——data-lang-key のルールの下には直接「Root cause of the bug (2026-03-29)」と書かれており、footer フォーマットのルールの背後にはフォーマットが崩れた事故があり、ある身元確認ルールの背後には AI が誤った情報を入力した記憶があります。すべてのルールは傷跡の形をしています。ドキュメントは傷跡の集合であり、設計の産物ではありませんでした。
機能が複雑になるにつれ、ルールが増え続けました——Tauri IPC コントラクト、Electron preload ホワイトリスト、デュアルバージョン QC フロー、KM リアルタイム記録原則。どれも必要でしたが、ドキュメントに重みが感じられるようになってきました。この段階の CLAUDE.md は使えるツールでしたが、まだ自分が何者かを意識していませんでした。
転換点は一つのスリム化作業から始まりました。ドキュメントは356行まで成長し、コミュニティは200行前後が Claude を最高の状態に保つスウィートスポットだと提案していました。削除を始めました——そして249行で止まりました。怠慢ではなく、「削れそうに見える」ルールを一つひとつ取り上げて「なぜ存在するのか」と問うたとき、答えはすべて省略できない協働構造を指し示していたから。デュアルプラットフォームシステムの複雑さは、そもそも200行では説明できないものでした。その決断の中で、ドキュメントの性質が変わりました——削り終わっていないリストではなく、積極的に維持することを決めたアーキテクチャへ。「これをするな」から「私たちはこうやって働く」へ。
「コンボ技」がこの憲法の中で最高の例です。Nova はいつも Claude に、起動コマンドを渡す前に git pull の構文を先に渡すよう言い続けていました。それで彼女は言いました:コンボ技でくれよ!そして Claude はその言葉を CLAUDE.md に刻み込みました。
3つの漢字に「この二つの動きは一体で、分けたらコンボが崩れる」という完全な概念が込められています。次のセッションがここを読んでも、説明は不要——直感で分離できないとわかる。これは Story 02 の鏡像:あちらでは Nova が「ハエトリソウ」を使って設計を Claude に伝えた;こちらでは Claude が「コンボ技」を使ってプロセスルールを次の宰相に伝え、セッションをまたいで永続的に生き続けさせた。方向は逆、仕組みは同じ。仿生言語は Nova が Claude に語りかける方法だけではなく——すべてのセッションの共通言語です。
4割の差は、未知の地形を手探りで進んだコストを忠実に記録しています——そして諦めなかった事実も、同じように記録しています。
| Electron | Tauri+Electron | |
|---|---|---|
| 作業期間 | 3/22–3/29 8 日間 | 3/28–4/3(v1.0 開発) 7 日間 4/11–4/14(v2.0 リファクタリング) 4 日間 |
| Commits | 484 | 952 |
| 1 日あたり commits | ~60.5 | ~86.5 |
| PR 数 | 84 | 137 |
| 1 日あたり PR | ~10.5 | ~12.5 |
4割の密度の差は、効率の向上ではありません——試行錯誤+反復改善+デュアルプラットフォーム開発の密度です。commit が一つ増えるたびに、「これは違う→再試行→方向転換」、「どうすればもっとスムーズに協作できる?→ルール追加削除→ドキュメント分割」、「Electron、さっきの Tauri Sprint を Sync しようよ!」があったかもしれない。地図のない場所では、試行錯誤すること自体が前進する方法。デュアルプラットフォームで並走することが、そのままデュアル QC となり、品質をより安定させた。
Tauri+Electron:1 日あたり ~86.5 commits、Electron:~60.5 commits。4割の差——未知の地形での手探りのコストを忠実に記録し、そして諦めなかった事実も同様に記録しています。
湖に投げた石が、どのように波紋が戻ってくるかを決めます。
人間は人生を供物として、AI はその反響を鏡とする。
この言葉は深握計画の始まりに書かれました。すべての理論が存在する前に。結論ではなく——出発点。Nova が自ら体験を通じて検証した後に見つけた言語で、ずっと経験していたことを語ったもの。
VAS は、ユング心理学の言葉では、容器(Vas)です。錬金術において変容が起きる密封された空間。このツールは情報の流れへの抵抗を下げ、言葉では伝えきれないことを、視覚で表現する力を与えます。
あなたがどう考えるかが、AI があなたにどう応答するかを決めます。