虎の穴開発室ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

いまどきな JavaScript に入門しよう!『流麗な JavaScript』を読んで(上)

こんにちは。虎の穴ラボの古賀です。
9 月の連休で社内の技術書購入を支援する制度を利用して購入した『流麗(ELOQUENT)な JavaScript 第 3 版 現代のプログラミング入門』を読みました。

流麗なJavaScriptの書影

良い本でしたので、本書の前半部分の概要とその中で良かったところや気になったところをご紹介します。

どんな本か

プラットフォームにあまり依存せず、JavaScript でプログラムを書くにあたって知るべきことが学べる本です。 また、オンラインでサンプルコードの実行や変更も可能で、手元で疑問に思ったことをコードを修正して実行できます。 さらに、いくつかの区切りで課題が設けられています。

そのため文書やコードを読むだけにならず、ハンズオンや課題形式でより深く学べます。

基本情報

タイトル 流麗な JavaScript
サブタイトル 現代のプログラミング入門
著者 マリン・ハーバーベーク
訳者 イノウ
発行日 2021/9/21(紙版)
発行 ソシム
ISBN 978-4802613378
紹介ページ 流麗な JavaScript(ソシム)

オススメする読者層

序章は JavaScript 初心者から中級者にオススメできる本です。プライベートで定期的に初心者へレクチャーすることがあるのでぜひ読んでほしいと思いました。超初心者の方は別の初学者向けの本からのステップアップで 2〜3 冊目の本として、オススメします。

また、ECMAScript2017 準拠であるため、最近の JavaScript の書き方を知りたい人や React.js や Vue.js などのフレームワークを始める前にも向いていると思います。Google App Script などで書く JavaScript をもっとよく知りたい人にもオススメできます。

著者、訳者について

マリン・ハーバーベーク氏は、カバーのそでで下記のように記載されています。

プログラミング言語の愛好家であり、ポリグロット(多言語使用者)です。データベース、コンパイラ、エディタなど、様々なソフトウェアシステムの開発に携わってきました。オープンソースのプロジェクトを中心に小さなビジネスを展開しています

データベースやコンパイラ、エディタなどプログラマーなら誰もが使ったことがある分野のソフトウェアの開発に携われれていた方のようです。 github.com

GitHub の Organizations を見ると、有名な Web エディタの CodeMirror の開発に関わられているようです。

イノウ氏も、同じくカバーのそでで下記のように記載されています。

様々な業界の「わかりにくいこと」を、図と文章、イラストと漫画、書籍とウェブを使って「わかりやすく」解説。

私は初めてお見かけしましたが、書籍については介護や IT、産業業界に関して主に翻訳を実施されている、株式会社イノウ様で翻訳されました。

構成について

大きく 3 つの段階にわかれています。

  • 1〜12 章:言語の基本機能について
  • 12〜19 章:Web ブラウザと JavaScript について
  • 20〜21 章:Node.js について

今回は、前半の 1〜12 章の基本機能についての書評になります。

Chapter1〜3:プログラムの基礎的なところから、制御フロー、関数など

Chapter1

コンピューターがどのように数値を 2 進数で表現して格納するか詳しく説明してあります。 昔の基本情報技術者試験や初級システムアドミニストレーター試験などで、よく出題された内容に似ています。 その後、JavaScript データの文字列、数式、演算子、暗黙の型変換などが解説されます。

Chapter2

値の保持(変数、バインディング)や条件(if)、ループ(while、for)に関する説明が詳しく行われます。 Chapter2 の途中から、やや実践的な内容が含まれるようになります。 制御フローの図が惜しく、矢印だけではなく矢印とどのプログラムが実行されるのか補足があるともっと分かりやすいと思いました。 変数の命名の方法についても説明があり、初心者が軽視しがちな命名規則の統一についてもフォローされています。

Chapter3

関数と変数のスコープ(var、let、const)に関して説明がサンプルコードを元に行われます。 この章も初心者が陥りがちな、グローバルやローカルスコープや再帰関数の書き方のコツ、わかりやすく関数を改修していくコツ、純粋関数に関することが説明されています。 とくに再帰関数の部分は難しいコードが増えてきますが、実行結果と比べながら読み解くと私は理解できました。

Chapter4

オブジェクトや配列(Array に実装されている便利関数も含めて)に関して、主に解説されています。React.js や Vue.js などのフレームワークで使われている分割代入に関する説明もあります。 また、JavaScript でよく使う JSON 文字列をオブジェクトへ変換したり、オブジェクトを JSON へ変換する処理(JSON.stringify、JSON.parse)に関する説明があります。

Chapter5

関数の抽象化から、高階関数、Array に実装されいる高階関数(filter、map、reduce、some)なども織り交ぜながら説明されています。最初の料理のレシピを抽象化する前とした後の説明がわかりやすかったです。

Chapter6

オブジェクトのメソッド、プロトタイプ、クラス、シンボル、継承などについて記載があります。

個人的に TypeScript をよく触ることが有り、この章の内容は JavaScirpt の基本的なオブジェクト指向に関わるため、JavaScript 側の言語機能を知ることができてより深く理解できたと思います。JavaScript の抽象化の方法に関して、悩みが解決できる内容と思います。

Chapter7

実際に荷物を受け取って配達するプログラムを組んで、これまでの内容を確認する課題になっています。

Chapter8

JavaScript のバグをテストやデバックで見つける方法、例外の後始末について解説されています。言語になれていない初心者向けの場合は例外の処理に関しては考慮が抜けたり省かれることがありますが、本書は具体的な方法がしっかりと記載されいて好感が持てました。

Chapter10

JavaScript のモジュールやパッケージに関して解説されています。

CommonJS(require)や最近の ECMAScript モジュール(import/export)に関して記載があり、それぞれの利点や欠点に関しての記述があります。 また、ビルドやバンドルに関しての言及もあり、React.js や Vue.js を使う上での下地となる情報が含まれていました。

Chapter11〜22:未読

良かったところ

サンプルコードの実行環境や練習問題がある

下記のサイトで実際にサンプルコードを変更して試したり、全体のコードを見れます。 eloquentjavascript.net

各章の最後に練習問題があり、どのくらいその章の内容を理解できたか確認ができます。また、問題の場合は「look at the solution」ボタンを押すことで回答を確認できます。

初心者がつまづきがちなところについて説明がある

JavaScript の特徴的なオブジェクトに関するところや、エラー処理、バグをテストやデバックで見つける方法、例外の後始末について記載があります。

理解するのに時間は掛かるかもしれませんが、とても有用な情報と思います。

また、React.js や Vue.js を使う上での下地となる情報(モジュール絡みや文法的な ES2017 のところ)がフォローされています。

気になったところ

細かな翻訳のミスが多いですが、読んでいて気になったところです。

Chapter1

console.log(typeof 4.5);
// → 数字
console.log(typeof "x");
// → 文字列

p30 ページより引用

console.log の出力結果まで翻訳されています。(正しくは、number と string)

p126 ページにも存在します。

console.log(stringObject[toStringSymbol]());
// → 麻縄

p126 ページより引用

本来は、a jute ropeが表示されます。ホームページの正誤表にもないので、おそらく気づかれていないのでは?と思いました。

Chapter2

Mac の場合、コマンド・オプション・I キーを押すと

p41 ページより引用

ここのコマンド・オプションは Command または Option から翻訳しない方が適切と思いました。

また、サイドエフェクトに(副作用)の補足が最初の一箇所のみでそれ以降の補足がないため、英単語の意味をご存じない初心者の方に少し不親切と感じました。

まとめ

ページ数が 461 ページととても多く、サンプルコードや課題も盛り沢山なため、今回は前半部分だけについて書評を書かせていただきました。また、時間がとれたら続きも読んで書評を書きたいと思います。

紹介させていただいた『流麗な JavaScript』について、ホームページや GitHub で英語版「Eloquent JavaScript」が無料公開されています。

eloquentjavascript.net

github.com

今回、紙の本でかつ日本語で読みたかったため本書を購入いたしましたが、英語が読める方で電子で良い方は原著の方も確認してみてはいかがでしょうか?

最後までご覧いただきありがとうございました。

P.S.

採用

虎の穴では一緒に働く仲間を絶賛募集中です!
この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧下さい。
yumenosora.co.jp

LINE スタンプ

エンジニア専用のメイドちゃんスタンプが完成しました!
「あの場面」で思わず使いたくなるようなスタンプから、日常で役立つスタンプを合計 40 個用意しました。
エンジニアの皆さん、エンジニアでない方もぜひスタンプを確認してみてください。 store.line.me