自動演奏ピアノは、音を出す装置ではなく鍵盤を押す装置だった

自動演奏ピアノは、音を出す装置ではなく鍵盤を押す装置だった

自動演奏ピアノは、鍵盤が勝手に沈みます。

中を紙のロールが流れていて、そこに開いた穴の通りに鍵が押されます。外から見ると、誰も座っていない椅子の前で鍵盤だけが上下している。音は、そのピアノが普通に鳴らした音です。録音を再生しているのではありません。

だから、人が座って弾いているあいだにロールが動き出すと、指とぶつかります。同じ鍵盤を二つのものが押しているので、どちらが押したのか分からない音が混ざります。

表示するだけの装置と、実際に押す装置は、見た目が似ていても扱いが違います。押す装置は、頼まれてから動くべきものです。

一日に三十回、持ち替える

ターミナルで動く AI が選択肢を出して止まりました。

この2つのどちらで進めますか?
❯ 1. 既存の関数を直す
  2. 新しい関数を作って差し替える

矢印キーで選んで Enter。慣れれば何でもない操作です。

ただ、九体動かしていると、これが一日に三十回起きます。そのたびにマウスからキーボードに持ち替えます。ボタンで押せたら、と思うところです。

MulmoTerminal は AI を何枚ものマスに並べて見張るための画面で、一マスが一体の AI にあたります。無料で、オープンソースとして公開されています。

そして、その設定は既定で無効になっている

用意はされています。拡大したマスの横に、選択肢がボタンとして出る設定です。

ただし既定では無効です。そしてその理由が、この道具の考え方をよく表しています。

このパネルから答えると、そのダイアログに対して矢印キーと Enter を代わりに押します。キーボードを操作するパネルが既定で現れるべきではない、という判断です。

このボタンは、表示するだけのものではありません。ターミナルに打鍵します。自動演奏ピアノのロールと同じ位置にあるものです。

スマホでは逆になっている

面白いのは、同じ機能がスマホでは常に有効なことです。

理由が明快で、この設定があるのはパネルが自分が座っているターミナルに入力するからで、スマホではそのキーボードの前に誰も居ないからです。

同じ代わりに打鍵する機能が、打鍵の先に人が座っているかどうかで判断を変えています。

パソコンの前にいるときは、自分のキーボードと競合します。スマホから操作しているときは、そもそも競合する相手がいません。誰も座っていない椅子の前で鍵盤が動くのは、問題になりません。

元の画面は消えない

有効にしても、ターミナルに出ている選択肢は消えません。置き換わりもしません。

同じ質問に答えるもう一つの経路なので、先に使ったほうが勝ちます。キーボード派の人は、パネルの存在に気づかないまま使えます。

置き換えない作りなのは、たぶんこれが理由です。置き換えると、パネルを閉じたら答えられなくなったが起きます。

再読み込みしても質問が消えない

ここが一番よくできているところだと思います。

規則が、質問が来たら開くではありません。拡大しているマスは、そのマスが止まっている質問を出す、です。

この言い換えで何が変わるか。あとからそのマスを拡大しても開きます。再読み込みや接続が切れたあとの復帰でも開きます。ページを再読み込みしても質問を失いません。

イベントが来たら開く作りだと、そのイベントを受け取っていないブラウザは何も知りません。再読み込みで消えます。タブを間違えて閉じたときに、AI が止まっている質問が分からなくなるのは怖いところです。

状態として持っているので、いつ見に行っても正しいものが出ます。専用の開くボタンはありません。押すものが無いからです。

閉じ方が二通りあって、記憶されるのは片方だけ

これも細かいが効きます。

質問そのものが終わったときは、答えるものが無くなったので消えます。ターミナルで答えた、パネルで答えた、Esc で取り消した、のどれかです。記憶されません。

パネルの ✕ で閉じたときは、ターミナルで答えるという意思表示として扱われます。そのダイアログについて記憶されるので、マスに戻っても開き直しません。

✕ を押したのに戻るたびに開き直すと、消したのに出てくるという一番いやな体験になります。

どちらの場合も、そのマスの次の質問は普通に開きます。記憶されるのは、そのダイアログについてだけです。

無効のときは、隠れているのではない

これは知っておく価値があります。

この設定が止めるのは質問の提示です。無効のときは質問がブラウザに送られていないので、パネルは隠れているのではなく、出すものが無い状態になります。

有効にしていないのに質問文がブラウザに流れていることはありません。

それでも、閉じただけは送られる

一つ例外があって、その理由が具体的です。閉じたの通知は、無効でも送られます。

質問の途中でスイッチを切ると、既にボタンを出しているパネルが、ダイアログはもう終わったと知る手段を失います。すると押した瞬間に、下のプロンプトへ矢印キーと Enter が入ってしまいます。

有効にしてパネルが出て、答える前に設定を切る。終わったという知らせが来なくなるので、パネルはボタンを出したままになります。それを押すと、もう選択肢が無い画面に矢印キーと Enter が送られて、それが次に打ち込むはずだったものへの入力になります。

演奏が終わったあともロールが動き続けているのと同じ形です。

提示されなかった質問についての閉じたは何もしませんし、質問文も含まないので、無効のままの人には何のコストもありません。

再起動も再読み込みも要らない

この設定は、他と違って反映が軽いです。質問が来るたびにディスクから読むので、書き換えたら次の質問から効きます。

質問は頻繁に起きるものではないので、毎回読んでも負荷になりません。一番手間のかからない方式を選べる、という判断です。

Claude の質問だけ

選択肢は Claude Code 自身の仕組みから届くので、他の AI や素のターミナルのマスでは開きません。

このコマンドを実行していいですかのような確認も対象外です。あれは番号を選ぶメニューなので、種類が違います。

使ってみる

MulmoTerminal は、次の一行で立ち上がります。ターミナル(Windows なら PowerShell、Mac ならターミナル)を開いて、そのまま貼り付けます。

npx mulmoterminal@latest

ブラウザが開いて http://localhost:34567 が表示されれば成功です。インストールという作業はなく、合わなければ閉じるだけで終わります。止めるときは、打ったターミナルで Ctrl + C を押します。

動かない場合、足りないものは次の二つのどちらかです。

確かめ方 無ければ
Node.js 22.12 以上 node -v nodejs.org/ja/download の LTS。入れたらターミナルを閉じて開き直す
Claude Code claude --version macOS は curl -fsSL https://claude.ai/install.sh | bash、Windows は irm https://claude.ai/install.ps1 | iex。そのあと claude でログイン

Claude Code は、AI をターミナルから使うためのコマンドです。使うには Claude の有料プラン(Pro / Max / Team / Enterprise)か API のアカウントが必要で、無料プランには含まれていません。MulmoTerminal 自体は無料で、AI の使用量はその契約から引かれます。

書く場所は ~/.mulmoterminal/config.json です。無ければ作ります。設定画面の Terminal keys のチェックでも変えられます。

{
  "questionPaneEnabled": true
}

再起動もタブの再読み込みも要りません。次に AI が質問した時点から効きます。

マスを拡大した状態で、AI に選択肢を出させます。横にボタンのパネルが開けば成功です。

やめるときは false に戻します。すぐ効きます。質問がブラウザに送られなくなるだけで、ターミナル側では今までどおり答えられます。

まとめ

自動演奏ピアノは音を再生しているのではなく、実際に鍵盤を押しています。だから人が弾いているあいだに動き出すと、指とぶつかります。

選択肢をボタンで答えるパネルも、表示するだけのものではなくターミナルに打鍵します。だから既定では無効で、頼んでから現れます。

スマホでは常に有効なのは、打鍵の先に誰も座っていないからです。同じ機能が、キーボードの前に人がいるかどうかで判断を変えています。

この記事をシェア

関連記事

記事一覧に戻る