「TUIを作るのはもうやめよう」——ネイティブUIをAIで生成する時代

Stop Making TUIs

「TUIを作るのはもうやめよう」——ネイティブUIをAIで生成する時代

著者は、最近構築した一連のネイティブmacOSアプリ(Markdownビューア、SageMathフロントエンド、Apple Musicプレイヤー、LLMベースのWiki、マクロトラッカー、メニューバーアプリなど)を紹介し、これらはすべてAIアシスタントを使って生成したものだ。彼は、TUI(ターミナルユーザーインターフェース)は1970年代の技術的制約の産物であり、現代ではネイティブUIの方が優れていると主張する。CLIは依然として不可欠だが、TUIは時代遅れで、AIがSwiftUIなどのネイティブフレームワークで高品質なUIを生成できるようになった今、TUIを作る理由はほとんどないと論じる。

私たちはターミナルインターフェースを、そうすべきだからではなく、そうせざるを得なかったから作っている。
  1. willjp

    macOSには高品質なGUIを作るための素晴らしいAPIやライブラリ、ツールキットがあるかもしれませんが、オープンソースソフトウェアを書きたい、あるいはオープンソースプラットフォームを対象にしたい場合、選択肢は限られており、質も低いです。

    Linux/BSD側では、ほとんどのツールキットは品質が良くなく、さまざまな微妙なバグや奇妙な動作を受け継ぐことになります。_素晴らしい_品質のソフトウェアのほとんどはツールキットを使わず、コンポジタと直接やり取りしています。そのような状況でGUIを開発する労力はTUIよりもはるかに高く、TUIで通常「十分」です。

    多くのことに関して本当はGUIを好みます。しかし、TUIが数週間でできるのに対し、同等のGUIは数ヶ月かかります。

  2. omnibrain

    面白いことに、私は現在TUIを作っています。muttのようなメールクライアントです。このプロジェクトでGUIを検討する余地は微塵もありませんでした。なぜなら、それはあまりにも馬鹿げているからです。

    本質的にクロスプラットフォームであり(Windowsではmsys)、UIの任意の部分をコピーでき、curses以外の依存関係を必要としません。

  3. joshka

    タブ対スペースですね。

    私は常にTUIの良い面を評価してきて、GUIの良い面はあまり評価してきませんでした。私は子供の頃にコンピュータにまったく触れておらず、最初の大人の仕事の一つで、パパ・ジョンズで注文を打ち込むためにTUIを使わなければなりませんでした。それはその後他のレストランで使ったGUI駆動のものより20倍速かったです(キーボードの速さが私には勝っていて、私の脳に完璧に合っていました)。たぶん5分で覚えました。私はただ請求書を払おうとしている普通の人でした。

    なぜ人々の好みを侮辱する必要があるのか分かりません。記事はこの点で本当にひどいです。

  4. tescreal

    ratatuiライブラリのメンテナとして、ノー——TUIを作るのをやめないでください ;)

    それ以外の開発者として、ここで言及されている「痒い所に手が届く」アプリが大好きです。私は現在、SwiftUIでチェスレパートリービルダーアプリをコード生成で作っていますが、それは同じような領域にあり、コーディングエージェントがいなければこのアイデアを探求しようとは思わなかったでしょう。

    記事の「ターミナルは歴史的な仕様と戦う奇妙な形である」という点には同意します。しかし、私の重要な観察は、ターミナルアプリとそれに対処するライブラリの不一致は、基本的にすべて文字セルとカーソル移動、そして複雑でサポートがまちまちで奇妙な方法で相互作用するさまざまなCSI/OSC/ASC/DEC/xterm...プロトコルを中心に構築されているということです。

    良いターミナルUXを得るためには、おそらくその互換性の混乱をすべて捨てて、アクセシビリティ、リージョン、スクロール、選択、適切なキーボードなどを組み込んだ現代的なターミナルプロトコルを再設計することが答えだと思います。

    Mitchell Hashimotoはこれについて少し異なる視点を持っていることを知っています。それは、さらにいくつかのプロトコルを定義し、その上に構築し続けるというもののようです。それはおそらく95%はうまくいくでしょう。しかし、100%良いものは完全な置き換えです。

  5. israrkhan

    TUIのGUIに対する最大の利点の一つは、任意の数のTUIインスタンスを実行できることです。

    一方、GUIの開発者は、複数のウィンドウを開くことさえ可能にするかどうかを決めなければなりません。「タブ付きインターフェースで十分でしょう!」——やった、二つの画面の情報を同時に見ることは決してできないだろう。

  6. matheusmoreira

    TUIを作り続けてください。何でも好きなものを作り続けてください。これらの「ターミナルはそのために作られたわけではない」というコメントは少しうんざりします。私はSSHでしかアクセスできないマシンでもTUIを実行でき、それらは対応するGUI版よりも軽量であることが多いです——今日の派手なTUIではそうでもないかもしれませんが。'top'はTUIを持っており、特に新しいものではありませんが、いくつかの対話性——はい、ターミナルでも——は素晴らしいことがあります。

    私は現在、自分のCLIツールのGUI版(イミディエイトモードライブラリ)を作ろうとしていますが、それはほとんどお粗末で、データイン・データアウトのCLIツールの3倍の作業です。しかし、良い学習経験です。GUI版が「ネイティブな感触」を持つかどうかは気にしていません(時間があればどうぞ)、機能していて適度に速いかどうかだけが重要です。そうでなければ、オープンソースツールにとってさらに多くの作業になります。しかし、後で間違いなくもっとインタラクティブなTUI版を作るとき(ratatuiは試さない手はないほど素晴らしいです!:-))、おそらく同様の複雑さをもたらすでしょう。

    また、私はエージェンティックコーディングにはまったく興味がないので、冗談は私にかかっているかもしれません。一方で、現在私は処理しているデータについて学ぶ必要があり、使用しているGUIライブラリ/フレームワークについて学ぶ必要があり、一緒に働く人々がそのデータを収集する機器のトラブルシューティングを手伝える必要があります。プロンプトでコーディングしたら、そのほとんどを逃してしまうでしょう。後で試すかもしれませんし、試さないかもしれません。

    TUIを作り続けてください、あるいはGUIでも。

  7. sjbzbeiks

    ここでの他のコメントに同意します:TUIを作り続けてください。完全にキーボード駆動で、コンパクトなインターフェースが、他のCLI開発ツールと一緒にターミナルにあるのは最高です!

  8. bayindirh

    「Q: 息子よ、ウィンドウマネージャは何のために必要だと思う?

    A: 一つのディスプレイで複数のターミナルを動かすためだ。」

この日のほかの記事

2026-08-22