質問を、押して動く機械の図にするClaude Code のスキル anatomy を試す
「空気入れは、どうやってタイヤに空気を入れるの?」。この問いに、文章ではなく押せる空気入れで答える図があります。ボタンを押すとハンドルが下がり、弁が開き、メーターの針が上がる。動きも数字も、同じ小さな計算から出ています。この頁では、その図を作る Claude Code のスキル anatomy を手元で動かした手順と、作った図2枚をそのまま置きます。
元になった作品と作者
・きっかけのポスト:Ryan(@wheresryan22、2026年10月17日)。子ども向けの試作 “How does a pump fill a tyre?” の動画で、仕組みをわかる最小の形を、手で触れる楽しさを残したまま探っている、という内容です。
・スキル本体:github.com/wheresryan22/anatomy(作者 Ryan、MIT License)。この頁の作業は commit 1482e84(2026-10-18)で行いました。
・下の2枚の図は、この頁のために anatomy の kit を使って作ったものです。kit のコードを含むので、各図のファイルの先頭に MIT License の著作権表示と許諾文をそのまま入れています。
このスキルの考え方:物そのものが説明になる
anatomy の SKILL.md は、箱と矢印とラベルで図を作らないことを最初に求めます。説明したい考えと動きが一対一に対応する、本物らしい機械を一つ考え、その機械を小さな部品の積み重ねで描く。読む人は機械に見覚えがあるから、仕組みがわかる、という考え方です。ねじ、継ぎ目、目盛り、ばね、ケーブルとその端子まで描き込み、等角図(アイソメトリック)で、4段の陰影と正しい重なり順で仕上げます。
もう一つの柱は「模型が先」です。図に出る数字・動き・説明文は、すべて一つの小さな計算の部品(model.mjs)から出す。見た目の調整より先に、実際の寸法や関係式を集めます。下の2枚もこの順で作りました。
作例1 空気入れ:7回おすと「かたい」
元のポストと同じ題材を、日本語・ひらがな中心で作り直したものです。「⬇ おす」「⬆ ひきあげる」で1回ずつ、「▶ みせて」で続けて動きます。右下の数字はタイヤの圧力(大気圧からの差)です。
図1 空気入れ。ボタンかキーボードの ↓ ↑ で動かせます。別の画面で開く
数字はどこから来るか
空気の温度は変わらないとみなし、ボイルの法則(圧力 × 体積 = 一定)だけで計算します。前提の数字は次のとおりです。
| 前提 | 値 | 意味 |
|---|---|---|
| ひと押しで動く体積 | 0.4 L | 床置きポンプの筒(内径約3.2cm×50cm) |
| 押し切っても残る体積 | 0.02 L | 筒の底とホースに残る分 |
| タイヤの空気の体積 | 1.2 L | 子ども用自転車(16インチ)。ゴムは伸びないとみなす |
| 「かたい」の目安 | 220 kPa | 大気圧からの差で約2.2気圧 |
押すと筒の中の空気が縮み、筒の圧力がタイヤの圧力を超えたところで弁が開きます。そこから先は筒とタイヤが一つの容器になって、いっしょに縮みます。引き上げると弁は閉じ、筒には外の空気が入り直します。これを繰り返すと、次のようになります。
| 回 | 弁が開く位置 (押しはじめ=1、押し切り=0) | 押し終えたタイヤの圧力 |
|---|---|---|
| 1 | 1.00(すぐ開く) | 33 kPa |
| 2 | 0.74 | 66 kPa |
| 3 | 0.59 | 98 kPa |
| 4 | 0.48 | 130 kPa |
| 5 | 0.41 | 161 kPa |
| 6 | 0.36 | 191 kPa |
| 7 | 0.31 | 221 kPa(かたい) |
2回目からは、押しはじめてしばらくは弁が開きません。タイヤの中の圧力が上がるほど、開く位置は奥へずれていきます。7回で「かたい」に届く数は、元の動画で丸が7つ並ぶのと一致しました(動画の丸の数は見た目から数えたものです)。
作例2 空気圧機器:おす・つかむ・まわす
同じ「空気で動く」を、工場で部品を動かす機器に広げた図です。タンクの空気を電磁弁3つで切りかえ、おす(シリンダ)、つかむ(2本指のハンド)、まわす(羽根で回る回転台)を動かします。空気を抜くと、どれもばねで元に戻ります。
図2 空気圧機器。ボタンかキーボードの 1・2・3 で、それぞれの弁を切りかえます。別の画面で開く
力 = 圧力 × 面積
工場の空気は 500 kPa(0.5 MPa)とします。1 kPa の圧力が 1 mm² にかかると 0.001 N です。
| 動き | 空気が押す面 | 面積 | 500 kPa での力 | いっぱいに動く圧力 |
|---|---|---|---|---|
| おす | ピストン 内径20mm | 314 mm² | 157 N | 約300 kPa |
| つかむ | ピストン 内径12mm(指1本に1つ) | 113 mm² | 指1本 57 N | 約300 kPa |
| まわす | 羽根 半径5〜14mm×高さ12mm | 108 mm² | 54 N(0.51 N·m) | 約280 kPa |
「いっぱいに動く圧力」は、ばねの力(はじめの押しつけ+縮んだ分)とつり合う圧力です。弁を切りかえてから圧力が上がりきるまでの遅れも、模型の中で時間の式として決めてあり、図の動きはそれに従います。
初めて動かすまでの手順
手元で再現できる最小の流れです。Node.js 20.10 以上と、確認用に Chrome(または Chromium)が要ります。
- 元のポストを見る。何を目指した図か(子どもが触ってわかる、細部は残す)を先に頭に入れておくと、題材選びがぶれません。
- リポジトリを取ってくる。
スキルとして常に使うならgit clone https://github.com/wheresryan22/anatomy.git cd anatomy~/.claude/skills/に置きますが、試すだけなら clone した場所で十分です。ライセンスが MIT であることもここで確かめます。 - SKILL.md を読む。特に次の4つ。
- 大きさの見積り:部品40〜80の「Figure」、80〜150の「Hero」、それ以上の「Epic」。最初に名前を付けてから始める。
- 模型が先:本物の寸法・関係式を集め、数字と動きを一つの模型から出す。
- 部品リスト:形を描く前に、土台・骨組み・仕組み・操作部・主役に分けて40個以上書き出す。
- 確認:撮影して拡大して見る、線の端の検査を0件にする。
- 外への通信を確かめる。スクリプトを読むと、外のサービスに送るのは
scripts/publish.mjsだけで、作者のギャラリーに図を出したいと頼んだときに GitHub へ push してプルリクエストを作るものでした(SKILL.md と references/publish.md にも、頼まれたときだけと書かれています)。撮影や検査のcapture.mjs・drive.mjs・lines.mjsは、手元で起動した Chrome に127.0.0.1でつなぐだけです。 - いちばん小さい作例を読む。
examples/dial-indicator/(ダイヤルゲージ、全部で約300行)。build.mjsが kit で形を作り、1枚の HTML を書き出す、という流れがつかめます。node examples/dial-indicator/build.mjs # 暗い色の頁 node examples/dial-indicator/build.mjs --light # 明るい色の頁 - 自分の題材で
model.mjsとbuild.mjsを書く。Claude Code に「このスキルで、○○の仕組みを押して動く図にして」と頼むと、まず大きさと部品リストを出し、模型を書いてから形に進みます。模型は画面のことを何も知らない小さな関数の集まりにし、build.mjsとページ内のスクリプトの両方がそれを読むようにします(模型はどちらも60行ほどです)。 - 撮って、線を検査する。
node scripts/capture.mjs page.html --out shots/desk.png # パソコン幅 node scripts/capture.mjs page.html --out shots/phone.png --width 390 # スマホ幅 node scripts/lines.mjs page.html --out shots/lines.png # 線の端の検査lines.mjsは、目盛りや継ぎ目の線が、輪郭・別の線・点のどれかで終わっているかを調べ、宙に浮いた端を丸で囲んだ画像を出します。下は空気入れで回した結果です。
撮影・検査はどれも手元の Chrome で動くので、図そのものを外に送ることはありません。
つまずいたところ
- ファイルを直接開く(file://)と、プレビューでスクリプトが動かない
- 手元で小さなサーバを立てて
http://localhost:…で開くと動きます。撮影用のcapture.mjsは、ファイルの指定でも URL の指定でも使えます。 - ページ側のスクリプトで
pathOfを作り直すと、名前がぶつかる - kit はページにも埋め込まれ、その中に同じ名前の関数があります。自分の補助関数には別の名前を付けます。
coil()(ばねの巻き)は、文字列を返す場合がある- 点の並びとして扱う前に、戻り値の形を確かめてから使います。
slabOfに渡す平面の形にr(角の丸み)が無いと、座標が NaN になる- 角を丸めない板でも
r: 0を書きます。形が出ないときは、まずここを見ます。
やってみてわかったこと
- 文章で「2回目からは途中で弁が開く」と書くより、押して針が止まる位置を見るほうが早く伝わります。数字が模型から出ているので、図をいじっても説明とずれません。
- 題材を変えるときに直すのは、主に模型と部品リストです。空気入れから空気圧機器へは「空気で押す」という同じ考えを広げただけで、作り方の流れはそのまま使えました。
- 図の品質の基準(拡大して見る、線の端を0件に)がスキルの中に書かれているので、AI に任せた部分の確かめ方もはっきりしています。
この頁の図2枚は、anatomy(Ryan 作、MIT License)の kit を使って作成しました。元のポストとリポジトリの作者に感謝します。