AIとプログラミング言語を作ったら、Rustの二重ロック地獄にハマった話

に公開

AIと一緒にプログラミング言語「Nyash」を作っている話

Nyashという「Everything is Box」哲学の言語を作ってます。
https://github.com/moe-charm/nyash

最近、とんでもないバグに遭遇しました...

server = new SocketBox()
server.bind("127.0.0.1", 8080) // ✅ 成功
server.isServer() // ❌ false !?!?

なぜ状態が消えるのか?原因はRustの二重ロック地獄でした。

🔍 問題の詳細

何が起きていたか

Rustド素人の私がAI(Claude/Copilot)と作った設計:

// インタープリター側(外側のロック)
Arc<Mutex<dyn NyashBox>>

// SocketBox内部(内側のロック)
struct SocketBox {
is_server: Arc<Mutex<bool>>, // またロック!
}

→ 二重ロック地獄でデッドロック+状態不整合

💡 解決策

Gemini先生に救われた

「責務の二重化です」と一発診断。

解決策:

  • Box内部:Arc<Mutex>完全禁止
  • インタープリター:一元ロック管理

// 新設計
struct SocketBox {
is_server: bool, // シンプル!
}

🎯 学び

AIプログラミングの落とし穴

  1. AIは正しいコードを書くが、アーキテクチャ判断は人間次第
  2. 言語知識不足でAIの出力を適切に評価できない危険性
  3. 複数AI(Claude設計+Copilot実装+Gemini診断)の威力

Everything is Box言語の今後

現在Phase 9.75として15個のBox型を大改造中...

Discussion