# 破いても自己修復する日章旗をつくる

機械学習RustWebAssembly生命クソアプリ

2026 年 7 月、日本国旗の損壊などを罰する日本国旗損壊罪法が成立しました。だとすれば、いちばん安全な旗は破いても自分で元に戻る旗でしょう。というわけで、破壊すると 自己修復するデジタル日章旗を作りました。まずは触ってみてください。

デモは別サイトで動いています → 破いても自己修復する日章旗(デモ)

## これは何か

中身は Growing Neural Cellular Automata(成長する ニューラル細胞オートマトン)です。Mordvintsev らの "Growing Neural Cellular Automata" (Distill, 2020)を実装しました。

各ピクセルを 1 個の細胞とみなし、全細胞がまったく同じ小さなニューラルネット(学習パラメータは約 8,300 個) を共有します。細胞は自分と近傍 3×3 の状態しか見られません。それでも、 1 個のシード細胞から画像全体が立ち上がり、しかも一部を削っても再生します。 中央集権的な設計図はどこにもなく、修復のルールは局所的な相互作用の中に 分散して埋め込まれています。

再生能力は自動では手に入りません。学習中にわざと形を壊し、そこから戻す 経験を積ませて初めて身につきます(論文の regenerating レジーム)。 外から破壊を加える今回の用途では、これが必須でした。

## どうやってブラウザで動かしているか

学習は Python(PyTorch)で行い、ブラウザでは推論だけを回しています。 更新則は「固定の 3×3 知覚 → 1×1 畳み込み 2 層 → 確率的な発火 → 生存判定」 だけの軽い計算なので、重い ML ランタイムは要りません。

そこで、学習済みの重み(約 33KB のフラットな f32 バイナリ)だけを書き出し、 更新則そのものは Rust を WebAssembly にコンパイルして移植しました。 ブラウザは重みを読み込み、毎フレーム canvas に描いています。 この構成は、同じサイトの背景で動いている Gray-Scott 反応拡散(これも Rust/wasm)と揃えてあります。デモ自体は、 wasm のビルドをこのサイトのビルドから切り離すために別の Cloudflare Pages プロジェクト(SolidJS)として公開しています。