| CARVIEW |
JavaScript
出典: フリー百科事典『ウィキペディア(Wikipedia)』
| パラダイム: | マルチパラダイム |
|---|---|
| 登場時期: | 1995年 |
| 設計者: | Brendan Eich |
| 開発者: | ネットスケープコミュニケーションズ、Mozilla Foundation |
| 型付け: | ダックタイピング |
| 方言: | JScript |
| 影響を受けた言語: | Scheme、Self、Perl、Python |
JavaScript(ジャバスクリプト、ジャヴァスクリプト、略称:JS)はスクリプト言語である。主にWebブラウザ上で動作し、HTMLの動的書き換えや入力フォームの自動補完など、Webページの使用感向上を目的として使用されたり、リッチクライアントアプリケーションの構築に使われる。
目次 |
[編集] 特徴
文法はプロトタイプベースのオブジェクト指向型である。多くの場合は、C言語に似た手続き型言語のようなスタイルで書かれるが、関数型言語とも多くの類似点がある。近年ではその柔軟な設計が評価され、様々なアプリケーションで自動実行の用途におけるマクロ言語としても採用されている[1]。
当初は、テキストエディタで編集するだけの簡単なアプリ構築に使われていたが、近年では、IntelliJ IDEAなどにより、IDEにコード補完・編集時のリアルタイム文法チェック・リファクタリングなどの機能が搭載されるようになり、大規模開発が可能となった。また、Ajaxにおける、ブラウザ間の互換性の問題は、JavaScriptライブラリにより吸収することで、大きく解決された。さらに、Extなどの本格的なGUIライブラリの登場により、デスクトップアプリと差がないアプリを作ることが可能となった。また、DWRなどのJavaScriptとサーバー間をつなぐ技術の発達により、クライアント・サーバー間の通信が著しく容易になり、また、JettyなどのアプリケーションサーバーがComet利用時のメモリ使用量の削減を実現したため、サーバーからクライアントへの情報のPush型の配信が実用的となった。
なおJavaとScriptの間は詰めて表記する。Javaと名前や文法が似ているためしばしば混同されるが、互換性は全くない。Javaと呼ぶ場合はプログラミング言語Javaを指すので注意が必要。名前の由来については#誕生を参照。
[編集] 歴史
[編集] 誕生
JavaScriptはネットスケープコミュニケーションズのBrendan Eichによって開発され、Netscape Navigator 2.0 で実装された。開発当初は「LiveScript」と呼ばれていたが、1995年にSun Microsystems社の開発したプログラミング言語「Java」が当時大きな注目を浴びており、これに便乗したネットスケープ社のマーケティング的な思惑が働き「JavaScript」という名前に変更されたといわれている[要出典]。1996年にマイクロソフトのInternet Explorer3.0に搭載されるようになると、その手軽さからJavaScriptは急速に普及していく。1997年、通信に関する標準を策定する国際団体Ecma Internationalによって JavaScript の中核的な仕様がECMAScriptとして標準化され (ECMA 262, ISO/IEC 16262, JIS X 3060)、多くの Webブラウザで利用できるようになった。 ネットスケープ社は、自社サーバ製品で、WEBアプリケーション開発言語としての実装も行ったが、こちらは余り普及しなかった[要出典]。
[編集] 不遇の時代
1990年代後半にMicrosoftのInternetExplorer、NetscapeのNetscape Navigator間で勃発した、いわゆる第一次ブラウザ戦争では、両ブラウザが独自の拡張を施し様々な仕様が乱立する事態に発展した。ブラウザに関するセキュリティ意識も今日程高くなく、JavaScriptに関する脆弱性が次々と発見されることになる。また、初心者でも比較的容易にプログラムが書けることが、JavaScriptの言語仕様及びその周辺技術に精通していない利用者が増える原因ともなった。さらにその名称から、Javaのサブセットや下位バージョンの様な印象を一部の人間に与えたことも事実である。以上の様な理由から各ブラウザ上での挙動に差異が出たり、必要以上に「アマチュアが使うもの」「低機能な言語」と捉えられてしまうことになる[2]。
[編集] 現在のJavaScript
市場のブラウザ間互換性がある程度確立された2000年頃にはGoogleやAmazon等の大手企業もJavaScriptを積極的に利用し始めた。代表的なものとしてはGoogle マップ[1]やAmazon Diamond Search[2]等がある。2005年、JavaScriptの非同期通信を利用した技術にAjaxという名前がつけられたことによって、高機能なWebアプリケーションの開発言語の一つとして再び注目を集めている。しかし今も尚、JavaScriptによる脆弱性や攻撃は存在しており、状況が本質的に変わった訳ではない[要出典]。
また、最近ではMozilla Firefox用拡張機能のGreaseMonkeyやOperaの標準機能などにおいて、「User JavaScript」と呼ばれる、JavaScriptを使ったWeb表示のカスタマイズ機能が使用可能なWebブラウザも出てきている。
[編集] JavaScript 2.0
2000年~2003年にかけて、JavaScript 2.0 を作ろうとした動きがあったが、ネットスケープコミュニケーションズとマイクロソフトの対立でまとまらなかった。当時ネットスケープコミュニケーションズが提案していた案がアドビの ActionScript 2.0 に引き継がれ、マイクロソフトの案が JScript .NET へと引き継がれた。2006年現在 ECMAScript 4 の策定が進められており、Mozilla Foundation はこれに基づいて JavaScript 2.0 を作成することを表明している。また、Mozilla は ECMAScript 4 の策定にあたって Python のよさを取り込んだ案を提案しており、自身でもこれを実装している[3]。
[編集] セキュリティ上の制限
XmlHttpRequestや、IFRAMEを使った通信では、ダウンロード元のサーバー以外のURLにアクセスすることが出来ない。 そのため、一般的には、サーバーを経由して他のドメインのリソースにアクセスすることが多いが、動的scriptタグの生成などにより、他のドメインのURLにアクセスすることが可能である。
[編集] 問題点
- 悪意のあるユーザによってクロスサイトスクリプティングや、ブラウザクラッシャー等の危険性のあるページが生成される可能性がある。
- ブラウザ間の、言語仕様そのものの実装に関する互換性は極めて高く、DOMなど関連仕様の実装に関する互換性も比較的高い。しかし、単純な装飾処理や入力チェック等は比較的安易に導入できるため、現状では利用者の多くが言語仕様やDOM仕様、ブラウザベンダの提供する技術文書等に目を通さずに使用している。このため各利用者の使用法に大きな癖があることが多い。ベンダにとっては新しいブラウザの開発にあたり、現存するWebページの大半が問題なく表示・動作可能な製品を提供することも使命であるため、この実情がブラウザ間での完全な互換性を確立することを困難にしている。
- 1999年のECMA262-3以来、数えるほどのベンダ独自拡張があっただけで、言語仕様自体の変更は無かったと言える。しかし、XULでの使われ方や、Ajaxと呼ばれる使われ方など、複数の人間が長期間携わって作り管理するようなものが目に付くようになってきている。現在の言語仕様に限界が見えてきているわけではないが、より楽な管理を実現する為に、言語仕様改訂を待ち望む声は少なくない。
[編集] サンプルコード
// ブラウザに実装され、多数の拡張が施されたJavaScriptが一般に使用される。 alert("Hello, JavaScript."); var userName; //変数宣言。必須ではない。 userName = prompt("名前を入力して下さい",""); //入力を要求する if(userName != "") { //名前の入力があった場合 document.write(userName, "さん、ようこそ!"); //画面に出力 } else { //名前の入力がなかった場合 document.write("名無しさん、ようこそ!"); //画面に出力 }
//JavaScriptでの継承の方法 var Dog = function() {}; //Dogクラスを作成 Dog.prototype.sit = "I am sitting."; //Dogにsitプロパティを追加 var myDog = new Dog(); //DogからインスタンスmyDogを作成 alert(myDog.sit); //“I am sitting.”が出力される。 var Dog2 = function() {}; //Dog2クラスを作成 for (var prop in Dog.prototype) { //Dogから全プロパティを継承 Dog2.prototype[prop] = Dog.prototype[prop]; } var myDog2 = new Dog2(); //Dog2からインスタンスmyDog2を作成 alert(myDog2.sit); //“I am sitting.”が出力される。 /* JavaScriptでは、クラスは関数を定義するように作成し、 作成したクラスやインスタンスはすべてオブジェクトと呼ぶ。 */
[編集] privateメソッド、publicメソッドの実装方法
名前空間のあるメソッドの実装方法。クラス型オブジェクト指向でのクラスメソッドに相当。
var Test = function(){ var pub = {}; /** プライベート変数 */ var word = "Hello World!"; /** プライベートメソッド */ var privateMess = function() { return word; } /** パブリックメソッド */ pub.staticMess = function() { return "This is staticMess"; } return pub; }(); alert(Test.staticMess());
インスタンスメソッドのpublic,privateメソッドの実装方法
var Test2 = function() { /** プライベート変数 */ var word = "Hello World!"; /** プライベートインスタンスメソッド */ var privateInstMess = function() { return "This is privateInstMess"; } /** パブリックインスタンスメソッド */ this.instMess = function() { return "This is instMess"; } }; alert(new Test2().instMess());
[編集] 主な実装
- KJS
- Narcissus(JavaScript)
- Rhino(Java)
- SpiderMonkey(C言語)
[編集] 主な開発環境
- Aptana
- Dreamweaver
- IntelliJ IDEA - リファクタリング機能などを搭載
- JSEclipse
[編集] 外部ライブラリ
以下に、JavaScriptで比較的有名だと思われるライブラリを挙げる。
- prototype.js
- script.aculo.us
- MochiKit
- Yahoo! UI Library
- Rico
- Beyond.js
- common.js
- AJAJA
- dojo
- Ext JS
- DWR
- JSDoc
- jQuery
[編集] 関連するプログラミング言語
[編集] 関連していると誤解されがちなプログラミング言語
[編集] 関連項目
- Ajax
- Document Object Model (DOM)
- JavaScript Object Notation (JSON) - JavaScriptにおけるオブジェクトの表記法をベースとした軽量なデータ記述言語。
- スタイルシート
- ダイナミックHTML
- ブックマークレット
[編集] 脚注
- ^ 例えば Adobe Acrobat は JavaScript によるマクロ機能を搭載している。
- ^ Crockford, Douglas; 訳:上津 竜太郎 (id:brazil). "JavaScript: 世界で最も誤解されたプログラミング言語 (日本語(原文は英語))" 2007年9月5日閲覧.
- ^ "Python and JavaScript (英語)" Brendan's Roadmap Updates. 2006-02-19. 2007年9月5日閲覧.
[編集] 外部リンク
- Core JavaScript 1.5 Reference
- Core JavaScript 1.5 ガイド
- Client-Side JavaScript Guide - Netscape Devedge - window,document等のWebブラウザに特有のオブジェクトの使い方)
- Yahoo! JavaScript カテゴリ
- Open Directory - JavaScript カテゴリ
- Javascript Tutorials
- Firecat - Server-Side JavaScript ウェブサーバー
カテゴリ: 出典を必要とする記事 | JavaScript | スクリプト言語
個人用ツール
他の言語
- العربية
- Žemaitėška
- Беларуская (тарашкевіца)
- Български
- Català
- Česky
- Dansk
- Deutsch
- Ελληνικά
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- עברית
- Hrvatski
- Magyar
- Interlingua
- Bahasa Indonesia
- Íslenska
- Italiano
- 한국어
- Lietuvių
- Latviešu
- Македонски
- മലയാളം
- Монгол
- Bahasa Melayu
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Română
- Русский
- Simple English
- Slovenčina
- Slovenščina
- Shqip
- Svenska
- தமிழ்
- Тоҷикӣ
- ไทย
- Türkçe
- Українська
- Tiếng Việt
- 中文
- 粵語
- 最終更新 2007年9月26日 (水) 09:17。
- All text is available under the terms of the GNU Free Documentation License. (詳細は 著作権 を参照)
Wikipedia® は Wikimedia Foundation, Inc. の米国およびその他の国における登録商標です。 - プライバシー・ポリシー
- ウィキペディアについて
- 免責事項

