引き継ぎのノートには、意味の分からない一行が残っています。
第三水曜は先に電話、とだけ書いてある。誰に電話するのか、なぜ第三水曜なのかは書いていません。書いた人はもういません。
消したくなります。自分が引き継いだ範囲の仕事に、その一行に当たるものが見つからないからです。それでも消さないのは、自分が分からないだけかもしれないからです。半年後に第三水曜が来て、何かが起きてから意味が分かることもあります。
読めない一行を残しておく判断は、ノートを汚くします。そのかわり、失われる情報がありません。
水曜日に、元に戻っている
先週、設定ファイルに一行足しました。ターミナルのフォントを日本語が崩れないものに変える設定です。
水曜日、なぜか元に戻っています。ファイルを開くと、その行がありません。書き忘れたのか、書いたつもりだったのか、自分でも分からない。
MulmoTerminal はターミナルで動く AI を何枚ものマスに並べて見張るための画面で、設定はファイル一枚に書きます。無料で、オープンソースとして公開されています。
この事故が起きる仕組み
設定ファイルを読み書きするアプリには、こういう作りが普通にあります。読むときに自分が知らない項目は捨てて、保存するときに自分が知っている項目だけ書く。
一つの版だけ使っているなら、何も起きません。問題は版が混ざったときです。
新しい版で足した項目は、古い版から見ると知らない項目です。古い版が何かを保存した瞬間に、その行が消えます。そして消えたことは、どこにも表示されません。
引き継いだ人が、読めない一行を消したのと同じことが起きています。
毎回いちばん新しい版で動かす道具では起きやすい
MulmoTerminal は npx mulmoterminal@latest で起動します。これは毎回いちばん新しい版を取ってきて動かすという意味で、版を固定していません。
そのうえ、こういう場面が普通にあります。別のポートで二つ同時に動かしている。新しい版で不具合が出たので前の版に戻した。一日のうちに版が上がった。
このどれでも、同じ設定ファイルが違う版から読み書きされます。普通のアプリより、この状況が起きやすい作りになっています。
だから、知らない項目は書き戻す
MulmoTerminal は、自分が知らない項目を捨てません。知らないまま、そのまま書き戻します。
結果として、新しい版で設定したことが古い版を使ったあとも残ります。二つの版を並べて動かしても消えません。しばらく前の版に戻しても、戻ってきたときに設定は残っています。
冒頭のフォントの行は、この作りのおかげで消えません。
同じ理由で、タイプミスも残る
ここが面白い帰結です。
copyOnSelect を copyOnSlect と書き間違えたとします。アプリはこれを知らない項目として扱います。知らない項目は書き戻されるので、ファイルに残ります。
これは意図した選択だと書かれています。設定したのに効かないときに、行が残っているほうが気づけるからです。
捨てる作りだと、次に保存したときにその行が消えます。すると書いたはずなのに無いという状態になって、書き間違えたのか書き忘れたのかが分かりません。
残っていれば、ファイルを開いたときに目に入ります。綴りが違うことに気づけます。
冒頭の、書き忘れたのか書いたつもりだったのか分からないは、まさにこの区別が付かない状態です。
代償はゴミが溜まること
この作りには代償があります。ファイルに使わない行が残ります。
昔の版で使っていて今は無い項目、タイプミス、試して消し忘れた項目。これらが全部残ります。
でも、消す側の危険のほうが大きいという判断です。
| 消す作り | 残す作り |
|---|---|
| ファイルがきれい | ゴミが溜まる |
| 新しい版の設定が黙って消える | 消えない |
| タイプミスが黙って消える | タイプミスが目に見える |
黙って消えるほうが高くつきます。
だから、手で掃除しないほうがいい
この仕組みがあるので、設定ファイルを手で片付けるときは注意が要ります。
知らない項目があるには二つの意味があります。今の版が知らないのなら消してよいかもしれません。別の新しい版が使っているのなら消してはいけません。
ファイルを見ただけでは、どちらか分かりません。手で掃除しないのが正解です。
ゴミが残ることを受け入れる設計なので、それに従うのが一貫しています。引き継ぎのノートの一行を消さないのと同じです。
一貫している
このアプリは同じ判断を他のところでもしています。ツールバーに出すお気に入りの設定でも、もう存在しないものの行を自動で消しません。
理由も同じです。片付けようとすると、これはもう無いを古い情報から判断することになって、一度でも間違えるとまだ欲しいものを黙って消します。
黙って消すより、使わない行が残るほうがいい。ここが揃っているので、設定を触るのが怖くなりにくい道具になっています。
使ってみる
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 です。無ければ作ります。
{
"copyOnSelect": true,
"cockpitLines": { "summary": 6 }
}
この記事の話、つまり知らない項目が消えないことは、書いた瞬間から効いています。設定を保存する経路が一つしかないので、どの項目を書いたかに関係しません。
なお、書いた項目そのものがいつ効くかは項目によって三通りあります。
| 例 | |
|---|---|
| アプリの再起動 | keymap fontFamily customAgents accounts |
| タブの再読み込み | cockpitLines copyOnSelect |
| その場で | prWorkdirFooter(作るたびに読み直す)、questionPaneEnabled(質問ごとに読む) |
迷ったらアプリを再起動してタブを再読み込みすれば、どれでも効きます。
この作りは、別の版を入れ直さなくてもその場で確かめられます。設定ファイルに、このアプリが知らない項目を一つ書きます。
{ "myOwnNote": "test" }
アプリを再起動して、設定画面をどれか一つ変えます。保存が走ればいいです。そのあと設定ファイルをもう一度開いて、myOwnNote が残っていれば、この作りが効いています。普通のアプリなら、知らない項目は保存のときに消えます。
確かめ終わったら、その行は消してかまいません。残っていても害はありません。
ただし他の項目は、手で掃除しないでください。知らない項目は、別の版が使っているかもしれません。残っていても害はありません。
まとめ
引き継ぎのノートの読めない一行を消さないのは、自分が分からないだけかもしれないからです。残すとノートは汚くなりますが、失われる情報がありません。
npx で毎回いちばん新しい版を取ってくる道具では、版が混ざります。知らない項目を捨てる作りだと、古い版が保存した瞬間に新しい版の設定が消えて、しかも消えたことが表示されません。
MulmoTerminal は知らない項目をそのまま書き戻します。同じ理由でタイプミスも残りますが、残っていれば綴りの間違いに気づけます。だから手で掃除しないのが正解です。
