Simon Willison の記事を朝イチで読んで、すぐ手を動かしたくなった。
Moebius という 0.2B の image inpainting モデルを、PyTorch も CUDA もなしにブラウザで動かしてしまうやつだ。
モデルの重みを Hugging Face から git-lfs で取ってきて、ONNX Runtime Web の WebGPU バックエンドに乗せるという流れで、最終的に simonw.github.io/moebius-web/ でデモが動いている。
試してみたけど、ちゃんとマスクした領域が自然に補完されててえぐい。
記事で一番刺さったのが、Claude Code を terminal で動かしながら別の作業を並列で進めていたという部分だ。
Willison は Codex Desktop で Datasette の大きめの refactor を回しつつ、待ち時間の 5〜10 分で Claude Code を別 window に立ち上げて Moebius の移植を進めていた。
この「エージェントが難しい問題を解いてる間、人間は暇になる」という感覚、最近自分も週 1 くらいで体験している。
ただ、自分はまだ「エージェントが何をやっているか分からなくなる前にコードを読みに行く」を繰り返してて、並列作業できるほど信頼を置けていない。
プロンプトの作り方も参考になった。
いきなりコードを書かせるんじゃなくて、最初に Claude.ai でリポジトリを clone させてフィージビリティを調べさせている。
「muse on the feasibility of porting it to Transformers.js」という聞き方で、具体的なゴールを与えずに考えさせるのが Willison のやり方だ。
その output を research.md に保存して、次のエージェントセッションの読み物として渡している。
これ、自分の個人開発でそのまま使えそうだと思った。
今個人開発で触っているのが、ブラウザ上で動く軽量な画像処理ツールだ。
Python に依存させたくなくて WebAssembly で処理を書いていたんだけど、GPU を使う選択肢として WebGPU を本気で調べ始めたのがちょうど先週だった。
この記事を読んで、ONNX Runtime Web の WebGPU backend が現時点でも十分に実用的なことが分かった。
自分が「とりあえず動かしてみた」で詰まっていたのが、モデルを ONNX に変換する部分と、ブラウザ側でのテンソル形状の扱いだ。
Moebius の移植では以下のフローで進めたらしい。
ここで Claude が ONNX Runtime Web を提案したのも神だと思っていて、Transformers.js をそのまま使うより一層下のレイヤーで扱える分、モデル構造に対する自由度が高い。
Transformers.js は対応アーキテクチャが限定されているので、独自構造のモデルを動かすには ONNX RT Web に直接つないだほうがハマりにくい。
もう一個気になったのが notes.md と plan.md を作らせるやり方だ。
エージェントに「作業中に気づいたことを notes.md に書き続けろ」と指示することで、セッションをまたいだときに次の自分 (or 次のエージェント) がコンテキストを回復しやすくなる。
自分は今まで todo コメントを直接コードに書いていたけど、専用の markdown ファイルに分けるほうが Claude に読ませるには都合がいい。
これはさっそく今日の個人開発から取り入れた。
結局この記事で一番学んだのは、エージェントに渡す事前情報の整え方だ。
いきなり「これ移植して」じゃなくて、調査フェーズ → research.md 保存 → それを読ませた上で実装指示という段取りを踏んでいる。
これ、チームで PR レビューを依頼するときの段取りと同じ構造だと気づいた。
コンテキストが不足した状態でレビューを投げても質問が返ってくるだけで時間が溶ける。エージェントも同じだ。
彼女に「また深夜まで何してるの」と言われながらデモを動かして、「ブラウザだけで画像の人物消せるよ」と見せたら「えっ神じゃん」と言っていた。
0.2B モデルがブラウザで推論できる時代になったというのは、インフラもサーバーも持てない個人開発者にとって選択肢が一個増えたということだ。
自分が次にやるのは、自分のプロジェクトで同じ ONNX Runtime Web + WebGPU の構成を試して、どこでハマるかを記録することだ。
Willison が /tmp で試した感覚を、自分は feature branch でやる。
Moebius という 0.2B の image inpainting モデルを、PyTorch も CUDA もなしにブラウザで動かしてしまうやつだ。
モデルの重みを Hugging Face から git-lfs で取ってきて、ONNX Runtime Web の WebGPU バックエンドに乗せるという流れで、最終的に simonw.github.io/moebius-web/ でデモが動いている。
試してみたけど、ちゃんとマスクした領域が自然に補完されててえぐい。
Claude Code をエージェントとして動かす感覚
記事で一番刺さったのが、Claude Code を terminal で動かしながら別の作業を並列で進めていたという部分だ。
Willison は Codex Desktop で Datasette の大きめの refactor を回しつつ、待ち時間の 5〜10 分で Claude Code を別 window に立ち上げて Moebius の移植を進めていた。
この「エージェントが難しい問題を解いてる間、人間は暇になる」という感覚、最近自分も週 1 くらいで体験している。
ただ、自分はまだ「エージェントが何をやっているか分からなくなる前にコードを読みに行く」を繰り返してて、並列作業できるほど信頼を置けていない。
プロンプトの作り方も参考になった。
いきなりコードを書かせるんじゃなくて、最初に Claude.ai でリポジトリを clone させてフィージビリティを調べさせている。
「muse on the feasibility of porting it to Transformers.js」という聞き方で、具体的なゴールを与えずに考えさせるのが Willison のやり方だ。
その output を research.md に保存して、次のエージェントセッションの読み物として渡している。
これ、自分の個人開発でそのまま使えそうだと思った。
自分のコードに引きつけて考えると
今個人開発で触っているのが、ブラウザ上で動く軽量な画像処理ツールだ。
Python に依存させたくなくて WebAssembly で処理を書いていたんだけど、GPU を使う選択肢として WebGPU を本気で調べ始めたのがちょうど先週だった。
この記事を読んで、ONNX Runtime Web の WebGPU backend が現時点でも十分に実用的なことが分かった。
自分が「とりあえず動かしてみた」で詰まっていたのが、モデルを ONNX に変換する部分と、ブラウザ側でのテンソル形状の扱いだ。
Moebius の移植では以下のフローで進めたらしい。
# 重みの取得
GIT_LFS_SKIP_SMUDGE=0 git clone \
https://huggingface.co/hustvl/Moebius Moebius-weights
# ONNX 変換してから onnxruntime-web で読み込む流れ
# WebGPU backend に渡す前の shape 確認が肝ここで Claude が ONNX Runtime Web を提案したのも神だと思っていて、Transformers.js をそのまま使うより一層下のレイヤーで扱える分、モデル構造に対する自由度が高い。
Transformers.js は対応アーキテクチャが限定されているので、独自構造のモデルを動かすには ONNX RT Web に直接つないだほうがハマりにくい。
もう一個気になったのが notes.md と plan.md を作らせるやり方だ。
エージェントに「作業中に気づいたことを notes.md に書き続けろ」と指示することで、セッションをまたいだときに次の自分 (or 次のエージェント) がコンテキストを回復しやすくなる。
自分は今まで todo コメントを直接コードに書いていたけど、専用の markdown ファイルに分けるほうが Claude に読ませるには都合がいい。
これはさっそく今日の個人開発から取り入れた。
エージェントとの協調作業で今自分が変えようとしていること
結局この記事で一番学んだのは、エージェントに渡す事前情報の整え方だ。
いきなり「これ移植して」じゃなくて、調査フェーズ → research.md 保存 → それを読ませた上で実装指示という段取りを踏んでいる。
これ、チームで PR レビューを依頼するときの段取りと同じ構造だと気づいた。
コンテキストが不足した状態でレビューを投げても質問が返ってくるだけで時間が溶ける。エージェントも同じだ。
彼女に「また深夜まで何してるの」と言われながらデモを動かして、「ブラウザだけで画像の人物消せるよ」と見せたら「えっ神じゃん」と言っていた。
0.2B モデルがブラウザで推論できる時代になったというのは、インフラもサーバーも持てない個人開発者にとって選択肢が一個増えたということだ。
自分が次にやるのは、自分のプロジェクトで同じ ONNX Runtime Web + WebGPU の構成を試して、どこでハマるかを記録することだ。
Willison が /tmp で試した感覚を、自分は feature branch でやる。