みなさんこんにちは!宮水です!
今週、積ん読してた本のうちの1冊であるJavaScript本格入門を読みました!
今回はこの本の感想を書いていきたいと思います!
この本を読んだ理由
JavaScriptはWebエンジニアなら切っても切れない言語ですよね。私は今までjQueryとCoffeeScriptを1年弱勢いで書いてきたくらいで、そもそもJavaScriptについてちゃんと理解しようとしたことがなかったです。
しかし最近お仕事でReactとReduxを扱うことが増えてきました。ほんのちょっとだけコードを追えるくらいになったものの、「どれが関数なのかもわからない...importとexportってなんで書くんだろう...」みたいな感じで適切に質問するにも至らなくて困りました。
フロントのフレームワークは特に進化が早いので、常に根本的に理解するために、これを機にしっかりJavaScriptについて学ぼうと思いました。
この本の目次
この本を一言でいうと、JavaScriptとは言語としてどんな特徴があるのか?から現場で実際に使われているJS用のツールまで広く浅く学ぶことのできる本でした!!
Chapter 1 イントロダクション
Chapter 2 基本的な書き方を身につける
Chapter 3 基本データを操作する - 組み込みオブジェクト -
Chapter 4 くり返し利用するコードを1箇所にまとめる - 関数 -
Chapter 5 大規模開発でも通用する書き方を身につける - オブジェクト指向構文 -
Chapter 6 HTMLやXMLの文書を操作する - DOM(Document Object Model) -
Chapter 7 クライアントサイドJavaScript開発を極める
Chapter 8 現場で避けて通れない応用知識
続いて、この本で印象深かったところを軽くご紹介していきます。
JavaScriptの歴史
「Chapter 1 イントロダクション」では、JavaScriptの歴史について書かれていました。当時登場した頃はブラウザー標準のスクリプト言語としてさぞかし脚光を浴びたことだろうと思っていたのですが、「ダサいサイトを作るための低俗な言語」と言われていた時代があったことに驚きました。
そのうち国際的な標準化団体であるECMA Internationalの下で、JavaScriptの標準化が進められたり、Ajaxの登場やHTML5によってどんどん人気になっていった言語だそうです。
ブラウザで動く言語といえばJavaScriptしか思いつかないんですけど、以外と他にもたくさんある(あった?)みたいです。これだけJavaScriptがよく使われるようになった背景には、やはりAjaxの力がとても大きかったのでしょうか。
文法
Chapter 2は文法についてでした。
変数の宣言や定数、データ型にundefinedなどの特殊型、関数型があるなどRubyと違う仕様ばかりで比べて読むと面白かったです。
CoffeeScriptばかりやっていたのでRubyっぽい言語なのかなって勘違いしていたのですが、全然違うことがよくわかりました☺️
組み込みオブジェクト
Chapter 3では、JavaScriptに標準で組み込まれているArrayやDateなどのオブジェクトについて触れていました。
一番上にObjectオブジェクトがいたり、基本的な操作はRubyと似ている印象でした。
ただし、null以外は全部trueとか(Rubyはnilとfalse以外がtrue)、基本データ型はnewしない方がいい(例えば、Booleanをnewすると変数の値がfalseでもBooleanコンストラクタで生成されたオブジェクトになるので、trueとして扱われてしまう)などは結構カルチャーショックを受けました。
関数
Chapter 4は、関数についてです。
「なんとなく=>()とか書いとけばOK!」って思ってたのが、これはアロー関数といって、ES2015から入った新しい機能で、関数リテラルを簡単にかけるものなんだーとか今まで漠然と使ってたものに名前がついていったのが面白かったです。
でも、JavaScriptは登場人物がとても多いですね...サンプルコードを読んだ瞬間はうおおおおなるほどおおおおとなりますが、まだ覚えきれてなくて全然説明できません...
オブジェクト指向構文
私、ずっとJavaScriptって関数型の言語だと思っていました。
それは”そういう書き方をすればそう扱えるようになる”というだけで、一般的にいうJavaScriptは「プロトタイプ型のオブジェクト指向言語」だということがわかりました。同じオブジェクト指向でもJavaやC#などのクラスベースとはまた違うので、結構読んでてややこしいと思うところが多かったです。
プロトタイプとは、より縛りの緩いクラスのようなものと本書では紹介されていました。
どういうことかというと、
・ JavaScriptにクラスという概念はなく、関数にクラスとしての役割を与えているにすぎない
・ 同一のクラスを元に生成されたインスタンスであっても、それぞれが持つメンバーは同一であるとは限らない。
・ 継承関係が動的に変更が可能である
などなど...
サンプルコードを読んでいるとプロトタイプというものがどういうものなのかふんわりと知ることができました。
他にも名前空間やモジュールなど他の言語にもあるような機能もあって、実現の仕方が似ていたりちょっと違ったりすることがわかりました。
クライアントサイド JavaScriptを極める
Chapter 7では、ブラウザでのデバッグ方法やWebStorageについても記載がありました。WebStorageとは、ブラウザー内蔵のデータストアです。普段セッションを確認するくらいでしか使わなかったので、クッキーの代替手段であること、クッキーと比べた利点などがわかってよかったです。
この章を読んで次はブラウザについての本を読みたいなと思いました。。。
まとめ
以上です!他にもDOMの操作や、JSライブラリの説明などがありました。
冒頭でも述べたように、
- JavaScriptの歴史
- 言語仕様、オブジェクト指向
- DOM, クライアントサイドの機能
- JSのライブラリ
と、本の名前の通り"本格入門"でJavaScriptについて広く浅く知ることができました!
難しいところもありましたが、JavaScriptを勉強するために一番最初に読むべき良書だと思いました!!
個人的にもう少しJavaScriptという言語そのものについて学びたいので、今はオライリーのJavaScript 第6版を読み進めています。鈍器にもなりそうな分厚さですが、1ヶ月かけて読んで、読んだらまたブログに書きたいと思います。
ここまで読んでくださりありがとうございました!