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

30年前のIDEたち…そして私たちが失ったもの

概要

  • 1980年代後半から1990年代初頭の テキストベースIDE の体験回顧
  • 当時のIDEは 機能面で現代と遜色ない 完成度
  • 現代のTUIエディタとの 比較と機能退化の考察
  • LSPなどの登場で 再びTUIが注目される背景
  • TUI IDEの 現代的意義と利点 の整理

1990年代のテキストベースIDEの体験と進化

  • 1980年代後半から プログラミング学習 を開始
  • 当時の ハードウェア制約 を理解せずに使用していた体験
  • DOSBox を使い、当時のソフトの再体験と現代との比較
  • Windows登場前の純粋なTUI IDE の特徴に注目
  • 機能的に現代IDEに 引けを取らない完成度 を持つIDEが多かった時代
  • 一時的に機能が 失われた“暗黒時代” を経て、再び機能が復活しつつある現状
  • 過去の機能や体験を知ることで、今後の新機能をより批判的に評価 できる視点の重要性

1990年代のTUIの特徴と代表的エディタ

  • DOS時代のプログラムは フルスクリーンTUI が主流
  • テキストウィンドウ、ドロップシャドウ、色彩、マウス対応など 多彩なUI表現
  • 例えば MS-DOS Editor (EDIT.COM) はメニュー・ダイアログ・ショートカット表示など充実
  • 各プログラムのUIは独自ながらも 操作体系が似ており習得が容易
    • Altキーでメニュー、Tabで項目移動など 共通操作体系

エディタとIDEの進化

  • MS-DOS 5 以降、標準でTUIエディタを搭載
    • ただし、 コード編集とビルドが分断 されていたため不便
  • SideKick Plus (1984) のようなTSR型PIMも登場
    • Ctrl+Altで即座に呼び出せる 疑似マルチタスク機能
    • コード編集とビルドの 効率的な切り替え を実現

本格的IDEの登場

  • Turbo Pascal 1.0 (1983) で統合開発環境の原型が登場
  • QuickBASIC 2.0 (1986) で本格的なTUIを実現
  • Borland Turboシリーズ (Turbo C++、Turbo Pascalなど)が 最強のTUI IDE として君臨
    • シンタックスハイライト
    • コンパイラ統合と診断
    • プロジェクト・ビルド管理
    • デバッガ(ブレークポイント、スタックトレース等)
    • 統合リファレンスマニュアル
  • 1990年代初頭で既に 現代IDEに匹敵する機能 を実現
  • インターネットが普及していない時代 でも、IDE自体が十分に 直感的かつ自己完結型 であった

UNIX・LinuxのTUI事情との比較

  • 当時のLinuxも テキストベース中心 だが、 フルスクリーンTUIは少数派
  • X11設定ツールやOpenBSDインストーラの シンプルすぎるUI に驚愕
  • VimやEmacs は強力だが、 初学者には難解 でIDE的機能も限定的
    • Emacsは装飾や色も乏しく、 マウス非対応 だった時代も
    • メニューバーも 実用性に乏しい 設計

現代のTUI IDE・エディタ事情

  • RHIDE :Turbo C++に酷似するが DOS専用・開発停止気味
  • Free Pascal IDE :現代的なコードベースで UNIX系OS対応、TUI IDE体験を再現
  • QB64 :QuickBasic風だが GUIでTUIを模倣、端末上では動作不可
  • Free Pascal・QB64は 現役開発中 だが、 言語の人気低迷 で注目度は低い

現代TUIエディタの限界と新潮流

  • Neovim、Doom Emacs、Helix などが IDE的機能を拡張
    • ただし、 直感性や一貫性はBorland製IDEに劣る
    • 多言語対応の柔軟性 と引き換えに、どれも“器用貧乏”な印象
  • GNU Nano が“シンプルなTUIエディタ”として人気
    • だが IDE機能は皆無、ワープロ的な印象が強い
  • 30年の間に機能が後退し、ようやく再び追いつきつつある現状

TUI IDEが再注目される理由

  • グラフィカルOS普及でTUI IDEは一時衰退
  • LSP(Language Server Protocol) の登場で、TUIでも 高度なIDE機能が容易に実装可能
  • TUIエディタの開発者層が薄く、IDE化は困難だったが、LSPで一気に進展
  • 今後は BSP(Build Server Protocol) にも期待

現代におけるTUI IDEの意義

  • VSCodeのリモート機能 は優秀だが、 TUI IDEはリモート開発でより快適
    • SSHでサーバーに入り、tmuxと組み合わせて 本格的な多重作業 が可能
    • リモートデスクトップは 遅延やショートカットの不統一 で使い勝手が劣る
  • VSCodeのリモート拡張はOSSでなく、FreeBSDなどでは動作不可
    • TUI IDEならOS問わず利用可能

まとめ

  • 1990年代の TUI IDEは現代に劣らぬ快適な開発体験 を提供
  • 一時的な機能後退を経て、 LSP等の技術革新で再びTUI IDEの価値が見直されつつある
  • リモート開発やOSS環境 では、TUI IDEが今なお 実用的かつ有力な選択肢
  • 過去の知見を活かし、 今後の開発環境の進化をより批判的に評価 していく姿勢が重要

Hackerたちの意見

DOSの黄金時代には、文字を表すバイトの配列と属性(背景色や前景色)を表す配列があって、ハードウェアがそれを描画してたんだよね。特定の場所に「A」を書きたければ、特定のメモリアドレスに0x41を書き込むだけ。それだけで済んだんだ。待機状態があったけど、9600ボーのターミナルでANSIコマンドを使って描画するよりずっと速かったよ。最初にemacsを使ったのは、Sunワークステーションに接続されたターミナルで、その時はすごく遅いシリアルターミナルか、GUIプログラムのターミナルエミュレーターを使うしかなかった。だから、TUIsが消えていった理由はこれだね。

それ、実際に優れてるって感じだね。サイズ変更はどうやってうまくいったの?

1984年にBorland Turbo Pascalを使ったんだけど、すごく遅いPCでこんなに速いものを使えるなんて驚きだった。あれ以降、あんな速さのIDEやコンパイラには出会ってないよ。今のコードはものすごく洗練されてて複雑だから、今のコンピュータの速さではあのパフォーマンスには到底追いつけないね。

2002年にガレージセールで、16MB RAMの66MHz PentiumのWindows 95マシンを手に入れたんだ。Visual Studio 5 Enterpriseはそれでも十分速く動いて、今でも恋しい機能があったよ(今の環境ではあまりうまく動かないけど)。

ほんとにそう。あれが今までで一番流れるような開発体験だったなんて不思議だよ。それ以来ずっとその感覚を追い求めてる。でも、RailsやVite、Reactのファストリフレッシュとかは、そういう意味では結構いい感じだね。

最近Delphi試してみた?めっちゃ速いし、コンパイルも1秒以内だよ。

この話題に関する必須リンクをシェアしに来たよ、Dadgmの「Turbo Pascalより小さいもの」: https://prog21.dadgum.com/116.html 1991年まで、いやそれ以降もTurbo Pascal 2を使ってたんだ。あの頃の386 40 MHzのPCではめっちゃ速かった。CGAグラフィックス用のライブラリしか付いてなかったのはちょっと制限があったけど、その分シンプルで学ぶには良かった。数年前、古いTurbo Pascalのゲームを動かしたくてFree Pascalに移植することにしたんだけど、残念ながらFree PascalはTurbo Pascal 4で導入されたグラフィックスライブラリしか付いてなかった。でも、Turbo Pascal 1-3のグラフィックスAPIをアセンブラを使ってCGAグラフィックスを描く方法を考えるのに数時間楽しめたから、ゲームは動いたよ(正直あんまり面白いゲームじゃなかったけど、そのAPIを実装するのは楽しかった)。

Emacsは今でもこれらのことを全部やってると思うよ。著者が言ってるのは「難解」ってことだけど、彼が慣れてないだけなんじゃないかな。実際、完全に自己文書化されててインタラクティブだし。私にとって、今まで使った中で一番のテキストインターフェースはEmacsのMagitだね。もっとEmacsがああいう感じだったらいいのに。実際、理由があって別のIDEを使ってる時でも、EmacsをGitクライアントとして使ってるよ。

Magitの体験は、そのUIにトランジェントパッケージを使ってるからなんだ。他のパッケージもそれを使ってるよ。私の個人的な使用では、gptelパッケージが特に目立つね。

彼が慣れてないだけの慣習を使ってると思う。25年以上使ってるから、もう「慣れてる」よ。

Magitはすごいね。あのMagitの人たちはどうやってデータモデルを考えたんだろう?いつも、gitのデータモデルを超えてる感じがする。gitのポーセリンはただの破片の山だし。

Emacsには同意だね。昔、MS-DOSの頃から使ってたよ。M-x compileでコンパイラ(多分make)を起動したり、C-zでcommand.comを開いてコマンドを実行してからEmacsに戻ったりしてた。ほぼマルチタスクみたいな感じ!あの頃の典型的な後期MS-DOS時代のTUIアプリはあんまり好きじゃなかったし、懐かしさもないな。小さなTUI、例えばOSインストーラーみたいなのはいいと思うけど、結局好きなのはコマンドラインだって気づいた。TUIを起動するのはGUIを開くのとあまり変わらないし、どちらもプロンプトでコマンドを打つ流れを壊しちゃう。DOSBoxとFreeDOSはいつも使ってるけど、TUIアプリにはほとんど時間を使わないな。それでも今は40x25 CGAテキストモードで動くDOSアプリを作ってるよ。技術的にはTUIだけど、典型的なTUIにはあまり見えないかな。

Hacker Newsで議論の続きを見る