前付け(まえがきなど)
訳者まえがき
私はJavaScriptが大好きです。なんといっても簡単に面白いことができるというのがすばらしい。広く普及した言語としては、今のところ、見栄えのするプログラムがもっとも簡単に作れるプログラミング言語ではないでしょうか。
JavaScriptが登場する少し前まで、見栄えのするプログラムを作れるようになるには、とてもたくさんのことを覚えなければなりませんでした。自前のウィンドウを表示して、メッセージを表示するだけでも大変でした。しかしコンピュータの処理速度は飛躍的に上がり、ソフトウェアに関する研究も進みました。その結果、インターネットが登場し、ウェブブラウザが作られ、ブラウザの上で動くJavaScriptのような言語が考案され、面白いことが以前に比べたらとても簡単に実現できるようになりました。新しいウィンドウを開いてメッセージを表示する方法を覚えるのには、10分もかからないでしょう。数週間みっちり勉強すれば、かなりハイレベルなプログラムを作れるようになるはずです。
この言語に出会ってからは「プログラミングを学ぶならばJavaScriptから始めるべし」とずっと思ってきました。とても取っつきやすい言語なのです。既に他のプログラミング言語をご存じなら、学習を始めたその日のうちに新しいプログラムを書き始めることができるはずです。「簡単で取っつきやすい言語」なら大したことなんてできないのでは、と思う方もいらっしゃるでしょう。ところがそうではありません。JavaScriptはとても奥が深い言語でもあるのです。...
と、ここまでは第2版の「訳者まえがき」の冒頭でした。ここまでの内容は現在のJavaScriptにもそっくりそのまま当てはまります。
しかし、第2版出版からの7年の間にJavaScriptの世界でも大きな変化がありました。ひとつ目はブラウザ(クライアント)だけでなくサーバーでも、さらにはウェブの世界を飛び出してクロスプラットフォームのアプリケーション開発やハードウェア制御でもJavaScriptが使われるようになったことです。そしてもうひとつの大きな変化はJavaScriptの新しい標準であるES2015(ES6)の策定とその広がりです。この新標準により、JavaScriptの弱点だった部分が強化され、初心者にとってもベテランプログラマーにとっても、よりいっそう使いやすい言語に生まれ変わりました。
この『初めてのJavaScript 第3版』は、第2版までとは著者も変わり、内容もES2015に対応するようゼロから書き直されました。第2版までと比較して、JavaScriptの全体像を、小さな例をたくさん示しながらバランスよく説明してくれていると思います(翻訳版では付録でES2016とES2017についても解説を加えました)。
「プログラミングを学ぶならばJavaScriptから始めるべし」と思っていた私は、2年ほど前からJavaScript初心者のための講座を自前で開いています。丸1日でJavaScriptの概要を説明するという無謀な企てなのですが、この本の第2版までは難度が高すぎる印象で、受講生の皆さんには推薦するのをためらっていました。しかしこの第3版ならば大丈夫だと思います。イラストやアニメはほとんどないので、「サル」や「ネコ」向けの本のようにスイスイとは読めないでしょうが、内容は充実しています。本文を繰り返し読み、例題を実行し、自分なりに変えてみたりしながら学んでいけば、JavaScriptの基礎ががっちり身につくと思います。
ここでこの翻訳版と原著英語版の違いについてご説明しておきます。例は単純なものを除いて日本語の題材に変え、また、原著で不明瞭に感じたり、もう少し補強したりしたほうがよいと感じられた事柄については、調査の上、メモなどを加えました。さらに、ブラウザのES2015対応が進んだ現状を踏まえ、本文の一部を付録に移動しました。
紹介されている例は私が管理するこの本のサポートページで公開しています。ブラウザで動作する例題はその場で試していただけますし、ダウンロードしていただけばNode.jsなどでも実行ができます。原著では、コードの一部しか掲載されておらず全体像がつかみにくいケースがありましたので、この翻訳版ではサポートページですべてのコードについて全体が見られるようにしました。主要な環境では動作を確認しましたが、本文の内容も含め、お気づきの点はご指摘いただければ幸いです。
翻訳の過程で、一部の例を日本語の識別子(変数名や関数名など)を使って書いてみましたが、「日本語で関数名や変数名を考えるのはとても楽だなあ」と感じました。英語を仕事で毎日使っている私でもそうなのですから、普通の方ならなおさらでしょう。コメントと識別子の区別がつきにくいなど、慣れないと少し読みにくい印象はありますが、特に書く際の負担はだいぶ減るように感じます。また、たとえば単数形のbookで、値をひとつ記憶する変数、複数形のbooksで配列を表すといった手法が日本語では使えないなど、日本語独特の工夫が必要になる場面があるかもしれません(一部の例では「本」と「本_配列」のようにしてみましたが)。これからは、日本国内をターゲットにした開発では徐々に日本語識別子が使われることになるのでしょう。英語の本を読むよりも、日本語にていねいに翻訳された本を読むほうが理解がずっと早いのと同じです。
最後になりますが、いつもお世話になっている株式会社オライリー・ジャパンの皆様にこの場をお借りして感謝いたします。(第2版のあとがきにも書きましたが)この本が、たくさんの面白いウェブサイトやアプリケーション(そしてハードウェア!)が登場するきっかけになれば幸いです。
2016年12月
訳者代表
マーリンアームズ株式会社 武舎 広幸
原著者まえがき
この本はJavaScript関連で私が書いた2冊目の本ということになりますが、「思いがけない展開になったものだ」と自分自身でも驚いているところです。というのは、2012年頃まで、JavaScriptに対して偏見をもっていたからです。自分自身の「転向」に少し戸惑いを感じているのです。
そんなプログラマーは今でも少なくないのかもしれませんが「JavaScriptなんて、アマチュアプログラマーが真っ先に手を出すオモチャみたいな言語さ」という印象をもっていたのです。きちんと学んだわけでもなかったにもかかわらずです。
JavaScriptはプログラミングを取っつきやすいものにしてくれました。ウェブブラウザは誰でも使っていますし、急増していたウェブサイトの裏側にあるJavaScriptのコードは誰でも簡単に見ることができました。多くの人が互いのコードを読みながらトライ&エラーで学び、不十分な理解のまま、時には真似をするには値しないコードを模範にしていることも多かったのです。
私の場合は幸運でした。この言語をしっかり学ぶ機会を得た結果、まったくオモチャなどではない、非常に強固な基盤の上に構築された、強力かつ柔軟かつ表現力豊かな言語であることを認識するに至ったのです。
この本に関して、できるだけJavaScriptにまつわる「事実」を書くよう心がけました。しかし「意見」が入る込むのを避けることはできませんでした。私の意見に関しては、もちろん反対意見も歓迎します。また、経験豊富な開発者の方々に意見を求めるのもよいことでしょう。
今はJavaScriptの学習者にとってエキサイティングな時です。1章で詳しく説明しますが、新しいJavaScriptの標準(ES2015あるいはES6などと呼ばれています)が策定され、ほとんどのJavaScriptのエンジンがこれに対応しつつあるのです。
考案者のBrendan Eich自身も認めているようにJavaScriptには問題点もあり、それを改めようとしたときには既に多くの人がそうした問題点に依存するコードを書いてしまっていました(もっとも、この種の問題と無縁だった言語はどこにもないのではないかと思います)。
ES5は「問題点」を引きずったままの言語でした。しかし、後継となったES2015では多くの問題点が解消され、以前にも増して開発がしやすい素晴らしい言語になっているのです。
ウェブの世界は未成熟の時代を終え、成熟期に入りつつあります。5年、10年前までの「荒野の西部」の時代に別れを告げようとしています。HTML5やES2015といった標準がウェブ開発に関する学びを、そして高品質なアプリケーションの開発を容易にしてくれています。Node.jsによってJavaScriptはブラウザの世界を飛び出し、システムプログラミング、デスクトップアプリケーションの開発、サーバーサイドのウェブ開発、さらには組み込み機器のアプリケーションにも使われるようになってきています。
ES2015によりJavaScriptはさらに素晴らしい言語になりました。1980年代中頃にプログラミングを始めて以来、これほどエキサイティングな時代はなかったように思います。
この本の対象読者
この本はある程度プログラミングの経験をもっている読者を念頭に置いて執筆しました。プログラミングが初めてという方は、入門的な書籍や講座などで勉強してから(あるいは勉強しながら)この本を読み進めることをおすすめします。
プログラミングを始めたばかりの方、「知らないことばかり」であることを恥じることはありません(プログラマーとして働いていて、なおかつその状態であり続けているのならば、それは恥じるべきことかもしれませんが)。プログラミングを学びたいのならば練習が必要です。学べることは何でも学びましょう。どんな情報源でも利用しましょう。心を広くして、さまざまな意見を受け入れ、おそらくこれが一番大切なことですが、いろいろなことに疑問をもちましょう。疑問をもったら、チャンスを見つけて知っている人に尋ねましょう。いつも「なぜだろうか」と問い続けましょう。
ほかの言語を知っている人は、この本をスムーズに読み進めることができると思います。既にJavaScriptのプログラムを作ったことがある人なら、この本で実践的なテクニックや重要な概念についてしっかりと理解することができるでしょう。
JavaScript言語の機能やテクニック、最近の開発で使われるツールなどをわかりやすく説明するよう心がけました。単純なもの(変数、制御フロー、関数など)から複雑なもの(非同期プログラミングや正規表現など)まで、さまざまな概念や機能を網羅しています。読者のこれまでの経験によっては、難しいと感じる章もあるかもしれません。そういった章については、繰り返し読み、例題を試してみる必要があるでしょう。
この本の非対象読者
この本はJavaScriptの文法や関連ライブラリのリファレンスではありません。この目的にはMDN(Mozilla Developer Network)にあるオンラインのJavaScriptリファレンス(https://developer.mozilla.org/ja/docs/Web/JavaScript)をおすすめします。最新の内容がわかりやすく掲載されています(多くのページは日本語で読むことができます)。この本の中でも随時このサイトの内容を紹介しています。
参照用に書籍版が欲しいのでしたら、『JavaScript 第6版』(David Flanagan著、村上列訳)をおすすめします(現在のところES2015は含まれていませんが...)。