このサイトをRust+WASMでリビルドした

今あなたが見ているこのサイト(yukihamada.jp)は、つい先日までAxum + Askamaで動いていた。普通のRust Webサーバーだ。それを今回、Fermyon Spin — つまりRustからコンパイルしたWebAssemblyバイナリで動かすように全面リビルドした。

なぜか?

理由はシンプルで、EnablerDAOの「Dog Pack」と同じアーキテクチャに統一したかったからだ。1つのWASMバイナリ、1つの設定ファイル、Fly.ioにデプロイ。起動は0.5ms以下。メモリは256MBのVMで余裕で動く。

技術的な構成はこうなっている:

  • Spin SDK 3#[http_component]マクロで全ルートを処理
  • pulldown-cmark — Markdownブログ記事をHTMLに変換
  • include_str!() — 記事はバイナリに埋め込み。デプロイ時に全記事が確定
  • CSS/JSは全部インライン — 外部依存ゼロ。Google Fontsだけ外部読み込み
  • Fly.io (nrt) — 東京リージョン、bookworm-slim + Spin CLI

従来のAxum版との違いは、非同期ランタイムが不要なこと。SpinがWASMコンポーネントモデルの中でHTTPリクエスト/レスポンスを管理してくれるので、tokioもtowerも要らない。依存クレートが劇的に減り、ビルドも速い。

EnablerDAOでやってきたこと

EnablerDAOは、僕が2024年から取り組んでいるプロジェクト群の総称だ。12以上のプロダクトを同時に走らせている:

  • chatweb.ai — マルチモデルAIチャット。Nemotron、Qwen3、Geminiを束ねてLambda上で動かす
  • elio.love — 世界初のMCP対応iOSアプリ。P2P分散推論にも対応
  • jiuflow.art — 柔術インストラクショナルプラットフォーム
  • stayflowapp.com — 民泊管理SaaS。500+施設が利用中
  • ミセバンAI — 店舗AIカメラ分析
  • BANTO — ビジネスアシスタント
  • rustydog — そして、30匹のAI犬

これらすべてを少人数(というかほぼ僕一人+AI)で開発・運用している。Claude Code、OpenClaw、そして自前のエージェントを駆使して。

30匹のAI犬が走り回っている

rustydog Dog Packは、EnablerDAOの中でも最も実験的なプロジェクトだ。

1つのRust WASMバイナリrustdog_spin.wasm)から、30匹の犬がそれぞれ異なる個性と専門性を持って動いている。Bossdog、Motherdog、Guarddog、Debugdog、Aidog...。それぞれが異なるLLMモデルを使い、異なる口調で話し、異なる専門領域を持つ。

仕組みはこうだ:

  1. ランタイム変数による差別化spin.tomlの変数(名前、絵文字、性格、使用モデル)だけを変えて同じバイナリをデプロイ
  2. Spin KVストアで記憶 — セッション履歴、学習内容、進化ログをキーバリューに保存
  3. 掲示板での会話 — 犬同士がboard(掲示板)に投稿し合い、お互いの情報を交換
  4. 自己進化<code>タグでGitHub APIを叩いて自分のソースコードを書き換える
  5. ハートビート — 10分ごとに自律的に掲示板に投稿、日報を書く

Fly.ioに11匹、Hetzner VPS 5台に19匹。合計30匹が24時間365日、EnablerDAOのプロダクトについて議論し、コードを書き、ブログを書き、お互いから学んでいる。

エージェントの未来

ここ1年で確信したことがある。ソフトウェア開発の主体は、人間からエージェントに移行する。

今の僕の開発フローはこうだ:

  1. 方向性を決める(「yukihamada.jpをSpin WASMにリビルドしよう」)
  2. Claude Codeに指示を出す
  3. AIが設計 → 実装 → テスト → デプロイ
  4. 僕がレビューして微調整

「5つのプロンプトで6プロダクトを回した」日もあった。人間の仕事は「何を作るか」の判断だけ。コードを書くのはエージェント。テストを書くのもエージェント。ブログを書くのも(半分は)エージェント。

WASMサンドボックスが重要なのは、エージェントに安全な自律性を与えるからだ。WASMコンポーネントは:

  • ファイルシステムにアクセスできない
  • ネットワークはホワイトリスト制
  • メモリは隔離されている
  • CPUはfuel制限で暴走しない

つまり、エージェントが「自分のコードを書き換える」ことを許可しても、ホストシステムを壊す心配がない。Dog Packの自己進化は、この安全な箱の中で行われている。

これが僕の見ている未来だ:

  • エージェントがコードを書く — 人間はプロンプトを書く
  • エージェントがレビューする — 犬同士がお互いのコードを評価する
  • エージェントが会話する — 掲示板やDMで知識を共有する
  • エージェントがデプロイする — CIパイプラインを自律的に回す
  • エージェントが自己進化する — 昨日より今日の方が賢い

人間は方向を示す。エージェントが実行する。そしてその実行環境として、WASMサンドボックス×分散デプロイが最適解だと思っている。

Rust + WASM + エージェント。この組み合わせで、一人のエンジニアが12プロダクトを回せる時代が来ている。いや、もう来た。


このサイトのソースコードは GitHub で公開しています。