【2021年】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の今売れ筋本を人気ランキングで一覧したのが以下。

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

 

(2021/02/26 更新)
売筋
Rank
製品評価
1
入門Node.jsプログラミング
発売日 2019/09/25
通常    3,740円
単行本   3,740円 (+161pt)
Kindle   3,366円 (+34pt)
(3.3)
総評価数 23件
2
ハンズオンNode.js
発売日 2020/11/17
通常    4,070円
単行本   4,070円 (+41pt)
(5)
総評価数 3件
3
Node.js超入門 第3版
発売日 2020/09/10
通常    3,520円
単行本   3,520円 (+35pt)
Kindle   3,168円 (+32pt)
(3.9)
総評価数 10件
4
Node.js 超入門[第2版]
発売日 2018/08/25
通常    3,990円
単行本   3,300円 (+66pt)
Kindle   2,673円 (+27pt)
(3.2)
総評価数 20件
5
サーバサイドJavaScript Node.js入門 (アスキー書籍)
発売日 2012/10/26
通常    3,010円
単行本   1,330円
Kindle   3,010円 (+30pt)
(3)
総評価数 7件
6
Node.jsデザインパターン 第2版
発売日 2019/05/18
通常    4,620円
単行本   4,620円 (+46pt)
(4)
総評価数 11件
7
(3.3)
総評価数 8件
8
実践Node.jsプログラミング Programmer's SELECTION
発売日 2014/06/10
通常    4,980円
単行本   974円
Kindle   3,564円 (+36pt)
(3.7)
総評価数 10件
9
Node.js 超入門
発売日 2017/09/19
通常    2,970円
単行本   732円
Kindle   2,970円 (+30pt)
(3.2)
総評価数 11件
10
JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック...
発売日 2015/08/31
通常    3,520円
単行本   3,520円 (+343pt)
(3.6)
総評価数 15件

 

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

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

 

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

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

(2021/02/26 更新)
売筋
Rank
製品評価
1
入門Node.jsプログラミング
発売日 2019/09/25
通常    3,740円
単行本   3,740円 (+161pt)
Kindle   3,366円 (+34pt)
(3.3)
総評価数 23件
2
ハンズオンNode.js
発売日 2020/11/17
通常    4,070円
単行本   4,070円 (+41pt)
(5)
総評価数 3件
3
Node.js超入門 第3版
発売日 2020/09/10
通常    3,520円
単行本   3,520円 (+35pt)
Kindle   3,168円 (+32pt)
(3.9)
総評価数 10件
4
Node.js 超入門[第2版]
発売日 2018/08/25
通常    3,990円
単行本   3,300円 (+66pt)
Kindle   2,673円 (+27pt)
(3.2)
総評価数 20件
5
サーバサイドJavaScript Node.js入門 (アスキー書籍)
発売日 2012/10/26
通常    3,010円
単行本   1,330円
Kindle   3,010円 (+30pt)
(3)
総評価数 7件

 

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

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」

ハンズオンNode.js
(著)今村 謙士
発売日 2020/11/17
(5)

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の入門者向け書籍です。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版]」

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

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

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

(引用元Amazon)

 
内容サンプル

(引用元Amazon)

 
Node.js 超入門[第2版]
発売日 2018/08/25
通常 3,990円
現在 3,300円
690円(17%)OFF!!

  

「サーバサイドJavaScript Node.js入門 (アスキー書籍)」

サーバサイドJavaScript Node.js入門

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

(引用元Amazon)

 
Users Voice
入門的な簡単数行スクリプトに始まり、いろいろな例示も多いので分かりやすいと思います。
apacheやnginxではできないことを…と思っている人には良い教材ではないでしょうか。 (参考:Amazon)

↓全て表示 ↑少なく表示
node.js の日本人著者共作本です。日本語では、他に選択肢はまだ無いのでは?
内容的には、わかりにくい点も多々ありますが、満足はしています。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
サーバサイドJavaScript Node.js入門 (アスキー書籍)
発売日 2012/10/26
通常 3,010円
現在 1,330円
1,680円(56%)OFF!!

  

 

   

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

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

(2021/02/26 更新)
売筋
Rank
製品評価
1
ハンズオンNode.js
発売日 2020/11/17
通常    4,070円
単行本   4,070円 (+41pt)
(5)
総評価数 3件
2
(5)
総評価数 2件
3
レベルアップNode.js (技術の泉シリーズ(NextPublishing))
発売日 2020/06/19
通常    880円
Kindle   880円 (+9pt)
(4.8)
総評価数 6件
4
(4.2)
総評価数 3件
5
Node.jsデザインパターン 第2版
発売日 2019/05/18
通常    4,620円
単行本   4,620円 (+46pt)
(4)
総評価数 11件

 

「ハンズオンNode.js」

ハンズオンNode.js
(著)今村 謙士
発売日 2020/11/17
(5)

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

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

  

「Node.jsとMicrosoft Azure App ServiceでTwitterボット作成vol2」

「Azure Appにてnodeアプリケーションが500エラーで動かない」
「MySQL in Appの情報が無い。node.jsでの接続コードがわからない」
「ツイッターのWebhook URLの登録作業がうまくいかない」
「無料で動かしたい」


これ一冊ですべて解決!!

//// 改訂履歴 ////
第1版2018年5月10日初版発行
第2版2018年10月22日Account Activity APIに対応。
第2.1版2018年12月29日Webhook URLを登録 を作業手順に絞って簡潔な説明に更新
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~はじめに より抜粋~

今回このe-bookを執筆した動機は、ツイッターボット作成に関する情報や書籍が乏しかったり古かったりであったこと。
そして無料で動かすことにこだわったからでした。
調査した結果、Azure App Serviceに行きつきました。

・・・中略・・・

MySQL in Appが無料使用でき、もしかしたら将来的な本格運用にそなえて有料プランへの変更でスケールアップ・スケールアウト、日本語サポート対応が受けられるのであれば、Azureを選択したいという開発者の要望もあるのではないかと思い一冊の本に纏めた次第です。
そしてツイッターのUser streams APIの廃止、Account Activity APIへの移行にともない、第2版を書きはじめたことろ…

まずいきなりAzure Appにてnodeアプリケーションが505エラーで動かなくなっている。
また、ツイッターのAccount Activity API使用のための登録作業も公式マニュアル通りにはいかない。
MySQL in Appの情報が相変わらず無い。

ひとつひとつこういった問題を潰していき、大量の時間を読者のみなさまが費やさずに済むように手順を詳しく仕上げたつもりです。

本書読者対象としましては、プログラム言語とデータベース操作について基本知識があること。またGitHubを使用していることが前提です。
本書ではNode.jsのスクリプト言語であるJavaScriptの文法については解説していません。
MySQLおよびSQL文についても解説していません。

※ GitHubについてはチームで作業するわけではないので、リポジトリを作成し初期化しgit add, git commit, git pushする基本操作だけで問題ありません。


目次
 改訂履歴
 はじめに
 環境
 免責事項
 サンプルコード
Lesson1
 Section1: 開発環境構築
  1.1. Ubuntuの場合
  1.2. Windowsの場合
  1.2. Macの場合
 Section2: Node.js + Express
  Node.jsについて
  Expressについて
 Section3 : Twtterボットを作ってみよう
  Twitter APIについて
  Twitter開発アカウントを申請
  Twitterアプリケーションの登録
  Twitterボットをプログラミング
 Section4: Azure App Serviceにアップロードしてみる
  Azureにサインアップ
  Azure App Serviceアプリを作成する
  App Serviceにコードをアップロードしてみる
  App Serviceに環境変数を設定する
Lesson2
 Section5: Node.js + Express + MySQL
  XAMPPのインストール:Ubuntuの場合
  XAMPPのインストール:Windowsの場合
  XAMPPのインストール:Macの場合
  データベースを用意
  NodeでMySQLを利用する準備
 Section6: Node.js + Express + MySQLでTwitterボット作成
 Section7: Azure App Serviceにアップ、完成
  MySQL in Appの準備
  server.jsのコードを編集
 Section8: スリープ対策
  Azure Function Appの作成
Lesson3: Account Activity API
 Section9: Webhook URLを登録
 Section10: Account Activity APIで自動フォロー返し
  自動フォロー返しをプログラム
あとがき

↓全て表示↑少なく表示
 
Users Voice
ググッても先輩に聞いてもわからなかったツイッター、webhook URLの登録。本書の手順の通りにやってできました!ありがとうございました。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
Node.jsとMicrosoft Azure App ServiceでTwitterボット作成vol2
発売日 2018/05/07
通常 490円
現在 490円

  

「レベルアップNode.js (技術の泉シリーズ(NextPublishing))」

 
  

「Node.jsとPythonを使ったSlack API 活用術 - チャットボットの活用で仕事効率化」


本書「Node.jsとPythonを使ったSlack API 活用術 - チャットボットの活用で仕事効率化」は便利なチャットアプリケーションの「Slack」の豊富なAPIやBot機能をNode.jsやPythonといったプログラミング言語と組み合わせて利用することで、仕事の効率化やその他の面白い応用への可能性を提案するものです。

前提となるのは簡単なプログラミングの知識のみです。

構成:

1. Slackとは?
1.1 SlackとBot
1.2 Slack Appを使用する

2. Slack APIを使った仕事効率化
2.1 Botユーザーを作成する
2.2 Node.jsとSlack API
2.3 PythonとSlack API

3. クラウドとSlack APIの連携
3.1 Amazon Web ServiceとSlack API
3.2 スラッシュコマンドとは?
3.3 Google Cloud FunctionsとSlack API

付録A - Node.jsの導入方法
付録B - Ubuntu16.04でのPython3の導入方法

↓全て表示↑少なく表示
 
Users Voice
初心者だとちょっとキツイかもですが、AWS LamdaなGoogle Cloudを使ってのSlackボットの説明など、偏りなく紹介されていて知識の幅が広がります。
画面スナップ使っての説明も豊富で読みやすいです。
ただ、まだ私には作れないかも...これから挑戦してみます。 (参考:Amazon)

↓全て表示 ↑少なく表示
本当にちょうど良い文量です。一気読みしても集中力がちゃんと続きます。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
  

「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本「Kindle Unlmited 読み放題 人気ランキング」

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

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

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

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

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

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

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

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

 

   

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

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

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

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

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

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

人気
Rank
学習コース評価
1
Node.js + Express で作る Webアプリケーション 実践講座
発売日 2017/08/04
受講者 4,388人
通常 24,000円
新規 1,680円
(4.2)
総評価数 546件
2
Node.js 入門 ー演習しながら学ぶ基本クラスの使い方ー
発売日 2018/09/13
受講者 1,394人
通常 15,600円
新規 1,610円
(4)
総評価数 210件
3
(4)
総評価数 178件
4
最短・最速で作る ビデオチャットアプリケーション NodeJS + WebRTC編...
発売日 2020/09/24
受講者 308人
通常 19,800円
新規 2,100円
(4)
総評価数 45件
5
Node.js速習講座 Part1 <導入&基礎編>
発売日 2018/06/24
受講者 901人
通常 2,400円
新規 1,680円
(4.2)
総評価数 225件

 

関連:JavaScript、TypeScriptを学ぶ

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


 

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

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

いじょうでっす。

コメント

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