【2020年】Node.jsの本「最新・人気のおすすめの10冊」

JavaScriptでサーバーサイド実装が可能な「Node.js」。

Node.js向けには豊富なModule(パッケージ)が提供されており、それらはクライアントアプリなどでも使われ、Node.js環境は今非常に幅広く使われる環境となっています。

こちらでは、そんな活用の幅も広いNode.jsの参考書を人気とともに紹介していきます。

発売したての新書をピックアップ
技術書は情報の鮮度も重要、人気ランキングの前に新しい書籍もチェックしておきましょう。




 
Kindle Paperwhite
発売日 2018/11/07
通常 13,980円
現在 13,980円

 

 

Kindle Unlimited 1ヶ月無料

kindle_unlimited_sale
 
  • 1ヶ月無料で読み放題
  • 1ヶ月以内でも解約可能
  • 解約後も1ヶ月まで利用可


    

Node.jsの参考書「人気ランキング 20冊」

Node.jsの今売れ筋本を人気ランキングで一覧したのが以下。

ランキングは日々更新されていますので、最新の人気が反映されています。

 

(2020/12/01 更新)
売筋
Rank
製品評価
1
ハンズオンNode.js
発売日 2020/11/17
通常    4,070円
単行本   4,070円 (+41pt)
(0)
総評価数 0件
2
Node.js超入門 第3版
発売日 2020/09/10
通常    3,520円
単行本   3,520円 (+35pt)
Kindle   3,168円 (+32pt)
(3.6)
総評価数 7件
3
Node.jsデザインパターン 第2版
発売日 2019/05/18
通常    4,620円
単行本   4,620円 (+46pt)
(4)
総評価数 9件
4
Node.js 超入門
発売日 2017/09/19
通常    2,970円
単行本   618円
Kindle   2,970円 (+30pt)
(3.2)
総評価数 11件
5
入門Node.jsプログラミング
発売日 2019/09/25
通常    3,740円
単行本   3,740円 (+174pt)
Kindle   3,366円 (+34pt)
(3.3)
総評価数 22件
6
Node.js 超入門[第2版]
発売日 2018/12/18
通常    3,300円
単行本   3,300円 (+66pt)
Kindle   2,673円 (+27pt)
(3.2)
総評価数 20件
7
サーバサイドJavaScript Node.js入門 (アスキー書籍)
発売日 2014/02/27
通常    3,010円
単行本   2,340円
Kindle   3,010円 (+30pt)
(3)
総評価数 7件
8
(3.6)
総評価数 15件
9
実践Node.jsプログラミング Programmer's SELECTION
発売日 2014/06/10
通常    3,564円
単行本   1,931円
Kindle   3,564円 (+36pt)
(3.7)
総評価数 10件
10
(3.3)
総評価数 8件

 

以降でおすすめ・注目の本をピックアップしていきまっす。

ちなみに、Kindle版のある本ならサンプル送信で試し読み可能。大概目次まで見れるので、内容の概要もつかめるので、サンプル試読おすすめです。

 

Node.jsの本 人気の参考書 5冊

以下が今人気(売れ筋)のNode.js関連の本の5冊の詳細です。

(2020/12/01 更新)
売筋
Rank
製品評価
1
ハンズオンNode.js
発売日 2020/11/17
通常    4,070円
単行本   4,070円 (+41pt)
(0)
総評価数 0件
2
Node.js超入門 第3版
発売日 2020/09/10
通常    3,520円
単行本   3,520円 (+35pt)
Kindle   3,168円 (+32pt)
(3.6)
総評価数 7件
3
Node.jsデザインパターン 第2版
発売日 2019/05/18
通常    4,620円
単行本   4,620円 (+46pt)
(4)
総評価数 9件
4
Node.js 超入門
発売日 2017/09/19
通常    2,970円
単行本   618円
Kindle   2,970円 (+30pt)
(3.2)
総評価数 11件
5
入門Node.jsプログラミング
発売日 2019/09/25
通常    3,740円
単行本   3,740円 (+174pt)
Kindle   3,366円 (+34pt)
(3.3)
総評価数 22件

 

「ハンズオンNode.js」

ハンズオンNode.js
(著)今村 謙士
発売日 2020/11/17
Node.jsの入門書。対象読者は、フロントエンド開発の知識はあってもサーバサイド開発は知らないエンジニアや、他言語の経験はあってもNode.jsは触ったことがないプログラマー。
本書ではターミナルのプロンプトにコマンドを入力してその反応を確認したり、簡単なスクリプトをNode.js環境で実行したりしながら、Node.jsプログラミングの基本からWebアプリケーションの開発、テスト、デプロイまでをハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。
本書のゴールは、読者がNode.jsの全体像を掴み、業務レベルでのアプリケーション開発に対応可能な知識を身につけることです。

↓全て表示↑少なく表示
 
ハンズオンNode.js
発売日 2020/11/17
通常 4,070円
現在 4,070円

  

「Node.js超入門 第3版」

Node.js超入門 第3版
(著)掌田津耶乃
発売日 2020/09/10
(3.6)

Node.jsの入門者向け書籍です。2018/8に出た「Node.js超入門 第2版」の改訂版です。改訂内容は新バージョン14対応、データベースはSQLite3、ORMはSequelizeに変更しています。CSS関連はBootstrap利用、Expressは最初からGeneratorを使う形で解説しています。
対象読者はJavaScriptの入門書を読み終えた層ですが、その経験がない層も読めるよう配慮し巻末にこの本を読むのに必要なJavaScriptの知識を最低限解説しています。Node.js未経験者から、既存の入門書などで挫折した人までより多くの人がついていけるよう、手取り足取り教える内容です。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
内容サンプル

(引用元Amazon)

 
Node.js超入門 第3版
発売日 2020/09/10
通常 3,520円
現在 3,168円
352円(10%)OFF!!

  

「Node.jsデザインパターン 第2版」

Node.jsデザインパターン 第2版
(著)Mario Casciaro, Luciano Mammino
発売日 2019/05/18
(4)

Node/JavaScriptアプリの設計技法を、実際に手を動かしながら学ぶハンズオン形式の解説書。
本書では最初に、JavaScriptの大きな特徴でありながら多くの開発者にとって馴染みの薄い非同期処理(コールバックを用いた処理)についてその仕組みを詳しく説明するとともに主なデザインパターンを説明し、Node.jsの基礎を押さえます。
次に、ストリームや一般的なデザインパターンのNode.jsでの実装、Node.js専用のデザインパターンといった事柄を解説します。
最後に、ユニバーサルJavaScript、スケーラビリティ、Node.jsを使ったエンタープライズアプリの開発といったより高度なトピックを扱います。
中級以上のウェブ開発者を対象としています。バージョン11対応。

↓全て表示↑少なく表示
 
Users Voice
Node.jsのシングルスレッド、ノンブロッキングI/Oによる独自のアーキテクチャを踏まえた実装における細かなコーディング作法からデザインパターンまでを学ぶことができる。
大規模開発のための整備されたコード設計、関数設計、クラス設計、さらには分散スケール環境でのアーキテクチャのデザインパターンまでを紹介してくれている。node.jsはv11.9.0に対応。
gitからソースコードを取得できるが、著書に記載されているソースコードだけでも処理の概要を把握できるよう配慮されているのがありがたい。
基本的に各チャプターごとにプロジェクトファイルが用意されpackage.jsonで必要関連ライブラリをバージョン指定されているので、フォルダ内でnpm install の一発で環境が揃うのはありがたい配慮だ。著書では、ライブラリの個別インストールのコマンドが表記されているが、上記を実行していれば特に必要はない。
※一部でグローバルインストールが別途必要なものあり
※redis, rabbitMQなどミドルウェアは、別途構築する必要あり
コードを追いながら、高度なアーキテクチャの技術を身に付けたい人向け。
Node.jsの中上級者向けに響く著作だと感じた。

-------------------
#注意点

8章 webpackをグローバルインストールする記載がされている> P255
バージョンを指定しないと最新版がインストールされ、著書と挙動が異なって検証ができ
なくなるので、以下のバージョンでインストールすること。(package.jsonにも記されているので確認できる。)
npm install webpack@1.12.14 -g
※package.jsonのwebpackと合わせる
他のnpmでグローバルインストールしているものは、package.jsonのバージョンに合わせたほうがいい

8章:sample12,13,14
P285 に実行コマンドにnode serverと記載されているが、コードに記載されたJSXを変換実行する必要があるので、babel-nodeまたは、babel-cliをかましてスクリプトを実行する必要がある。
例:./node_modules/babel-cli/bin/babel-node.js server

9章以降:
node-gyp系リビルド処理でpython2.7系が必要なケースもあり。
nvmで異なるnodeのバージョンが必要になるケースもあり
macで検証している場合は xcode, xcode toolを最新版にしておくこと

--------------------
#以下、内容メモ

1章:Node.jsの世界へようこそ

モジュールは小さく設計すべき
・コードを少なく
・機能を最小限
npmによってモジュールの依存地獄から解放
->パッケージが個別に依存モジュールを定義できる

ブロッキングI/O:
I/O処理は時間がかかる→サーバがブロッキングI/Oの場合、複数リクエストの場合は新たにスレッドを起こす必要がある。消費するメモリや、コンテキストスイッチのコストを考えると、効率は良くない。

ノンブロッキングI/O:
データの書き込み完了をまたずに一旦終了できる。
同一スレッドで、複数リソースを扱えるようになる。
イベントループでビジーウェイトせずに複数のI/Oを処理
並行性の扱いが単純になる。スレッドの競合、同期を考慮しなくて良い

・リアクタパターン
I/Oタスクのそれぞれにハンドラ(コールバック関数)を対応させるもの
コールバック関数を使用して、すべてのリソース処理を後回しにするようなプログラミン
グスタイル。

Node.jsのアーキテクチャ
libuv:node.jsのCライブラリで、OSに依存せず同じ手法でブロッキングI/Oを使える。
v8:GoogleによりChromeブラウザのために作られら高速効率的メモリ管理のJavaScriptエンジン
バインディング:libuvmやその他の低レベルの機能をラップし、JavaScriptで利用できる
ようにするための抽象化レイヤー
node-core:ハイレベルなNode APIを実装したJavaScriptライブラリ

2章:Node.jsの基本パターン

・コールバックパターン
同期プログラミングにおけるreturn文に相当。非同期プログラミングでは必須。
JavaScriptのクロージャを使うことで、コールバック関数内にその関数で生成された環境
を参照することができる。

関数によって同期、非同期で呼ばれるかの違いによって呼び出し元の実装も変わる。
関数内で分岐判定処理によって同期や非同期で値が返る仕様は思わぬバグを産む。
->どちらかに明示的に仕様を決める。

process.nextTick() イベントループで次まで関数の実行を遅延(先延ばし)してくれる。登録されたI/Oイベントの前に実行->nextTIck()の再帰呼び出しはI/O starvationに陥るケースがあるので注意。
setImmediate():登録されたI/Oイベントの後に実行

try catchでキャッチされない例外の補足方法
 process.on('uncaughtException',(err)=>{ //todo process.exit(1); }):

依存解決の仕組み:ロード元によて異なるモジュールのバージョンをロードする機能
循環参照の注意点:読み込む順番によって初期化されるモジュールが異なる問題が起きる

・モジュール定義におけるパターン
オブジェクト、コンストラクタ、関数のエクスポート
インスタンスのエクスポート

・オブザーバパターン
EventEmitterをつかって複数のオブザーバに対して通知を行う。
on, emit, return emitter P62
複数イベントを扱う、イベントの発生回数が予測できない場合に向いている。

コールバックと、EventEmitterを組み合わせた関数
glon(pattern, [option], callback).on('match', match => console.log(`${match}`))
コールバックは結果データを返すが、EventEmitter(`match`)で中間処理情報を通知する仕組み

3章:コールバックを用いた非同期パターン

コールバックのネストが幾つも重なる=コールバック地獄 p51
視認性が悪く、クロージャを解放し忘れるとメモリリークの原因にもなる
・クロージャを乱用しない
・if文にelseをかかず、returnでなるべく早く抜ける:ネストレベルを下げる
・コールバックを独立した関数で定義し、クロージャを使わない。
・一つの関数にネストしたコールバックを書かず、複数の関数に分割する
※クロージャ:自分を囲むスコープにある変数を参照できる関数:関数の内側の関数

逐次処理におけるコールバックの伝播
並行処理におけるコールバックの伝播

・並行処理:非同期でイベントループ内で並列数分インタリーブされ処理される。
マルチスレッドでないので特別な技術は必要ない。Nodeの強み。
完全に競合状態がないわけではない。複数タスク新しいファイルだった場合ファイル読み込み処理するケースで、複数タスクが同時に新しいファイルだと判定して、同じ処理をしてしまう場合がある。

同時実行数制限をした並行処理
キューを使った同時実行数制御

委譲:delegate

asyncライブラリを使用した逐次、並行処理、同時実行数を制御した並行処理
series:非同期逐次実行
eachSeries:配列要素を捜査して非同期逐次実行
each:並行eachSeriesからの移行に便利
eachLimit,mapLimit,parallelLimit,queue,cargo:同時実行数を制限した並行処理
前半の並行処理実装は、asyncライブラリで簡潔に置き換えられる

4章:ES2015以降の機能を使った非同期パターン

Promise:コールバックの欠点を補うために考案された。非同期処理の結果を表現するオブジェクト。callbackなどの橋渡しスタイルからの変更
Generator:functionの後ろに*を付加して宣言すれば、yieldにより処理を中断できる。
 非同期の制御フローを簡単に記述(yield, next()を活用)し、関数を一旦抜けたり、そこから再開できるようにする
coライブラリを利用したジェネレータベースの制御フロー
 async/awaitを使用した制御フローでGeneratorを使用することで複雑化した実装をシンプルにする。

5章:ストリーム

ストリームとバッファの違い
バッファ:データが全て揃ってからコールバック通知
ストリーム:データを受け取った時点で途中でもコールバック通知可能
巨大なデータも少ないリソースでやりとりできる。
ファイル転送後の解凍処理もチャンク単位で圧縮して転送し解凍することができる。
バイナリモード:チャンクの形でストリーム化する
オブジェクトモード:オブジェクトとしてデータを処理
・Readable:ソースを表現
 non-flowingモード:readableイベントにアタッチ、read()でバッファが空になるまで読み込む
 flowingモード:dataイベントにアタッチ、データがリスナーにプッシュされる
Readableストリームの実装:_read()は継承したReadable内部で呼ばれる
・Writable:データの行き先
writable.write でチャンク書き込み
writable.end で最後のチャンク書き込み
 バックプレッシャ:データが消費されるよりも速く書き込まれてしまう場合の対処
 Writableストリームの実装:_write()は継承したWritable内部で呼ばれる
・Duplex:ReadableかつWritableなストリーム、双方を継承しread(),write()を行う
・Transform:データ変換用 write -> read
・パイプを使ったストリームの接続
 unixでは、次のプログラムの入力として簡単に接続できる
echo Hello World! | sed s/World/Node.js/g
node.js -> pipe()で行う
・パイプ処理パターン
 Combinedストリーム:ストリームの合併
 ストリームのフォーク
 ストリームのマージ
 マルチプレクシングとでマルチプレクシング

6章:オブジェクト指向デザインパターンのNode.jsへの適用

・ファクトリ:
p152 模擬オブジェクトを返す(start:function{}, end:function{})
合成可能ファクトリ:ファイプラリstampit
・公開コンストラクタ
・プロキシ
データ妥当性検討、権限チェック、キャ種保存、遅延初期化など
応用:配列の仮想化
・デコレータ
・アダプタ
・ストラテジー
・ステート
 コンテクストの状態によって変化するストラテジーとして見れる
・テンプレート
具象クラスが定義された瞬時にアルゴリズムが決定される。ストラテジとの違いは、ストラテジは動的に変更が可能、テンプレートはクラスが定義された瞬間にアルゴリズムが決定する。
・ミドルウェア
 玉ねぎの皮のようにミドルウェアの層をつくり、順に層を呼び出し中心のアプリケーションのコアに到達させる。
・コマンド

7章:モジュールの接続

・シングルトンとしてモジュールを利用するパターン
 modele.exportsを活用
 require()関数呼び出し時にキャッシュされ、以降はキャッシュを返すため
->落とし穴がある。パッケージごとに異なるnode_modulesのパッケージを参照してしまう恐れあり:global変数で対応できるが、この方法は避けるべき。

・モジュール接続のためのパターン
require()でステートを持ったインスタンスへの依存をハードコードすることによる制限
 DI(依存性注入)のケース:Factoryパターンを活用して後からモジュールを指定する
 ->利点:dependencyから分離し再利用しやすくなる
  欠点:依存関係の把握が増加複雑化すると管理が大変
 サービスロケータ:DI同様、コンポーネント間の把握が難しくなる
 DIコンテナ:依存するもの以外の余計なサービスにモジュールを依存させなくできる
・プラグインの接続
 require()するだけで、プラグイン機能を付加できる実装:関数を変数に格納する手法とデコレータパターンを駆使して行う
 サービスロケータ、DIコンテナをつかった公開方法

8章:ユニバーサルJavaScript

サーバサイドとフロントエンドでのコード共有
Reactを使用したSPA(Single-Page-Application)の作成
・モジュールの共有
 UMDパターン:定型的なコードを沢山書かなければならない
 ES2015モジュール:サポートされていないブラウザに注意
・Webpackの導入
node用に作成したモジュールをブラウザ用に書き直してくれる
 ES2015で提供される機能を実装していても変換してくれる
・クロスプラットフォーム開発の基礎
 実行時コード分岐
 ビルド時コード分岐:Webpackの例
 ビルド時にモジュール置換:Webpackの例
 クロスプラットフォーム開発向けのデザインパターン
 ・ストラテジー、テンプレート:用途によって切り替え処理ができる
 ・アダプター:互換性を持たすようにアダプターで置換する
 ・プロキシ:サーバ側のモジュールをリモートプロキシで呼び出す
 ・オブザーバ:イベントを発生、受け取りのコンポーネントを抽象化
 ・DIとサービスロケータ:依存性注入時にモジュール入れ替えする
・React
サーバ内とクライアントでほぼ同じコードでのビューのレンダリングができる
 Nodeサーバでビューをレンダリングしてブラウザが受け取り表示可能=SPAを作成できる。
JSX:HTMLとDOMツリー表現の中間フォーマット的な位置付け
expressのstaticを利用してwebpackしたモジュールを読み込めるようにして、1度目はサーバでレンダリングし、以降はブラウザで再描画する仕組み
babel-cliでサーバサイドでJSX記述を残したまま、実行時変換起動させる方法
 Webサーバ(プロキシとして活用)、APIサーバとスケーラブルな構成のパターン

9章;特殊な問題を解決するためのパターン

・非同期に初期化されるもモジュールのrequire
ステートパターンを利用し実行リクエストをキューにため、非同期実行が完了してからキューのリクエストを実行する堅牢な作りの紹介
・非同期のバッチ処理とキャッシュの利用
・CPUバウンドなタスクの実行
setImmediateによるインタリーブ:cpuバウンドの処理のステップが完了するたびにイベントループに制御を戻す
マルチプロセスの利用:子プロセスへ移譲

10章:スケーラビリティとアーキテクチャ

複数プロセス利用、複数サーバ利用にしてスケールする
下記3つの観点でのスケールを考える。
 クローニング:アプリをn回クローニングして各インスタンスに1/nの処理をさせる
 サービスと機能による分割;機能、サービス、ユースケースで分割
 データパーティションによる分割:データの一部を各インスタンスが分担して担当
  水平分割、シャーディング
・クローニングと負荷分散
 モジュールcluster
 ・バージョン0.11.2以降からラウンドロビン方式の振り分け
 ・障害時の再起動(zero-downtime restart)の実装
 ・負荷分散
  ステートフルにしたいデータの共有問題
  ・共有メモリを利用した認証データの保存
  ・スティッキーな負荷分散(値判定で特定ノードへ割り振る)による特定なインスタンスへのマッピング
 ->問題点あり:インスタンスの代替が効かなくなる問題
  リバースプロキシによるスケーリング
 ・ロードバランサとして機能するリバースプロキシ
  ・URLリライト、キャッシング、SSLターミネーション
  ・nginxをロードバランサとしてバックエンドにnodeのwebサーバを稼働させたパターン
  サービスレジストリを活用し、最新の稼働サーバ情報を登録し、ロードバランサがその内容を参照するパターン
  ・nodeでの負荷分散装置の実装
  ピアツーピア負荷分散:ロードバランサの処理量に依存させない方法:その分、接続方法は複雑になる
・サービスと機能の分割
マイクロサービスアーキテクチャのパターン
 各サービスにデータ所有権があることがマイクロサービスアーキテクチャの特徴
 正しいレベルの分離を独立維持するために、データベースも分割する
 データベースを分割した分、システム全体の一貫性を維持するために、互いのデータを参照更新する多くの通信が必要になる。
 クラッシュ、バグ、互換性を破る変更をシステム全体に波及させないようにする。
 利点:
 ・再利用性向上
 ・スケールは、複数マシンに負荷分散。独立してスケール可能
 難点:
 ・管理すべきノードが増えると、統合、デプロイ、コード共有が複雑になる。
 ・APIオーケストレーション層で複数のマイクロサービスのAPIを実行し、データを集約、処理する。
 ・メッセージブローかを使ったケース;フロントエンドのリクエストを受け取ったマイクロサービスが、関連するマイクロサービスにメッセージブローカを通して処理を行う

11章;メッセージ通信と統合

分散アプリケーションを統合する手段
・共有ストレージを中央の調整器兼情報の保持器として使う。
・メッセージを使ってデータ、胃炎と、コマンドを各ノードに行き渡らせる

メッセージ通信
・非同期メッセージと送信キュー:SMSのようなもの
・ピアツーピアメッセージ通信
・ブローカを使ったメッセージ通信:プロトコル間のブリッジにも利用できる、ブローカ
が単一障害になるデメリットはある。

パブリッシュ/サブスクライブ(pub/sub)パターン
 分散オブザーバーパターンでもある
 ・ピアツーピア型Pub/Sub
 ・ブローカ型Pub/Sub
 メッセージブローカにredisを適用したチャットサーバの分散スケール
 ZeroMQを使ったピアツーピア型PubSubで分散処理するチャットサーバ
 サブスクライバに障害が起きても確実にメッセージを送信できるような永続サブスクライバの実現
 ・多くのメッセージキューシステムが採用しているプロトコル:AMQP
 ラビットMQを使用したAMQPによるチャットサーバ

パイプラインとタスク分散パターン
・ZeroMQのファンアウト/ファンインパターン
 ハッシュサムを総当たりでしてアルファベットの考えられるすべての組み合わせを照合
するシステムで実践
 ベンチレータ->ワーカー->シンク
・パイプラインとAMQPの競合コンシューマ
 競合コンシューマ;複数のコンシューマが同じキューをリッスンし、メッセージをファ
ンアウト分散する

リクエスト/リプライ・パターン
・相関識別子を使用した、リクエストとリプライの紐付けで、リクエスト順序に影響しない
実装方法

付録A:ES2015以降のJavaScriptの主要機能
let, const:変数定義
アロー関数:=> コールバック関数を簡潔化記述できる
class構文
オブジェクトリテラルの改善
MapとSet
WeakMapとWeakSet
テンプレートリテラル
etc...

以上。 (参考:Amazon)

↓全て表示 ↑少なく表示
よきよき (参考:Amazon)

↓全て表示 ↑少なく表示
 
Node.jsデザインパターン 第2版
発売日 2019/05/18
通常 4,620円
現在 4,620円

  

「Node.js 超入門」

Node.js 超入門
(著)掌田津耶乃
発売日 2017/09/19
(3.2)

もし、あなたがWebアプリの開発をはじめてみようと思っているなら、Node.jsをおすすめします。Node.jsは、JavaScriptでサーバー開発ができる非常に重要なソフトです。本書は、Node.jsのインストールから、フレームワークの使い方、データベースを使った本格的なWebアプリの開発まで、初心者でも手を動かしながらおぼえられる入門書です。あなたもDB版ミニ伝言板やMarkdownデータ管理ツールなどの開発を体験してみましょう!

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
Users Voice
Nodeを触って見たくなり、ネットで調べながら勉強してみたが何から手をつければいいのかわからずに挫折。コストパフォーマンス的に本を買ったほうがやすいと考えて購入しました。現在chapter4まで読んだところですが、一つ一つのモジュールの説明がありスッキリわかりました。文章も読みやすく、すらすら進めることができます。誤字は確かにありましたが私はそこまでは気になりませんでした。ただHTML・CSSに関する説明は少ないので、全くの初心者の方はHTML・CSSの意味は調べながら学習することになると思います。これからNodeを勉強したいが、何からやればわからない方は読めば勉強の方針を立てることができるのではと思います。 (参考:Amazon)

↓全て表示 ↑少なく表示
動画サイトや書籍で何度も挫折したが、初心者がどこに疑問を抱くかを先回りして説明が組み立てられています。

こういうものと、ある程度断定的に説明が進むので、割り切りながら読み進められるのもありがたかったです。

カラーで見やすく、汎用的な想像も掻き立てられました。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元Amazon)

 
Node.js 超入門
発売日 2017/09/19
通常 2,970円
現在 2,970円

  

「入門Node.jsプログラミング」

入門Node.jsプログラミング
(著)Jonathan Wexler
発売日 2019/09/25
(3.3)

JavaScript(ES2015以降)をフル活用して
柔軟性に富んだWebアプリを作成しよう!
フロントエンドもバックエンドも
JavaScriptのスキルを120%活用する

本書は
「Get Programming with Node.js」
Jonathan Wexler, Manning Publications Co, 2019
の翻訳書です。

アプリケーションを構築できるプラットフォームは数多く存在します。Node.jsは、そのひとつですが、Webアプリケーション(インターネットを介してリクエストを処理し、応答として処理したデータとビューを返すアプリケーション)の構築に適している点が最大の特徴です。

本書は、純粋にJavaScript(ECMAScript 2015以降)だけを使ってアプリケーションを構築する手法と、その手立てを提供します。そのため、JavaScriptの機能と使い所の極意を否が応でも学ぶことになります。

また同時に、本書はWeb開発への導入編となるでしょう。Webアプリケーションを構築したことがないとか、内部的な仕組みを完全に理解していなかったという人は、本書で、その全貌を学ぶことができます。

本書の目標は、サンプルやコードを通じて、これらのコンセプトを説明することであり、サンプルを使い・変更して、読者が自分のアプリケーションを作れるようにすることにあります。

【本書のポイント】
・9つのユニットと38の短い章構成
・節ごとの理解度チェック
・章ごとの練習問題
・豊富な補足事項とポイント解説

【読者が得られること】
・Node.jsを使ったWebアプリケーション構築の基礎知識
・Node.jsによる実用的なプログラミング能力
・ECMAScript 2015以降の新しい機能を使ったプログラミング手法

※本電子書籍は同名出版物を底本として作成しました。記載内容は印刷出版当時のものです。
※印刷出版再現のため電子書籍としては不要な情報を含んでいる場合があります。
※印刷出版とは異なる表記・表現の場合があります。予めご了承ください。
※プレビューにてお手持ちの電子端末での表示状態をご確認の上、商品をお買い求めください。


↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
Users Voice
HTML/CSS/JavaScript(フレームワーク含む)で何回かアプリや機能を実装したことのある人が、nodeが裏でやってくれていることについて理解し直すために読むのには良い書籍だと思います。

自分自身、これまでnodeに関しては良くわからないままnode_moduleを導入したり、スクレイピングのnodeライブラリを導入したりしていました。完全なる雰囲気でやっており、そのおかげでExpress.jsを使ったHerokuでのAPIの立て方がわからず本書にたどり着いた次第です。

この書籍を通じて、何が起こっているのかを少しずつソースコードを発展させながらキャッチアップできたので曖昧だったところがずいぶん減ったと思います。今まで断片的だった知識が線に繋がる感覚です。
(curlコマンドについて一緒に学べたのも良かった)

気になる点としては"Node.jsの入門書"であって"プログラミング初学者の入門書"ではない点です。

初心者であればことあるごとに丸々コードを貼っておいて欲しいのですが文章のみで「○○.jsを作成します」のように手順が書かれており、初心者だとわからない人が絶対にいるよな。と思える類の端折った解説が多かったです。私も途中途中、Gitのソースコードと照らし合わせながら進める必要がありました。

また、文章に違和感を覚える人もいて当然だと思います。私の場合は海外の記事を翻訳しながらキャッチアップした経験があるため言わんとすることがすぐにわかりますが、初心者もしくは英語で情報収集の経験がない方であれば難しいと感じる気持ちはわかります。日本人からするとどうしても独特な文章ですので。

さらに、パッケージのバージョン違いでうまく動かなかったりした際に、パッケージが原因なのか自分のコードが原因なのかを自分で考えたりしながらエラーを捌く必要もあります(例えば、lesson_10の内容は私のejsの3vでは動きませんでした。Gitのソースのバージョンに合わせることで動いた。基本的にGitのソースコードに合わせてやれよという話ではありますが...)
package.jsonに対して少しは慣れがある人でないとつまづくポイントかなと思います。

上記の理由から初心者向きではないし、初心者であればまずは動画の教材などでとにかく手を動かしてまずは雰囲気で動かし方を覚えた方が効率が良いかと思います(サーバーサイドの知識などがあればまた別ですが)。

とは言え、nodeに関する良さげな書籍が見つからなくて困っていたところ本書でキャッチアップできて良かったです。サーバーとのやりとりをnodeで体系立て理解できる書籍はそんなにないと思います(まだ本書の途中までしか終わってませんが) (参考:Amazon)

↓全て表示 ↑少なく表示
Nodejs 本として一番良かった。
大抵の枝葉技術はどうせ海外のGitHubなどの公式リファレンスを読むことになるので、Web サーバーの組み立て方を順序よく最初のコードを繰り返し型で改良しながら学べるので、独学志向で最初しゃ簡単に、慣れたら高度に組み込みたい人にはヒントになる情報が多い。

批判レビューワーは恐らく冒頭に紹介されている著者のGitHubもみていないとおもわれる。

この手の技術書のサンプルコードはあまりに初歩的だったり極端に複雑なお手本をネット掲載するものも少なくないが、本書は同じコードをだんだん改良していく方式でそのレッスンごとのソースを収録している。
そのため理解度が深まるにつれて同じコードの改良結果を本の解説つきでソースを見れるので効率よく学べる。

ただし、nodejs でファイルの読み書き、javascript の最低限の構文知識、GitHubで自力で何度か英文リファレンスを読んで動かす経験がないと、本書の書いている意味そのものが理解できない。
英文リファレンスといっても最近はGoogle翻訳と英文を一緒に読めば辞書使わずにたいていは意味が理解できるし、本書を理解するレベルに至るハードルはかなり低い。

本書は本のタイトルが不適切で入門Express でサーバー構築である。
Node.js自体を学ぶにはかなり基本的な説明がないので言語自体の入門書ではない。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元Amazon)

 
入門Node.jsプログラミング
発売日 2019/09/25
通常 3,740円
現在 3,366円
374円(10%)OFF!!

  

 

   

Node.jsの本 最新・高評価のおすすめの5冊

以下が最新(2018年以降発売本)で高評価の、最新おすすめのNode.js関連の本の5冊の詳細です。

(2020/12/01 更新)
売筋
Rank
製品評価
1
Node.jsデザインパターン 第2版
発売日 2019/05/18
通常    4,620円
単行本   4,620円 (+46pt)
(4)
総評価数 9件
2
Node.js超入門 第3版
発売日 2020/09/10
通常    3,520円
単行本   3,520円 (+35pt)
Kindle   3,168円 (+32pt)
(3.6)
総評価数 7件
3
入門Node.jsプログラミング
発売日 2019/09/25
通常    3,740円
単行本   3,740円 (+174pt)
Kindle   3,366円 (+34pt)
(3.3)
総評価数 22件
4
Node.js 超入門[第2版]
発売日 2018/12/18
通常    3,300円
単行本   3,300円 (+66pt)
Kindle   2,673円 (+27pt)
(3.2)
総評価数 20件
5
ハンズオンNode.js
発売日 2020/11/17
通常    4,070円
単行本   4,070円 (+41pt)
(0)
総評価数 0件

 

「Node.jsデザインパターン 第2版」

Node.jsデザインパターン 第2版
(著)Mario Casciaro, Luciano Mammino
発売日 2019/05/18
(4)

Node/JavaScriptアプリの設計技法を、実際に手を動かしながら学ぶハンズオン形式の解説書。
本書では最初に、JavaScriptの大きな特徴でありながら多くの開発者にとって馴染みの薄い非同期処理(コールバックを用いた処理)についてその仕組みを詳しく説明するとともに主なデザインパターンを説明し、Node.jsの基礎を押さえます。
次に、ストリームや一般的なデザインパターンのNode.jsでの実装、Node.js専用のデザインパターンといった事柄を解説します。
最後に、ユニバーサルJavaScript、スケーラビリティ、Node.jsを使ったエンタープライズアプリの開発といったより高度なトピックを扱います。
中級以上のウェブ開発者を対象としています。バージョン11対応。

↓全て表示↑少なく表示
 
Users Voice
Node.jsのシングルスレッド、ノンブロッキングI/Oによる独自のアーキテクチャを踏まえた実装における細かなコーディング作法からデザインパターンまでを学ぶことができる。
大規模開発のための整備されたコード設計、関数設計、クラス設計、さらには分散スケール環境でのアーキテクチャのデザインパターンまでを紹介してくれている。node.jsはv11.9.0に対応。
gitからソースコードを取得できるが、著書に記載されているソースコードだけでも処理の概要を把握できるよう配慮されているのがありがたい。
基本的に各チャプターごとにプロジェクトファイルが用意されpackage.jsonで必要関連ライブラリをバージョン指定されているので、フォルダ内でnpm install の一発で環境が揃うのはありがたい配慮だ。著書では、ライブラリの個別インストールのコマンドが表記されているが、上記を実行していれば特に必要はない。
※一部でグローバルインストールが別途必要なものあり
※redis, rabbitMQなどミドルウェアは、別途構築する必要あり
コードを追いながら、高度なアーキテクチャの技術を身に付けたい人向け。
Node.jsの中上級者向けに響く著作だと感じた。

-------------------
#注意点

8章 webpackをグローバルインストールする記載がされている> P255
バージョンを指定しないと最新版がインストールされ、著書と挙動が異なって検証ができ
なくなるので、以下のバージョンでインストールすること。(package.jsonにも記されているので確認できる。)
npm install webpack@1.12.14 -g
※package.jsonのwebpackと合わせる
他のnpmでグローバルインストールしているものは、package.jsonのバージョンに合わせたほうがいい

8章:sample12,13,14
P285 に実行コマンドにnode serverと記載されているが、コードに記載されたJSXを変換実行する必要があるので、babel-nodeまたは、babel-cliをかましてスクリプトを実行する必要がある。
例:./node_modules/babel-cli/bin/babel-node.js server

9章以降:
node-gyp系リビルド処理でpython2.7系が必要なケースもあり。
nvmで異なるnodeのバージョンが必要になるケースもあり
macで検証している場合は xcode, xcode toolを最新版にしておくこと

--------------------
#以下、内容メモ

1章:Node.jsの世界へようこそ

モジュールは小さく設計すべき
・コードを少なく
・機能を最小限
npmによってモジュールの依存地獄から解放
->パッケージが個別に依存モジュールを定義できる

ブロッキングI/O:
I/O処理は時間がかかる→サーバがブロッキングI/Oの場合、複数リクエストの場合は新たにスレッドを起こす必要がある。消費するメモリや、コンテキストスイッチのコストを考えると、効率は良くない。

ノンブロッキングI/O:
データの書き込み完了をまたずに一旦終了できる。
同一スレッドで、複数リソースを扱えるようになる。
イベントループでビジーウェイトせずに複数のI/Oを処理
並行性の扱いが単純になる。スレッドの競合、同期を考慮しなくて良い

・リアクタパターン
I/Oタスクのそれぞれにハンドラ(コールバック関数)を対応させるもの
コールバック関数を使用して、すべてのリソース処理を後回しにするようなプログラミン
グスタイル。

Node.jsのアーキテクチャ
libuv:node.jsのCライブラリで、OSに依存せず同じ手法でブロッキングI/Oを使える。
v8:GoogleによりChromeブラウザのために作られら高速効率的メモリ管理のJavaScriptエンジン
バインディング:libuvmやその他の低レベルの機能をラップし、JavaScriptで利用できる
ようにするための抽象化レイヤー
node-core:ハイレベルなNode APIを実装したJavaScriptライブラリ

2章:Node.jsの基本パターン

・コールバックパターン
同期プログラミングにおけるreturn文に相当。非同期プログラミングでは必須。
JavaScriptのクロージャを使うことで、コールバック関数内にその関数で生成された環境
を参照することができる。

関数によって同期、非同期で呼ばれるかの違いによって呼び出し元の実装も変わる。
関数内で分岐判定処理によって同期や非同期で値が返る仕様は思わぬバグを産む。
->どちらかに明示的に仕様を決める。

process.nextTick() イベントループで次まで関数の実行を遅延(先延ばし)してくれる。登録されたI/Oイベントの前に実行->nextTIck()の再帰呼び出しはI/O starvationに陥るケースがあるので注意。
setImmediate():登録されたI/Oイベントの後に実行

try catchでキャッチされない例外の補足方法
 process.on('uncaughtException',(err)=>{ //todo process.exit(1); }):

依存解決の仕組み:ロード元によて異なるモジュールのバージョンをロードする機能
循環参照の注意点:読み込む順番によって初期化されるモジュールが異なる問題が起きる

・モジュール定義におけるパターン
オブジェクト、コンストラクタ、関数のエクスポート
インスタンスのエクスポート

・オブザーバパターン
EventEmitterをつかって複数のオブザーバに対して通知を行う。
on, emit, return emitter P62
複数イベントを扱う、イベントの発生回数が予測できない場合に向いている。

コールバックと、EventEmitterを組み合わせた関数
glon(pattern, [option], callback).on('match', match => console.log(`${match}`))
コールバックは結果データを返すが、EventEmitter(`match`)で中間処理情報を通知する仕組み

3章:コールバックを用いた非同期パターン

コールバックのネストが幾つも重なる=コールバック地獄 p51
視認性が悪く、クロージャを解放し忘れるとメモリリークの原因にもなる
・クロージャを乱用しない
・if文にelseをかかず、returnでなるべく早く抜ける:ネストレベルを下げる
・コールバックを独立した関数で定義し、クロージャを使わない。
・一つの関数にネストしたコールバックを書かず、複数の関数に分割する
※クロージャ:自分を囲むスコープにある変数を参照できる関数:関数の内側の関数

逐次処理におけるコールバックの伝播
並行処理におけるコールバックの伝播

・並行処理:非同期でイベントループ内で並列数分インタリーブされ処理される。
マルチスレッドでないので特別な技術は必要ない。Nodeの強み。
完全に競合状態がないわけではない。複数タスク新しいファイルだった場合ファイル読み込み処理するケースで、複数タスクが同時に新しいファイルだと判定して、同じ処理をしてしまう場合がある。

同時実行数制限をした並行処理
キューを使った同時実行数制御

委譲:delegate

asyncライブラリを使用した逐次、並行処理、同時実行数を制御した並行処理
series:非同期逐次実行
eachSeries:配列要素を捜査して非同期逐次実行
each:並行eachSeriesからの移行に便利
eachLimit,mapLimit,parallelLimit,queue,cargo:同時実行数を制限した並行処理
前半の並行処理実装は、asyncライブラリで簡潔に置き換えられる

4章:ES2015以降の機能を使った非同期パターン

Promise:コールバックの欠点を補うために考案された。非同期処理の結果を表現するオブジェクト。callbackなどの橋渡しスタイルからの変更
Generator:functionの後ろに*を付加して宣言すれば、yieldにより処理を中断できる。
 非同期の制御フローを簡単に記述(yield, next()を活用)し、関数を一旦抜けたり、そこから再開できるようにする
coライブラリを利用したジェネレータベースの制御フロー
 async/awaitを使用した制御フローでGeneratorを使用することで複雑化した実装をシンプルにする。

5章:ストリーム

ストリームとバッファの違い
バッファ:データが全て揃ってからコールバック通知
ストリーム:データを受け取った時点で途中でもコールバック通知可能
巨大なデータも少ないリソースでやりとりできる。
ファイル転送後の解凍処理もチャンク単位で圧縮して転送し解凍することができる。
バイナリモード:チャンクの形でストリーム化する
オブジェクトモード:オブジェクトとしてデータを処理
・Readable:ソースを表現
 non-flowingモード:readableイベントにアタッチ、read()でバッファが空になるまで読み込む
 flowingモード:dataイベントにアタッチ、データがリスナーにプッシュされる
Readableストリームの実装:_read()は継承したReadable内部で呼ばれる
・Writable:データの行き先
writable.write でチャンク書き込み
writable.end で最後のチャンク書き込み
 バックプレッシャ:データが消費されるよりも速く書き込まれてしまう場合の対処
 Writableストリームの実装:_write()は継承したWritable内部で呼ばれる
・Duplex:ReadableかつWritableなストリーム、双方を継承しread(),write()を行う
・Transform:データ変換用 write -> read
・パイプを使ったストリームの接続
 unixでは、次のプログラムの入力として簡単に接続できる
echo Hello World! | sed s/World/Node.js/g
node.js -> pipe()で行う
・パイプ処理パターン
 Combinedストリーム:ストリームの合併
 ストリームのフォーク
 ストリームのマージ
 マルチプレクシングとでマルチプレクシング

6章:オブジェクト指向デザインパターンのNode.jsへの適用

・ファクトリ:
p152 模擬オブジェクトを返す(start:function{}, end:function{})
合成可能ファクトリ:ファイプラリstampit
・公開コンストラクタ
・プロキシ
データ妥当性検討、権限チェック、キャ種保存、遅延初期化など
応用:配列の仮想化
・デコレータ
・アダプタ
・ストラテジー
・ステート
 コンテクストの状態によって変化するストラテジーとして見れる
・テンプレート
具象クラスが定義された瞬時にアルゴリズムが決定される。ストラテジとの違いは、ストラテジは動的に変更が可能、テンプレートはクラスが定義された瞬間にアルゴリズムが決定する。
・ミドルウェア
 玉ねぎの皮のようにミドルウェアの層をつくり、順に層を呼び出し中心のアプリケーションのコアに到達させる。
・コマンド

7章:モジュールの接続

・シングルトンとしてモジュールを利用するパターン
 modele.exportsを活用
 require()関数呼び出し時にキャッシュされ、以降はキャッシュを返すため
->落とし穴がある。パッケージごとに異なるnode_modulesのパッケージを参照してしまう恐れあり:global変数で対応できるが、この方法は避けるべき。

・モジュール接続のためのパターン
require()でステートを持ったインスタンスへの依存をハードコードすることによる制限
 DI(依存性注入)のケース:Factoryパターンを活用して後からモジュールを指定する
 ->利点:dependencyから分離し再利用しやすくなる
  欠点:依存関係の把握が増加複雑化すると管理が大変
 サービスロケータ:DI同様、コンポーネント間の把握が難しくなる
 DIコンテナ:依存するもの以外の余計なサービスにモジュールを依存させなくできる
・プラグインの接続
 require()するだけで、プラグイン機能を付加できる実装:関数を変数に格納する手法とデコレータパターンを駆使して行う
 サービスロケータ、DIコンテナをつかった公開方法

8章:ユニバーサルJavaScript

サーバサイドとフロントエンドでのコード共有
Reactを使用したSPA(Single-Page-Application)の作成
・モジュールの共有
 UMDパターン:定型的なコードを沢山書かなければならない
 ES2015モジュール:サポートされていないブラウザに注意
・Webpackの導入
node用に作成したモジュールをブラウザ用に書き直してくれる
 ES2015で提供される機能を実装していても変換してくれる
・クロスプラットフォーム開発の基礎
 実行時コード分岐
 ビルド時コード分岐:Webpackの例
 ビルド時にモジュール置換:Webpackの例
 クロスプラットフォーム開発向けのデザインパターン
 ・ストラテジー、テンプレート:用途によって切り替え処理ができる
 ・アダプター:互換性を持たすようにアダプターで置換する
 ・プロキシ:サーバ側のモジュールをリモートプロキシで呼び出す
 ・オブザーバ:イベントを発生、受け取りのコンポーネントを抽象化
 ・DIとサービスロケータ:依存性注入時にモジュール入れ替えする
・React
サーバ内とクライアントでほぼ同じコードでのビューのレンダリングができる
 Nodeサーバでビューをレンダリングしてブラウザが受け取り表示可能=SPAを作成できる。
JSX:HTMLとDOMツリー表現の中間フォーマット的な位置付け
expressのstaticを利用してwebpackしたモジュールを読み込めるようにして、1度目はサーバでレンダリングし、以降はブラウザで再描画する仕組み
babel-cliでサーバサイドでJSX記述を残したまま、実行時変換起動させる方法
 Webサーバ(プロキシとして活用)、APIサーバとスケーラブルな構成のパターン

9章;特殊な問題を解決するためのパターン

・非同期に初期化されるもモジュールのrequire
ステートパターンを利用し実行リクエストをキューにため、非同期実行が完了してからキューのリクエストを実行する堅牢な作りの紹介
・非同期のバッチ処理とキャッシュの利用
・CPUバウンドなタスクの実行
setImmediateによるインタリーブ:cpuバウンドの処理のステップが完了するたびにイベントループに制御を戻す
マルチプロセスの利用:子プロセスへ移譲

10章:スケーラビリティとアーキテクチャ

複数プロセス利用、複数サーバ利用にしてスケールする
下記3つの観点でのスケールを考える。
 クローニング:アプリをn回クローニングして各インスタンスに1/nの処理をさせる
 サービスと機能による分割;機能、サービス、ユースケースで分割
 データパーティションによる分割:データの一部を各インスタンスが分担して担当
  水平分割、シャーディング
・クローニングと負荷分散
 モジュールcluster
 ・バージョン0.11.2以降からラウンドロビン方式の振り分け
 ・障害時の再起動(zero-downtime restart)の実装
 ・負荷分散
  ステートフルにしたいデータの共有問題
  ・共有メモリを利用した認証データの保存
  ・スティッキーな負荷分散(値判定で特定ノードへ割り振る)による特定なインスタンスへのマッピング
 ->問題点あり:インスタンスの代替が効かなくなる問題
  リバースプロキシによるスケーリング
 ・ロードバランサとして機能するリバースプロキシ
  ・URLリライト、キャッシング、SSLターミネーション
  ・nginxをロードバランサとしてバックエンドにnodeのwebサーバを稼働させたパターン
  サービスレジストリを活用し、最新の稼働サーバ情報を登録し、ロードバランサがその内容を参照するパターン
  ・nodeでの負荷分散装置の実装
  ピアツーピア負荷分散:ロードバランサの処理量に依存させない方法:その分、接続方法は複雑になる
・サービスと機能の分割
マイクロサービスアーキテクチャのパターン
 各サービスにデータ所有権があることがマイクロサービスアーキテクチャの特徴
 正しいレベルの分離を独立維持するために、データベースも分割する
 データベースを分割した分、システム全体の一貫性を維持するために、互いのデータを参照更新する多くの通信が必要になる。
 クラッシュ、バグ、互換性を破る変更をシステム全体に波及させないようにする。
 利点:
 ・再利用性向上
 ・スケールは、複数マシンに負荷分散。独立してスケール可能
 難点:
 ・管理すべきノードが増えると、統合、デプロイ、コード共有が複雑になる。
 ・APIオーケストレーション層で複数のマイクロサービスのAPIを実行し、データを集約、処理する。
 ・メッセージブローかを使ったケース;フロントエンドのリクエストを受け取ったマイクロサービスが、関連するマイクロサービスにメッセージブローカを通して処理を行う

11章;メッセージ通信と統合

分散アプリケーションを統合する手段
・共有ストレージを中央の調整器兼情報の保持器として使う。
・メッセージを使ってデータ、胃炎と、コマンドを各ノードに行き渡らせる

メッセージ通信
・非同期メッセージと送信キュー:SMSのようなもの
・ピアツーピアメッセージ通信
・ブローカを使ったメッセージ通信:プロトコル間のブリッジにも利用できる、ブローカ
が単一障害になるデメリットはある。

パブリッシュ/サブスクライブ(pub/sub)パターン
 分散オブザーバーパターンでもある
 ・ピアツーピア型Pub/Sub
 ・ブローカ型Pub/Sub
 メッセージブローカにredisを適用したチャットサーバの分散スケール
 ZeroMQを使ったピアツーピア型PubSubで分散処理するチャットサーバ
 サブスクライバに障害が起きても確実にメッセージを送信できるような永続サブスクライバの実現
 ・多くのメッセージキューシステムが採用しているプロトコル:AMQP
 ラビットMQを使用したAMQPによるチャットサーバ

パイプラインとタスク分散パターン
・ZeroMQのファンアウト/ファンインパターン
 ハッシュサムを総当たりでしてアルファベットの考えられるすべての組み合わせを照合
するシステムで実践
 ベンチレータ->ワーカー->シンク
・パイプラインとAMQPの競合コンシューマ
 競合コンシューマ;複数のコンシューマが同じキューをリッスンし、メッセージをファ
ンアウト分散する

リクエスト/リプライ・パターン
・相関識別子を使用した、リクエストとリプライの紐付けで、リクエスト順序に影響しない
実装方法

付録A:ES2015以降のJavaScriptの主要機能
let, const:変数定義
アロー関数:=> コールバック関数を簡潔化記述できる
class構文
オブジェクトリテラルの改善
MapとSet
WeakMapとWeakSet
テンプレートリテラル
etc...

以上。 (参考:Amazon)

↓全て表示 ↑少なく表示
よきよき (参考:Amazon)

↓全て表示 ↑少なく表示
 
Node.jsデザインパターン 第2版
発売日 2019/05/18
通常 4,620円
現在 4,620円

  

「Node.js超入門 第3版」

Node.js超入門 第3版
(著)掌田津耶乃
発売日 2020/09/10
(3.6)

Node.jsの入門者向け書籍です。2018/8に出た「Node.js超入門 第2版」の改訂版です。改訂内容は新バージョン14対応、データベースはSQLite3、ORMはSequelizeに変更しています。CSS関連はBootstrap利用、Expressは最初からGeneratorを使う形で解説しています。
対象読者はJavaScriptの入門書を読み終えた層ですが、その経験がない層も読めるよう配慮し巻末にこの本を読むのに必要なJavaScriptの知識を最低限解説しています。Node.js未経験者から、既存の入門書などで挫折した人までより多くの人がついていけるよう、手取り足取り教える内容です。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
内容サンプル

(引用元Amazon)

 
Node.js超入門 第3版
発売日 2020/09/10
通常 3,520円
現在 3,168円
352円(10%)OFF!!

  

「入門Node.jsプログラミング」

入門Node.jsプログラミング
(著)Jonathan Wexler
発売日 2019/09/25
(3.3)

JavaScript(ES2015以降)をフル活用して
柔軟性に富んだWebアプリを作成しよう!
フロントエンドもバックエンドも
JavaScriptのスキルを120%活用する

本書は
「Get Programming with Node.js」
Jonathan Wexler, Manning Publications Co, 2019
の翻訳書です。

アプリケーションを構築できるプラットフォームは数多く存在します。Node.jsは、そのひとつですが、Webアプリケーション(インターネットを介してリクエストを処理し、応答として処理したデータとビューを返すアプリケーション)の構築に適している点が最大の特徴です。

本書は、純粋にJavaScript(ECMAScript 2015以降)だけを使ってアプリケーションを構築する手法と、その手立てを提供します。そのため、JavaScriptの機能と使い所の極意を否が応でも学ぶことになります。

また同時に、本書はWeb開発への導入編となるでしょう。Webアプリケーションを構築したことがないとか、内部的な仕組みを完全に理解していなかったという人は、本書で、その全貌を学ぶことができます。

本書の目標は、サンプルやコードを通じて、これらのコンセプトを説明することであり、サンプルを使い・変更して、読者が自分のアプリケーションを作れるようにすることにあります。

【本書のポイント】
・9つのユニットと38の短い章構成
・節ごとの理解度チェック
・章ごとの練習問題
・豊富な補足事項とポイント解説

【読者が得られること】
・Node.jsを使ったWebアプリケーション構築の基礎知識
・Node.jsによる実用的なプログラミング能力
・ECMAScript 2015以降の新しい機能を使ったプログラミング手法

※本電子書籍は同名出版物を底本として作成しました。記載内容は印刷出版当時のものです。
※印刷出版再現のため電子書籍としては不要な情報を含んでいる場合があります。
※印刷出版とは異なる表記・表現の場合があります。予めご了承ください。
※プレビューにてお手持ちの電子端末での表示状態をご確認の上、商品をお買い求めください。


↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
Users Voice
HTML/CSS/JavaScript(フレームワーク含む)で何回かアプリや機能を実装したことのある人が、nodeが裏でやってくれていることについて理解し直すために読むのには良い書籍だと思います。

自分自身、これまでnodeに関しては良くわからないままnode_moduleを導入したり、スクレイピングのnodeライブラリを導入したりしていました。完全なる雰囲気でやっており、そのおかげでExpress.jsを使ったHerokuでのAPIの立て方がわからず本書にたどり着いた次第です。

この書籍を通じて、何が起こっているのかを少しずつソースコードを発展させながらキャッチアップできたので曖昧だったところがずいぶん減ったと思います。今まで断片的だった知識が線に繋がる感覚です。
(curlコマンドについて一緒に学べたのも良かった)

気になる点としては"Node.jsの入門書"であって"プログラミング初学者の入門書"ではない点です。

初心者であればことあるごとに丸々コードを貼っておいて欲しいのですが文章のみで「○○.jsを作成します」のように手順が書かれており、初心者だとわからない人が絶対にいるよな。と思える類の端折った解説が多かったです。私も途中途中、Gitのソースコードと照らし合わせながら進める必要がありました。

また、文章に違和感を覚える人もいて当然だと思います。私の場合は海外の記事を翻訳しながらキャッチアップした経験があるため言わんとすることがすぐにわかりますが、初心者もしくは英語で情報収集の経験がない方であれば難しいと感じる気持ちはわかります。日本人からするとどうしても独特な文章ですので。

さらに、パッケージのバージョン違いでうまく動かなかったりした際に、パッケージが原因なのか自分のコードが原因なのかを自分で考えたりしながらエラーを捌く必要もあります(例えば、lesson_10の内容は私のejsの3vでは動きませんでした。Gitのソースのバージョンに合わせることで動いた。基本的にGitのソースコードに合わせてやれよという話ではありますが...)
package.jsonに対して少しは慣れがある人でないとつまづくポイントかなと思います。

上記の理由から初心者向きではないし、初心者であればまずは動画の教材などでとにかく手を動かしてまずは雰囲気で動かし方を覚えた方が効率が良いかと思います(サーバーサイドの知識などがあればまた別ですが)。

とは言え、nodeに関する良さげな書籍が見つからなくて困っていたところ本書でキャッチアップできて良かったです。サーバーとのやりとりをnodeで体系立て理解できる書籍はそんなにないと思います(まだ本書の途中までしか終わってませんが) (参考:Amazon)

↓全て表示 ↑少なく表示
Nodejs 本として一番良かった。
大抵の枝葉技術はどうせ海外のGitHubなどの公式リファレンスを読むことになるので、Web サーバーの組み立て方を順序よく最初のコードを繰り返し型で改良しながら学べるので、独学志向で最初しゃ簡単に、慣れたら高度に組み込みたい人にはヒントになる情報が多い。

批判レビューワーは恐らく冒頭に紹介されている著者のGitHubもみていないとおもわれる。

この手の技術書のサンプルコードはあまりに初歩的だったり極端に複雑なお手本をネット掲載するものも少なくないが、本書は同じコードをだんだん改良していく方式でそのレッスンごとのソースを収録している。
そのため理解度が深まるにつれて同じコードの改良結果を本の解説つきでソースを見れるので効率よく学べる。

ただし、nodejs でファイルの読み書き、javascript の最低限の構文知識、GitHubで自力で何度か英文リファレンスを読んで動かす経験がないと、本書の書いている意味そのものが理解できない。
英文リファレンスといっても最近はGoogle翻訳と英文を一緒に読めば辞書使わずにたいていは意味が理解できるし、本書を理解するレベルに至るハードルはかなり低い。

本書は本のタイトルが不適切で入門Express でサーバー構築である。
Node.js自体を学ぶにはかなり基本的な説明がないので言語自体の入門書ではない。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元Amazon)

 
入門Node.jsプログラミング
発売日 2019/09/25
通常 3,740円
現在 3,366円
374円(10%)OFF!!

  

「Node.js 超入門[第2版]」

Node.js 超入門[第2版]
(著)掌田津耶乃
発売日 2018/12/18
(3.2)

あなたがWebアプリケーションの開発をはじめたいなら、Node.jsを使って、JavaScriptから学習をはじめることをおすすめします。JavaScriptはWebページだけでなく、サーバー側の本格的な開発にも多用されています。本書は、Node.jsを使ってWebアプリケーション開発の基本から、Expressフレームワークを使った開発まで、自分の手を動かしながらおぼえる入門書です。Node.js Ver.10対応。

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
Users Voice
Node.jsを全く知らないので読んだ。初心者本としては最適だと思う。Node.js+Expressの本。
他の本を読んだり学んだ経験がある人には物足りないと感じるでしょうけど。
書いてあることは、ほんとうに基礎の基礎。
本にも書かれているが、実際にアプリを作るようになるには、この本でどんなもんかわかった後の自分の頑張り次第。
誤字はちょこちょこあるが、致命的なものは無い。
Javascriptの入門ページが付録ページにあるが、不要だと思った。
かわりにVisualStudioCodeのショートカットや、デバッグについて書いてほしかった。
javascriptのせいかVSCodeのせいか、エラーが出たときにメッセージを見てもよくわからないのが不便だった。 (参考:Amazon)

↓全て表示 ↑少なく表示
2018年度版なので情報も新しい。
node.jsのことをよく知らない人向けに解説されていて、独学で勉強するのに良い本だとお思う。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元Amazon)

 
Node.js 超入門[第2版]
発売日 2018/12/18
通常 3,300円
現在 2,673円
627円(19%)OFF!!

  

「ハンズオンNode.js」

ハンズオンNode.js
(著)今村 謙士
発売日 2020/11/17
Node.jsの入門書。対象読者は、フロントエンド開発の知識はあってもサーバサイド開発は知らないエンジニアや、他言語の経験はあってもNode.jsは触ったことがないプログラマー。
本書ではターミナルのプロンプトにコマンドを入力してその反応を確認したり、簡単なスクリプトをNode.js環境で実行したりしながら、Node.jsプログラミングの基本からWebアプリケーションの開発、テスト、デプロイまでをハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。
本書のゴールは、読者がNode.jsの全体像を掴み、業務レベルでのアプリケーション開発に対応可能な知識を身につけることです。

↓全て表示↑少なく表示
 
ハンズオンNode.js
発売日 2020/11/17
通常 4,070円
現在 4,070円

  

 

Node.js本「Kindle Unlmited 読み放題 人気ランキング」

「Kindle Unlimited」は、Amazonの定額本読み放題サービス。

実はそこにNode.jsの本もそこそこあるんです。すなわち、定額で何冊も学習することも可能

Kindle Unlimitedの主な特徴としては、おおよそ以下の通り。

  • 雑誌がかなり充実
  • 豊富なKindle個人出版本がほとんど読み放題
  • 最近は出版社単行本も対応増加

個人的には雑誌が、IT系(CG WORLD等)、ガジェット系(Get Navi等)、ゲーム(ファミ通等)、など見たい雑誌が幅広く読めるのが大きな魅力。2冊以上読みたいものがあるだけで確実にお得です。

また、30日無料体験も可能なので、体験期間を利用して無料で学習してみるのもお得な学習法です。

以下がKindle Unlimited対応のNode.js関係の本人気ランキングです。

(2020/12/01 更新)
売筋
Rank
製品評価
1
JavaScriptエンジニアのためのNode.js入門
発売日 2016/12/26
通常    350円
Kindle   350円 (+4pt)
Kindle Unlimited(読み放題)
(4.1)
総評価数 27件
2
Node.jsの始まり、Express&MongoDBの開発
発売日 2019/11/04
通常    980円
Kindle   980円 (+10pt)
Kindle Unlimited(読み放題)
(0)
総評価数 0件
3
(3.7)
総評価数 6件
4
(4.2)
総評価数 3件
5
(0)
総評価数 0件
6
(0)
総評価数 0件
7
(3.1)
総評価数 4件
8
(5)
総評価数 2件
9
(2.9)
総評価数 4件
10
(3)
総評価数 6件

 

   

おまけ:本より高コスパ?「Udemy Node.jsおすすめ講座」

UdemyではNode.jsを基礎から応用までトータルで学べる学習講座があります。

こちらが、セール時には2千円程度で購入可能で、講座によっては本よりコスパよく学習が可能です。

講座は、買い切り型ながら更新あり、質問可能、30日間返金も可能、という本以上の手厚いサポートがあるのが魅力。

以下の表が、Node.jsの学習講座例。セールの場合、かなりおすすめなのでぜひトライしてみください。

Udemyについては、以下のページでも詳しく紹介しているので覗いてみてください。

学習コース評価
Node.js 入門 ー演習しながら学ぶ基本クラスの使い方ー
発売日 2018/09/13
受講者 1,177人
通常 15,600円
現在 1,200円
(4.1)
総評価数 169件
Node.js + Express で作る Webアプリケーション 実践講座
発売日 2017/08/04
受講者 3,788人
通常 24,000円
現在 0円
(4)
総評価数 481件
(4)
総評価数 146件

 

関連:JavaScript、TypeScriptを学ぶ

以下ではNode.js活用のためにも基礎となる「JavaScript」「TypeScript」の書籍も紹介しています、合わせてのぞいて見てください。


 

関連:最新おすすめのKindle端末

以下では最新のKindle端末について比較、おすすめ紹介しています、合わせてのぞいて見てください。

いじょうでっす。

コメント

タイトルとURLをコピーしました