世界を動かす技術を、日本語で。

TUIの構築が今や簡単になりました

2026年2月14日原文(hatchet.run)

概要

Claude CodeによるTUI(テキストユーザーインターフェース)開発体験の振り返り。 開発効率向上やテスト自動化の実現。 Charmスタックを活用したTUI構築のコツ紹介。 ASCIIグラフレンダリングの工夫と課題。 エージェント活用の教訓と今後の展望。

Claude CodeとTUI開発の新体験

  • Claude Code の初回起動時、 ターミナルベースのコーディングエージェント に驚きと興味。
  • 30分で「これは大きな潮流になる」と確信、社内で 新プロダクトライン の議論。
  • 最終的には見送りとなったが、 TUI開発体験 が強く印象に残る。
  • TUIは 開発者にとって直感的 で、導入障壁が低い傾向。
  • TUIの導入検討や自作を考えている人には「 ぜひ挑戦を」と推奨。

Claude CodeによるTUI構築の実践

  • 過去のフロントエンド大規模リファクタは失敗、 TUIはClaude Code主導で数日で完成・リリース
  • Hatchet CLIのTUIデモを公開、 ユーザーから高評価のフィードバック を獲得。
  • TUIsは 情報密度が高く、コードと並列して作業可能、タブ切り替え不要。
  • HatchetユーザーはIDEでのワークフロー開発が多く、 ターミナル内での可視化・操作 が理想。

TUI開発スタックとCharmエコシステム

  • フロントエンドは React、react-query、Tailwind などが主流。
  • TUI開発には Charm社のBubble Tea、Lip Gloss、Huh を活用。
    • Bubble Tea :TUIの状態管理・レンダリング
    • Lip Gloss :スタイリング
    • Huh :テーマやUI部品
  • ドキュメントやサンプルが豊富 で、学習コストが低い。
  • 独自カスタムはやや難しいが、 Reactエンジン構築より容易

Claude Codeによるテスト自動化

  • Claude Codeはターミナルツールのテスト自動化 に最適。
  • tmuxセッションでのビューキャプチャと検証 が有効。
  • ASCIIベースのテスト環境で LLMの反復的な検証サイクル が実現。
  • 最初の自動テスト後、 手動テストやユニットテストも実施 し、安定したTUIへ。

既存フロントエンドとの連携とAPI生成

  • 既存のフロントエンド実装を参照実装 としてClaude Codeに指示。
  • OpenAPI仕様書からAPIクライアントを自動生成、Claude Codeが容易に利用可能。
  • ビジネスロジックはReact hooksに分離 し、Claude Codeによる実装範囲を明確化。

DAGレンダリングの課題と解決

  • Hatchetは DAGベースのワークフロー をサポート。
  • フロントエンドでは React Flow を利用してDAG描画。
  • TUIでは ASCIIグラフ描画ライブラリ(mermaid-ascii) を発見し、Claude Codeで実装。
  • 完璧ではないが、 短期間でDAGレンダリングを実現

Claude Code活用の教訓

  • 2日間でTUIの主要機能を構築、従来より大幅な効率向上を実感。
  • 過去のフロントエンドリファクタは 複雑化・バグ多発で失敗
  • TUIは 小さな単位で反復開発・テスト が容易、安定した品質を維持。
  • 今後も 重要度の低いパスからエージェント活用を拡大 予定。

エンジニアへのメッセージ

  • フィードバックループの短縮、モジュール設計、仕様化、継続的テスト の重要性を再認識。
  • TUIやエージェント活用に興味があるなら、 まず試すことを推奨
  • 最新の分散システム、ワークフローエンジン、開発者ツール情報も随時発信予定。

Hackerたちの意見

TUIsがウェブフォームやGUIに比べて本当に優れている点は見当たらないな。でも、CLIは好きだよ。特にパイプラインでちゃんと動くやつ。シンプルなコマンドラインユーティリティを組み合わせて、欲しいことを正確に実現できるのはめっちゃパワフルだね。

TUIsはコンテナ内で動かすのがずっと簡単だよね。まあ、ターミナルベースのウェブブラウザが一部のウェブアプリには使えるかもしれないけど。

パイプラインにTUIのファイルピッカーを組み込むのは強力なテクニックだね。時には、すべてのファイルを事前に選択するよりも、ちょっとインタラクティブなインターフェースが流れをスムーズにすることがある。これをスクリプトやエイリアスに組み込めるのはいいよね。他のCLIの機能も「一歩だけインターフェースを最小限にする」ことで恩恵を受けることがある。

Charmを使ってカスタムエージェント用のTUIを追加したばかりだよ。主に2つのことに使ってる。1つ目は、すべてのチャットセッションをナビゲートして管理作業をすること。削除する前に内容を確認するのに、1キーでサクッと入れるのが超速い。2つ目は、ウェブUIやVS Codeの拡張の複雑さなしで機能やコード変更をテストすること。3つ目は、VS Codeに接続できない場所。チャットしたり差分を見たりしたいから、TUIの方がCLIよりずっと楽だよ。CLIもあって、基本的にコア機能に対する3つのインターフェース(CLI、TUI、GUI(vscode/webapp))があるんだ。自分のスイスアーミーナイフみたいなものだよ(https://github.com/hofstadter-io/hof)。

TUIが好きなんだ。CLIと一緒にアプリを動かしたいときに便利だから。ターミナルやtmux/zellijのペインでウィンドウを分割する方が、2つのアプリウィンドウをスクリプトで固定するよりも簡単だしね。もっと良いやり方があればアドバイスもらえると嬉しいな。TUIは制限がある分、プログラミングもしやすいと思う。人間のインターフェースが少ないから、OS間で同じUIを使っても違和感がないしね。(OS間には効率的なファイルイベント監視みたいな違いはあるけど。)

TUIはssh越しに使うのに最適だよ。他のことは大体面倒くさいし、特にsshクライアントがスマホだと余計にね。

GeminiはC#プロジェクト用に素敵なTUIを作ってくれたけど、その後アプリ内でKestrelウェブサーバーを立ち上げる方が管理には良いって言われたんだ。それは確かに妥当な意見だった。(エージェントに、何かを作る方法を指定したときに理想的な解決策じゃないと警告する行があるんだ。)

一部のアプリケーションやシステムでは、認証機関がプロトコルやクライアント、サーバーの脆弱性のためにウェブ管理の使用を禁止しているんだ。例えば、私の日常では、いくつかの国のサイバー機関(NSA、CSE、GCHQなど)がそういう方針を持っている。だから、私たちの主力製品ラインは、ローカルコンソールやSSH越しにアクセスできるTUIで管理されているんだ(非常に注意深くキュレーションされたSELinux MACなども含めて)。とはいえ、自分で統合MAC付きのHTTPサーバーを構築して、既知の脆弱性に対する対策を示せれば、認証機関も賛同してくれるかもしれない。時間が経てばわかるね。確かにこれはニッチだけど、TUI自体が一般的にニッチだよね。

実際、TUIはキーバインディングが良くて、コマンドを実行している場所ですぐに使えるから便利だよね(特にちょっとした作業には)。

mc(Midnight Commander)は今でも最高のTUIの一つだと思う。GUI版(Double Commanderみたいな)にかなり近い機能を持ってるし、リモートシステムでも動かせるのがTUIの利点だよね。見た目は古いけど、実は今新しいスキンを作ってて、次のmcのリリースに入ることを期待してるんだ。

みんなのmc開発者に拍手!

お気に入りのTUIがGitHubにたくさんあるから、ぜひ見てみて!ここにいろいろあるよ: https://github.com/rothgar/awesome-tuis https://terminaltrove.com/explore/ Charmやratatuiなどの開発が、AIのおかげで以前よりずっと簡単になってきてる。

Hacker Newsで議論の続きを見る