Node.js に関する新しい書籍が出版されているのを書店で目にしたので購入して一読してみました。
本書の内容は書名どおり Node.js の導入とサンプル・アプリケーションの説明に重点が置かれており、スケーラブルなアプリケーションやデプロイメントについては触れられていません。
当然、Nginxとの連携やサーバ環境構築などについての言及もありません。
しかし、サンプル・アプリケーションではクッキーやセッションの使用、データベースとの連携など、アプリケーション作成において多くの人が知りたいと思う部分がきちんと記述されており、プログラムとして問題なく動作します。
Node.js に関する書籍の発行数が少ないこともあり、現行の環境でサンプル・アプリケーションが実際に動かして使える入門書の存在は貴重です。
本書では入門者を対象としていることから、Windows OS 上にてアプリケーションを実行する方法が書かれているのですが、他の OS でも全く問題なくアプリケーションを実行できます。
私の開発環境は下記の通り Ubuntu (開発環境として書籍では言及されていない OS) ですが、Visual Studio Code も含めて問題なく本書の開発環境を再現できました。
もっとも使い慣れたテキストエディタの方が作業効率が良いので VSC は、動作確認ぐらいしかしていないのですが。
しかし、せっかく VS Code を入れるのに ESLint でデバッグしないのでしょうか。これなら本当に Vim でいいじゃん。
DISTRIB_DESCRIPTION | “Ubuntu 16.04.4 LTS” |
---|---|
js | v8.11.1 |
node | v8.11.1 |
npm | 5.6.0 |
express | 4.16.0 |
sqlite3 | 3.22.0 |
Visual Studio Code | 1.22.2 |
なぜ SQLite3 がここに挙げられているのか? と思った方は、とても鋭い認識力をお持ちです。
本書のサンプルアプリケーションでは MongoDB や CouchDB といった JavaScript のデータベースではなく SQLite を用います。
入門者なら最初はSQL対応のDBを知るべきという著者の考え方が反映されている部分で、その主張自体はとても共感できるものですが、 Node.js を興味を持つ人で SQL に一切触れたことがない人はどれくらいいるのか判断が難しいところです。
個人的には NoSQL の独自クエリは大嫌いですし、サーバ接続の問題からアプリケーション起動に失敗する等の無用のトラブルを避けるという、入門書ならではの前提を考えると仕方がないかなと思えます。
またサンプルアプリケーションへのデータベースの導入時は、文字リテラルでクエリを手書きしていて閉口しますが、これも著者の考えあってのものであり、次章からは O/RM ツールが導入されますので安心してください (O/RMという用語自体は使われずにデータベース用のモジュールと記述されます)。
本書中では重要なポイントとされつつ、DBやSQLについては (Node.js という主題から外れるという事情もあって、詳しくは) 各自学習してみてくださいで終わってしまうので、本当に DB や SQL に触れたことがない人は他の書籍も参考にされた方が良いです。
SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)
ここまで述べてきただけでも本書の役割や性格が見えてきたと思われるのですが、長所だけではなく短所ももちろんあります。
その中でも最も致命的なものは、サンプルアプリケーションのソースコードが目的のアプリケーションや章毎に整理されておらず、読み進めるごとに煩雑で読みづらくなっていくことです。
第2章で作成したアプリケーションを一部改編して第6章まで再利用していく構成になっており、進行時点においては既に使われていないモジュールがそのまま残されたり、必要以上にソースコードが複雑で読みづらくなります。
Node.js やフレームワークの初見での分かりづらさは、主にファイルや関数の数の多さと、(自分で設計したプログラムではないために) 「どの関数で何が行われているのか」を把握しづらい点にあります。
その点、本書では — 少なくとも初期の段階では — どこに何があり、どの関数が何が行われているのかという見通しがよく、それだけでも入門書として大きな価値があります。
それがソースコードの書き換えを行うごとに見通しが悪くなっていき、内容自体の複雑化と併せて終章に向かうに連れて苦痛になっていきます。
命名規則や開発効率の点からも良くありません。
私の場合はアプリケーションの目的が変わった時点で、プロジェクト (ディレクトリ/フォルダ) を新規に作成して対応しましたが、もし本書の中であらかじめサンプルアプリケーションやソースコードが整理されていて、個々のアプリケーションが単体でも実行可能であれば学習効率が大きく向上したことは間違いありません。
それでもアプリケーションとして、現行の環境できちんと動作するところは皮肉や嫌味ではなく特筆すべき点です。
例外処理を入れた方が良さそうと言った理由から個人的に書き換えたくなるところはありましたが、サンプルのソースコードをそのままアプリケーションとして実行してエラーとなったのは、一部の ejs ファイルの form method ただ1点だけです。
それも下記のようにパスを書き換えれば問題なく実行できます。
1 |
<form method="post" action="./edit"> |
サンプルが正しく実行できるという安心感はとても重要で、だからこそソースコードを自身で改編して試行錯誤しながら上手くいく方法を模索できます。
本書から学べることは本書に書いてあることだけではない訳で、自分で console.log を付け加えて変数の中身を調べたり、関数を付け加えてサンプルとの出力の違いを確認したり、データベースを MongoDB に置き換えても構わないわけです。
上述のように一癖ある本書ですが、 Node.js の貴重な入門書であり、他の関連書籍と内容があまり重複しないという点でも一読してみて良かったなと思えました。
追記: node.js の開発をやるなら nodemon を入れておくと頻繁に再起動しなくて済むので楽です。