Ajax全盛のいま、オブジェクト指向ベースのJavaScript知識は不可欠。過去を振り返りつつ、まずは最新開発事情をチェック。
JavaScriptが、いま注目を浴びている。JavaScriptの復権、といってもよい。
最初にJavaScript(当初は「LiveScript」と呼ばれていた)がブラウザに実装されたのが1995年の「Netscape Navigator 2.0」というWebブラウザでのことであるから、すでに登場から10年以上も経過しているわけであるが、そんな枯れた言語がなぜいまごろになって注目されているのか。
例えば、以下は日付/時刻を操作するためのDateオブジェクトを使用した例だ。
var dat = new Date();
alert('今日は' + dat.getDate() + '日です');
いうまでもない。昨今、GoogleやYahooをはじめとした多くの企業が積極的にJavaScriptを採用したリッチなユーザー・インターフェイスを公開し、これが「Ajax(Asynchronous JavaScript And Xml)」という名前とともに急速に注目を浴びたことが、その理由である(Ajaxについては拙稿「枯れた新しいUI革命「Ajax」をASP.NETで活用する」を参照いただきたい)。加えて、マイクロソフトは今年1月にASP.NET向けのAjaxフレームワークである「ASP.NET AJAX 1.0」を公開した。これにより.NET開発者にとってもAjaxそしてJavaScriptはより一層身近なものになったはずだ。
もっとも、JavaScriptがこれまで正当な評価の下で利用されてきたのであれば、「復権」などという言葉は必要ないわけで、復権と呼ばれるからにはもう1つ、急速な脚光の前に、不遇の時代がなければならない。
実際、JavaScriptはこれほどまでに多くの環境で利用されながら、長い不遇の時代も経てきた言語だ。「プログラミングの素人が利用する言語」「開発生産性の低い言語」「セキュリティ問題やクロス・ブラウザ問題が常に付きまとう言語」などなど、このようなイメージは根強く開発者の心底にはびこり、長くJavaScriptから開発者の足を遠ざけてきたのである。
本連載では、Ajax時代に開発者の常識として知っておきたいJavaScriptの基礎的な知識を再確認することを目的としているが、初回である今回は、いま一度、深層に刷り込まれたJavaScriptのマイナス・イメージ、誤解を解くところから始めたい。ただAjaxという“はやり”の中で何となくJavaScriptを学ぶのではなく、JavaScriptが開発者として真剣に学ぶに足る魅力ある言語であることを、まずはご理解いただければ幸いである。
JavaScriptというと、「ブラウザ上で動作する簡易なスクリプト言語」「プログラミングの素人でも手軽に使える言語」というイメージが付きまとっているのは、恐らく1990年代終盤の名残だろう。1990年代といえば、いわゆるDynamic HTMLが全盛の時代で、特定の画像にマウス・ポインタを当てると画像がアニメーションする、ステータス・バーに文字列が流れていく、はたまた、画面を切り替える際に特殊なフィルタ効果を適用する、といったような用途にJavaScriptが多用されていたわけだ。
もちろん、これらのアニメーション効果の一部は、いまもって利用されているものであるし、適切に利用すればWebページの見栄えや使い勝手を向上させるものであるが、当時はそれが過熱していた。HTMLやCSSを学んだ人間がとかく次は「動きのあるページを作りたい」という欲求の下に、Dynamic HTMLを過剰に盛り込んでいくわけだ。結果として装飾過剰な――いわゆる「ダサい」ページが量産されていくことになる。
この状況は(もちろん)比較的短い時間で誰もが気付き、はやりは廃れていくことになるが、この被害を不当に被ったのがDynamic HTMLの中心にあったJavaScriptであったわけだ。Dynamic HTMLが退場した後には、「ダサいページを作成するための言語」「素人が好んで使う言語」というレッテルだけがJavaScriptに残されることになる。のみならず、その後もJavaScriptにかかわるブラウザ側のセキュリティ・ホールが断続的に見つかったことで、「JavaScriptは厳密なアプリケーションを構築するための言語ではない」という<素人くささ>をより一層定着させることになった。
しかし、JavaScriptはいわゆる「素人向けの簡易な言語」ではない。JavaScriptが素人「も」容易に導入できる敷居の低い言語であることは間違いないし、歴史的に見て、Netscape Communications社がブラウザのためのプログラミング言語として(すでにあったJava言語を採用するのではなく)新たにJavaScript(LiveScript)を開発したのは、プログラミングのプロでなくても習得できる簡便さを求めていたためであろう。
だが、「導入の容易さ」と「単なる簡易さ」との間には、天地の開きがあるという点には注意が必要だ。JavaScriptは初心者にも広く開かれた門戸を提供する言語であるが、同時にJavaやC#、Visual Basicといった代表的なプログラミング言語と同様、オブジェクト指向を前提とした開発が可能な言語でもあるのだ。
具体的には、JavaScriptによるオブジェクト利用のためのコードを見てみるとよい。JavaScriptにはあらかじめ以下のような組み込みオブジェクト(ビルトイン・オブジェクト)が用意されており*1、new演算子を利用することで新しいインスタンスを生成することができる(ただし、Global/Mathオブジェクトを除く)。
*1 JavaScriptでは、いわゆるC#やVisual Basic、Javaなどのオブジェクト指向言語でいうようなクラスは存在しない。JavaScriptの「クラス」については、次回以降で改めて解説する予定だ。
オブジェクト | 概要 |
---|---|
Global | JavaScriptの基本機能にアクセスする手段を提供 |
Object | すべてのオブジェクトの基本となる機能を提供(基底オブジェクト) |
Function | 関数の操作手段を提供 |
Array | 配列の操作手段を提供 |
String | 文字列の操作手段を提供 |
Boolean | 真偽値の操作手段を提供 |
Number | 数値の操作手段を提供 |
Math | 演算機能を提供 |
Date | 日付の操作手段を提供 |
RegExp | 正規表現機能を提供 |
Error | エラー処理にかかわる情報を管理 |
JavaScriptで利用可能な組み込みオブジェクト これらのオブジェクトからは、new演算子を利用することで新しいインスタンスを生成することができる(ただし、Global/Mathオブジェクトを除く)。 |
例えば、以下は日付/時刻を操作するためのDateオブジェクトを使用した例だ。
var dat = new Date();
alert('今日は' + dat.getDate() + '日です');
このように、C#やVisual Basic、Javaなどでオブジェクト指向を学んできた読者諸氏ならば、ほとんど違和感なくオブジェクトを操作できることがお分かりいただけるだろう。
もっとも、C#やVisual Basic、Javaといった言語の多くが「クラス・ベースのオブジェクト指向」を採用しているのに対して、JavaScriptは「プロトタイプ・ベースのオブジェクト指向」を採用している。両者の違いは、実際に自分でオブジェクトを定義する際に明らかになるが、この点については、本連載でも次回以降に詳しく述べていく予定だ。ここではまず、JavaScriptがれっきとしたオブジェクト指向言語であり、オブジェクトを用いた高度な開発が可能である、という点だけを押さえておこう。
Copyright© Digital Advantage Corp. All Rights Reserved.