- 今年、JavaScriptの30周年を迎えるにあたり、Denoがこれまでの歴史を簡潔に要約
- JavaScriptは10日で開発されたスクリプト言語として始まり、現在では世界で最も人気のある言語として定着
- JavaScriptがどのように発展してきたのか、そして今後どこへ向かうのかを示す、いくつかの重要な歴史的瞬間を紹介
A brief history of JavaScript (1994-2025)
[1994]
-
Netscape Navigator 1.0のリリース
- 1994年12月、Netscape Navigator 1.0をリリース
- それまでのブラウザより高速で、GUIを備えていたことが人気の要因
- HTML 2.0のサポートとともに、のちにJavaScriptがこのブラウザ上で動作する基盤が整えられた
[1995]
-
JavaScriptの誕生
- 1995年5月、Brendan Eichが10日でJavaScriptの草案を開発
- 当時人気だったJavaに似た構文を持つスクリプト言語を求められ、開発された
- 名称はマーケティング目的でJavaScriptに決定
-
NetscapeとSunの公式発表
- 1995年12月、JavaScriptを**「Webのための軽量オブジェクト指向スクリプト言語」**として発表
- 28社の技術企業の支持を受けて発表され、エンタープライズ環境まで視野に入れた言語として位置付けられた
[1996]
-
Microsoftの対応
- 1996年3月、MicrosoftがInternet Explorer 3にJScriptを搭載
- JScriptはActiveXと連携し、Excelのようなアプリケーションを制御できた
-
JavaScript 1.0を搭載したNavigator 2.0のリリース
- 同年3月、Netscape Navigator 2.0でJavaScript 1.0が正式デビュー
- **DOM(Document Object Model)**の概念がこの時点で始まった
[1997]
-
ECMAへの標準化提案
- 1997年6月、NetscapeがJavaScriptをECMA Internationalに標準化提案
- MicrosoftのJScriptとの互換性問題を解決する目的
- ECMA-262という仕様が作られ、名称はECMAScriptに指定
- TC39委員会が構成され、言語の発展管理が始まる
[1998]
-
Mozillaプロジェクト始動
- 1998年1月、Microsoftのブラウザ市場独占に対抗してNetscapeがソースコードを公開
- プロジェクト名は「Mozilla」で、のちにFirefox、Rustなど多様なオープンソースの成果へとつながった
-
ECMAScript 2の発表
- 1998年9月、ECMAScript 2を正式発表
- 新機能はなかったが、仕様の一貫性と洗練された文書化が主な目標だった
[1999]
-
IE5とXMLHttpRequestの導入
- 1999年3月、IE5で
XMLHttpRequestを導入
- これはのちのAJAX技術の基盤となった
-
JSDocの登場
- 1999年4月、JavaScript文書化のためのJSDocを導入
- JavaベースのJavadocの影響を受けており、現在もドキュメント生成ツールとして使われている
-
ECMAScript 3の発表
- 1999年12月、ECMAScript 3を正式発表
do-while、正規表現、文字列メソッドの追加、例外処理などにより、言語の本格的な成長基盤を整備
- その後10年以上にわたり、Web標準JavaScriptの事実上の基準として使われた
[2001]
-
JSONの初登場
- 最初のJSONメッセージが送信された
- Webページ内スクリプトで
{ to, do, text }形式のオブジェクト構造を使用
- JavaScriptベースの軽量メッセージフォーマットとして、その後Web API通信の標準となった
[2002]
-
JSLintの導入
- Douglas Crockfordが静的構文チェックツールJSLintを発表
- JavaScriptコードの品質向上に貢献し、その後の著書**「JavaScript: The Good Parts」**へとつながった
-
Firefoxの前身Phoenix 0.1のリリース
- Mozillaコミュニティが既存製品群の重さに反発し、軽量ブラウザPhoenixを開発
- タブブラウジング、ポップアップブロックなど革新的機能を提供 → のちにFirefoxへ発展
[2003]
-
AppleのSafariとWebKit発表
- SafariブラウザとWebKitエンジンの導入により、MacのMicrosoft依存から脱却
- のちにiPhoneのMobile Safariの基盤となった
[2004]
-
GmailとAJAX
- GmailのAJAXベースのインターフェースにより、新時代のWebアプリUXの基準を提示
- ページ全体をリロードせずにサーバーとデータをやり取り → Web 2.0時代の幕開け
[2005]
-
AJAXという用語の確立
- Jesse James Garrettが「AJAX」という概念を明文化
- JavaScript + XMLの組み合わせを通じて非同期サーバー通信の構造を確立
-
Mozilla DevMo始動 → MDNへ発展
- 標準ベースのJavaScript文書化ハブMDNが始動
- 断片化していたブラウザ対応ドキュメントに統一的な基準を提供
[2006]
-
jQueryの登場
- John ResigがjQueryプロジェクトを開始
- DOM操作、イベント処理、AJAXなどクロスブラウザ問題の解決に大きく貢献
- 簡潔なAPIで爆発的に普及
[2007]
-
iPhone発売とFlash非対応
- Apple iPhone発表、SafariはFlash非対応
- これによりモバイル環境でHTML+JavaScriptベースのコンテンツへの転換が加速
[2008]
-
Netscape Navigator正式終了
- AOLがNetscapeの開発を終了し、第1次ブラウザ戦争が終結
- MSのIE独占は反トラスト訴訟へとつながった
-
JavaScript: The Good Parts刊行
- Crockfordの著書が、JavaScriptを専門的な開発言語として再評価するきっかけを提供
-
Google ChromeとV8エンジンの発表
- ChromeのリリースとともにV8 JavaScriptエンジンを公開
- JITコンパイル、ガベージコレクション最適化により性能が大幅向上
- のちにNode.jsなどサーバーサイドへの拡張基盤を整備
[2009]
-
CommonJSの登場
- ブラウザ以外の環境(サーバーなど)でモジュール化されたJSコード利用の標準化を試みる
- これはのちにNode.jsエコシステムのモジュール構造の基盤となった
-
Node.jsプロジェクト開始
- Ryan DahlがNode.jsの開発に着手
- JavaScriptをサーバー環境で実行できるようにし、フルスタック言語へと拡張
-
OracleによるSun Microsystems買収
- JavaとともにJavaScriptの商標権もOracleへ移管
- JavaScriptという名称をめぐる商標問題が発生
-
Express.jsの登場
- Express.jsの最初のコミット、Node.jsベースのWebフレームワーク
- REST API構築を中心としたミドルウェア構造を提案
-
ECMAScript 5の発表
- strict mode、
JSONサポート、Arrayメソッド追加などモダンJS機能の基盤を整備
-
CoffeeScriptの登場
- 簡潔な構文、アロー関数、分割代入など、ES6以前の構文改善を試みた
- のちのJavaScript構文の発展に間接的な影響を与えた
[2010]
-
npm 1.0のリリース
- JavaScript向けパッケージマネージャーnpmが正式リリースされ、コード共有と再利用の標準化が始まる
- 現在は300万件を超えるパッケージを持つ、世界最大のオープンソースレジストリへと成長
-
WebStorm 1.0のリリース
- JetBrainsが初のJavaScript専用IDEをリリース
- 静的解析、エラー検出、自動補完、デバッグ機能を統合提供
-
AngularJS と Backbone.js の登場
- SPA フレームワークブームの始まり
- Angular は 宣言型/依存性注入 中心、Backbone は 手続き型/簡潔さ 中心
- この時期から、フレームワークの 頻繁な登場と消滅 という現象が見られるようになった("Framework churn")
[2011]
-
Node.js の Windows 移植
- Joyent と Microsoft の協業により、Node.js が Windows でも動作するようになった
- libuv ライブラリの開発 → 非同期 I/O の統合プラットフォームを提供
- その後の TypeScript、VSCode、Azure 戦略へと続く、MS のオープンソースへの取り組みの始まり
[2012]
-
Webpack 登場
- Web アセットのバンドリングツールとして モジュールシステムをクライアントへ拡張
- その後、React、Angular、Vue などの中核ビルドシステムとして採用
-
TypeScript 0.8 公開
- Microsoft が 静的型ベースの JavaScript スーパーセット を発表
- 大規模プロジェクトに適した構造を提供し、その後 ES 標準にも影響
[2013]
-
Electron の前身 Atom Shell 始動
- HTML/CSS/JS でデスクトップアプリを開発可能
- Slack、Visual Studio Code などで採用され、デスクトップ開発の手法を変えた
-
asm.js 公開
- C/C++ コードを JS に変換し、ブラウザ内で 高性能計算 を可能に
- その後 WebAssembly へ発展
-
MEAN スタックの定義
- MongoDB + Express + Angular + Node.js の組み合わせを命名
- JavaScript ベースのフルスタック開発手法が拡大
-
React 公開
- Facebook が社内利用後にオープンソースとして公開
- コンポーネントベース UI 開発パラダイム が定着
-
ESLint 開発開始
- Nicholas C. Zakas によって始められた 拡張可能なリンティングツール
- 既存のリンターよりカスタマイズ性が高く、急速に普及
-
Gulp リリース
- 設定中心の Grunt と異なり コードベースのストリーミングビルドツール
- JavaScript でビルド作業を自動化する流れを形成
[2014]
-
Vue.js リリース
- Evan You が発表した プログレッシブ UI フレームワーク
- React の宣言型 UI と Angular のテンプレート機能を折衷
-
Express.js 買収
- StrongLoop が Express.js を買収 → その後 IBM に買収される
- コミュニティの独立性への問題提起から Koa など後続フレームワーク が登場
-
Babel.js 始動(旧 6to5)
- 最新の JS 構文を旧式ブラウザでも実行 できるようにした
- すべてのフレームワークの標準トランスパイラとして定着
-
Meteor 1.0 リリース
- リアルタイムな単一スタック Web アプリ開発ツールとして注目
- その後 GraphQL、Firebase などのリアルタイム技術に影響を与えた
-
Facebook の Flow 公開
- 静的型検査ツールとして JS のエラーを事前に検出
- その後 TypeScript の成長により利用率は低下
-
AWS Lambda 発表
- JavaScript(Node.js)ベースの サーバーレスコンピューティング を導入
- イベント駆動の関数実行 により、インフラ管理なしでバックエンド実装が可能に
-
io.js フォーク
- Joyent の遅い Node.js リリースに反発し、コミュニティが io.js を分岐
- その後 2015 年に Node.js へ再統合
[2015]
-
Jamstack という用語の登場
- JavaScript + API + Markup の組み合わせを強調
- SSR と SSG が注目され、静的サイトジェネレーターが台頭
-
Node.js Foundation 設立
- io.js との統合を含め、コミュニティガバナンスを整備
- IBM、Microsoft など主要企業が参加
-
GraphQL ローンチ
- Facebook が開発した API クエリ言語
- 宣言型方式、強い型付け設計、サーバーリクエスト最小化が特徴
-
Redux リリース
- React の状態管理のための 予測可能な状態コンテナ
- その後 Vue、Angular などでも採用
-
WebAssembly 発表
- ブラウザで C/C++ などの高性能コードを実行可能 に
- asm.js の後継として、Web の汎用実行環境として位置付けられた
-
Atom 1.0 リリース
- GitHub が作った Electron ベースのハッカブルなテキストエディタ
- VSCode に直接的な影響を与えた
-
ECMAScript 6(ES2015)正式発表
import/export, let/const, Promise, fetch など 大規模な文法改善
- 現代 JavaScript の基盤となるバージョン
-
Node.js と io.js の統合
- Node.js v4.0 の発表により、両プロジェクトが再び一つに統合
- 長期サポート(LTS)と、意味のあるバージョンポリシーを確立
[2016]
-
Microsoft、Chakra エンジンをオープンソース化
- Edge ブラウザの JS エンジンである Chakra をオープンソース化
- 開発者コミュニティの関心を集めたが、その後 V8 優勢に押されて中止
-
Leftpad 事件発生
left-pad モジュールの削除により、大規模な パッケージ依存性崩壊事件 が発生
- npm のポリシー変更の契機に
-
VSCode 1.0 リリース
- Electron と TypeScript ベースの 軽量 IDE
- 高速さ、拡張性、優れた JS/TS サポートで急速に人気化
-
ECMAScript 2016 発表
** 演算子と array.includes() などの小規模アップデート
-
Angular2 発表
- AngularJS とは完全に異なる TypeScript ベースのコンポーネントアーキテクチャ
- AOT コンパイルとセキュリティ強化により、エンタープライズの選択肢として浮上
-
Next.js 1.0 リリース
- React ベースの サーバーサイドレンダリングフレームワーク
- SEO とパフォーマンスを考慮した フルスタック React 開発の標準化 を推進
[2017]
-
Temporal 提案の初期コミット
Date オブジェクトの問題点を解決するための Temporal API 提案
- 2021 年に ECMAScript 標準への採用が承認され、現在は一部環境のみでサポート
-
Prettier 1.0 リリース
- 一貫したコードスタイルを自動適用 するフォーマッタ
- Python の Black や Rust のフォーマッタ登場にも影響
-
ECMAScript 2017 公開
async/await, Object.entries(), Object.values() など現代的な JS 機能を導入
fetch() 利用の一般化
-
Yarn リリース
- npm の遅さと衝突を解決するためのパッケージマネージャ
yarn.lock、並列インストール、キャッシュなど革新的機能を導入
-
Cloudflare Workers リリース
- エッジコンピューティング時代の幕開け
- サーバーレスコードを世界中に分散実行 可能に
[2018]
-
Puppeteer 1.0 リリース
- ヘッドレス Chrome ベースのブラウザ自動化ツール
- Node.js フレンドリーな API により、Selenium より簡潔さを提供
-
TensorFlow.js リリース
- ブラウザで機械学習を実行可能
- WebGL/WebGPU ベースのリアルタイム AI アプリを実装
-
Smooshgate
Array.flatten の名称衝突により flat() へ変更
- MooTools との互換性問題に起因
-
Ryan Dahl の Deno 発表
- Node の問題点の振り返りとともに Deno ランタイムを初公開
-
ECMAScript 2018 公開
promise.finally(), async iteration, オブジェクトの rest/spread を導入
[2019]
-
OpenJS Foundation 発足
- Node.js Foundation と JavaScript Foundation を統合
- サーバー/クライアントプロジェクトのガバナンスを統合
-
Node.js v12: ESM 実験的サポート開始
.mjs, type: module などを通じて ES モジュールの実験導入
-
ECMAScript 2019 公開
Object.fromEntries(), String.prototype.trimStart() などを追加
-
Node.js v13.2: ESM 正式安定化
[2020]
-
SpaceX Dragon、JSで宇宙進出
- ChromeベースのタッチスクリーンインターフェースにJavaScriptを使用
-
Deno 1.0 リリース
- TypeScript標準サポート、パーミッションモデル、HTTP import など革新的なアプローチ
-
Adobe Flash 公式終了
[2022]
-
Deno、TC39に加盟
-
IE11 サポート終了
-
ECMAScript 2022 発表
top-level await、クラス静的ブロックなどを追加
[2023]
-
Bun 1.0 リリース
- Zigで実装された超高速Node.js代替ランタイム
- npm互換、ビルドツール統合
[2024]
-
Node.js マスコット「Rocket Turtle」選定
-
ECMAScript 2024 公開
toWellFormed() などUnicode処理を強化
-
JSR レジストリ公開
- Denoチームによる モダンECMAScriptモジュール専用レジストリ
- TypeScript、Deno、Bun、Cloudflare Workersと互換
-
FreeJavaScript 運動開始
- OracleにJavaScript商標の返還を求めるキャンペーン
- Brendan Eich など主要人物が署名
-
Deno 2 リリース
- Node互換性を改善し、広告展開まで行い ランタイム戦争が本格化
[2025]
-
TypeScriptのGo移植を発表
- 10倍以上高速な性能を目標に
tsgo プロジェクトが進行中
- TypeScript 7.0から正式採用予定
-
Copilot Chat のオープンソース化を表明
- VSCodeを オープンソースAI開発IDE に転換するMicrosoftの戦略を発表
[まとめ]
- JavaScriptは単なるスクリプト言語として始まり、Webフロントエンド・バックエンド・機械学習・宇宙航空・AI開発IDE までを包含する 汎用開発言語 へと発展した
- オープンソースコミュニティ、継続的な文法進化、そしてランタイム革新がその成長を牽引しており、今後も より速く、より賢いツールとともにWebを超えてさらに広い領域へ拡大 していく見込みだ
10件のコメント
もはや言語ではなく実装体の標準になってしまった……良くも悪くもレガシーまで引き継がなければならない文法になったのではないかと思います。
良い資料をありがとうございます。
IE 3はほとんどゴミのような出来で、当時はNetscape Navigator 3がほぼ標準でしたが、IE 4が登場して状況がひっくり返りました。しかもIE 4はWindowsに標準搭載されていました。
Netscape Navigator 4も出ましたが、状況を覆すほど優れてはいませんでした。なのでIEのシェアが上がり続けたわけです。
Netscapeがオープンソース化されてMozillaプロジェクトが生まれ、Phoenixのベータ版が出た頃には、何かが大きく変わったとユーザーが感じ始めたはずです。私もその一人でした。商標の問題でFirefoxに名前を変え、この頃からFirefoxがIEのまともな競争相手として定着するようになります。
名前はPhoenix → Firebird → Firefoxの順に変わったはずです。Firebirdというデータベースがすでにあったからでしょう.
なんとなくずっと読んでいたら、途中から胸が込み上げてきましたね
ものすごく最近のことみたいなのに、ものすごくまた昔のことのようで……
原文がとてもよく整理されていますね。スクリーンショットや懐かしのコードまで……! Denoもさらにうまくいってほしいです。笑
JavaScriptの発展は、Node.js のリリース前と後に分けられるようですね。
共感します
Javaとともに、JavaScriptの商標権もOracleに移管されたんですね。この点は初めて知りました。
そもそもJSの商標権はSunが保有していましたが、Sunが買収されたことで、JSの商標権(およびMySQLなど)もOracleに移管されたんですよね。
原文には画像や各種コードも多いので、あわせてご覧になるとよいです