← Productsに戻る

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

2026-04-15

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

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 で運動 + 開発の融合を体験してみてください。