暖簾分けした店は、同じ屋号で少し違う看板を出す

暖簾分けした店は、同じ屋号で少し違う看板を出す

老舗の暖簾分けには、決まった作法があります。分かれた店も同じ屋号を名乗りますが、そのまま同じにはしません。屋号の下に土地の名前を足すか、暖簾の色を一段だけ変えるか、家紋の一部を替えるか。

本店と同じだと分かってほしい。同時に、本店ではないと分かってほしい。この二つは逆を向いているので、どちらかに寄せると片方が壊れます。同じ名前のままだと客が間違え、まるごと変えると縁が切れて見えます。

だから、変えるのは一か所だけ、という解き方になりました。何を変えて何を残すかを決めたのが作法のほうです。

九枚のうち一枚だけ無地に見える

AI にコードを書かせるとき、同じプロジェクトを何本も並べることになります。git には同じプロジェクトの二本目、三本目の作業フォルダを作る機能があって、それぞれが別の枝を開きます。

MulmoTerminal は、そのフォルダを一マスずつ画面に並べます。ターミナルで動く AI を何枚ものマスに並べて見張るための画面で、一マスが一体の AI にあたります。無料で、オープンソースとして公開されています。

プロジェクトごとに色を付けていると、マスの枠の色でどれがどれか分かります。青いのは会社のプロジェクト、緑は個人のもの、といった具合です。九枚がそれぞれの色をしているので、指示を出す先を間違えません。

ところが、作業用に切ったフォルダのマスだけ無地になります。設定はもとのプロジェクトのフォルダに置いてあって、新しいフォルダにはないからです。

一枚だけ灰色で、そしてそれが今いちばん作業しているマスだった、ということが起きます。

同じであるべきものは、そのままコピー

作業フォルダを作ると、設定が引き継がれるようになっています。

名前、アイコン、配色、ターミナルの色、文字の大きさ、フォント、使うモデル。これらはそのままコピーされます。同じプロジェクトで、同じターミナルを使い、同じモデルに頼むからです。

アイコンは書いたままのパスで渡されます。プロジェクトに入れてあるロゴなら、作業フォルダでも同じ場所に見つかります。

枠の色は、色相を12度ずらす

枠の色だけは、そのままコピーしません。一本ごとに色相を12度ずつ進めます。

暖簾分けの作法と同じことをしています。このプロジェクトだと分かってほしいので色は引き継ぎ、どの作業フォルダかも分かってほしいので色を変える。色相だけを少しずらすと、その両方が成立します。

青系のプロジェクトの作業フォルダは、青緑、緑青と少しずつずれた青系になります。同じ系統だと分かり、かつ別のものだと分かる。並べるとグラデーションになります。

12度という刻みは、30本切っても一周しない範囲です。

彩度と明度は触らない

丁寧なのはここです。色相だけを動かして、彩度と明度は触りません。

白や黒は色相を持たないので、ずらしても白や黒のままです。結果として、枠の上に載っている文字の色は常に読めるままになります。

もし彩度や明度を触っていたら、三本目あたりで文字が読めなくなります。色相だけなら、何本作っても読めます。

順位は、もとの順位の一つ後ろ

並び順の宣言をしていれば、作業フォルダはもとの順位の一つ後ろになります。末尾に落ちるのではなく、切り出し元のすぐ隣に並びます。

これも色相をずらすのと同じ発想です。同じプロジェクトの仲間だと分かり、かつ本体ではないと分かる位置に置いています。

引き継がないものがある

音の設定と、追加のフォルダの設定は引き継がれません。どちらもプロジェクトのフォルダの中のパスを指していて、作業フォルダにはその実体がないからです。

追加のフォルダについては、もっと具体的な危険があります。これは AI が読み書きしてよい場所を宣言する設定で、相対パスで書かれていると、作業フォルダから見たときに別の場所を指します。それを黙って許可するのは事故になります。

黙って別の場所を許可するより、引き継がないほうが安全だという判断です。

逆に、引き継ぐものもある

ポートやデータベースの名前の宣言は引き継ぎます。

これは値ではなく宣言だからです。作業フォルダは、宣言をもとに自分専用のポートと名前を予約します。引き継がないと、そのフォルダだけが相変わらず 3000 番を取り合うことになります。

値をコピーするのではなく、宣言をコピーして値は各自が取る、という扱いです。この区別が付いているのが、この仕組みのきれいなところだと思います。

書き込まない場合が二つある

どちらも意図的です。

一つは、.gitignore に入っていない場合。書いたファイルが git の状態に未追跡のものとして出てしまいます。これは見た目が汚いだけではありません。未保存の変更があるフォルダは削除が断られるので、掃除できないフォルダになります。.gitignore に一行足せば、次の作業フォルダから色が付きます。

もう一つは、すでにファイルがある場合。自分で書いたか、前回作ったときに書かれたものです。そのファイルが答えなので上書きしません。自分で色を決めたのに、次に切ったときに書き換えられる、ということが起きません。

コピーは一度だけ

コピーは作成時に一度だけ取られて、以後はそのフォルダのものになります。

あとからプロジェクト側の色を変えても、既存の作業フォルダは与えられた色のままです。変えたいときは、そのフォルダのファイルを編集するか削除します。

追いかけない理由も分かります。追いかけると、ずらした色相が作り直されて、並べたグラデーションの順番が変わってしまいます。

使ってみる

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 の使用量はその契約から引かれます。

先に、そのプロジェクトの .gitignore に一行足しておきます。

# .gitignore
.mulmoterminal.local.json

入れていないと、設定が書き込まれません。

そのうえで、色を付けたプロジェクトのフォルダをマスで開きます。起動フォームの下のほうに、作業を隔離する欄が出ます。

起動フォーム。下のほうに OR ISOLATE IN A WORKTREE (GIT REPO) の入力欄と + New worktree のボタンがある

作業の名前を入れてボタンを押すと、その作業専用のフォルダができて、そこで AI が起動します。

そのマスの枠が、もとのプロジェクトと近い色になっていれば効いています。二本、三本と切ると、少しずつずれた同系色が並びます。

やめるときは、そのフォルダの .mulmoterminal.local.json を削除します。次から無地に戻ります。

まとめ

暖簾分けは、同じ店だと分かってほしいのと、本店ではないと分かってほしいのを同時に満たす必要があって、変えるのは一か所だけという作法になりました。

作業用に切ったフォルダのマスも同じです。色をそのまま引き継ぐと見分けが付かず、まるごと変えると別のプロジェクトに見えます。MulmoTerminal は色相だけを12度ずらして、彩度と明度は触りません。文字が読めなくならないからです。

引き継ぐものと引き継がないものの線は、パスを指しているかどうかで引かれています。値ではなく宣言なら引き継ぐ、というのがその一段先にある区別です。

この記事をシェア

関連記事

記事一覧に戻る