iTerm2 で足りていました
長く iTerm2 を使っていました。ウィンドウの分割がしやすく、軽く、プロファイルごとに背景の色を変えられる。 LLM が返事をしたときに macOS の通知を出すこともできました。不満はありませんでした。
普段4つ以上のプロダクトを並行して開発しています。だからプロダクトごとにターミナルの背景色を決めて、 色で見分けていました。青は API、緑はサイト、というふうに。しばらくは、それでうまくいっていました。
色が、破綻しました
最初に崩れたのは、作業の都合で別のディレクトリへ移る必要が出てきたときです。 色はプロファイルに付いているので、中身が変わっても色は変わりません。青いペインの中で、別のプロダクトの作業をしている。 そうなると色は、もう何も教えてくれません。
次に、1つのタブを8分割しても足りなくなりました。2つ、3つとタブを行き来するようになると、 色の数が足りません。同じ色が別のタブにも出てきます。
そして、こう思う回数が増えました。
あれ、いまこのプロジェクトで何の作業やってたっけ。
特に一度寝て、日をまたいだときです。8枚のペインが並んでいて、どれも同じように何かを出している。 どれが何なのか、自分で書いたはずの色を見ても、思い出せない。
足りなかったのは、色ではありませんでした
必要だったのは2つです。これはどのプロジェクトなのかと、ここで何をしていたのか。 色は前者の代わりにはなりますが、数が増えると足りなくなります。後者については、最初から何も答えていません。
だから Ultenix では、プロファイルにアイコンを付けられるようにしました。色より速く見分けがつきます。 背景に画像も置けるようにしました。実用の理由だけではありません。8枚に囲まれて何時間も過ごす場所なので、 気持ちが上がるほうがいい。
分割したペインは、別のタブへ動かせるようにしました。作業のまとまりは日によって変わるので、 あとから並べ直せないと、結局また分からなくなります。
もう1つ、言いにくい理由
iTerm2 に不満があったわけではありません。ただ、開いてワクワクすることはありませんでした。 いかにもエンジニアの業務ツール、という顔をしています。よくできた道具ですが、道具以上のものではない。
1日のうち最も長くいる場所なのに、そこが楽しくないのは、よく考えるとおかしい話です。 エディタには気に入った配色を入れるのに、ターミナルだけは黒いままだったりする。
だから Ultenix では、あらかじめ11種類のテーマを用意したうえで、色は1つずつ自分で決められるようにしました。 既製のものは出発点で、そこから先は好きにできます。背景には画像も置けて、それをペインごとに変えられます。 プロファイルにアイコンも付きます。 使っていて気持ちが上がる。それが作りたかったことの1つです。
飾りだとは思っていません。8枚に囲まれて何時間も過ごす場所の気分は、出てくるものに効きます。
作業を、止めない
もう1つ、ヘビーユーザーなら分かってもらえると思うことがあります。macOS 自体が不安定になる日があります。 何日も起動しっぱなしで、8枚に何かを走らせていれば、そういう日は来ます。
そのとき、再起動をためらう理由が「作業が全部消えるから」であってはいけないと思いました。
だから Ultenix は、再起動してもそれまでのペインの構成を戻します。そのうえで、
Claude Code のセッションを復活させる --continue を自動で投げます。
つまり、心置きなく再起動できます。戻ってくれば、さっきの続きから始められます。 この製品が言いたいことを一言にすると、あなたの作業を止めない、になります。
並走が増えると、通知が主役になりました
いま私は、1画面を8分割して最低8ペイン、多いときは2画面で16ペインほどを同時に動かしています。 Ultenix を作る前には届かなかった数です。そこで実感したことがあります。 並走の数が増えるほど、通知の重要さが増します。
8枚を睨み続けることはできません。人は1つのことしか見られない。 だから、呼ばれたときに知らせてもらうしかない。画面を見張るのではなく、呼ばれるのを待つ形に変わりました。
横になっても、止めたくなかった
iPhone に出した理由は、もっと単純です。
長く続けていると、体がきつくなります。少し横になりたい。ベッドに行きたい。 でも、8台が走っている最中です。ここで机を離れると、全部そこで止まります。 返事を待ったまま、朝まで止まっていることもある。
休みたいのに、休むと止まる。それが嫌でした。
だから、寝転んだまま続けられるようにしました。呼ばれたら電話が知らせて、 そこで一言返せば、また走り出す。体を起こさなくていい。
遠隔操作がしたかったわけではありません。休んでいる間も、止めたくなかっただけです。
80日の記録
- 6月16日 作り始めた
Tauri と xterm.js で土台を組み、その日のうちにタブ、ペイン分割、設定画面、そして「日本語で頼む」入力まで入れた。最初から AI を動かす前提だった。
- 同じ日 誰のために作るかで迷った
AI の入口を非エンジニア向けに作り直し、その数時間後にエンジニア向けへ戻している。常時出しているバーにするか、呼び出す palette にするかも往復した。
- 7月29日 待っていることに気づいた
「AI の応答待ちを通知(ベル / OSC 777 / 無出力検知)」。エージェントは走るだけではなく、止まってこちらに聞いてくる。並走が増えるほど、そこが効いてくる。
- 8月18日 外に出た
見張るための道具になったのだから、机の前にいないときこそ要る。LAN の中の接続から始めて、iPhone のアプリまで作った。
- 9月3日 126 コミット、80日
いまも毎日これで働いている。
自分のためだけに作ったわけではありません
普段、いろいろな方の AI 導入を手伝っています。そこでいつも同じことを言ってきました。 ターミナルを使えるようになると、作業は一気に速くなります、と。
ですが、うまくいきませんでした。IT のエンジニアではない方にとって、 ターミナルという画面そのものに、強い抵抗があります。黒い画面に文字だけが並んでいて、 何を打てばいいのか、打ったら何が起きるのか分からない。そこで止まってしまう。
もったいないと思いました。中で動いているエージェントは、その人の仕事をいちばん変えるものなのに、 入口の見た目だけで諦めてしまう。
だから Ultenix には、その方たちのための仕組みも入れました。 日本語で書けばコマンドになること。声でも頼めること。何手もかかる作業を1手ずつ案内すること。 そして、戻せない操作は必ず手前で止まること。知らないから壊す、という怖さを消すのが目的です。
これらは無料で使えます。有料にすると、いちばん必要な人に届かないからです。
これから増えると思っていること
エージェントが賢くなるほど、一度に長く走るようになります。長く走るということは、 こちらに聞いてくる間隔が伸びるということです。
そうすると、人が待っている時間が増えます。待ち時間は死んだ時間なので、埋めようとする。 埋め方は1つしかありません。もう1台走らせることです。
だから並走は、これからもっと増えると思っています。 そのときに必要なのは、速いターミナルでも、賢いターミナルでもありません。 何台走っていても、呼ばれたことを見落とさない場所です。Ultenix はそのために作りました。