導入
JavaScriptは、HTMLとCSSと並んで、ウェブサイト開発に使用される3つの主要言語の一つであるプログラミング言語です。HTMLとCSSはウェブサイトの構造とスタイルを定義するのに対し、JavaScriptはウェブサイトに機能や動作を追加することができます。これにより、訪問者はウェブサイトを様々なクリエイティブな方法で操作できるようになります。.
最初のブラウザ
グラフィカルユーザーインターフェースを備えた最初の人気ウェブブラウザであるMosaicは、1993年にリリースされました。技術者以外の人でも簡単に使用できるこのブラウザは、初期のワールドワイドウェブの急速な成長に重要な役割を果たしました。Mosaicの開発者たちはその後、Netscapeを設立し、Netscapeは1994年にさらに高度なブラウザであるNetscape Navigatorをリリースしました。このブラウザは瞬く間に最も広く利用されるようになりました。.
ウェブの黎明期、ウェブページは静的なものであり、ブラウザにページが読み込まれた後は動的に動作することができませんでした。当時急成長を遂げていたウェブ開発シーンにおいて、この制約を解消したいという要望が高まり、1995年、NetscapeはNavigatorにプログラミング言語を追加することを決定しました。この目標を達成するために、Netscapeは2つの道を選びました。1つはSun Microsystemsと提携してJavaプログラミング言語を組み込み、もう1つはBrendan Eichを雇用してScheme言語を組み込むというものでした。.
Netscapeの経営陣はすぐに、Javaに似た構文を持ち、Schemeなどの既存のプログラミング言語との類似性が低い新しい言語を開発することがアイヒ氏にとって最善の選択肢であると判断しました。この新しい言語とそのインタプリタ実装は、1995年9月のベータリリースではLiveScriptと呼ばれていましたが、12月の正式リリースではJavaScriptに名称が変更されました。.
JavaScriptという名称の選択は混乱を招き、Javaと直接関連しているように思わせました。当時、ドットコム・ブームが始まり、Javaが人気の新しい言語だったため、Ich氏はJavaScriptという名称はNetscapeのマーケティング戦略だと考えました。しかし、当初の設計目標は実際には全く別の「一般向けの言語」、あるいは「プログラマー以外の人が動的でインタラクティブなウェブサイトを作成できるようにする」ことでした。もちろん、NetscapeのLiveWire Proウェブ開発ツールやAjax、ServerJS、asm.js、node.jsなどのスタンドアロンJavaScriptランタイムの登場により、もはやこの状況は変わりました。.
Microsoft 承認済み
マイクロソフトは1995年にInternet Explorerを発表し、Netscapeとのブラウザ戦争を引き起こしました。JavaScriptに関しては、マイクロソフトはNavigatorインタープリタをリバースエンジニアリングし、JScriptと呼ばれる独自のインタープリタを開発しました。.
JavaScriptは1996年に初めてリリースされ、CSSとHTML拡張機能も初期サポートされました。これらの実装はそれぞれ、Navigatorの対応するものとは大きく異なっていました。これらの違いにより、開発者はウェブサイトを両方のブラウザで適切に動作させることが困難になり、「Netscapeで最適表示」と「Internet Explorerで最適表示」のロゴが数年間広く使用されることになりました。.
JScriptの出現
1996年11月、Netscapeは、すべてのブラウザベンダーが準拠できる標準仕様の出発点として、JavaScriptをEcma Internationalに提出しました。これにより、1997年6月に最初のECMAScript言語仕様が正式に公開されました。.
標準化プロセスは数年間継続され、1998 年 6 月に ECMAScript 2 が、1999 年 12 月に ECMAScript 3 がリリースされました。ECMAScript 4 の作業は 2000 年に始まりました。.
一方、Microsoftはブラウザ市場においてますます支配的な地位を築き、2000年代初頭にはInternet Explorerの市場シェアは95%に達しました。これは、JScriptがWebにおけるクライアントサイドスクリプティングの事実上の標準となったことを意味します。.
Microsoftは当初、標準化プロセスに参加し、JScript言語にいくつかの提案を実装していましたが、最終的にはECMAの活動への参加を中止しました。そのため、ECMAScript 4は廃止されました。.
成長と標準化
2000年代初頭、Internet Explorerが圧倒的なシェアを誇っていた時期、フロントエンド開発は停滞していました。この変化は、Netscapeの後継であるMozillaがFirefoxブラウザをリリースした2004年に始まりました。Firefoxは多くのユーザーに好評を博し、Internet Explorerから大きな市場シェアを奪いました。.
2005年、MozillaはECMA Internationalに加盟し、ECMAScript for XML (E4X) 標準の策定作業を開始しました。これを受けてMozillaはMacromedia(後にAdobe Systemsに買収)と共同で、ECMAScript 4のドラフトをベースとしたActionScript 3言語にE4Xを実装しました。その目標は、ActionScript 3を新しいECMAScript 4として標準化することでした。この目的のため、Adobe SystemsはTamarin実装をオープンソースプロジェクトとして公開しました。しかし、TamarinとActionScript 3は標準的なクライアントサイドスクリプティングとは大きく異なり、Microsoftの協力なしにはECMAScript 4は実現しませんでした。.
一方、ECMAの活動とは関係のないオープンソースコミュニティでは、非常に重要な開発が進められていました。2005年、ジェシー・ジェームズ・ギャレット氏がホワイトペーパーを発表し、その中で「Ajax」という造語を提唱し、JavaScriptを基盤として、ページ全体をリロードすることなくバックグラウンドでデータを読み込むことができるWebアプリケーションを作成するための一連の技術について説明しました。これが、オープンソースライブラリとそれらを中心として形成されたコミュニティによって牽引されたJavaScriptルネサンスの火付け役となりました。jQuery、Prototype、Dojo Toolkit、MooToolsなど、多くの新しいライブラリが開発されました。.
Googleは2008年に、競合他社よりも高速なV8 JavaScriptエンジンを搭載したChromeブラウザを発表しました。重要なイノベーションはジャストインタイムコンパイル(JIT)であり、他のブラウザベンダーはJIT向けにエンジンを再構築する必要がありました。.
2008年7月、これらの異なる関係者はオスロで会議を開きました。その結果、2009年初頭に、関連するすべての作業を統合し、言語を前進させることで最終合意に達しました。その結果、2009年12月にECMAScript 5標準が発行されました。.
思春期を迎える
この言語に関する意欲的な取り組みは数年にわたって続けられ、2015 年には膨大な数の正式な追加機能と修正を伴った ECMAScript 6 がリリースされました。.
2009年にライアン・ダールによってNode.jsが開発されたことで、ウェブブラウザ以外でのJavaScriptの利用が大幅に増加しました。Node.jsはV8エンジン、イベントループ、入出力APIを統合し、自己完結型のJavaScriptランタイムシステムを実現しています。2018年時点で、Node.jsは数百万人の開発者に利用されており、npmは世界で最も多くのモジュールを備えたマネージドパッケージとなっています。.
ECMAScriptのドラフト仕様は現在GitHubで公開されており、定期的な年次スナップショットを通じてリリースされています。言語の潜在的な改訂は、包括的な提案プロセスを通じて審査されます。今後は、バージョン番号ではなく、開発者が今後の機能の状況を個別に確認するようになります。.
現在のJavaScriptエコシステムには、多くのライブラリやフレームワーク、確立されたプログラミング手法、そしてウェブブラウザ以外でのJavaScriptの重要な利用が存在します。さらに、シングルページアプリケーションやJavaScriptを多用するウェブサイトの増加に伴い、開発プロセスを支援するトランスパイラが数多く開発されています。.
商標
“「JavaScript」は米国オラクル社の商標です。この商標は1997年5月6日にサン・マイクロシステムズ社に付与され、2009年にオラクル社がサン・マイクロシステムズ社を買収した際に譲渡されました。.
ウェブサイトのユーザー側の使用
JavaScriptはウェブにおける主要なクライアントサイドスクリプト言語であり、2022年半ば時点で全ウェブサイトの98%で使用されています。スクリプトはHTMLドキュメントに埋め込まれるか、HTMLドキュメント内で使用され、DOMとやり取りします。.
すべての主要な Web ブラウザには、ユーザーのデバイス上でコードを実行する JavaScript エンジンが組み込まれています。.
スクリプト化された動作の例
- AjaxまたはWebSocketを介して、ページを再読み込みせずにWebページに新しいコンテンツを読み込みます。例えば、ソーシャルメディアのユーザーは、現在のページを離れることなくメッセージを送受信できます。.
- オブジェクトのフェードイン/フェードアウト、サイズ変更、移動などの Web ページのアニメーション。.
- ブラウザゲームをプレイします。.
- ストリーミング メディアの再生を制御します。.
- ポップアップ広告やアラートボックスを作成します。.
- データを Web サーバーに送信する前に、Web フォームの入力値を検証します。.
- ユーザーの行動に関する情報を記録し、サーバーに送信します。ウェブサイトの所有者は、このデータを分析、広告トラッキング、パーソナライゼーションに利用できます。.
- ユーザーを別のページにリダイレクトします。.
- ストレージまたは IndexedDB 標準を介して、ユーザーのデバイスにデータを保存および取得します。.
Webライブラリとフレームワーク
2012 年までに、80% を超える Web サイトがクライアント側スクリプトにサードパーティの JavaScript ライブラリまたは Web フレームワークを使用するようになりました。.
反応する
React(React.js、ReactJSとも呼ばれる)は、コンポーネントベースのユーザーインターフェースを構築するための、無料かつオープンソースのフロントエンドJavaScriptライブラリ[41][42]です。Meta(旧Facebook)と開発者および企業のコミュニティによってメンテナンスされています。.
Reactは、Next.jsなどのフレームワークを用いて、シングルページ、モバイル、またはサーバーレンダリング型のアプリケーションを開発できます。ReactはユーザーインターフェースとDOMへのコンポーネントのレンダリングのみを扱うため、Reactアプリケーションはルーティングやその他のクライアントサイド機能のためにライブラリを利用することがよくあります。Reactの主な利点は、ページの変更された部分のみを再レンダリングし、変更されていないDOM要素の不要なレンダリングを回避することです。.
角張った
Angular(「Angular 2+」とも呼ばれる)[48]は、GoogleのAngularチームと個人および企業のコミュニティが主導する、TypeScriptベースの無料オープンソースシングルページWebアプリケーションフレームワークです。Angularは、AngularJSを開発した同じチームによって完全に書き直されたものです。.
jQuery
2012年、jQueryは最も人気のあるフロントエンドライブラリであり、75%以上のウェブサイトで使用されていました。現在でも広く使用されていますが、その人気は新しいライブラリやフレームワークに追い抜かれています。.
バニラJS
「Vanilla JS」のようなフレームワーク名は、単なる昔ながらのJavaScriptの別名です。これは、ライブラリやフレームワークを一切使用せず、標準的なJavaScript機能のみに依存するウェブサイトのために考案されました。.
その他の用途
JavaScript の用途は、Web ブラウザというルーツを超えて拡大しています。JavaScript エンジンは現在、サーバーサイドの Web サイト展開やブラウザ以外のアプリケーションなど、さまざまなソフトウェア システムに組み込まれています。.
サーバーサイドJavaScriptの利用を促進する初期の試みとしては、Netscape Enterprise ServerやMicrosoft Internet Information Servicesなどが挙げられますが、いずれもニッチな市場に限られていました。サーバーサイドJavaScriptの利用は、2000年代後半にNode.jsなどのアプローチが登場したことで、ようやく拡大し始めました。.
Electron、Cordova、React Nativeなどのアプリケーションフレームワークは、JavaScriptで実装された動作を持つ多くのアプリケーションの作成に使用されてきました。ブラウザ以外のアプリケーションとしては、Adobe AcrobatのPDドキュメントスクリプトサポートや、JavaScriptで記述されたGNOME Shell拡張機能などがあります。.
JavaScript は最近、通常は Node.js を使用して一部の組み込みシステムに登場しています。.
実行環境
JavaScriptは通常、スクリプトが環境(例えばウェブページのDOM)とやり取りするためのオブジェクトとメソッドを提供するために、ランタイム環境(例えばウェブブラウザ)に依存しています。これらの環境はシングルスレッドです。また、JavaScriptはスクリプト(例えば<script>要素)のインクルード/インポート機能もランタイム環境に依存しています。 HTML) را فراهم کند. این به خودی خود یک ویژگی زبان نیست، اما در اکثر پیاده سازی های جاوا اسکریپت رایج است. جاوا اسکریپت پیام های یک صف را در یک زمان پردازش می کند. جاوا اسکریپت یک تابع مرتبط با هر پیام جدید را فراخوانی می کند و یک فریم پشته تماس با آرگومان های تابع و متغیرهای محلی ایجاد می کند. پشته تماس بر اساس نیازهای تابع کوچک شده و رشد می کند. هنگامی که پشته تماس پس از تکمیل تابع خالی است، جاوا اسکریپت به پیام بعدی در صف ادامه میدهد. این حلقه رویداد نامیده می شود که به عنوان “اجرا تا تکمیل” توصیف می شود زیرا هر پیام قبل از در نظر گرفتن پیام بعدی به طور کامل پردازش می شود. با این حال، مدل همزمانی زبان، حلقه رویداد را غیر مسدودکننده توصیف میکند: ورودی/خروجی برنامه با استفاده از رویدادها و توابع پاسخ به تماس انجام میشود. این بدان معناست که، برای مثال، جاوا اسکریپت میتواند یک کلیک ماوس را در حالی که منتظر یک پرس و جو پایگاه داده برای بازگرداندن اطلاعات است، پردازش کند.
結果
今日では、ブラウザ、サーバー、モバイル、デスクトップアプリケーションなど、あらゆる種類のプログラムを書くためにJavaScriptを使うことができます。この記事が、今日のインターネットで最も人気のあるプログラミング言語の歴史を理解する上でお役に立てば幸いです。.









