- Claude Codeを活用して、Hatchetチームが**ターミナルベースのUI(TUI)**を迅速に開発した事例を紹介
- **Charmスタック(Bubble Tea、Lip Gloss、Huh)**を使い、React並みのコンポーネントベース開発と一貫したスタイリングを実現
- 既存のWeb UIと同じAPIを使いながらも、テキスト中心・高密度なインターフェースで開発者の効率を高める
- Claude Codeがtmuxセッションを起動しながらテストを自動化し、反復開発と安定性の確保に大きく貢献
- わずか2日で完成したHatchet TUIは、LLMベース開発による実質的な生産性向上を示す事例だと評価
TUI開発の動機
- Hatchetチームはk9sに似た形のTUIを求めており、ユーザーはこれをWeb UIより速く直感的だと評価
- ユーザーフィードバックには「CLIとTUIのほうがはるかに性能が良い」という意見があった
- TUIではコードと同じ環境でワークフローを可視化・実行できるため、タブの切り替えが不要
- Hatchetの主な利用者がIDE内で作業する開発者であるため、ターミナル内でのワークフロー管理体験を提供することが目標だった
技術スタック
- 一般的なフロントエンドスタック(React、Tailwindなど)に対応するCharmスタックを使用
- 主なライブラリ: Bubble Tea、Lip Gloss、Huh
- Charmチームがメンテナンスしており、ドキュメントやサンプルが豊富
- Lip GlossとHuhのテーマを用いて、TUI全体に一貫したスタイルを適用
- Hatchet CLIコマンドにも同じテーマを再利用し、統一されたユーザー体験を提供
- Bubble Tea以外のカスタム構成はやや難しいが、Reactベースのレンダリングエンジンを自作するよりはるかに単純
テストアプローチ
- Claude Codeがターミナルベースのツールを直接起動してテストを実行
tmux capture-paneを使ってレンダリングされたビューをキャプチャし、正しい出力かどうかを検証
- この方法は最初のテストパスの自動化に非常に効果的で、ビューが増えても安定してレンダリング確認が可能
- その後は手動テストと単体テストを併用して、安定した反復開発ループを形成
- Claude CodeはASCII環境での反復作業に最適化されており、テストのフィードバックループが素早く収束する
効率的な開発環境の構成
- Claude Codeは既存のHatchetフロントエンド実装を参照して開発効率を高めた
- Reactベースのシンプルなコンポーネント構造とOpenAPI仕様を活用して、明確な境界を設定
- 自動生成されたREST APIクライアントにより、仕様ベース開発が可能
- DAGベースのレンダラー実装が最も難しい部分だったが、
結果と教訓
- 開発期間全体は約2日で、以前のフロントエンドのリファクタリングよりはるかに速く安定していた
- Claude Codeによる開発は、偶然ではない実質的な生産性向上を示した最初の事例と評価
- Hatchetチームは今後も非コアパス機能に対してLLMベース開発を段階的に拡大する計画
- 中核となる教訓は、短いフィードバックループ、モジュール化、仕様ベース設計、継続的テストの重要性
- 完成したHatchet TUIはhttps://tui.hatchet.runで公開されており、ユーザーフィードバックを収集中
1件のコメント
Hacker Newsの意見
このWebページはターミナルUIの性能を扱っているのに、肝心のCSSマスク合成やキュービックグラデーションのような複雑な効果のせいで、高性能なDell XPSノートPCでもスクロールが引っかかるという皮肉がある
Geminiによると、これは「ScrimまたはEasing Gradient」で、16個のカラーストップを使って滑らかなフェードを作る代わりに、スクロールのたびに数百万ピクセル分の色計算をやり直している
Firefoxではほとんどのページが滑らかにスクロールするので、MacではないiGPUベースのhiDPIノートPCでもテストしてみることを勧める
参考までに、グラデーションを無効化した画像もある — リンク
busybox ssl_clientとgrepを使ってHTMLを抽出し、Firefoxで開く簡単なスクリプトを提示しているTUIがGUIのように見せようとする試みは少し悲しいと思う。アクセシビリティが低く、構造が平板になって、ユーザーは決められた方法以外では使えない。一方で現代のGUIはOSと構造的に結び付いていて、ずっと自由度が高い
以前よりTUI開発はずっと簡単になった。BubbleTea、Textualize、Ratatuiのようなフレームワークのおかげだ。
LLMのおかげでこうしたツールを素早く作れるようになり、自分はNTChartsというTUIチャートライブラリをメンテナンスしている
Geminiの空間理解のおかげでバグを解決でき、現在はBubbleTeaでローカルLLM会話ビューアを作っている
関連リンク: NTCharts issue, thinkt project
LLMアプリにおけるTUIへのこだわりが理解できない。VS2026のCopilotを見ると、GUIのほうがはるかに多くの情報を素早く見せられる。リアルタイムでdiffをクリックして確認できるので効率的だ
LLMが計算資源を食い潰す時代に、むしろ軽量スタックのツールを作るきっかけになった。
Cで書いてCPU性能を数千倍高め、RAMを半分に減らした。TUIはこうした効率性の好例だ
Midnight Commander(mc) は今でも最高のTUIの一つだと思う。GUI版のDouble Commanderとほぼ同等の機能を提供しつつ、リモートでも実行できる。
今は新しいスキンを作業中で、次のリリースに入ることを願っている
Geminiが自分のDHTスクレイパープロジェクト向けのTUIを作ってくれた — 画像
最初のバージョンはCJK文字の問題で修正が必要だったが、全体としては印象的だった。そのおかげでアルゴリズムに集中できた
TUIがWebフォームやGUIより優れている点があまり分からない。その代わりCLIパイプラインの組み合わせは非常に強力だと思う
Claude Codeは好きだが、ReactベースのTUI構造は本当に非効率だと感じる
Cursor CLIをベースに自分用のプロンプトフロントエンドを作った — 画像
git、diff、チャット履歴を統合し、Tailscale経由でスマホからも簡単にアクセスできる。
自分のルールを認識し、プロジェクトをgrepできるので使い勝手が非常に高い