はじめに

本書の目的

この書籍の目的は、JavaScriptというプログラミング言語を学ぶことです。 先頭から順番に読んでいけば、JavaScriptの文法や機能を一から学べるように書かれています。

JavaScriptの文法といった書き方を学ぶことも重要ですが、実際にどのように使われているかを知ることも目的にしています。 なぜなら、JavaScriptのコードを読んだり書いたりするには、文法の知識だけでは足りないと考えているためです。 そのため、第一部:基本文法では文法だけではなく現実の利用方法について言及し、第二部:ユースケースでは小さなアプリケーションを例に現実と近い使い方を解説しています。

また、JavaScriptは常に変化を取り入れている言語でもあり、言語自身や言語を取り巻く開発環境も変化しています。 この書籍では、これらのJavaScriptを取り巻く変化に対応できる基礎を身につけていくことを目的としています。 そのため、単に書き方を学ぶのではなく、なぜ動かないのかや問題の調べ方にも焦点を当てていきます。

本書の目的ではないこと

ひとつの書籍でJavaScriptのすべてを学ぶことはできません。 なぜなら、JavaScriptを使ってできる範囲があまりにも広いためです。 そのため、この書籍では取り扱わない内容(目的外)を明確にしておきます。

  • 他のプログラミング言語と比較するのが目的ではない
  • ウェブブラウザについて学ぶのが目的ではない
  • Node.jsについて学ぶのが目的ではない
  • JavaScriptのすべての文法や機能を網羅するのが目的ではない
  • JavaScriptのリファレンスとなることが目的ではない
  • JavaScriptのライブラリやフレームワークの使い方を学ぶのが目的ではない
  • これを読んだから何か作れるというゴールがあるわけではない

この書籍は、リファレンスのようにすべての文法や機能を網羅していくことを目的にはしていません。 JavaScriptやブラウザのAPIに関しては、MDN Web Docs(MDN)というすばらしいリファレンスがすでにあります。

ライブラリの使い方や特定のアプリケーションの作り方を学ぶことも目的ではありません。 それらについては、ライブラリのドキュメントや実在するアプリケーションから学ぶことを推奨しています。 もちろん、ライブラリやアプリケーションについての別の書籍をあわせて読むのもよいでしょう。

この書籍は、それらのライブラリやアプリケーションが動くために利用している仕組みを理解する手助けをします。 作り込まれたライブラリやアプリケーションは、一見するとまるで魔法のようにも見えます。 実際には、何らかの仕組みがありその上で作られたものがライブラリやアプリケーションとして動いています。

具体的な仕組み自体までは解説しませんが、そこに仕組みがあることに気づき理解する手助けをします。

本書を誰が読むべきか

この書籍は、プログラミング経験のある人がJavaScriptという言語を新たに学ぶことを念頭に書かれています。 そのため、この書籍で初めてプログラミング言語を学ぶという人には、少し難しい部分があります。 しかし、実際にプログラムを動かして学べるように書かれているため、プログラミング初心者が挑戦してみてもよいでしょう。

JavaScriptを書いたことはあるが最近のJavaScriptがよくわからないという人も、この書籍の読者対象です。 2015年に、JavaScriptにはECMAScript 2015と呼ばれる仕様の大きな変更が入りました。 この書籍は、ECMAScript 2015を前提としたJavaScriptの入門書であり、必要な部分では今までの書き方との違いについても触れています。 そのため、新しい書き方や何が今までと違うのかわからない場合にも、この書籍は役に立ちます。

この書籍は、JavaScriptの仕様に対して真剣に向き合って書かれています。 入門書であるからといって、極端に省略して不正確な内容を紹介することは避けています。 そのため、JavaScriptの熟練者であっても、この書籍を読むことで発見があるはずです。

本書の特徴

この書籍の特徴について簡単に紹介します。

ECMAScript 2015と呼ばれる仕様の大きな更新が行われた際に、JavaScriptには新しい書き方や機能が大きく増えました。 今までのJavaScriptという言語とは異なるものにも見えるほどです。

この書籍は、新しくなったECMAScript 2015以降を前提にして一から書かれています。 今からJavaScriptを学ぶなら、新しくなったECMAScript 2015を前提としたほうがよりスッキリと学べるためです。 この書籍は、ECMAScript 2015から現時点の最新バージョンであるECMAScript 2020に対応しています。

また、現在のウェブブラウザは、ECMAScript 2015をサポートしています。 そのため、この書籍では一から学ぶ上で知る必要がない古い書き方は紹介していないことがあります。 しかし、既存のコードを読む際には古い書き方への理解も必要になるので、頻出するケースについては紹介しています。

一方で、近い未来に入るであろうJavaScriptの新しい機能については触れていません。 なぜなら、それは未来の話であるため不確定な部分が多く、実際の使われ方も予測できないためです。 この書籍は、基本を学びつつ現実のユースケースから離れすぎないことを目的としています。

この書籍の文章やソースコードは、オープンソースとしてGitHubのasciidwango/js-primerで公開されています。 また書籍の内容がjsprimer.netというURLで公開されているため、ウェブブラウザで読めます。 ウェブ版では、その場でサンプルコードを実行してJavaScriptを学べます。

書籍の内容がウェブで公開されているため、書籍の内容を共有したいときにURLを貼れます。 また、書籍の内容やサンプルコードは次のライセンスの範囲内で自由に利用できます。

ライセンス

この書籍に記述されているすべてのソースコードは、MITライセンスに基づいたオープンソースソフトウェアとして提供されます。 また、この書籍の文章はCreative CommonsのAttribution-NonCommercial 4.0(CC BY-NC 4.0)ライセンスに基づいて提供されます。 どちらも、著作権表示がされていればある程度自由に利用できるライセンスとなっています。

ライセンスについての詳細はライセンスファイルを参照してください。

この書籍はアスキードワンゴから書籍として出版されています。 書籍版は、次のページから購入できます。

ウェブ版と書籍版の違い

ウェブ版と書籍版は次の点は同じです。

  • ウェブ版と書籍版の内容は同じ

ウェブ版と書籍版は次の点が異なります。

  • ウェブ版と書籍版はレイアウトが異なる
  • 書籍版には索引が追加されている

書籍版の内容はウェブ版と同じですが、本として読めるように内容とレイアウトが最適化されています。 書籍版は出版時点では基本的な内容は同じですが、ウェブ版は常にアップデートされています。

この書籍は先頭から順番に読んでいくように書かれています。 そのため、読み物としては書籍版の方が読みやすくなっています。 ウェブ版では検索機能やサンプルコードを実行できる機能が組み込まれているため、必要に応じて併用してください。

謝辞

この書籍は次の方々にレビューをしていただきました。

  • mizchi(竹馬光太郎)
  • 中西優介@better_than_i_w
  • @tsin1rou
  • sakito
  • 川上和義
  • 尾上洋介

この書籍をよりよいものにできたのは皆さんのご協力のおかげです。

また、この書籍は最初からGitHubに公開した状態で執筆が行われています。 そのため、Issueで問題の報告やPull Requestで修正を送ってもらうなど、さまざまな人の助けによって成り立っています。 この書籍に対してコントリビュートしてくれた方々に感謝します。