JavaScript (1995年)(ジャバスクリプト)
JavaScriptは1995年5月Netscape Brendan Eich が10日間で開発したWeb ブラウザ用スクリプト言語で動的型付け・ECMAScript 標準化 (1997年) ・Node.js (2009年・サーバサイド) ・React/Vue/Angular 採用しWeb 開発の中核となった現代最も使われる言語。
JavaScript (1995年)
概要
JavaScriptは1995年5月Netscape Communications Brendan Eich (後Mozilla 共同創業者・2014年Brave Browser CEO) が10日間で開発したWeb ブラウザ用スクリプト言語で動的型付け・First-class Function (Lisp 由来) ・Prototype-based OOP (Self 言語 1987年由来・class とは別)・ECMAScript 標準化 (1997年ECMA-262 Ed.1) ・Node.js (2009年Ryan Dahl・サーバサイド) ・V8 Engine (2008年Google Chrome・JIT) ・React (2013年Facebook) /Vue (2014年Evan You) /Angular (2010年Google) 採用しWeb 開発の中核となった現代最も使われる言語。Stack Overflow 2024年Developer Survey で12年連続最多採用言語 (65% の開発者使用) ・ECMAScript 2015 (ES6・大幅刷新) ・ES2017 (async/await) ・ES2020 (Optional chaining) ・現代ES2024 と継続改良。
主な特徴・仕組み
- 発表: 1995年5月Netscape Communications・Brendan Eich
- コードネーム: Mocha→LiveScript→JavaScript (Sun Microsystems Java マーケ便乗・1995年12月)
- 言語パラダイム: マルチ (関数型+OOP (Prototype-based)+命令型・後Class ES6 2015年)
- 型付け: 動的型付け (Weak Typing・型強制変換)
- 解釈/JIT 実行: ブラウザ V8 (Chrome) ・SpiderMonkey (Firefox) ・JavaScriptCore (Safari) ・後Edge Chakra (廃止)
- First-class Function: 関数を値として扱える (Lisp/Smalltalk 影響)
- Prototype-based OOP: Class ベースでない継承 (Self 1987年由来)・後Class 構文 (ES6 2015年・実態はPrototype 糖衣構文)
ECMAScript 主要バージョン (1997-2024年)
| バージョン | 年 | 主な追加機能 |
|---|---|---|
| ES1 | 1997 | 初の ECMA-262 標準化 |
| ES2 | 1998 | エディトリアル修正 |
| ES3 | 1999 | 正規表現・try/catch・第1次安定版 |
| ES5 | 2009 | strict mode・JSON・Array methods (forEach/map/filter) |
| ES6 / ES2015 | 2015 | let/const・arrow function・class・Promise・Module・Generator |
| ES2016 | 2016 | exponentiation operator (**) |
| ES2017 | 2017 | async/await・Object.entries |
| ES2018 | 2018 | Rest/Spread・asynchronous iteration |
| ES2020 | 2020 | Optional chaining (?.)・Nullish coalescing (??)・BigInt |
| ES2021 | 2021 | logical assignment・String.replaceAll |
| ES2022 | 2022 | Top-level await・private fields |
| ES2023 | 2023 | Array.findLast・Array.toSorted (immutable) |
| ES2024 | 2024 | Object.groupBy・改良RegExp |
10日間開発の伝説 (1995年5月)
JavaScript 史上最も有名なエピソード:
- Netscape 命令: 1995年Netscape が Brendan Eich に「ブラウザ向けスクリプト言語を作れ」依頼
- 期限: わずか10日間 (1995年5月初頭)
- 結果: Mocha (後JavaScript) 言語仕様+初代実装完成
- 批判: 急ぎ実装のため数々の言語的欠陥 (型強制・undefined vs null 等) ・「Wat」(WTF) ネタの源
- 歴史的意義: 「短期間で世界中で使われる言語誕生」の極端例・現代JavaScript も基本は1995年の構造継承
V8 Engine (2008年-)
Google Chrome のJavaScript エンジン革新:
- V8 (2008年9月Google Chrome 1.0): Lars Bak (Sun HotSpot 開発者) 主導・JIT コンパイラ
- JIT 革命: JavaScript を実行時にネイティブ機械語コンパイル・性能大幅向上 (10-100倍)
- Node.js (2009年): Ryan Dahl・V8 をブラウザ外で実行・JavaScript サーバサイド開発実現
- 影響: 2008年以降JavaScript の主要用途がブラウザのみからサーバ/Desktop/Mobile (React Native)/IoT 等へ拡大
- 競合: SpiderMonkey (Firefox)・JavaScriptCore (Safari)・Chakra (旧Edge 廃止 2020年Chromium 移行)
Node.js (2009年-)
JavaScript サーバサイド革命:
- Node.js (2009年5月Ryan Dahl): V8 ベース・非同期イベントループ・サーバサイドJavaScript
- NPM (Node Package Manager・2010年): 200万+ パッケージ (PyPI/CPAN 凌駕)
- 採用: LinkedIn (2011年初期Web サーバ移行) ・Netflix・Uber・PayPal・Walmart
- 後継: Deno (2018年Ryan Dahl・TypeScript ネイティブ)・Bun (2022年・高速)
- 現代: 全Web 開発者のサーバサイド標準言語の1つ
Frontend フレームワーク (2010年代-)
JavaScript Frontend 革命:
- AngularJS (2010年Google): 初期SPA フレームワーク・MVC 双方向バインディング
- React (2013年Facebook Jordan Walke): Virtual DOM・コンポーネントベース・現代主流
- Vue (2014年Evan You・旧Google Angular チーム): React+Angular 良い所取り
- Angular 2+ (2016年Google): AngularJS 完全書直し・TypeScript ベース
- Svelte (2016年Rich Harris): コンパイル時最適化・無VDOM
- Next.js (2016年Vercel): React SSR フレームワーク・現代主流
- SvelteKit/Nuxt/Astro: 各フレームワーク派生
TypeScript (2012年Microsoft)
JavaScript の静的型付け拡張:
- TypeScript (2012年10月Microsoft Anders Hejlsberg・C# 設計者): JavaScript に型システム追加
- 動作: TypeScript→JavaScript トランスパイル・実行時はJavaScript
- 採用: Angular・Vue 3・大半の現代Web フレームワーク・Node.js プロジェクト
- 現代評価: 「現代JavaScript の事実上標準」・大規模プロジェクトで必須
採用システム (1995-2024年)
- Web フロントエンド: 全現代Web サイト (HTML+CSS+JavaScript)
- Web サーバ: Node.js (LinkedIn・Netflix・PayPal・Walmart)
- モバイル: React Native (Facebook 2015年)・Ionic Capacitor (2013年)
- デスクトップ: Electron (2013年Atom→VS Code・Slack・Discord・WhatsApp・Microsoft Teams)
- IoT: Espruino・Tessel
- ゲーム: Phaser (2D) ・Three.js (3D) ・Babylon.js
- AI/ML: TensorFlow.js (2018年・ブラウザ AI 推論)
関連技術との違い
| 項目 | Perl (1987) | Java (1995) | JavaScript (1995) | TypeScript (2012) |
|---|---|---|---|---|
| 用途 | Unix スクリプト | エンタープライズ | **Web (Frontend+Backend) ** | Web (Frontend) ・大規模 |
| 型付け | 動的 | 静的 | **動的 (Weak Typing) ** | 静的 (Strong・JavaScript 拡張) |
| 実行 | インタプリタ | JVM Bytecode | ブラウザ/Node.js JIT | JavaScript トランスパイル |
| 用途範囲 | テキスト処理 | 企業システム/Android | Web 全般+Node.js+モバイル+Desktop | TypeScript→JavaScript |
| 採用率 (2024) | 縮小 | 高 | **最多 (65% Stack Overflow) ** | 急成長 |
よくある質問 (FAQ)
Q1: JavaScript と Java は同じか? A: 完全に別物・名前のみ似ている。Sun Microsystems の Java マーケティング便乗で1995年12月「JavaScript」改名・実態はLiveScript の進化。Java は静的型付け JVM 言語・JavaScript は動的型付けブラウザ言語・両者は無関係。Brendan Eich は「Java と類似性を持たせるよう Netscape マーケから圧力」と公言。
Q2: なぜJavaScript は12年連続最多採用言語か? A: (1) Web ブラウザのスクリプト言語唯一の選択肢 (2024年現代も) ・(2) Node.js でサーバサイド・モバイル (React Native) ・Desktop (Electron) と用途拡大・(3) 学習曲線低・初心者親和性・(4) TypeScript で大規模プロジェクト対応・(5) ECMAScript 標準化で進化継続・(6) NPM 200万+ パッケージのエコシステム巨大・全要因で「現代最も使われる言語」確定。
Q3: 現代Web 開発でJavaScript と TypeScript どちらが推奨? A: 新規プロジェクト: TypeScript 推奨 (型安全性・大規模プロジェクト保守容易・現代Web フレームワークが TypeScript 標準採用) 。小規模/個人プロジェクト: JavaScript で十分・学習コスト低。React/Vue/Angular 等の現代フレームワークは TypeScript と JavaScript 両方サポート・段階移行可能。
まとめ
- 1995年5月Netscape Brendan Eich 10日間開発
- Web ブラウザ用スクリプト言語
- ECMAScript 標準化 (1997年)
- Node.js (2009年・サーバサイド)
- React/Vue/Angular で Web 開発中核