既定値には、作った人が想像した使い方が入っている

既定値には、作った人が想像した使い方が入っている

新しく買った炊飯器には、炊き上がりのメロディが入っています。電子レンジは終わると鳴り、洗濯機も鳴ります。どれも工場を出るときに鳴る設定になっていて、鳴らしたくない人があとから切ります。

作った人が、鳴ったほうが親切だと考えたからです。台所で他のことをしている人には、たしかにそうです。夜中に使う人には、そうではありません。

既定値には、作った人が想像した使い方が入っています。想像が当たっていれば親切で、外れていれば、一つずつ切って回る作業になります。

だから、外れる確率が高いと分かっているときは、何も入れないという選択があります。

既定値が一つもない

ターミナルで動く AI を何体も並べて動かすとき、九枚のマスを順に見て回ることになります。MulmoTerminal はそのための画面で、一マスが一体の AI にあたります。無料で、オープンソースとして公開されています。

マウスでマスをクリックして、次のマスをクリックして、また次。キーボードでできたら速いのにと思います。

設定を見ると、キーの割り当ては書けます。ただし既定値が一つもありません。

Cmd+T で新しいタブ、Cmd+W で閉じる。これが無いアプリのほうが珍しいので、なぜ設定しないと使えないのかと思います。

割り当てたキーは、中のプログラムから奪われる

理由があって、それはターミナルを持つアプリ特有のものです。

ターミナルの中では、あらゆるキーに意味があります。less と vim は PageDown を使い、シェルは Ctrl+A や Ctrl+E や Ctrl+K を使い、エディタは Ctrl+X や Ctrl+S を使います。AI 自身もページ送りに使います。

アプリ側がキーを取ると、必ず何かが壊れます。

普通のアプリなら、Cmd+T は誰も使っていないと仮定できます。ターミナルを持つアプリでは、その仮定が成り立ちません。

何が中で動いているかを知っているのは、使っている人だけです。だから既定値を置かず、書いた人だけが不便になる形にしています。炊飯器のメロディを最初から切って出荷するのに近い判断です。

逃げ道が二つ用意されている

奪われると言っても、完全に失うわけではありません。

一つは、修飾キーを完全一致で判定するところです。修飾なしの PageDown を割り当てても、Shift+PageDown は奪われません。ターミナルのスクロールはそちらで遡れます。当たり前の判定ですが、これがあるおかげで、割り当てたら完全に使えなくなるを避けられています。

もう一つは、日本語入力の変換中は常に素通しするところです。これが無いと、PageDown を割り当てた瞬間に変換候補をめくれなくなります。日本語で AI に指示を出すなら、必ず気になるところです。

書き方

{
  "keymap": {
    "zoom-next": "PageDown",
    "zoom-prev": "PageUp"
  }
}

この設定が無ければ、機能ごと無効です。

拡大用と格子用は、別のキーにする

代表的な間違いがここです。動かすものが二種類あって、効く場面が違います。

拡大対象を動かすものは、拡大しているときだけ効きます。カーソルを動かすものは、格子を見ているときだけ効きます。後者は、選んでいるマスが浮き上がって、端まで行くとページも切り替わります。

この二つには別々のキーを割り当てます。一つのキーは一つの動作にしか解決されないので、両方を割り当てると片方が効きません。どちらが負けたかは、サーバーの起動時に警告として出ます。

黙って片方を捨てるのではなく起動時に言うので、割り当てたのに効かないで悩む時間が消えます。

端では止まる

もう一つ、仕様として知っておく点があります。端では止まって、巻き戻りません。

先頭での前へと、末尾での次へは、仕様として何も起きません。ターミナルが二つだけだと、押した回数の約半分が無反応になります。

巻き戻らないのは、環状に回るといま何枚目にいるかが分からなくなるからです。二枚しかないときは不便に見えますが、明記されているので不具合として追わなくて済みます。

Mac のファンクションキーに注意

Mac のノートには、独立した Page Up と Page Down がありません。Fn と上下の矢印を使います。

二打にすれば、奪う範囲が狭くなる

続けて二つ押す形も書けます。これが実用的です。

一打のキーは貴重です。ターミナルから奪うことになるので。二打にすれば、最初の一打だけを奪う形にできます。最初の一打にめったに使わないキーを選べば、実質的にほとんど奪いません。

そもそも割り当てできない組み合わせがある

ブラウザが先に取ってしまうキーもあります。設定のページに一覧があります。これも、書いてみて効かないで悩まないための情報です。

反映にはアプリの再起動が必要

この設定はパソコン全体のものなので、アプリの起動時に一度だけ読まれます。手で書いたら再起動して、タブを再読み込みします。

使ってみる

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 です。無ければ作ります。

{
  "keymap": {
    "zoom-next": "PageDown",
    "zoom-prev": "PageUp"
  }
}

この設定は起動時に一度だけ読まれるので、アプリを再起動してタブを再読み込みします。

マスを拡大して PageDown を押し、拡大している相手が切り替われば成功です。起動時に警告が出ていたら、同じキーを二つの動作に割り当てています。

やめるときは、keymap ごと消せば何も割り当てられていない状態に戻ります。既定値はありません。

まとめ

既定値には、作った人が想像した使い方が入っています。炊飯器のメロディは台所で他のことをしている人には親切で、夜中に使う人には邪魔です。

ターミナルを持つアプリでキーを取ると、中で動いているプログラムから必ず何かを奪います。何が動いているかを知っているのは使っている人だけなので、MulmoTerminal は既定値を置いていません。

割り当てても Shift を足したものと日本語入力の変換中は素通しされるので、完全に失うわけではありません。二打にすれば、奪う範囲をさらに狭くできます。

この記事をシェア

関連記事

記事一覧に戻る