Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

本章では JavaScript について紹介し、その基本的なコンセプトについて説明します。

事前に知っておくべきこと

このガイドは、以下の基礎的な予備知識を持っていることを前提としています:

  • インターネットと World Wide Web (WWW) についての一般的な理解。
  • HyperText Markup Language (HTML) についての実用的な知識。
  • プログラミングの経験。プログラミングが初めての方は、JavaScript についてのメインページにあるチュートリアルをお試しください。

JavaScript の情報源

MDN には以下の JavaScript 関連ドキュメントがあります:

  • Web について学ぶ」では初心者に向けた情報を提供し、プログラミングとインターネットの基本的なコンセプトを提供しています。
  • JavaScript ガイド」(このガイド) では、JavaScript 言語とそのオブジェクトの概要を提供しています。
  • JavaScript リファレンス」は、JavaScript の詳細なリファレンスマニュアルを提供しています。

JavaScript を初めて学ぶ方は、学習エリア、および JavaScript ガイドの記事から始めてください。基礎をしっかり学んだら、JavaScript リファレンスを利用して、個別のオブジェクトや文についての詳細を得てください。

JavaScript とは?

JavaScript はクロスプラットフォームで動作する、オブジェクト指向のスクリプト言語です。また、小さく軽量な言語です。ホスト環境 (例えば Web ブラウザ) 内では、JavaScript と環境内のオブジェクトを結びつけられ、それらにプログラム制御機能をもたらすことができます。

JavaScript には、ArrayDate、そして Math といったオブジェクトからなる基本的なライブラリ、そして演算子、制御構造、文といったプログラミング言語の要素からなる主要な機能が含まれています。JavaScript の主要機能は追加のオブジェクトを補うことで、様々な目的に拡張することができます、例えば:

  • クライアントサイド JavaScript は、ブラウザとそのドキュメントオブジェクトモデル (DOM) を制御するオブジェクトを提供することにより、コア言語を拡張します。例えば、クライアントサイドでの拡張により、アプリケーションが HTML フォーム上に要素を配置したり、マウスクリック、フォームへの入力、ページ移動といったユーザイベントに応答できるようにします。
  • サーバサイド JavaScript は JavaScript を使ったサーバの稼働に関連するオブジェクトを提供することにより、コア言語を拡張します。例えば、サーバサイドでの拡張により、アプリケーションがデータベースとデータをやり取りし、アプリケーション内で呼びだされた情報が連続性を保ったまま受け取られるようにし、あるいはサーバ上のファイルを操作できるようにします。

JavaScript と Java

JavaScript と Java はいくつかの点では似ていますが、その他の点では全くの別物です。JavaScript 言語は Java と共通点がありますが、 Java のような静的型付けと強い型検査を持っていません。LiveScript から JavaScript へ改名する理由ともなった、Java が持つ多くの式構文、命名規則と基本的な制御フローを JavaScript は踏襲しています。

宣言によって作られたクラスから構成される Java のコンパイル時システムとは対照的に、JavaScript は、数値や真偽値、文字列を表す少数のデータ型をベースにしたランタイムシステムをサポートしています。JavaScript は、より一般的であるクラスベースのオブジェクモデルの代わりに、プロトタイプベースのオブジェクトモデルを持っています。プロトタイプベースモデルは動的な継承をもたらします、それはつまり、様々なオブジェクトから継承できるということです。また JavaScript は、特殊な宣言型を必要としない関数をサポートしています。関数をオブジェクトのプロパティに置き、弱い型付けのメソッドとして実行することができます。

JavaScript は Java に比べて非常に自由な形式を持つ言語です。変数、クラス、メソッドをあまねく宣言する必要はありません。メソッドが public か private か、あるいは protected かどうかを気に掛けることも、インターフェイスを実装する必要もありません。変数、引数、そして型を返す関数は厳密に型付けされていません。

Java は高速実行と型安全のために設計されたクラスベースのプログラミング言語です。型安全というのは、例えば Java の整数値はオブジェクトの参照値として型変換することはできず 【訳注: Java のデータ型は、数値や文字列などのデータのみを表すプリミティブ型とクラス定義されたオブジェクト型 (参照型とも呼ばれる) の2つに分かれており、プリミティブ型のデータをオブジェクトから参照する場合はラッパークラスを使い、そのデータを適切なオブジェクト型に明示的に変換する必要がある】、またメモリ環境を破壊しようとする Java バイトコードからはプライベートメモリにアクセスできないようになっているということです。Java のクラス継承と強い型付けは一般的に密結合されたオブジェクト階層を必要とします。こうした前提条件によって Java プログラミングは JavaScript プログラミングに比べ複雑なものとなります。

それとは対照的に、JavaScript は HyperTalk や dBASE といった一連の小規模で動的型付けを持つ言語の精神を受け継いでいます。これらのスクリプト言語が持っている、より簡素な構文、専門化されたビルトイン関数、そして最低限の条件のみを必要とするオブジェクト作成のおかげで、より広い人々にプログラミングという道具をもたらしてくれます。

JavaScript と Java との比較
JavaScript Java
オブジェクト指向言語。オブジェクトのデータ型に区別はない。継承はプロトタイプベースの機構を通して行われ、プロパティとメソッドはどんなオブジェクトにも動的に追加できる。 クラスベース言語。オブジェクトはクラスとそのクラス階層によって継承されたインスタンスとに分かれている。クラスとインスタンスは動的にプロパティやメソッドを追加することができない。
変数のデータ型は宣言が不要(動的型付け)。 変数のデータ型は宣言が必須(静的型付け)。
ハードディスクには自動的に書き込みできない。 ハードディスクには自動的に書き込みできる。

JavaScript と Java との違いについてのさらに詳しい情報は、オブジェクトモデルの詳細の章をご覧ください。

JavaScript と ECMAScript 仕様

JavaScript は国際的なプログラミング言語を提供できるように Ecma International によって標準化されています (ECMA は、以前は European Computer Manufacturers Association の頭文字をとったものでした)。この標準化された JavaScript のバージョンは ECMAScript と呼ばれ、この標準をサポートするアプリケーションはすべて同じ動作になります。企業は、JavaScript の実装開発にこのオープンな標準言語を利用できます。ECMAScript 標準は、ECMA-262 仕様に文書化されています。JavaScript バージョンと ECMAScript 標準化の各版との違いについて知りたい場合は JavaScript の新機能をご覧ください。

ECMA-262 標準は、ISO(International Organization for Standardization、国際標準化機構)により ISO-16262 としても承認されています。また仕様書は、Ecma International の Web サイトでも確認できます。ECMAScript 仕様には、World Wide Web Consortium (W3C) によって標準化されているドキュメントオブジェクトモデル (DOM) が記載されていません。DOM はスクリプトから利用できる HTML ドキュメントのオブジェクトを定義しています。JavaScript でプログラミングする際に使われる様々な技術のさらに詳しい情報は、JavaScript 技術概説の記事を参考にしてください。

JavaScript ドキュメント vs ECMAScript 仕様書

ECMAScript 仕様は ECMAScript の実装要件の集合体です。これは ECMAScript 実装やブラウザ描画エンジン (Firefox の SpiderMonkey、あるいは Chrome の v8 など) に対し、標準に準拠した言語機能を実装したい場合には便利です。

ECMAScript の文書はスクリプトプログラマを支援するためのものではありません。スクリプトの記述についての情報を知りたければ JavaScript のドキュメントを使いましょう。

ECMAScript 仕様書は、JavaScript プログラマにあまり馴染みのない専門用語と文法で書かれています。この言語を解説したものと ECMAScript とは異なるところがあるかもしれませんが、この言語自体は同じものです。JavaScript は、ECMAScript 仕様書で描かれた機能をすべてサポートしています。

JavaScript のドキュメントは、JavaScript プログラマに適した形で言語の特徴について記述しています。

JavaScript を始めよう

JavaScript を始めるのは簡単です。必要なものは、今どきの Web ブラウザだけです。このガイドでは最新の Firefox でのみ利用できる JavaScript の機能をいくつか使用するので、最新の Firefox を使いましょう。

JavaScript を体験するのに役立つ、Firefox に搭載されたツールが 2 つあります。Web コンソールとスクラッチパッドです。

Web コンソール

Web コンソール は、現在読み込まれている Web ページについての情報を表示し、現在のページで JavaScript の式を実行するのに使える コマンドライン も内蔵しています。

Web コンソールを開く (ショートカットキーは Ctrl+Shift+K) には、Firefox の「ツール」メニューにある「Web 開発」から「Web コンソール」を選んでください。ブラウザウインドウの下部に Web コンソールが現われます。コンソールの一番下にあるのは JavaScript を入力できるコマンドラインで、その出力はペイン上部に表示されます:

スクラッチパッド

Web コンソールはワンライナー (一行のコマンド) の JavaScript を実行するには最適ですが、数行からなるコードを実行するには不便ですし、Web コンソールを使ってコードを保存することはできません。そのような複雑な用途には、スクラッチパッド が最適なツールです。

スクラッチパッドを開く (ショートカットキーは Shift+F4) には、Firefox の「ツール」メニューにある「Web 開発」から「スクラッチパッド」を選んでください。別のウィンドウが表示されますが、これはブラウザ内で JavaScript を書いて実行できるエディタになっています。スクリプトの保存と読み込みもできます。

Hello world

JavaScript を書き始めるにあたり、スクラッチパッドを開いて、初めての JavaScript コード "Hello world" を書いてみましょう:

function greetMe(yourName) {
  alert("Hello " + yourName);
}

greetMe("World");

ブラウザでどのような結果になるかを確かめるには、パッド内のコードを選択し Ctrl+R を押してみましょう!

ガイドの次のページでは、より複雑なアプリケーションが書けるように、JavaScript の構文と言語の特徴を紹介します。

ドキュメントのタグと貢献者

タグ: 
 このページの貢献者: teoli, Marsf, mamodayo, x2357, isomura-bon, Shuyas
 最終更新者: teoli,