HN 日本語サマリー

← 一覧へ戻る
プログラミング

TUI(ターミナルユーザーインターフェース)を作るのをやめよう

Stop Making TUIs (sockpuppet.org)

404 pointsby underdeserver513 コメント

要約

この記事は、ターミナルユーザーインターフェース(TUI)の構築に対する懐疑的な見方を示し、代わりにネイティブUIの構築を推奨しています。特にLLM(大規模言語モデル)の助けを借りることで、開発者は以前よりも容易にパーソナルなツールやアプリケーションをGUIで作成できるようになりました。CLI(コマンドラインインターフェース)は依然として有用ですが、TUIは時代遅れであり、その開発はほとんどの場合避けるべきだと主張しています。

全文翻訳

私たちの分野は、ターミナルやコマンドラインインターフェースに対して奇妙な関係を持っています。今こそ、それを見直す時が来ました。 最近、友人にネイティブユーザーインターフェースの構築を試してもらうのにハマっています。数ヶ月前に最初の本格的なMacアプリケーションを構築し、それ以来、それ以前のキャリア全体よりも多くのネイティブUIのものを構築しました。簡単なツアーをしましょう。 これはMDV.appです。誰かが真剣なMarkdownビューアを書くまでは、世界で最高のMarkdownビューアです。MDVについてはすでにたくさん書いており、それ以上の擁護で皆さんを疲れさせたりはしません。しかし、それは素晴らしいです。 このUIコードの執筆には、ほとんど関与していません。なぜそうするのでしょうか?ほとんどのユーザーインターフェースと同様に、MDVは新しい地平を切り開くものではありません。それは挑戦的な問題ではありません。しかし、良いUIを構築するのは非常に難しいです。この種のコードは、退屈で、繰り返しが多く、厳密で、プラットフォームの概念的な知識によって制限されます。この種の仕事で熟達するには何年もかかります。 だからこそ、私はこのプログラムを手書きすることは決してありませんでした。代わりに、それを召喚しました。 次に進みましょう。私は過去1年間、Foundations IからMachine Learningまで、Math Academyに取り組んできました。これは「独学で微積分を学んだ」と短縮できます。Math Academyは大好きで、それについて言いたいことはたくさんありますが、ここではSageMathのネイティブな電卓スタイルのフロントエンドを誕生させるためのセットアップにすぎません。SageMathは、暗号学者がデフォルトで使用する数学システムです。 このアプリが私にとって行う3つの大きなことは次のとおりです。まず、Sageの出力をLaTeXで自動的にレンダリングします。これは、多変数微積分を深く学ぶほど便利になります。次に、ベクトルや行列、数式などのオブジェクトに対するSageメソッドをポイントアンドクリックで公開します(これはtrig_simplifyを何度も入力するよりもはるかに優れています)。そして、一般的な操作(「この式の勾配を取る」など)を素早く入力できる「ミニ言語」を提供します。 [1,2;3,4]はこのシステムにおける行列です。あなたはすでにそれに納得しているはずです。 私はこのアプリケーションをパッケージ化するつもりはありません。もし欲しいなら、この投稿のこのセクションをスクリーンショットしてClaudeに渡してください。Claudeは役立つものを作成してくれるでしょう。 あなたがどこに向かっているのかわかります。(私のジャンルラベルのほとんどは、1997年の最初のMP3リッピングにまでさかのぼるため、もっと有用になるでしょう)。 これはDJ Roomba、私のApple Musicプレイヤーです。ジャンルマップは疑わしい機能です。疑わしくないのは、私のライブラリ、最後に再生したリスト、次に再生するトラックを読み取るためのツール呼び出しを備えた組み込みLLMエージェントです。「写真立てを作るために地下の工房に行くから、気分に合うスキップなしのプレイリストを作って」と言います。気分は「カート・ヴァイルとトム・ペティがたくさん」であることが判明しました。文句なしです。 これはSQLiteデータベースによってバックエンドされています。合理的なスキーマを持つまともなデータベースです。これも驚くほど便利な機能でした。 私はこのようなプログラムについてどう考えればよいのかわかりません。これは、Music.appのインターフェースの90%を含んだAI支援音楽プレイヤーです。Music.app。私の常に存在するパーソナルコンピューティングの宿敵です。これは、ドラゴンを退治するのに匹敵するパーソナルコンピューティングの出来事です。 しかし、私はその中に一行もコードを書いていません。私はソフトウェアを開発しているのでしょうか、それとも単にコンピューターを設定しているだけなのでしょうか?その考えは保留してください。 これは私のLLMwikiです。ソース資料を与えて質問すると、ウィキを書いてくれる「自動運転ウィキ」の価値について、人気があり広く共有されている記事を書くべき人がいるはずです。非常に役立つアイデアです。私が思いついてよかった。 Self Driving Wiki.appは書くのが楽しかったです。DJ RoombaのようにAPIクライアントを直接埋め込むのではなく、このアプリは舞台裏でclaude -pを動かしています。エージェントはファイルシステムがあった方がうまく機能すると仮定しているため、私はmacOS仮想ファイルシステム拡張機能を召喚しました。これは、アプリのサンドボックス内でマウントされたファイルシステムとして、バックエンドのSQLiteデータベースの読み取り専用ビューを反映します。 これはおそらく不要だったでしょうか?例えば、/Applications/から実行する必要があるため、インストールがより面倒になるでしょうか?はい、そしてまたはいです。しかし、このようなヤクシャビング(無駄な作業)の探求は、LLM以前の時代のソフトウェア開発の喜びであり、今日でもそれを体験できることを発見できて嬉しいです。(副作用ゼロで2.5倍のハイパーレスポンス、これは最高です)。 これは私が常に使用しているものです。半自動化された食品マクロトラッカーです。私も皆と同じようにボールを掴んでいます。このアプリはGPT5のフロントエンドとなる別のシンプルなエージェントで、「ケーキの生地とクリームチーズのフロスティング(でもケーキは食べなかった)をどれくらい食べたか推測して」のような非常に短い食事の説明を、摂取量の推定値に変換します。 これは、これらの安価なTP-Link温度センサーを使用して、家の周りの温度を追跡するメニューバーアプリケーションです。これらのセンサーは、中国共産党にApple TVへのアクセスを許可しています。通常、このようなものを組み立てた後、これらのデバイスが通信に使用するプロトコルやHTTP APIについてもっとたくさんお伝えできますが、それを理解するために私は何もしていません。なので、クラウドから直接、または小さなセンサーポッドから情報を取得するためのサインインパスが2つあることしか言えません。 最後に、そして私のApple TVの話になりますが、macOSネイティブデスクトップソフトウェア開発の聖杯を紹介します。動作するメニューバーApple TVリモコンです。 数年前なら、これに大金を払ったでしょう。なぜなら、私はHouse Of Ninjasを配偶者と一緒に見ながら、膝の上に開いたMacBookを置いているようなタイプのオタクだからです。(そして、私のRoku TVとDenonレシーバーにも、これはユニバーサルリモコンなので)。 Apple TVと直接通信するのは面倒なことです。しかし、人々はすでにこれを理解し、それを行うためのPythonライブラリを書いていることがわかりました。私はそれらのライブラリを「使用」しません。なぜなら、これはネイティブSwiftアプリだからです。しかし、それは問題ではありません。Pythonで書かれたものは何でも、Swift、C#、Brainfuckで実装されたものと同じくらい価値があります。フロンティアモデルにとってはすべて同じです。 私はある程度自己認識しています。生成した多くのSwiftUIインターフェースを自慢することは、その視覚デザインに対する臨床的で容赦のない批判を招きます。どうぞお寄せください。しかし、長年のApp Storeの利用者として、これらのデザインはすべて、代替レベルの一歩先を行っていると主張します。5年前、もし私のチームにmacOS UI担当者がいたら、この品質の出力を得られたら飛び上がって喜んだでしょう。 真実は、私はこれらのものを「アプリ」としてほとんど考えていません(配布するつもりはありません)。それらは、私がコンピューターに、私が望むように物事をさせることの成果です。Unixオタクとして、私は常にそうすることができました。コマンドラインの言語で。今では、グラフィカルインターフェースでも同様の作業を簡単に実行できます。 ❦ 私たちはターミナルインターフェースを、そうすべきだからではなく、そうしなければならないから構築しています。 しかし、まずCLIとTUIについて一言:コマンドラインインターフェースとターミナルユーザーインターフェースは、どちらも1970年代の産物であり、テレタイプインターフェースとダdumbビデオターミナルの制約に合わせてパッケージ化されています。どちらも、グラフィカルインターフェースと比較して、時代遅れで、敵対的で、制約が多い傾向があります。しかし、これらの傾向はTUIに固有のものであり、CLIには固有のものではありません。CLIには、それらが代替できない目的があります。CLIの構築は、ほぼ常に良いアイデアです。TUIの構築は、ほとんどの場合そうではありません。 1999年、ニール・スティーブンソンはコマンドラインインターフェースに関するエッセイを書きました。これは、ヒューマンコンピュータインタラクションの分野を約20年後退させました。その中で、彼はCLIを武器とするUnixオタクの聖職者階級を、強力なモロックとして描いています。彼らはコンピューティング業界全体を肩に担いでいます。エロイはMicrosoft WordのようなGUIを使用します。 これはハイテストのファンサービスなので、「In The Beginning Was The Command Line」は、25年後の今日でもほとんど通用しないにもかかわらず、私たちの分野の聖典の1つとなっています。 実際には、ターミナルインターフェースは、コンピューターとオペレーターの間に特別な機械的共鳴を作り出すから存在するわけではありません。むしろ、TUIが存在するのは2つの理由だけです。モデム、そしてUnixオタクがMotifを学びたくなかったからです。私は彼らを責めることはできません。私は1990年代半ばにMotifの作業を少ししなければなりませんでしたが、それはUI開発から私を次の...