
2026/08/15 7:30
IDEのノスタルジア(2022)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本記事は、1972 年に SRI インターナショナルのメンドーパーク実験室で開発された統合開発環境である自然言語システム(NLS)を検討している。その NLS は、1MHz の PDP-10 で動作し、メモリ容量は 1MB だった。その核心的な革新点は、ドグラス・エンゲルバートのマウス(1967 年に特許登録)と専用 5 キーのコード入力キーボード(「キーセット」)を組み合わせたモーダルエディタ方式によるものであり、このキーセットは標準的なキーボードを置換するものではなく、片手でのコマンド入力を目的として 1860 年代に特許化されたものである。NLS は動詞 > 名詞のコマンド構造を採用しており、動詞(コピー、削除、ジャンプなど)はキーセットのコード入力を通じて、名詞(文字、文、リンクなど)はマウスでターゲットが指定される。その動的ビューシステム(Viewspecs)では、単一文字のコード入力コマンド(追加のケースにはマウスシフト変種を用いる)によって階層ファイルのオンザフライでの折りたたみ、フィルタリング、展開、フォーマットが可能であった。キーセットはバイナリ符号化を採用し、5 キーで 31 種類の文字コードをマッピングすることができ、例えば 'y' = 'x' + 1 のようにした。NLS はまた、プログラマーが従来のファイルシステムではなくハイパーリンクされた構造を通じて自身のソースコードを編集できるようにすることで、自己ブートストラップを実行した。エンゲルバートのマウスとハイパーテキストの概念は、1968 年の「すべてのデモの母」で実演され、それにはオシロスコープベースのディスプレイ上でのリアルタイム共同エディタリングやハイパーメディア電子メールも含まれていた。Xerox PARC の Alto(1973 年)はチャック・サッカーによって設計され、SRI から移籍したエンジニアがマウスとコード入力キーセットの両方を搭載したが、その後の大部分のソフトウェアは紙のエミュレーションに基づく WYSIWYG パラダイムへと移行していった。エンゲルバートのマウスの特許は 1984 年に失効し、これは初代 Apple マッキントッシュの登場時期と重なっていた。記事では、NLS スタイルのモーダルエディタリング(動詞・名詞マトリックスとビュースペックフィルタを通じて)が、今日では VS Code などの現代エディタ向けのプラグインとして復活させられる可能性を指摘しており、この取り組みには新しいハードウェア、例えば 3D プリンティングで製作されたコード入力パッドによるサポートを含み、GUI の移行によって失われた高速なナビゲーション能力を取り戻すことを目指している。
Missing elements (if any):
None remaining after the revision; all major factual details from the Key Points List are now reflected in the summary.
Inferences / leaps (if any):
None; the improved summary stays within the scope and certainty level of the original text, presenting suggestions as suggestions rather than established facts.
Improved summary (if needed; otherwise repeat the original):
上記の「Improved summary」を参照のこと。
本文
50 年先の遺産:NLS とその革新技術
序論:ドゥーグ・エンゲルバート氏の先見性
1972 年に構築された高性能ユーザーインターフェースを開発したのは、スタンフォード研究所(SRI)附属の「Augmentation Research Center(ARC)」で活躍したドゥーグ・エンゲルバート氏とそのチームです。
彼らは当時としては画期的な50 年前の装置を用いて、現代の統合開発環境(IDE)の概念を先取りしました。現在なおも評価されるこの遺産は、以下の要素によって成り立っています:
- 飛躍的な知恵: 限られたリソースで最大限の機能を実現する技術的洞察。
- 歴史的功績: 「NLS(oNLine System)」というシステムを完成させた実績。
NLS システム:1972 年の先駆者的プラットフォーム
システム構成
カリフォルニア州メンドーパークの SRI ARC で稼働した**NLS(oNLine System)**は、以下の特徴を持っていました:
- ホスト: 1MHz の PDP-10 コンピュータ。
- メモリ: 実装メモリと仮想メモリの合計で 1MB。
- 評価: 当時のコードエディタの中で最も流暢かつ効率的なものの一つ。
革新的な入力方式の確立
エンゲルバート氏は、単なるキーボードではなくマウスとキーセット(5 キーボード)を併用する画期的な手法を開発しました:
- 特許の歴史:
- マウスについては SRI により特許取得。
- キーセットは 1860 年代に電信機としてすでに特許化された技術を応用。
- 機能性:
- 5 キー構成のキーボードを採用。
- ユーザーは単音(例:'c' がコピー)またはコード入力(chords)でモーダルなコマンドを実行。
キーセットとマウスの哲学的統合
キーセットはフルキーボードの代替ではなく、補完的な役割を果たしました。この併用により以下の利点が生まれました:
- 効率性の最大化: 片手で編集/コマンド入力、他方で情報空間の探検を行う。
- 視線の固定: ダイナミックなビューから目を離さずに入力できる。
- ブートストラッピング: 自身が開発した NLS を用いてソースコード自体の開発も可能にした(「自身を開発するシステム」)。
NLS の効率性を支える核心的な特徴
1. 「動詞 > 名詞」の直感的構造
アクションとオブジェクトを分離し、直感的な操作を実現:
- 動詞(アクション): コピー、挿入、削除、ジャンプなど。
- 名詞(オブジェクト): ワード、ステートメント、ブランチ、リンクなど。
操作方法:
- キーセット: コマンド動詞を入力(例:
=コピー、c
=ステートメント)。s - マウス: 対象のオブジェクトをポインタで選択。
2. オペレーションに応じた最適化
- コピー: ソースとデスティネーションの 2 つを選択(合計 2 クリック)。
- 削除/ジャンプ: 1 クリックで完了。
- ブランチ/リンク: 1 クリックで完了。
- テキスト/グループ: 2 クリックで完了。
3. Viewspecs:ダイナミックビュー制御
ファイルの階層構造を即座に折りたたみ・展開するキーセットコマンドです。表示方法のみを変更し、基盤コンテンツは維持できます。
キーセットのシフト状態(マウスボタン)
- Case 0: 小文字(標準)。
- Case 1: 大文字。
- Case 2: 数字と特殊文字。
- Case 3: Viewspecs の特別なモード。
完全な NLS Viewspec 照会表
以下の表は、5 キーコード入力(X=押下)とマウスボタンの組み合わせによるアクションです。
| コードパターン | Case 0 (小文字) | Case 1 (大文字) | Case 2 (数字/記号) | アクション / 説明 |
|---|---|---|---|---|
| | | | 1 レベル上の階層を表示 |
| | | | 1 レベル下の階層を表示 |
| | | | すべての階層を表示 |
| | | | トップレベルのみ表示 |
| | | | 現在のステートメントレベルを表示 |
| | | | ディスプレイの再構築 |
| | | | ブランチのみ表示 |
| | | | g オフ(無効) |
| | | | 通過したコンテンツを表示 |
| | | | i または k オフ |
| | | | 失敗したコンテンツを表示 |
| | | | プレックス(plex)のみ表示 |
| | | | ステートメント番号を表示 |
| | | | ステートメント番号を隠す |
| | | | フロズン(固定)ステートメントウィンドウ |
| | | | フロズンステートメントオフ |
| | | | 1 ライン分減少表示 |
| | | | 1 ライン分増量表示 |
| | | | 全ラインを表示 |
| | | | 最初のラインのみ表示 |
| | | | 通常のリフレッシュ表示 |
| | | | リフレッシュ表示を抑制 |
| | | | 全ライン、全階層を表示 |
| | | | 1 ライン、1 レベルを表示 |
| | | | 空行をオンに |
| | | | 空行をオフにする |
| | | | なし |
| | | | なし |
| | | | なし |
| | | | 中央ドットを表示 |
| | | | なし |
この構造により、NLS はインタラクティブで多維的なビューエンジンへと変貌しました。
システム構築とワークフロー:ブートストラッピングの事例
システム・プログラマとして、私は NLS そのものを用いてソースファイルを編集していました。深夜の PDP-10 で負荷率が低い時、情報空間を巡る感覚は「魔法」のように軽快でした。
効率的な開発フロー(例)
新しいコマンドを実装する際のステップ:
- テンプレート検索: 類似した既存ソースを検索。
- ビューフィルタリング: マウスボタンを押したまま Viewspec コード入力(例:
でトップレベル)。x - ブランチコピー: ターゲットを特定し、「Copy Branch」コマンド
を入力、選択→クリック。cb - 改題: 「Replace Word」コマンド
で新しい名前を設定。rw
このプロセスはわずか 2 秒以内で完了し、メニュー操作なしでエンジニアの「フロー状態」を維持しました。
キーセット習得と普及への課題
習熟曲線の低さ
- QWERTY よりも容易: 約 2 日程度でタッチタイピングに慣れることが可能。
- 両手操作以前: 片手のタイピングのみでも十分な生産性が確保される。
普及への障壁
エンゲルバート氏の業績が見過ごされがちですが、以下の理由から商業的な採用が進まなかったようです:
「才能は誰も見ない目標を打つ。天才は誰も見ていない目標を打つ。」—アルトゥール・ショーペンハウアー
スティーブ・ジョブズ氏が「三輪車(学びやすいもの)を優先する」という視点を持っていた一方で、複雑性の高いキーセット技術は普及の壁となりました。
技術の分流:Xerox PARC とアルトコンピュータ
チャック・タッカー氏は、マウスとキーセットを組み込んだアルトコンピュータを設計しましたが、多くのソフトウェア開発においてマウスのみの採用が進みました:
- 理由: 「紙の模倣(WYSIWYG)」というパラダイムへのシフト。
- 結果: エンゲルバート氏の「動的ハイパーリンク知識空間」ビジョンとは対照的に、その思想は Apple や Microsoft へ移りました。
- 例外: Xerox PARC でキーセットを最も活用したのは、実際にはマインクラフト風ゲームのMaze War ポート版でした!
未来への回帰:現代における NLS の価値
現在の IDE プラグインでも、NLS の「動詞・名詞行列」と Viewspecs フィルターを実装することは可能です。
再導入の可能性
- 簡易化: ラズベリーパイ ピコや USB マイクロコントローラー、3D プリンタで 5 キーパッドを製作可能。
- 生産性向上: 片手でのコード入力習得(2 日間)に加え、動詞・名詞編集への投資は、エンジニアの集中力と生産性を劇的に向上させます。
関心領域
- Doug Engelbart Institute: 人類の知性を増幅するための遺産とビジョン。
- The Mother of All Demos: 1968 年の公開デモで示されたマウス、ハイパーテキスト、協調編集の世界観。
ドゥーグ・エンゲルバート氏が未完にした革命は、現代の開発者にとって未だに莫大な潜在的価値を秘めています。