梅ちゃん堂 > JavaScript 入門 > はじめに >
- JavaScript の特徴 -

1.作成・変更のたやすさ

一番簡単な JavaScript プログラムの例を示します。

Sample 1
ボタンをクリックして下さい。

ソース

<FORM>
<INPUT type="button" value="CLICK!" onClick="alert('いらっしゃいませ!')">
</FORM>

フォーム・ボタンを定義する僅かなタグだけで、JavaScript の簡単なプログラムが実行されています。 そこには SCRIPT という語さえ使われていません。

実は、onClick という属性は、マウスクリックによってスクリプトを呼び出すサインです。 そして HTML では JavaScript がデフォルトのスクリプトとされているので、特に宣言しなくても JavaScript が使用されます。 また alert( ) は、メッセージボックスを表示させる JavaScript のメソッド(定義済み関数)なので、複雑なプログラムを書かなくても実行されるのです。

最も簡単な例を示しましたが、もちろんこの方法では複雑なプログラムを書くには不向きなので、 普通は <SCRIPT> タグの中に JavaScript のプログラムを書いたり、外部ファイル(.js ファイル)に JavaScript のプログラムを書いておいて、 これを HTML から呼び出したりします。(詳細は後述します。)

<SCRIPT> タグの中に JavaScript のプログラムを書く場合は、普通に HTML のソースを書く延長で JavaScript が使えるわけですから、 HTML 手書き派(注1)の人にとってはとても手軽ですね。また、外部ファイル(.js ファイル)と言うとちょっと難しそうですが、 要は JavaScript のプログラムをテキストファイルに書いて、拡張子 .js の付いたファイル名で保存し、 これをサーバ上に置いて HTML からリンクすることにより呼び出される仕組みです。 特別な作成ソフトも要らなければ Java プログラムのようにコンパイルする必要もありません。

CGI(注2) で使われる Perl(注3) などもテキストベースですが、サーバサイドプログラム(注4)なのでサーバ上でテストしなければなりませんが、 JavaScript は基本的にクライアントサイドプログラム(注5)なのでローカル上でテストやデバッグが出来ます。 書いたその場でテストできるわけです。これはメンテナンスの上で利点ではないでしょうか。

2.実行環境の広さ

JavaScript は、Netscape (Navigator) をはじめ、Internet Explorer、Opera、Mozilla など、 主要ブラウザのほとんどがデフォルトでサポートしています。 これらの WWW ブラウザには JavaScript を解釈するスクリプト・エンジンが搭載されているので、特別なプラグインをインストールするまでもなく、 JavaScript が実行されるのです。

せっかく JavaScript のプログラムを作って公開しても、訪問者の使用する WWW ブラウザがスクリプトをサポートしていないために見てもらえない、 という可能性は少ないと言えましょう。

3.動作の軽快さ

筆者が JavaScript と出会ったのは1996年頃のことですが、当時既に Java も Flash(注6) も普及していました。 ところがトップページなどでよく見かける Java アプレットは、読み込みに時間がかかり、動作は重いわ、ページから脱出しようとしても、 これまた時間がかかるわで、たかだかトップページの見出しを表示するのになんでこんな重いものを使用するのか、と腹が立った記憶があります(笑)。

複雑な Java プログラムを実行するページに至っては、ひどい場合にはマシンがフリーズしたこともあります。 最近はパーソナル・コンピュータの性能も良くなっているので、そんなことはないでしょうが。

ところが同じく Java という名を冠していても、JavaScript は比較にならないほど動作が軽快です。 かなり本格的なプログラムでも10キロバイトを越えることは滅多になく、画像や MIDI などのバイナリファイルを呼び出さない限りはページの読み込みにかかる時間は僅かです。 動作が CPU に負担をかける程度も少ないと言えます。

また、クライアントサイドで実行される JavaScript は、サーバに負荷をかけません。 現在時間を表示するくらいなら、セキュリティリスクの伴う SSI(注7) よりも JavaScript を使う方が賢明ですし、 ゲームなどのお遊び的なプログラムに使用するなら CGI よりも JavaScript の方が適役です。

JavaScript で実行できるプログラムなら、JavaScript を使わない手はない、ですよね。

4.応用の広さ

JavaScript はテキストベースで、 HTML 中に書き込め、サポートされる実行環境も多く、 動作が軽快...覚えましたか?最後に、見逃してならないのは応用範囲の広さです。

JavaScript と言うとウェブページを動きのあるものにする見せかけのプログラムのイメージが強いですが、 実はもっと地味で実用的な機能もあり、縁の下の力持ち的な役割も果たします。その点がとても重要です。 ページをただ派手で華やかなものにするオマケとしてでなく、HTML の拡張機能として、 HTML だけではカバーできない点を補完する役割を筆者は重視します。

例えば CGI を例に取ると、CGI だけでは十分でない点を JavaScript で補うことがよくあります。 例えばアクセス元を取得する場合などです。ウェブとはサーバとクライアントの対話なのですから当然です。

Flash の起動を JavaScript で制御したり、 逆に Flash から JavaScript を呼び出してウェブページ上に表示したりすることが可能です。 また Java プログラムと VRML(注8) の橋渡し役として JavaScript を使用している人もいます。 更に、PDF(注9) 上でも JavaScript プログラムが実行することが出来ます。

つまり、様々なウェブベースのプログラムと HTML との仲介的機能を JavaScript が果たすことになります。

前に JavaScript はクライアントサイドプログラムだと述べましたが、 ASP (Active Server Pages)(注10) 上で使用すればサーバーサイドプログラムとなります。 この場合は厳密には JavaScript の Microsoft 版である JScript のプログラムを実行することになります。

JavaScript は WWW ブラウザ上がメイン・ステージですが、それだけではありません。 ウィンドウズ限定となりますが、WSH (Windows Scripting Host)(注11) の機能を使いますと、ローカルディスク上で様々なプログラムを実行させることが出来ます。 万能というわけではありませんが、バッチ処理的なものを想像していただければ良いでしょう。

今後,重要視されて行くことは間違いない XML (eXtensible Markup Language)(注12) においても、JavaScript との連携が大いに役に立ちます。 以上に述べたことは大変興味深いテーマなのですが、HTML 上でクライアントサイドで実行される JavaScript を扱おうとする本稿の枠を越えてしまうので、 また別の機会に譲ることにします。

5. JavaScript の問題点

JavaScript のメリットばかりを述べてきましたが、当然そこには限界や欠点もあることを押さえておかなければなりません。

まず第1に、JavaScript で実行できるプログラムには限界があります。 例えばウェブ上の JavaScript が訪問者のローカルファイルにアクセスできるのは、クッキーだけです。 それは多分セキュリティ上の理由からでしょう。悪意のある JavaScript プログラムによって訪問者のレジストリやローカルファイルに勝手にアクセスされてはたまりませんから。

Java にもセキュリティ上の制約がありますが、Java の場合は JavaScript よりも高度で達意なプログラムが書けます。 Java アプレットで設計された画像の表現性を JavaScript でまねすることは出来ません。Flash や VRML のまねごとも、JavaScript だけでは出来ません。

第2に実行環境の制約です。上に JavaScript は大部分の WWW ブラウザでサポートされていると述べましたが、 大部分であってすべてではありません。WWW ブラウザの中には、例えば Lynx(注13) のように JavaScript をサポートしないソフトもあります。 そのユーザーはごく少数かも知れませんが、熱心な信奉者の一群を形成しています。

また JavaScript をサポートする WWW ブラウザであっても、設定によって JavaScript を実行できなくするものもあります。 一部のユーザーはセキュリティを気に掛けて、この設定を使うのです。

ですから、すべての訪問者が JavaScript プログラムを見てくれると断定的に考えてはいけません。 JavaScript を使用していることをページ上でことわったり、<NOSCRIPT> タグで代替テキストを表示する工夫が必要です。 (これについては後述します。) ウェブの主役はあくまで HTML です。特に必要がなければ JavaScript は使わなくても良いのです。

第3に、WWW ブラウザによる JavaScript の実行環境の違いの問題です。 ほとんどの主要ブラウザが JavaScript をサポートしているとはいっても、ブラウザに搭載されたスクリプトエンジンがまちまちなために、 スクリプトの解釈に微妙な違いがあったり、ブラウザによってはサポートされていないメソッドなどがあったりします。

ですからクロスブラウザなスクリプトを書こうと思えば、それ相当の知識と工夫が必要です。 (この点についても後述します。)この点を念頭に置かないと、せっかく書いたプログラムがブラウザによって動作しなかったり、 エラーになったりします。なるべく、Internet Explorer、Netscape (Navigator)(注14)、Opera の3つぐらいはインストールして、 動作チェックしてみるのが望ましいと思います。

第4に、JavaScript のプログラムはテキストベースで、しかもウェブの閲覧者がダウンロード可能ですから、 プログラムのソースを隠したい人にはちょっと不都合かもしれません。HTML に直接書かず、外部ファイルにプログラムを書いたとしても、 ちょっと知識のある人なら外部ファイルも簡単にダウンロード出来てしまいます。

もっとも、これを欠点と見なすべきかどうかは議論の分かれるところでしょう。 プログラムをブラックボックス化できないことが、 一面ではせっかく苦労して書いたプログラムを他人に無断使用される危険を回避できなくしている反面(マナーのある人はそんなことはしないでしょうが)、 反面ではこのガラス張りの公開性こそが JavaScript をここまで普及させる可能性を開いたのですから。

注1
ウェブページを自動で設計してくれるソフトに頼らず、テキストエディタで直接 HTML を作成する人。 タグ挿入型のソフトを使っている人も含まれます。HTML について良く理解していることが必要です。
注2
Common Gateway Interface。ウェブページから呼び出された外部プログラムが実行結果をクライアント側に返す仕組みのこと。これにより、 アクセスカウンタ・掲示板・メールフォームなど、HTML だけでは実現できない対話的なコンテンツが可能になります。
注3
CGI 処理において最も広く使用されているプログラミング言語。インタープリタ型であるため高速性には欠けますが、 機能拡張の結果、ファイル操作やネットワーク構築など、C 言語などの汎用言語に比肩するほどの処理能力を持つに至っています。
注4
プログラムが WWW サーバ側で処理され、その結果をクライアントに返す仕組み。クライアントソフトに依存せず、 また大規模なデータを扱える利点があります。CGI、ASP、JSP、PHP が代表的です。
注5
プログラムを WWW サーバからダウンロードし、クライアント側でプログラムを実行する仕組み。サーバに負担を掛けず、 簡単な処理なら高速に実行できるメリットがあります。JavaScript、VBScript のほか、JAVA アプレット、Flash プログラムなども基本的にはこれです。
注6
Macromedia Flash。高速で画像劣化が少なく、ファイルサイズが小さいため、 ウェブ上でのアニメーション表示に適しています。Shockwave などのプラグインソフトが必要。
注7
Server Side Include。サーバの機能を利用して、 ウェブページ内に記述された処理を出力する仕組み。時間やファイルについての情報を表示したり、シェルコマンドの結果を取り込んで出力することが出来ます。
注8
Virtual Reality Modeling Language。3Dグラフィックスを用いた仮想空間をウェブ上に構築し、その中を移動したり、 他者と空間を共有しているように見せるプログラム。
注9
Portable Document Format。Adobe 社が開発した文書表示用のファイル形式で、 プラットフォームやシステムフォントに依存せずに同一文書を表示できます。専用のプラグインをインストールすれば、 WWW ブラウザ上でも表示することが可能です。
注10
Microsoft によって開発されたサーバサイドプログラム実行環境で、 HTML 内に記述された JScript や VBScript をサーバ側で実行したり、ActiveX コンポーネントを動作させたりすることが出来ます。
注11
JScript や VBScript を用いてウィンドウズを操作するためのホスト(実行環境)のこと。メッセージの出力、 ファイルやディレクトリの操作、環境変数の取得と変更、レジストリへのアクセスなどのバッチ処理が可能で、GUI でもコマンドプロンプトでも<実行できます。
注12
W3C によって標準化されたマークアップ言語のことで、HTML のようにあらかじめ固定されたタグではなく、 任意に定義したタグの使用を可能にするものです。これにより、ウェブを単なる文書から厳密な意味でのデータベースにすることが可能で、 最近はブラウザベースでの電子商取引のフォーマットとして注目されています。
注13
画像やクライアントサイドプログラムの表示を一切省いたテキストベースの WWW ブラウザ。 軽さやセキュリティを気にする人に重宝されています。
注14
かつては Netscape Navigator と呼ばれ、バージョン 4.xになると Netscape Communicator、最近の 6.x や 7.x では単に Netscape と呼ばれていますが、 JavaScript への対応の点でもバージョン毎にかなりの違いがあるようです。Netscape 6 や 7 は Mozilla をベースにしているため、Netscape Communicator 4.x とはほとんど互換性がありません。
前ページに戻る 前ページに戻る 次ページに進む
Copyright © 2003 梅ちゃん堂. All Rights Reserved