Webアプリ開発でJavaScriptを避けて通ることはできません。
が「なんとなく書ける」状態では、まちがいなくハマってしまう恐ろしい言語でもあります。
というわけで、わたしはなんどもハマって大嫌いになっているので、それを克服すべく9/30に発売の
[改訂新版]JavaScript本格入門 (著)山田祥寛さん
を読ませていただきました。
本書は
いわずとしれた、JavaScript界隈の書籍では
おそらく一番売れているのでは?という書籍で
前版との大きな違いは、ECMAScliptに対応したというところでしょうか!
章ごとの紹介は次の通りです~。
1章:イントロダクション
1章では、JavaScriptとはなにか・・から始まり、次世代JavaScript規格である「ECMAScript2015」についてが記述されています。また、ブラウザ付属の開発者ツールの紹介もあり、JavaScriptの基本的な部分が、おさらいできるようになっています。
2章:基本的な書き方を身につける
2章では、JavaScriptの文法の説明があります。変数や定数、データ型、演算子、制御構文など、一般的な言語系書籍にありがちな構成なのですが、、、、、内容はというと、文法はこうこうです、なぜこういう動きをするのは~~~という感じで内部構造にまで踏み込んだ中身の濃い説明が続きます。
冒頭にVisual Studio Codeでのコーディングをするための説明がありますが、非常に好感度が高いです!なぜかというと、私もVisual Studio Code派だからです(笑)
3章:基本データを操作する
つづいて3章は組み込みオブジェクトを操作するための説明があります。Array/Map/SetオブジェクトやDate/RegExpオブジェクトなどです。組み込みオブジェクトはたくさんあるので、すべて解説しているとあっという間にページ数が・・・となりますが、Web開発ではだれもが使うであろうオブジェクトを選んで解説されています。
あと、Objectオブジェクトについての、詳細な解説もうれしいところです!assigen,is,getOwnPropertySymbols,setPrototypeOfがES2015で対応した静的メンバーでサンプルコードとともに使い方が丁寧に解説されています。
4章:くり返し利用するコードを1箇所にまとめる
4章では関数について説明があります。ES2015で追加されたアロー関数を使えば、かなりシンプルに書けるので良いですね~!
JavaScriptでユーザ定義関数を書いたときに、ハマるポイントがまとめられているのも素晴らしいです。ネタバレになりますが、関数リテラル・Functionコンストラクターはいつ評価されるか、や変数のスコープなどもきちんと説明されています。
あと、JavaScliptのhoistingについての記述もあり、、、、これは私は初めて知ったときに、強い殺意を覚えた仕様の一つなので、もし変数巻き上げの挙動を知らない人は、それだけでも本書を買う価値があるかとおもいます。
5章:大規模開発でも通用する書き方を身につける
5章では、オブジェクト指向についてさらに一歩進んだ解説がされています。あらゆるオブジェクト指向では重要な継承という概念をJavaScriptのではプロトタイプチェーンで実現していますが、ここについても丁寧な解説がされています。私は、継承の概念をふわ~っと理解しているのですが、きちんとごまかさずに図にして説明しててすごい!
余談になりますが、書籍を執筆するとき、なにげに「図を書くこと」が一番難しかったりします。つまり、ふわっとした理解では、文章を書いたり、コードを書いたり、コマンドを書いたりはできるのですが、図を書くというのはできないものなのです。
6章:HTMLやXMLの文書を操作する
6章では、DOMについての説明があります。JavaScriptではHTMLの操作が多くなるので、DOMの知識はかかせません。そもそもDOMのツリー構造はどうなってるか、どうアクセスするか、をサンプルコード込で説明されているので、とても分かりやすいです。
あと、イベントリスナー/イベントハンドラーの説明もあります。
7章:クライアントサイドJavaScript開発を極める
7章では、クライアントサイドでの開発についての説明があります。AjaxやWebAPIなどの基本的なことが解説されています。またクロスオリジン通信でハマりがちな、JSONPやクロスドキュメントメッセージなどの説明も丁寧に行われています。あと、非同期処理についても解説があるので、コールバック地獄に陥っている人は、ぜひ一読を!
8章:現場で避けて通れない応用知識
最後は、JavaScriptの単体テストやドキュメンテーション、ビルドツール、保守性の高いコードの書き方などの知識が紹介されています。
本書を通して感じたことですが、
「解説がとにかく丁寧」
ハマりそうなポイントを1つ1つサンプルコードをもとに解説しているので、非常にわかりやすくとても勉強になりました。
私は、業務でアプリケーション開発をした経験がないのですが、リファレンス読めばRoRやJavaEEであれば簡単なWebアプリが作れますし、Androidアプリも作ったりできます。Goであれば、簡単なコマンドラインツールをつくったりもできます。
たとえば私のような開発者にとっては、
言語の文法や概念がわからない、というのではなく「言語の内部構造やイケてるライブラリがわからない」というのが正直なところです。
そういう意味で、開発者のあいだで独自の文化をもつ、JavaScliptやPythonは(心理的)敷居が高い言語だったりします。
本書はまさに、私のような
「JavaScriptでなんとか動くものは作れる、がしかし、それが正解かどうかは、、わからない」
という方が「きちんと理解して、正しく書く」ができるようになる本だと思います。
とても、おすすめです~!
書籍は9/30発売です!!!!
山田さん、ありがとうございました!
WINGSプロジェクトで献本してもらったので、書評を書きましたー。