Larry Ullman : 入門 モダン JavaScript

作成日 : 2021-04-15
最終更新日 :

概要

本書は JavaScript の「モダンな」プログラミングに関する本である。正誤表などは下記から確認できる:
https://www.oreilly.co.jp/books/9784873116051/

感想

この本はわたしにとって難しい。

モダン JavaScript とはいっても、この当時のモダンである。原書の刊行は 2012 年、 訳書の刊行は 2013 年なので、2021 年のモダン JavaScript と比べれば、 既に古くなっている点もある。コンピュータの領域は進展が速いとはいえ、ついていくのは本当に大変だ。

いろいろ調べてみると、現在の文脈でのモダン JavaScript とは ES2015 以降の JavaScript を指している。 識者の指摘では、このモダン JavaScript の重要な概念はモジュール機能の獲得であるという。 具体的には、モジュールを使う側からは、次の構文でモジュールをインポートするものだ。
import modulo1 from './modulo1.js'
とする。

ついでにいえば、本書ではサーバサイドの JavaScript には言及されていない。 本書のサーバーサイドは PHP で記述されていている。

もとにもどって、モジュールに基づく書き方は私はできないけれど、これがモダン JavaScript である。 とすると本書は 2021 年でのモダン JavaScript の入門にはなっていない。 現在、モダン JavaScript の入門としてよいのは、 JavaScript Primer (jsprimer.net)だと思う。

本書では、「使用してはいけない」と指定されている項目もある。このような項目が現在でも残っていれば、 それは避けるべきである。

第1章 「JavaScript とは?」について

p.17 ではECMAScript 5 の互換性に関するサイトが挙げられている。 現在は下記にある。
https://kangax.github.io/compat-table/es5/
ここは参考になるが、2016+ と next で止まってしまっているのが惜しい。

第2章 実際の JavaScript

ここだけでかなりのボリュームがある。まずは動作するプログラムを作るためなので、 これは仕方がないだろう。なお、p.45 で次の注意がある。

これについては本文では触れられていない。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/form
ここを見ておくといいだろう。

第3章 なくてはならぬ商売道具

JavaScript に関するツールを紹介している。なお、p.70 からは Firebug について紹介されているが、 Firebug や Firebug Lite は既に開発が終了している。Firebug の機能はブラウザの Firefox に取り込まれている。

第4章 単純な変数型

本書は String をストリングと翻訳している。他書では文字列と訳すことが多い気がする。

第5章 制御構造の使用

p.116 では == と === の違いや != と !== との違いについて述べられている。 本書では、厳密な等価比較 === は、変数が undefined や null、false の値をもっていて、 FALSE にみなされる値でないことを確認するときに使う、というルールを提示している。

これは一つの見識であると思う。しかし、最近は、すべての場合にわたって厳密な等価比較 === およびその否定 !== を利用するのがよいという意見を多く目にするようになった。

第6章 複雑な変数型

p.169 では配列のメソッドとして pop(), push(), shift(), unshift() が解説されている。 pop() は配列の末尾の要素を削除し、shift() は配列の先頭の要素を削除する。 push() は配列の末尾に要素を追加し、unshift() は配列の先頭に要素を追加する。 以前からこれらは使っていたのだが、どうも unshift() という名前が落ち着かない。

第7章 関数の作成

p.191 で「パラメータはデフォルト値を持つことができない」という記述がある。 これは ECMAScript 2015 からはできるようになった。
https://babeljs.io/docs/en/learn/#default--rest--spread

第8章 イベント処理

本書で避けるべきとされた方法の一つは、 イベントリスナーをインラインのイベントハンドラーとして作成する方法である。 これは本書の p.224 で述べられている。この方法は私のページのあちこちで使っているのでまずい。 少しずつ、インラインのイベントハンドラーを削除する方針である

第9章 JavaScript とブラウザ

本書で避けるべきとされた方法のもう一つは、document.write() や document.writeln() を使うことである。 これは本書の p.279 で述べられている。これらも私のページのあちこちで使っているのでまずい。 少しずつ、document.write() を削除していく。

document.write() などを使わないようにするにはどうすればよいか、というと、はっきりとは書かれていない。 しかし、p.287 で「これ(HTML の取得や代入) を行いたいときには innerHTML プロパティを使用します。」 という文とその実例がある。これを使えばいいだろう。

なお、mozilla で調べてみると、insertAdjacentHTML ( developer.mozilla.org )というプロパティもある。 これは innerHTML より細部の調整が効くプロパティだ。また、mozilla の記述によれば、 innerHTML への代入による直接的な操作よりもはるかに高速な動作となります という。

第10章 フォームの使用

本章では正規表現の解説がある。ここでいうメタ文字は p.340 の表 10.1 によれば 11種類ある。 並行して読んでいる正規表現の本とは違う。正規表現の本のほうが正しいが、 わかりやすいのは本書だろう。

第11章 Ajax

この章は飛ばした。

第12章 エラー処理

p.403 に「ユニットテストは比較的新しいプログラミング技法ですが」とある。 ユニットテスト(単体テスト)自体は古くからある技法である。 ユニットテストを利用したテスト駆動開発という考え方が比較的新しい、というべきだろう。

本書で解説されているユニットテスト用のライブラリは jsUnity である。 現在どうなっているのか調べてみると、「jsUnity ははるか昔に退役した。 適切なユニットテストフレームワークが多く出てきたからだ」という文面が目にとまった。 さて本書では、jsUnity の他に候補として Jasmine や Selenium もあったという。そのなかで jsUnity を採用したのは 「ユニットテストの初学者に合った良質で寛大なライブラリだという理由」という。ということは、 Jasmine や Selenium は初学者には合っていないということか。

では何がいいのだろう。わたしにはわからない。

第13章 フレームワーク

ここではフレームワークのうち jQuery と YUI について述べられている。 jQuery は全盛だった時代を過ぎている。YUI についてはもう語る人さえいない。 技術の進展には驚くばかりだ。

第14章 高度な JavaScript

p.458 でクロージャは記憶を持った関数呼び出しだと考えるのが一番理解しやすいと思います。 と記述されていて、なるほどと感心した。

第15章 PHP と JavaScript の連携

この章は飛ばした。

誤植

p.107 7 行目および 9 行目に「第引数」とあるが、 正しくは「第引数」である。カタカナの「ニ」ではなく、 漢数字の「二」である。

p.215 の中ほど、カッコの対応がついていない誤りがある。

誤 : function(){...} という構造全体がかっこに入れられ (function(){...} となり、 最後に関数呼び出しに必要なかっこがついて (function(){...)();

正 : function(){...} という構造全体がかっこに入れられ (function(){...}) となり、 最後に関数呼び出しに必要なかっこがついて (function(){...})();

書誌情報

書名入門 モダン JavaScript
著者Larry Ullman
訳者永井勝則
発行日2013 年 2 月 22 日(初版第1刷)
発行元オライリー・ジャパン
定価円(本体)
サイズ
ISBN 978-4-87311-605-1
その他越谷市立図書館で借りて読む

まりんきょ学問所コンピュータの部屋JavaScript の本 > Larry Ullman:入門 モダン JavaScript


MARUYAMA Satosi