【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
 

連載:Ajax時代のJavaScriptプログラミング再入門

第1回 JavaScriptの復権

山田 祥寛(http://www.wings.msn.to/
2007/06/12
Page1 Page2 Page3 Page4

 JavaScriptが、いま注目を浴びている。JavaScriptの復権、といってもよい。

 最初にJavaScript(当初は「LiveScript」と呼ばれていた)がブラウザに実装されたのが1995年の「Netscape Navigator 2.0」というWebブラウザでのことであるから、すでに登場から10年以上も経過しているわけであるが、そんな枯れた言語がなぜいまごろになって注目されているのか。

特集:ASP.NET AJAX ファーストルック
連載:ASP.NET AJAXを理解する

 いうまでもない。昨今、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が開発者として真剣に学ぶに足る魅力ある言語であることを、まずはご理解いただければ幸いである。

誤解 その1:ブラウザで動作する簡易な言語――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() + '日です');
組み込みオブジェクトの1つであるDateオブジェクトの使用例
引数が指定されなかった場合、Dateオブジェクトはインスタンスに現在の日時を格納する。getDateはDateオブジェクトで定義されたメソッドの1つで、日付の部分を返すメソッドだ。つまり、今日の日付が「2007年6月10日」ならば、上のスクリプトは「今日は10日です」というダイアログを表示する。

 このように、C#やVisual Basic、Javaなどでオブジェクト指向を学んできた読者諸氏ならば、ほとんど違和感なくオブジェクトを操作できることがお分かりいただけるだろう。

 もっとも、C#やVisual Basic、Javaといった言語の多くが「クラス・ベースのオブジェクト指向」を採用しているのに対して、JavaScriptは「プロトタイプ・ベースのオブジェクト指向」を採用している。両者の違いは、実際に自分でオブジェクトを定義する際に明らかになるが、この点については、本連載でも次回以降に詳しく述べていく予定だ。ここではまず、JavaScriptがれっきとしたオブジェクト指向言語であり、オブジェクトを用いた高度な開発が可能である、という点だけを押さえておこう。

 

 INDEX
  Ajax時代のJavaScriptプログラミング再入門
  第1回 JavaScriptの復権
  1.誤解 その1:ブラウザで動作する簡易な言語――JavaScriptは素人向けの言語?
    2.誤解 その2:クロス・ブラウザ問題/誤解 その3:開発環境が整っていない?
    3.「Firebug」によるJavaScriptのデバッグ
    4.「Aptana:The Web IDE」によるJavaScriptプログラミング
 
インデックス・ページヘ  「Ajax時代のJavaScriptプログラミング再入門」

ホワイトペーパーTechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?