# エレベーターとトースターから生まれた Java――James Gosling が語る誕生秘話

- 番組: [The Stack Overflow Podcast](https://ai-curator.jp/podcasts/shows/cmv3z5c1l00105o106qjscjap)（The Stack Overflow Podcast）
- 元のタイトル: Elevators, toasters, and the birth of Java
- 配信日: 2026年10月27日
- 長さ: 36分
- 要約作成日: 2026年10月27日
- トピック: [#Java](https://ai-curator.jp/topics/Java) [#JVM](https://ai-curator.jp/topics/JVM) [#ガベージコレクション](https://ai-curator.jp/topics/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3) [#ソフトウェアの信頼性](https://ai-curator.jp/topics/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E4%BF%A1%E9%A0%BC%E6%80%A7) [#IEEE 754](https://ai-curator.jp/topics/IEEE%20754) [#コーディングエージェント](https://ai-curator.jp/topics/%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88)
- URL: https://ai-curator.jp/podcasts/cmvq8g8ld00015k10mobi6zor

## 要約

Stack Overflow Podcast に Java の生みの親 James Gosling が登場し、Sun Microsystems での家電向けプロジェクトから Java が生まれた経緯を語った。信頼性を最優先する家電業界の要求、ハードウェア依存を断つ抽象マシン、ポインタ起因のバグへの反省が設計を形づくったという。後半では現代の Java のガベージコレクタ、厳格さをめぐる好き嫌い、コーディングエージェントへの見方にも触れている。

## ポイント

- Gosling は誰かに依頼されたわけではなく、Sun で家電メーカーと進めた試作プロジェクトの中で、数人の仲間とコンパイラ技術の問題を解決しようとして Java を始めたと述べている。
- 家電業界では「顧客を危険にさらすな」が第一原則で、信頼性が最優先された。これがガベージコレクション、強い型付け、算術の厳密な定義といった設計につながった。
- CPU ごとに異なる独自仕様への不満から、物理プロセッサとソフトウェアの依存を断つ抽象マシンを着想した。これが Java 仮想マシンの原点である。
- C 由来のポインタによるメモリ破壊バグの探索に多くの時間を費やした経験が、Java でメモリ管理を言語側が担う方針の動機になった。
- 現代のガベージコレクタは大容量メモリと並行処理を扱え、最大停止時間をミリ秒単位に抑えられると評価している。一方、リアルタイム制御では決定的なタイミングが必要で、ハッシュテーブルのような「ほぼ定数時間」の構造は使えないと説明した。
- コーディングエージェントは「時々幻覚を起こす IDE」で進歩しているが、熟練者には及ばず、API ドキュメント検索のヘルプ的用途で価値があるという見方を示した。

## 章立て

- [00:00] **Gosling の少年時代と衛星ソフト** — カナダ生まれの Gosling が、カルガリー大学のデータセンターに魅了され、高校時代に ISIS-2 衛星の地上局ソフトを書いた経緯を語る。
- [03:14] **家電向け試作から Java の着想へ** — Sun で家電メーカーと進めたプロジェクトと、ネットワークを重視する Sun の姿勢、C/C++ での試作中に開発ツールの問題に気づいた流れを説明する。
- [07:32] **信頼性・抽象マシン・算術の厳密さ** — 独自ハードウェアへの不満、セキュリティとバグ、IEEE 754 や strictfp、sin/cos の範囲縮約といった浮動小数点の混乱を語る。
- [14:58] **仮想マシンの多様性とライブラリ** — スマートカードから携帯電話、データセンターまで VM の違いはライブラリ集合にあったこと、大規模チームでの HTTP 実装の乱立などを述べる。
- [17:28] **C のポインタ問題とバイナリ可搬性** — ポインタによるメモリ破壊の苦労、データセンター中心への路線変更、クラスファイル単位の再利用と増分ビルドの利点を語る。
- [22:59] **Oracle 後の Java とガベージコレクタ** — Oracle による買収後の評価と、最新 GC の低停止時間、リアルタイム制御における決定性の重要性を説明する。
- [27:30] **Java への賛否と厳格さ** — 戻り値チェックの怠慢や例外機構をめぐる、Java が好かれたり嫌われたりする理由についての考えを述べる。
- [31:40] **コーディングエージェントと API の互換性** — AI コーディングツールへの見方、Blender プラグインでの経験、Java の「壊さない」文化を語る。

## 解説記事

Stack Overflow Podcast の今回のゲストは、Java の生みの親として知られる James Gosling。Sun Microsystems で家電メーカーと進めたプロジェクトからなぜ Java が生まれたのか、その設計思想と現在の Java への評価、AI コーディングエージェントへの見方を、本人が語った回である。

#### 衛星ソフトから始まったキャリア

Gosling は 1955 年カナダ・アルバータ州生まれ。自宅がカルガリー大学の近くにあり、父の友人に連れられてデータセンターを見て衝撃を受けたという。学生のふりをして図書館で独学し、高校時代には物理学科から依頼されて ISIS-2 衛星の地上局ソフトを開発した。データストリームの復号や画像化、誤り訂正などを担当したと述べている。多くの人がゲームでコンピュータに入るのに対し、自分は衛星だったと笑う。

#### 誰にも頼まれず始まった Java

Gosling は「プログラミング言語を作るよう頼まれたことはない」と強調する。カーネギーメロン大学で博士号を取得した後 Sun に入り、エレベーターから家電までを作る企業と試作プロジェクトを進めていた。Sun は全コンピュータにネットワークアダプタを載せた最初の会社で、ネットワークを中心に据える信念があったという。一方、家電メーカーは相互接続の必要性に気づき、各社が独自のネットワーク技術を作り直していた。彼はそれらが過去に失敗した方式の繰り返しだと感じた。

C/C++ で試作を進めるうち、問題の多くがソフトウェア開発ツール、特にコンパイラ技術にあると気づき、数人の友人と取り組み始めた。これが Java の出発点である。

#### 信頼性と抽象マシン

家電業界の第一原則は「顧客を危険にさらすな」であり、当時の一般的なコンピュータ業界が信頼性を性能と引き換えにしていたのとは対照的だった。Gosling によれば、セキュリティ脆弱性の大半は設計ではなく単純なバグで、メモリ破壊や整数と浮動小数点の取り違えが多い。そのためガベージコレクション、強い型付け、算術の厳密な定義が重要になった。

当時の言語仕様は算術を「実装依存」としていた。IBM や DEC など各社が浮動小数点を別々に実装していたためで、IEEE 754 に収束したものの、Intel の早期実装による丸めの不一致が strictfp キーワードの背景にあったという。sin/cos の範囲縮約で不正確な円周率が使われていた例も挙げ、ソフトの移植性の問題が数値計算の深部に及んだと振り返る。

また、CPU ごとに独自仕様が乱立し、購買担当者や管理職が頭を悩ませていた。Gosling は修士時代に失敗した論文案の発想から、物理プロセッサとソフトの依存を切る抽象マシンを着想した。

#### VM、バイナリ可搬性、そして C への反省

スマートカードの VM、携帯電話向けの VM、データセンター向けの VM は、VM 本体よりライブラリ集合が異なっていたという。大規模チームでは、HTTP スタックが 3〜6 個も併存する Java アプリがあるなど、人々が対話しないことによる問題が起きると指摘した。

C のポインタについては、メモリリークや破壊バグの追跡に人生の多くを費やした経験が動機だと語る。ループの境界ミスで隣のオブジェクトのヘッダを壊し、症状が遥か後に現れる例を挙げた。また、クラスファイルのようなバイナリ単位の再利用により、ビルドが繊細で時間がかかる状況でも増分ビルドで 10 秒後に実行できたと述べ、ソース配布とフルビルドに戻る昨今の傾向、特に Rust の長いビルドに懸念を示した。

#### 現在の Java と厳格さへの賛否

Oracle による Sun 買収は当初懸念されたが、Gosling は予想以上に良い仕事をしていると評価する。特にコード最適化とガベージコレクタを称賛し、大容量メモリと並行処理を扱え、停止時間をミリ秒単位に抑えられると語った。信頼性では手動の malloc/free を上回るが、純粋な CPU 性能では一概に言えないとも付け加えた。

さらに、リアルタイム制御ではハッシュテーブルのように「ほぼ定数時間」の構造でも稀なタイミングのぶれが許されないと説明した。ジェットエンジン制御のような分野を引き合いに出し、決定的なタイミングの重要性を強調した。

Java への好悪が分かれる理由については、厳格さを挙げる。C では open の戻り値を確認しないため、ログが空のまま気づかないといった失敗が起きる。Java の例外は早期に問題を知らせるが、それを煩わしいと感じる人もいると述べた。

#### AI コーディングエージェントについて

Gosling はツールへの関心が高まることを歓迎し、エージェントを「時々幻覚を起こす IDE」と表現した。1 年ほど前は生成コードがひどかったが改善しており、それでも熟練者には遠く及ばないという。初心者の助けにはなるが、バグも多く、強力なツールが腕を上げるわけではないとの立場だ。自身は Blender のプラグイン開発で、API ドキュメントの不足や Web 上の情報の古さに悩み、ヘルプシステムのように使っている。Java は「壊さない」ことを重視して API を慎重に進化させてきたと対比した。

#### まとめ

本回は、Java が汎用言語の野心ではなく、信頼性を求める家電の現場での実際の痛みから生まれたことを示している。メモリ安全性、型付け、移植性、互換性維持といった今日の議論の原点を、当事者の視点で確認できる。AI がコードを書く時代にも、「確実に毎回動く」ことを重視する姿勢は、エンジニアにとって示唆に富む。なお、番組では最近公開された Java のドキュメンタリーも紹介されている。

> この要約・解説記事は、元の音声の文字起こしをもとに AI（Claude）が日本語で作成したものです。出典: The Stack Overflow Podcast「Elevators, toasters, and the birth of Java」
