NOA

— 開発日記 / the honest version

Macの前に、座らなくていい。

これは、きれいな設計書じゃない。
iPhoneしか手元にない苛立ちと、SSHの設定の壁と、
「ターミナル」じゃなく「場所」を作った話。
——Webターミナル Noa を作った、本人の裏話。

木下スタジオ · 個人開発 Web Terminal · Claude Code node-pty · WebSocket · OSS 設計の話も読む ↗

iPhoneしか、手元にない。

外にいる。Macでは Claude Code が動いている。でも、進捗が確認できない。ターミナルにもう一行打ちたいのに、手元にあるのは iPhone だけ。

# いま、こういう気持ち
$ ssh mac …けど鍵は? known_hosts は? ファイアウォールは?
# 1コマンドのために、何十分の準備。

SSHクライアント、VNC、TeamViewer——解決策はある。でもどれも「設定の壁」がある。この状況が、何度も繰り返し起きていた。

仮説じゃなく、自分のために作った。

Noa のペルソナは、想像で作ったものじゃない。自分自身だ。「外出中に iPhone で Claude を動かし続けたい」という実需が先にあって、そこから設計が始まった。

命題MacとiPhoneの間の物理的な距離を、ソフトウェアで消す。開発者が、外出先でも思考を止めずに作業を続けられること。

「ターミナル」じゃなく、「場所」を作る。

4つの軸で設計した——即時性・視認性・分離性・拡張性。ブラウザを開けば、もう繋がっている。設定の摩擦はゼロ。

目指したのは単なる遠隔操作じゃなく、思考の延長線上にある"場所"。だから TERM / EDITOR / FILES+PREVIEW の3カラムにして、プロジェクトごとにセッションを分けた。

Noa の画面 — TERM / EDITOR / FILES の3カラム、プロジェクト別セッション
実際の Noa。TERM / EDITOR / FILES+PREVIEW の3カラム、プロジェクト別セッション。
遠隔操作じゃない。思考の、延長線上の場所。

スタックは、驚くほどシンプルだった。

$ node server.js
Node.js + Express + WebSocket + node-pty
# PTYを生成 → WebSocket越しに → ブラウザの xterm.js へ

技術は、実はシンプル。むしろ難しかったのは体験設計の判断の方だった。どこまで見せるか、どうセッションを分けるか、どのテーマを用意するか。

効いた「技術で何ができるか」より「触ったとき、思考が途切れないか」。判断のほとんどは、後者だった。

道具へのアクセスコストが、体験を壊していた。

Noa を使い始めてから、外出中の作業の質が変わった。Macの前に座ることが必須じゃなくなり、思考の流れを途切れさせずに続けられる。

使って初めて分かった。動かなかったのは能力じゃなく、「道具にたどり着くまでのコスト」だったんだと。琵琶湖のそばでも、外出先でも、今日もこれで動かしている。OSSで公開している。

Macの前に座らずに、動かす。

$ read the design →

Web Terminal · Claude Code · node-pty · OSS

木下 貴博 — 木下スタジオ / 滋賀 琵琶湖

書いた人 — 木下 貴博 / Takahiro Kinoshita

木下スタジオ(kinoshita studio)代表・木下貴博。滋賀・琵琶湖のそばで、デザインも開発もひとりでやってます。
Noa・OtO・Mothership・BMBoard・Ateli.er・KODOCO を個人開発。プロフィール → / 設計の話も読む →