Squat Code — Claude Codeに「スクワットしないとコードを書かせない」CLIツール
2026-04-15

Squat Code とは
Squat Code は、AIコーディングツール Claude Code と連携して、ツール実行のたびにスクワットを要求する 開発者向けのジョークCLIです。アイデアは至ってシンプル。
「Claude Code が便利すぎて全然動かない自分を、運動させる仕組みにしてしまおう。」
ブラウザのカメラ映像を MediaPipe Pose で解析し、規定回数のスクワットを完了するまで Claude Code のツール実行をブロック。AIに作業させたいなら、まず人間が動け、というわけです。
iOS アプリではなく Node.js + ブラウザの開発者ツール ですが、最も「FuyanTechらしい」遊び心が詰まったプロジェクトです。
こだわったポイント
1. Claude Code Hook で「ツール実行をインターセプト」
Claude Code には PreToolUse Hook という拡張ポイントがあります。Squat Code はこのフックに登録され、Claude Code が Write / Edit / Bash などを実行しようとした瞬間に呼び出されます。
スクワット未完了なら exit code 2 を返してツール実行をブロック、完了済みなら通過。AIに対して物理的なゲートを設ける という、なかなか珍しい発想のフックです。
2. MediaPipe Pose によるブラウザ姿勢検知
サーバー(Express.js)が起動すると、ブラウザが立ち上がりカメラ映像を表示。MediaPipe Pose をフロントエンドで動かして、両膝の角度をリアルタイムで判定します。
- 両膝 160°(立ち) → 140°(しゃがみ) の往復で 1 回カウント
- 連打防止のため、最小間隔は 500ms
膝の角度はカメラ映像の右上にライブ表示。骨格検知の様子が Canvas にミラー描画されるので、自分のフォームも確認しながら運動できます。
3. プライバシー配慮 — 映像は外部送信ゼロ
カメラ映像と姿勢解析は すべてブラウザ内で完結。サーバーに送られるのはカウント数だけです。「家のカメラを開発ツールに繋ぐ」ことへの心理的抵抗を最小化しました。
4. 設定ファイルで挙動をカスタマイズ
.squatcode.json で挙動を細かく制御できます。
requiredSquats— 必要回数(デフォルト3回)cooldownSeconds— 完了の有効期間(デフォルト300秒。0なら毎回要求)matchTools— 対象ツール(Write/Edit/Bash等を絞れる)
「全プロジェクトに有効」「特定プロジェクトだけ」「特定ツールだけ」と、好みの強度で運動を仕込めます。
5. 完了演出は画像+音
スクワット完了時には、画像と音(効果音+拍手)で達成感を演出。運動アプリとしての気持ちよさ も忘れていません。
開発プロセス
| 工程 | 使用ツール |
|---|---|
| 企画(ジョーク発想) | 自分の運動不足から |
| サーバー実装 | Node.js + Express.js |
| 姿勢検知 | MediaPipe Pose(JavaScript) |
| Claude Code Hook の調査 | 公式ドキュメント + Claude Code 自体 |
ローカルサーバーが立ち上がり、Claude Code から HTTP API でカウント状況を問い合わせる構造です。インメモリ状態(count / completedAt / lastCountedAt)のみで管理し、再起動でリセット。シンプルさを徹底 しました。
振り返り
- AI×物理行動 の組み合わせは、まだ未開拓のニッチで遊びがいがある
- ジョークアプリでも、実装は本気 で作るほうが面白くなる
- Claude Code の Hook システムは、こうしたメタな仕掛けを作るのに最適
- 開発者の運動不足という、世界共通の課題に向けたツール
座りすぎが気になる開発者の方、Claude Code のヘビーユーザーの方は、ぜひ Squat Code で運動 + 開発の融合を体験してみてください。