序文
目次
本書の購入
(広告です。ブロックしないでください。)

序文

Web上での普及など、様々な要因により、JavaScriptは避けて通れないものとなっています。しかし、それはJavaScriptが広く好かれているという意味ではありません。本書では、JavaScriptを使用する際に多少の癖を受け入れる必要がある一方で、JavaScriptが生産性が高く、プログラミングを楽しむことができる優れた言語であることを読者の方に納得していただければと思っています。

JavaScriptの誕生以来、その発展を追ってきましたが、JavaScriptを好きになるまでには長い時間がかかりました。しかし、最終的に好きになったときには、Scheme、Java(GWTを含む)、Python、Perl、Self(これらはすべてJavaScriptに影響を与えています)といった言語での経験が、すでに私を十分に準備させてくれていたことが分かりました。

2010年、Node.jsを知り、最終的にはサーバーとクライアントの両方でJavaScriptを使用できるようになるという希望が湧きました。その結果、私は主要なプログラミング言語としてJavaScriptに切り替えました。学習中に、発見したことの記録として本書を書き始めました。本書は、まさにあなたが現在読んでいるその本です。ブログでは、本書の一部とJavaScriptに関するその他の資料を公開しました。それはいくつかの点で私を助けてくれました。肯定的な反応は、私が書き続けることを励まし、本書の執筆を孤独なものにしないようにしてくれました。ブログ記事へのコメントは、追加の情報やヒントを与えてくれました(本書全体で謝辞を述べています)。そして、それは人々に私の仕事を知らしめ、最終的にO'Reillyがこの本を出版することになりました。

本書は、このように3年以上かけて制作されました。その間に内容を継続的に洗練させ、長い準備期間から利益を得ました。ついに本書が完成したことを嬉しく思い、JavaScriptを学ぶ人々にとって役立つことを願っています。O'Reillyは、本書をオンラインで無料で読むことができるようにすることに同意しており、これは幅広い読者がアクセスできるようにするのに役立つはずです。

本書について知っておくべきこと

本書はあなたのためのものですか?以下の項目が判断の助けになるでしょう。

本書の対象読者

本書は、プログラマーによって、プログラマーのために書かれています。したがって、本書を理解するためには、Java、PHP、C++、Python、Ruby、Objective-C、C#、Perlなどの主要なプログラミング言語を通じて、オブジェクト指向プログラミングをすでに知っている必要があります。

本書の対象読者は、JavaScriptを迅速かつ適切に学びたいプログラマーと、スキルを深めたい、または特定のトピックを調べたいJavaScriptプログラマーです。

本書で扱わないこと
本書は、JavaScript言語自体に焦点を当てています。たとえば、Webブラウザのプログラミング(DOM、非同期プログラミングなど)に関する情報は本書にはありません。ただし、第33章では、関連資料を紹介しています。
本書の構成

本書は4つの部に分かれていますが、主な2つは次のとおりです。

  • JavaScriptクイックスタート
  • JavaScript詳細解説

これらの部分は完全に独立しています!それぞれを別々の本として扱うことができます。前者はガイドのようなもので、後者はリファレンスのようなものです。本書の4つの部分では、本書の構成について詳しく説明しています。

本書で使用しているJavaScriptのバージョン
本書では、すべての最新のエンジンでサポートされているJavaScriptの現在のバージョンであるECMAScript 5について説明しています。たとえば、古いWebブラウザで作業する必要がある場合は、第25章で、ECMAScript 5にのみ存在する機能について説明しています。

本書を読むためのヒント

JavaScriptを学ぶための最も重要なヒントは、細部にこだわらないことです。確かに、この言語には多くの詳細があり、本書ではそのほとんどを網羅しています。しかし、私が皆さんに指摘する、比較的シンプルで洗練された「全体像」もあります。

本書の4つの部分

本書は4つの部分で構成されています。

第I部
この部分は、「基本的なJavaScript」を教えます。これは、生産性を維持しながら可能な限り小さくしたJavaScriptのサブセットです。この部分は独立しており、他の部分に依存せず、他の部分もこの部分に依存しません。
第II部
この部分は、JavaScriptを歴史的および技術的な文脈の中に位置づけます。JavaScriptはいつ、なぜ、どのようにして作られたのか?他のプログラミング言語とはどのように関係しているのか?現在の状況に至るまでの重要なステップは何だったのか?
第III部
この部分は、どちらかというとリファレンスです。興味のあるトピックを探し、飛び込んで、探求してください。多くの短い例によって、内容が退屈にならないように配慮されています。
第IV部
この部分は、JavaScriptを使用するためのヒントを提供します。ベストプラクティス、高度なテクニック、学習リソースなどです。また、いくつかの重要なツールやライブラリについても説明します。

JavaScriptコマンドライン

本書を読みながら、コマンドラインを用意しておくと便利です。 これにより、コードをインタラクティブに試すことができます。最も一般的な選択肢は次のとおりです。

Node.js
Node.jsにはインタラクティブなコマンドラインが付属しています。 シェルコマンド node を呼び出すことで起動します。
ブラウザ
主要なブラウザにはすべて、現在のページのコンテキストで評価されるJavaScriptを入力するためのコンソールがあります。 ブラウザの名前と「コンソール」をオンラインで検索するだけです。

表記規則

本書では、以下の表記規則を使用しています。

構文の説明

疑問符(?)は、省略可能なパラメータを示すために使用されます。例えば

parseInt(str, radix?)

フランス語の引用符(ギユメ)は、メタコードを示します。このようなメタコードは、実際のコードで埋められる空白と考えることができます。例えば

try {
    «try_statements»
}

「白い」角括弧は、省略可能な構文要素を示します。例えば

break ⟦«label»⟧

JavaScriptのコメントでは、JavaScriptと英語を区別するためにバッククォートを使用することがあります。

foo(x, y); // calling function `foo` with parameters `x` and `y`

メソッドの参照

組み込みメソッドは、フルパスで参照します。

«Constructor».prototype.«methodName»()

たとえば、Array.prototype.join() は配列メソッド join() を参照します。つまり、JavaScriptは Array インスタンスのメソッドをオブジェクト Array.prototype に格納します。この理由は、レイヤー3:コンストラクター - インスタンスのファクトリーで説明されています。

コマンドラインインタラクション

新しい概念を紹介するたびに、JavaScriptコマンドラインでのインタラクションを例示することがよくあります。これは、次のようになります。

> 3 + 4
7

大なり記号(>)の後のテキストは、人間が入力した入力です。それ以外はJavaScriptエンジンが出力したものです。さらに、コンソールにデータを出力するために、特に(コマンドライン以外の)ソースコードでは、メソッド console.log() を使用します。

var x = 3;
x++;
console.log(x); // 4

ヒント、注記、警告

ヒント

この要素は、ヒントまたは提案を示します。

注記

この要素は、一般的な注記を示します。

警告

この要素は、警告または注意を示します。

ドキュメントをすばやく見つける

本書をリファレンスとして使用することはできますが、オンラインで情報を検索する方が速い場合があります。お勧めするリソースの1つは、Mozilla Developer Network (MDN) です。Webを検索して、MDNのドキュメントを見つけることができます。 たとえば、次のWeb検索では、配列の push() メソッドのドキュメントが見つかります。

mdn array push

Safari® Books Online

注記

Safari Books Online は、テクノロジーとビジネスの分野における世界をリードする著者による専門的なコンテンツを、書籍とビデオの両方で提供するオンデマンドデジタルライブラリです。

テクノロジーの専門家、ソフトウェア開発者、Webデザイナー、ビジネスおよびクリエイティブの専門家は、Safari Books Onlineを、研究、問題解決、学習、認定トレーニングのための主要なリソースとして使用しています。

Safari Books Onlineは、企業政府教育機関、個人向けに、さまざまなプランと価格を提供しています。

会員は、O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technologyなど、その他多数の出版社から出版された、数千冊の書籍、トレーニングビデオ、出版前の原稿に、完全に検索可能な1つのデータベースからアクセスできます。Safari Books Onlineの詳細については、オンラインでアクセスしてください。

お問い合わせ方法

本書に関するご意見やご質問は、出版社までお願いいたします。

O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (米国またはカナダ)
707-829-0515 (国際またはローカル)
707-829-0104 (FAX)

本書のWebページを用意しており、正誤表、例、その他の追加情報を掲載しています。このページには、http://oreil.ly/speaking-js からアクセスできます。

本書に関するコメントや技術的なご質問は、 までメールでお送りください。

O'Reillyの書籍、コース、カンファレンス、ニュースの詳細については、Webサイト http://www.oreilly.com をご覧ください。

Facebookでフォローしてください: http://facebook.com/oreilly

Twitterでフォローしてください: http://twitter.com/oreillymedia

YouTubeでご覧ください: http://www.youtube.com/oreillymedia

謝辞

本書の出版を可能にしてくれた、以下の方々に感謝いたします。

JavaScriptの準備

以下の方々は、私がJavaScriptを理解するための基礎を築いてくれました(時系列順)。

  • François Bry教授、Sven Panne、Tim Geisler (Scheme)
  • Don Batory教授 (テクニカルライティング、プログラミング言語設計)
  • Martin Wirsing教授、Alexander Knapp、Matthias Hölzl、Hubert Baumeister、およびミュンヘン大学情報学部のかつての同僚 (形式手法、さまざまなソフトウェアエンジニアリングのトピック)

JavaScriptに関するヘルプ

es-discussメーリングリストの参加者
彼らの回答は、JavaScriptの設計を理解するのに役立ちました。彼らの忍耐と疲れを知らない活動に深く感謝しています。特に、Brendan Eich、Allen Wirfs-Brock、Mark Miller、David Hermanの4人には感謝しています。
私のブログ 2ality の読者
本書の一部をブログに掲載したところ、非常に多くの貴重なフィードバックをいただきました。多くの方々の中から、Ben Alman、Brandon Benvie、Mathias Bynens、Andrea Giammarchi、Matthias Reuter、Rick Waldronに感謝いたします。

その他の情報源については、各章で謝辞を述べています。

査読者

本書をレビューしてくれた以下の方々に深く感謝いたします。彼らは重要なフィードバックと修正を提供してくれました。アルファベット順に

  • Mathias Bynens
  • Raymond Camden
  • Cody Lindley
  • Shelley Powers
  • Andreas Schroeder
  • Alex Stangl
  • Béla Varga
  • Edward Yue Shung Wong
次: I. JavaScriptクイックスタート