はじめに

本書の目的

この書籍の目的は、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 2024まで対応しています。

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

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

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

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

ライセンス

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

詳しくはライセンスについてを参照してください。

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

ウェブ版と書籍版の違い

書籍版の内容はJavaScript Primer v4.0.0と同じです。

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

  • ウェブ版と書籍版はレイアウトが異なる
  • 書籍版には索引が追加されている
  • ウェブ版は最新の仕様への追従など日々少しずつ継続的に更新され続けている

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

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

書籍への支援について

JavaScript PrimerはECMAScriptのアップデートに追従したり、現実の使い方を反映するために、継続してアップデートしています。 継続的にアップデートするために、書籍への支援はいつでも歓迎しています。

GitHub Sponsorsで著者を支援できます。

Open Collectiveでjsprimerプロジェクトを支援できます。 Open Collectiveでの支援には、サイト上にロゴを表示するといった企業向けの特典があります。

また、書籍版へのレビューを書くことも支援に繋がります。

GitHubのDiscussions(掲示板)の他の人の質問に答えたり、JSPrimerを読んだ感想を書くことも支援になります。

Discussionsのガイドラインは次のスレッドにまとめられています。

書籍に対してIssueを立てたり、Pull Requestを送ったりして直接的に支援もできます。 IssueやPull Requestについては、次のページを参照してください。

謝辞

初版では、次の方々にレビューをしていただきました。

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

第2版では、次の方々にレビューをしていただきました。

  • haruguchi(池奥 悠馬)
  • 2nofa11(ツノ)
  • staticWagomU(林 永遠)
  • kakts(阿久津 恵太)
  • keisuke kudo(工藤佳祐)
  • r-shirasu
  • 藤野慎也(morinokami)
  • kobakazu0429(小畠 一泰)
  • 滝谷修

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

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

変更点

ウェブ版は、常に最新のECMAScriptに対応するように更新しています。 それぞれ新しいECMAScriptバージョンへ対応するときに、変更点をまとめたリリースノートを作成しています。

新しいバージョンが公開されたときに通知を受け取りたい方は、GitHubリポジトリWatchしてください。

Watch button

また、次のフォームからメールアドレスを登録しておくと更新情報をメールで受け取れます。