Claude Code でコードをいじっていたら、気づけば 4 時間ぶっ通しで椅子に張り付いていました。肩はカチカチ、手首もじわじわ痛い。そういえば先日、友人から「最近リングフィットやってる?」と聞かれて思い出したんです。あの赤と黒のプラスチックの輪っかは、押し入れの奥で静かにホコリをかぶっている。最後に触ったのは半年以上前でした。
そんなタイミングで、GitHub で vibe-ring という小さなツールを見つけました。Switch のリングコンを Mac の入力デバイスとして使えるようにしてくれるものです。
vibe-ring とは何か、どう使うか
vibe-ring は、Switch の Joy-Con (R) とリングコンを組み合わせて Mac のキーボードとして使えるようにする TypeScript 製の小さなツール。GitHub で公開されています。
割り当てられている操作は 2 つだけです:
- リングを握り込む → Fn キーを長押しして macOS の音声入力を起動(typeless などのサードパーティ音声入力にも効きます)
- リングを外側に引っ張る → Enter を押して、喋った内容を送信
最初に見たときは「また思いつきのオモチャかな」と思いました。でもキーマッピングを数秒じっと眺めていると、作者の設計がちゃんと練られているのが見えてきます。Vibe Coding という言葉が最近広まってきていますが、その背景には「AI へのプロンプトを手打ちではなく音声で伝える人が増えている」という流れがあります。一番使う「音声入力を開始」と「送信」の 2 つをリングコンに割り当てたということは——コードを書きながら運動不足も解消できる、ということ。在宅ワーク時代の新しい流儀になるかもしれません。
試すのも難しくありません。用意するものは以下:
- macOS(今のところ Mac 専用)
- Node 18 以上
- pnpm
- Joy-Con (R) ひとつ
- リングコン ひとつ
Joy-Con を Bluetooth で Mac にペアリングし、ターミナルにアクセシビリティ権限を与えてから pnpm start。詳しい手順は README に書かれています。
リポジトリ: https://github.com/wong2/vibe-ring
どう作られているか
技術スタックは TypeScript が 9 割、残りが少しの Swift。macOS 専用です。
Joy-Con のデータ取得に node-hid、キーボード入力のエミュレートに macOS の CGEvent API を使っています。コード量は多くなく、処理もシンプル。ひとつ気が利いていると感じたのは、500 ミリ秒を超える引き伸ばしイベントを作者が意図的に捨てている点。大きく動かしたときに Enter が連打される誤作動を防いでいます。
macOS 限定なのは Linux や Windows のユーザーには残念なところです。ただ HID を読み取る部分は理論上どこでも動かせるはず。CGEvent の部分を各プラットフォームの等価 API に置き換えるだけの話です。中身が気になる人は直接ソースを読むのが早いでしょう。数百行しかありません。
放置されがちな入力デバイスたち
vibe-ring で本当にワクワクしたのは、実はリングコンそのものではありません。あることに気づかされたからです——家には「センサーを積んでいて、PC とも通信できるのに、一つか二つのゲームにしか使われていない」デバイスがゴロゴロしている。本来の商品コンセプトに縛られて、ポテンシャルが眠ったままになっている。
ざっと思いつくだけでも:
-
ダンスマット。上下左右の 4 方向をそれぞれ
git pull/git push/git commit/git statusに割り当てて、立ったままコードレビュー。ミーティング前に軽く踏んでウォームアップもできます。 - マイク付きスマートフィットネスバイク。ペダルを踏む速度を AI が考えている間の「心拍リズム」に見立てれば、コード生成を待つ退屈な時間が有酸素運動に変わる。
- ギターヒーローのおもちゃギター。6 本の弦とストラムバーは、ショートカットキーパネルそのもの。コードスニペットのトリガーにしたら面白そうです。
- Joy-Con のほかの使い方。振る = Undo、本体を傾ける = ページスクロール。片手で日常の操作がひと通りこなせます。
もちろん全部、頭の中の妄想です。実際にやるとなれば、バッテリーの持ち、HID プロトコル、遅延、ペアリングの安定性——どれも地道な調整が要ります。でも vibe-ring が教えてくれるのは、作者が数百行の TypeScript と node-hid だけで「ゲーム専用」のデバイスを「日常の道具」に変えてしまった、ということ。ハードルは思っているほど高くないはずです。
手元に眠っているデバイスはありますか
自分で手を動かすのもいいのですが、それ以上に気になるのは——みなさんの手元にも「もうホコリをかぶっているけど、ハックすれば化けそうなデバイス」があったりしますか?そこに何のコマンドを割り当ててみたいか、コメントで聞かせてもらえると嬉しいです。
リポジトリをもう一度: https://github.com/wong2/vibe-ring