第6章 JavaScriptの歴史的なマイルストーン
目次
書籍を購入する
(広告、ブロックしないでください。)

第6章 JavaScriptの歴史的なマイルストーン

JavaScriptが影響を与えるまでには長い時間がかかりました。JavaScript関連の多くの技術は、主流になるまでにしばらくの間存在していました。このセクションでは、JavaScriptの誕生から今日に至るまでに何が起こったかを説明します。全体を通して、最も人気のあるプロジェクトのみが言及されており、たとえ最初に登場したものであっても、多くは無視されています。たとえば、Dojo Toolkitはリストされていますが、同時期に作成されたあまり知られていないqooxdooもあります。また、Node.jsはリストされていますが、Jaxerがその前に存在していました。

1997年—Dynamic HTML
Dynamic HTMLを使用すると、Webページのコンテンツと外観を動的に変更できます。これは、ページDocument Object Model(DOM)(ツリー状のデータ構造)を操作することによって実現します。コンテンツの変更、スタイルの変更、要素の表示と非表示などが可能です。Dynamic HTMLは、Internet Explorer 4とNetscape Navigator 4で最初に登場しました。
1999年—XMLHttpRequest
このAPIを使用すると、クライアント側のスクリプトがHTTPまたはHTTPSリクエストをサーバーに送信し、通常はテキスト形式(XML、HTML、JSON)でデータを取得できます。これは、Internet Explorer 5で導入されました。
2001年—JSON、JavaScriptベースのデータ交換形式

2001年に、ダグラス・クロックフォードはJSON(JavaScript Object Notation)という名前を付け、ドキュメント化しました。その主なアイデアは、JavaScriptの構文を使用してデータをテキスト形式で保存することです。JSONは、オブジェクト、配列、文字列、数値、およびブール値にJavaScriptリテラルを使用し、構造化されたデータを表します。例:

{
    "first": "Jane",
    "last": "Porter",
    "married": true,
    "born": 1890,
    "friends": [ "Tarzan", "Cheeta" ]
}

長年にわたり、JSONは特に構造化されたデータがマークアップではなく表現される場合に、XMLに代わる人気のある軽量な代替手段となっています。当然のことながら、JSONはJavaScriptを介して簡単に利用できます(第22章を参照)。

2004年—Dojo Toolkit、大規模なJavaScriptプログラミング用のフレームワーク
Dojo Toolkitは、必要なインフラストラクチャ(継承ライブラリ、モジュールシステム、デスクトップスタイルのグラフィカルウィジェット用のAPIなど)を提供することで、大規模なプログラミングを容易にします。
2005年—Ajax、ブラウザベースのデスクトップクラスのアプリケーション

Ajaxは、デスクトップアプリケーションに匹敵するレベルのインタラクティビティをWebページにもたらすテクノロジーのコレクションです。Ajaxで実現できるものの印象的な例の1つは、2005年2月に導入されたGoogleマップです。このアプリケーションを使用すると、世界地図をパンおよびズームできましたが、現在表示されているコンテンツのみがブラウザにダウンロードされました。Googleマップが登場した後、ジェシー・ジェームズ・ギャレットは、それが他のインタラクティブWebサイトと特定の特性を共有していることに気づきました。彼はこれらの特性をAjaxと呼びました。Asynchronous JavaScript and XMLの略です。[7] Ajaxの2つの基礎は、バックグラウンドで非同期的にコンテンツをロードすること(XMLHttpRequest経由)と、結果で現在のページを動的に更新すること(Dynamic HTML経由)です。これは、常に完全なページのリロードを実行することからの大幅なユーザビリティの向上でした。

Ajaxは、JavaScriptと動的Webアプリケーションの主流のブレークスルーを示しました。それがどれほど時間がかかったかは興味深いことです。その時点で、Ajaxの要素は何年も利用可能でした。Ajaxの開始以降、他のデータ形式(XMLの代わりにJSON)、他のプロトコル(HTTPに加えてWebソケットなど)が使用されるようになり、双方向通信が可能になりました。しかし、基本的なテクニックはまだ同じです。ただし、Ajaxという用語は最近ではあまり使用されなくなり、ほとんどの場合、より包括的な用語であるHTML5およびWeb Platform(どちらもJavaScriptとブラウザAPIを意味します)に置き換えられています。

2005年—Apache CouchDB、JavaScript中心のデータベース
大まかに言えば、CouchDBはJSONデータベースです。事前にスキーマを指定する必要なく、JSONオブジェクトをフィードします。さらに、map/reduce操作を実行するJavaScript関数を介して、ビューとインデックスを定義できます。したがって、CouchDBはネイティブデータで直接作業できるため、JavaScriptに非常に適しています。リレーショナルデータベースと比較して、マッピング関連のインピーダンスミスマッチはありません。オブジェクトデータベースと比較して、動作ではなくデータのみが保存されるため、多くの複雑さを回避できます。CouchDBは、同様のNoSQLデータベースの1つにすぎません。それらのほとんどは、優れたJavaScriptサポートを備えています。
2006年—jQuery、DOM操作のヘルプ
ブラウザのDOMは、クライアント側のWeb開発で最も面倒な部分の1つです。jQueryは、ブラウザの違いを抽象化し、DOMのクエリと変更のための強力なfluentスタイルのAPIを提供することで、DOM操作を楽しくしました。
2007年—WebKit、モバイルWebを主流に
KDEによる以前の作業に基づいて、WebKitは、Appleが2003年に導入したHTMLエンジンです。これは2005年にオープンソースになりました。2007年のiPhoneの導入により、モバイルWebは突然主流になり、モバイル以外のWebと比較してほとんど制限がなくなりました。
2008年—V8、JavaScriptが高速であることを証明
GoogleがChrome Webブラウザを導入したとき、そのハイライトの1つはV8と呼ばれる高速JavaScriptエンジンでした。これにより、JavaScriptは遅いという認識が変わり、他のブラウザベンダーとのスピード競争につながり、現在も恩恵を受けています。V8はオープンソースであり、広く知られている高速な組み込み言語が必要な場合はいつでもスタンドアロンコンポーネントとして使用できます。
2009年—Node.js、サーバーでのJavaScriptの実装

Node.jsを使用すると、負荷がかかった状態でもパフォーマンスの高いサーバーを実装できます。そのため、イベント駆動型でノンブロッキングI/OとJavaScript(V8経由)を使用します。Node.jsの作成者であるライアン・ダールは、JavaScriptを選択した理由として次の点を挙げています。

  • 「裸であり、I/O APIが付属していないためです。」 [したがって、Node.jsは独自のノンブロッキングAPIを導入できます。]
  • 「Web開発者はすでにそれを使用しています。」 [JavaScriptは、特にWebコンテキストで広く知られている言語です。]
  • 「DOM APIはイベントベースです。誰もがすでにスレッドなしで、イベントループで実行することに慣れています。」 [開発者は非同期コーディングスタイルに慣れています。]

ダールは、イベント駆動型サーバーとサーバーサイドJavaScript(主にCommonJSプロジェクト)に関する以前の作業を基に構築することができました。

JavaScriptプログラマーにとってのNode.jsの魅力は、使い慣れた言語でプログラミングできること以上のものです。クライアントとサーバーの両方で同じ言語を使用できます。つまり、より多くのコード(たとえば、データを検証するため)を共有し、同型JavaScriptなどの手法を使用できます。同型JavaScriptは、クライアントまたはサーバーでWebページを組み立てることに関するものであり、多くの利点があります。ページは、より高速な初期表示、SEO、およびJavaScriptをサポートしていない、または古すぎるバージョンのブラウザーで実行するために、サーバーでレンダリングできます。ただし、クライアントで更新することもでき、応答性の高いユーザーインターフェイスが得られます。

2009年—PhoneGap、HTML5でのネイティブアプリの作成
PhoneGapは、後にAdobeに買収されたNitobiという会社によって作成されました。PhoneGapのオープンソース基盤はCordovaと呼ばれています。PhoneGapの最初の使命は、HTML5を介してネイティブモバイルアプリを実装できるようにすることでした。それ以来、サポートはモバイル以外のオペレーティングシステムにも拡大しています。現在サポートされているプラットフォームには、Android、Bada、BlackBerry、Firefox OS、iOS、Mac OS X、Tizen、Ubuntu、Windows(デスクトップ)、およびWindows Phoneが含まれます。HTML5 APIとは別に、加速度計、カメラ、連絡先などのネイティブ機能にアクセスするためのPhoneGap固有のAPIもあります。
2009年—Chrome OS、ブラウザーをオペレーティングシステムにする

Chrome OSでは、Webプラットフォームはネイティブプラットフォームです。このアプローチにはいくつかの利点があります。

  • すべてのユーザーインターフェイステクノロジーがすでにあるため、オペレーティングシステムの作成がはるかに簡単になります。
  • 多くの開発者は、オペレーティングシステムのアプリを(ほとんど)書く方法をすでに知っています。
  • アプリの管理は簡単です。これにより、インターネットカフェや学校などの公共の施設に役立ちます。

モバイルオペレーティングシステムwebOS(Palmで生まれ、現在はLGエレクトロニクスが所有)の導入はChrome OSの導入よりも前ですが、「ブラウザーをOSとして」という考え方は後者(そのため、マイルストーンとして選択された)の方がより顕著です。webOSはより少なく、より多くあります。少ないのは、携帯電話とタブレットに非常に重点を置いているためです。さらに、JavaScriptでサービスを実装できるように、Node.jsが組み込まれているためです。Webオペレーティングシステムカテゴリのより最近のエントリはMozillaのFirefox OSであり、携帯電話とタブレットをターゲットにしています。Mozillaのwikiは、WebのWebオペレーティングシステムの利点を述べています。

また、取り組みの範囲を絞り、焦点を当てるために、目標にする必要もあります。最近、pdf.jsプロジェクト(プラグインなしでHTML5を介してPDFをレンダリング)で、「HTML5」がPDFのスーパーセットになるために埋める必要のある小さなギャップが明らかになりました。今回は、より大きなステップを踏み出し、Web開発者がiPhone、Android、およびWP7用に構築されたネイティブアプリと同等のアプリをあらゆる面で構築できないようにするギャップを見つけたいと考えています。

2011年—Windows 8、ファーストクラスのHTML5アプリ
MicrosoftがWindows 8を導入したとき、オペレーティングシステムでのHTML5の広範な統合に誰もが驚きました。HTML5アプリケーションは、Windows 8のファーストクラスの市民であり、.NETやC++などの既存のテクノロジーを介して実装されたアプリケーションと同等です。その点を実証するために、Microsoftは、アプリストアやメールアプリなど、いくつかの重要なWindows 8アプリケーションをHTML5(およびネイティブAPIの呼び出し)で作成しました。


[7]Ajaxは略語ですが、頭字語ではないため、AJAXとしてスタイル設定されていません。

次へ:III. JavaScriptの詳細