# 隠れた危機一髪 - 26日間で本当に危なかった瞬間 ## 概要 表面的には順調に見えた26日間の開発。しかし実際には、何度も致命的な破綻の淵に立っていた。これらの危機を回避できたのは、「箱理論への執着」と「人間の違和感センサー」のおかげである。 ## 危機1: プラグインボックスの罠 ### 状況 ChatGPT5(実装AI)が提案した設計: ```rust // 危険な設計案 static PLUGIN_INSTANCES: Mutex>> = ...; // インスタンスを参照で共有 fn get_plugin(name: &str) -> Arc { PLUGIN_INSTANCES.lock().get(name).clone() } ``` ### 何が危険だったか - **箱理論の根本違反**:他の箱は`birth`で生まれるのに、プラグインだけ特別扱い - **状態管理の複雑化**:グローバルな共有状態が生まれる - **デバッグ困難**:問題が起きても原因特定が困難 ### にゃーの介入 ``` にゃー:「他の箱と同じようにbirthでインスタンスをうむ」 ``` ### 解決策 ```nyash // 正しい設計 box FileBox from PluginBox { birth(path) { // 外部ライブラリの初期化は1回だけ(static変数で管理) PluginSystem.initOnce() // でもインスタンスは普通に生成 me.handle = createNewHandle() } } ``` ### 学んだ教訓 - **AIも箱理論を見失うことがある** - **効率性の誘惑**に負けてはいけない - **統一性>効率性** ## 危機2: P2Pライブラリの静かな破壊 ### 状況 - C++ nyameshライブラリ:コンテキスト圧縮で内部状態が破損 - JavaScript nyamesh:同様に破損 - **表面上は動作継続**(最悪のパターン) ### 何が危険だったか ```cpp // C++ nyameshの内部 class P2PContext { std::vector nodes; // これが破損 MessageQueue queue; // でもここは動く }; ``` - データ構造の一部だけ破損 - エラーが出ない(NULLチェックは通る) - 徐々に通信が劣化 ### 発見の瞬間 ``` にゃー:「なんか通信の挙動がおかしいにゃ...」 ``` ### 対処 1. 完全な再初期化を実装 2. 状態検証のチェックポイント追加 3. 「箱」として隔離(P2PBox内に封じ込め) ## 危機3: 型システムの静かな崩壊 ### 状況 - FloatがI64として扱われる - でも「動いている」ように見える - 計算結果が微妙にずれる ### 危険性 ```nyash // 見た目は正常 local x = 3.14 local y = 2.0 local z = x + y // 5になるはずが... // 内部では // 3.14 → 3 (I64) // 2.0 → 2 (I64) // z = 5 (正しく見える!) ``` ### 発見 テストで`sin(1.5707963267948966)`が`0`を返したとき ## 危機4: Arcの感染爆発 ### 状況 - 最初は「安全のため」StringBoxにMutex - 次第にすべてのBoxに感染 - パーサーが個別処理地獄に ### 臨界点 ```rust // 16種類すべてがこの形に... struct StringBox { base: Arc>, value: Arc>, // たった1つの文字列に! } ``` ### にゃーの決断 ``` にゃー:「これはやばいにゃ。NyashValueに統一するにゃ」 ``` ## 共通パターン:静かな破壊 最も危険なのは**「表面上動いている」**状態: 1. **部分的破損** - 一部は正常動作 - 徐々に劣化 - 原因特定が困難 2. **型の暗黙変換** - エラーが出ない - 結果が「それっぽい」 - 後で大問題に 3. **複雑性の感染** - 「安全のため」から始まる - 徐々に全体に広がる - 気づいたときには手遅れ ## 危機回避の共通要因 ### 1. 箱理論への執着 ``` 「これも箱にすれば...」 「箱の規約を守れば...」 「問題を箱に封じ込めれば...」 ``` ### 2. 違和感の言語化 ``` 「なんか変だにゃ」 「これ続けたらやばいにゃ」 「表面は動いてるけど...」 ``` ### 3. シンプルさへの回帰 ``` 複雑化 → 「待って」 → 箱に戻す ``` ## 結論:見えない危機との戦い 26日間の開発は、実は**薄氷の上を歩く**ような危険な旅だった。 成功の鍵: - **箱理論という北極星**:迷ったら必ず戻る場所 - **人間の第六感**:データでは見えない異常を察知 - **AIとの対話**:AIの暴走を人間が制御 これらの「隠れた危機」の記録は、将来の開発者への貴重な警告となる。 **「動いているように見える」が最も危険** この教訓を忘れてはならない。