JavaScriptが登場したのは1995年。「Netscape Navigator 2.0」というWebブラウザに実装されたのが最初です。当初は「Webページに動きを付けるもの」という程度にしか見られていませんでした。むしろJavaScriptを使ったWebページは、当時の非力なパソコンでは処理の負荷が高く、忌み嫌われることすらありました。

 そんなJavaScriptが脚光を浴びるようになったのは、JavaScriptで高機能なWebページを実現する「Ajax」(Asynchronous JavaScript+XML)という技術が登場したのがきっかけです。米GoogleがAjaxを使って実現した「Gmail」や「Googleマップ」といったサービスが、JavaScriptの実力を世に知らしめました。JavaScript自体に大きな変化があったわけではなく、潜在的に持っていた本来の能力が認められるようになったのです。

 そして2014年、JavaScriptの力を100%発揮したWebアプリを作れるようになるHTML5ついに登場します。HTML5には、位置情報を利用するための「Geolocation API」、Webページに図形を描画するための「Canvas 2D Context」、サーバーとのリアルタイム通信を実現する「WebSocket API」といった技術が含まれます。これらはいずれも、JavaScriptで利用することを前提としたAPIです。JavaScriptはもはや、HTML5でWebアプリを開発する人にとって「知っていて当然の言語」であり、まさに「現代プログラマの必須知識」なのです。

関数そのものがオブジェクト

 JavaScriptを理解するカギは関数にあります。「関数なら知ってるよ」と思う読者がいるかもしれませんが、JavaScriptの関数は、様々な側面を持っています。

 まず、JavaScriptの関数は、変数のスコープ(有効範囲)を提供するものです。ある程度の規模のソフトウエアを開発するには、変数のスコープを適切に管理する必要があります。

 また、JavaScriptの関数は、それ自体がオブジェクトです。オブジェクトであるため、数値や文字列といったデータと同じく、変数に格納したり、引数として他の関数に渡したりすることが可能です。

 JavaScriptの関数は、クラスとして利用することもできます。JavaScriptのクラスは、Javaなどの他のオブジェクト指向言語のクラスとは少し異なります。関数がクラスの役割を持てるのです。正確にはJavaScriptにはクラスという概念はありませんが、クラスを想定することでJavaScriptのオブジェクト指向を理解しやすくなります。