Node.js デザインパターン 第 2 版
ノードジェイエスデザインパターンダイニハン
- 著者:
- Mario Casciaro / Luciano Mammino / 武舎広幸 / 阿部和也(マリオ カッシャーロ / ルチアーノ マンミーノ / ムシャ ヒロユキ / アベ カズヤ)
- 出版社:
- オライリー・ジャパン
- 出版日:
- 2019年05月18日頃
- ISBN:
- 9784873118734
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
Node.js のコアとなる設計思想を知る!
Node/JavaScript アプリの設計技法を、実際に手を動かしながら学ぶハンズオン形式の解説書。本書では最初に、非同期のシングルスレッドアーキテクチャおよび主なデザインパターンを説明し、Node.js の基礎を押さえます。次に、非同期制御のフロー、Stream、一般的なデザインパターンの Node.js での実装、Node.js 専用のデザインパターンといった事柄を解説します。最後に、ユニバーサル JavaScript、スケーラビリティ、Node.js を使ったエンタープライズアプリの開発といったより高度なトピックを扱います。対象読者は中級以上のウェブ開発者。最新の 11.4 対応です。
技書の森解説
Node.js でサーバー側のコードを書いていると、処理の順序やエラーの受け渡し、同時に走らせる数の制御といった、同期的なプログラムでは意識しなかった問題に何度も向き合うことになります。『Node.js デザインパターン 第 2 版』 (Mario Casciaro、Luciano Mammino 著、武舎 広幸、阿部 和也 訳、オライリー・ジャパン、2019 年 5 月 18 日発行) は、原書 Node.js Design Patterns, 2E の日本語版で、Node と JavaScript のアプリの設計技法を手を動かしながら学ぶハンズオン形式の解説書です。版元は対象読者を中級以上のウェブ開発者とし、バージョン 11 対応と案内しています。
全 11 章と付録、コールバックからメッセージ通信まで
1 章は Node.js の「哲学」として小さなコア、小さなモジュール、露出部分最小化、単純さと実用主義を挙げ、リアクタパターンと libuv を含むアーキテクチャへ進みます。2 章はコールバックパターン、モジュールシステム、EventEmitter クラスを使うオブザーバパターンです。3 章はウェブスパイダーを作りながら、逐次処理、並行処理、同時実行数を制限した並行処理を素の JavaScript と async ライブラリの両方で組み、4 章はプロミスの節でも同じ 3 つの処理を取り上げたうえで、ジェネレーター、async/await を経て非同期プログラミングの手法を比較します。5 章はストリーム、6 章はファクトリ、公開コンストラクタ、プロキシ、デコレーター、アダプター、ストラテジー、ステート、テンプレート、ミドルウェア、コマンドというオブジェクト指向のパターンの Node.js への適用です。7 章でモジュールの接続とプラグイン、8 章で Webpack と React を使うユニバーサル JavaScript、9 章で非同期に初期化されるモジュールや CPU バウンドなタスクといった特殊な問題、10 章で cluster モジュールやリバースプロキシ、マイクロサービスを含むスケーラビリティとアーキテクチャ、11 章で pub/sub やリクエスト/リプライのメッセージ通信を扱います。付録 A は ES2015 以降の JavaScript の主要機能です。
1 本のスレッドで多数の要求をさばく仕組みと設計の関係
Node.js は 1 本のスレッドで イベントループ を回し、ファイルやネットワークの入出力の完了を待つ間も別の処理を進めます。待ち時間の長い入出力を止めずに多数の接続をさばける反面、時間のかかる計算を同じスレッドで続けると、その間はほかのすべての要求が待たされます。処理の続きをいつ誰が呼ぶのかがコードの見た目から離れるため、エラーの伝え方や処理の順序、同時に走らせる数の制御が設計の中心に出てきます。GoF の書籍で広まった デザインパターン も、この実行モデルの上では、非同期の初期化やストリームとの組み合わせを前提とした形に姿を変えます。本書の目次でも、6 章のオブジェクト指向のパターンとは別に、3 章と 4 章の非同期制御、5 章のストリーム、9 章の CPU バウンドなタスクの節が並んでいます。
バージョン 11 対応という時点の読み方
版元が案内する対応バージョンは 11 です。Node.js 公式のリリース一覧では、11.x は 2018 年 10 月 23 日に初版が出た長期サポート (LTS) を持たない系列で、サポート終了日は 2019 年 6 月 1 日と記されています。そのため本書の手順やサンプルコードは 2019 年時点の Node.js を前提として読み、モジュールの読み込み方やライブラリの版は手元の環境に合わせて確かめる必要があります。一方で、非同期制御の組み立て方、ストリームの合成、アプリケーションを複製して負荷を分け、さらに機能ごとに分解していくスケーリングの考え方は、版をまたいで通用しやすい題材です。翻訳者による日本語版のサポートページとサンプルコードも、版元ページから案内されています。
版元が対象を中級以上と明記しているとおり、JavaScript の文法から学ぶ段階の人には負担が大きい本です。Node.js で動くコードは書けるものの、コールバックとプロミスの使い分け、モジュールの分け方、プロセスを増やしたときの設計に自信が持てない人にとって、非同期の基礎から GoF 系のパターン、スケーリング、メッセージ通信までを一続きで学べる本書は、設計の判断に使える引き出しを増やせる一冊です。
言及した記事 (15 件)
1年半のソフトウェアエンジニア長期インターンで出会ったオススメ本をたくさん紹介します
♡ 859本, インターン, 書籍紹介これから D3.js を始める人のためのメモ
♡ 160JavaScript, d3.jsRedisとキャッシュについて理解を深めてみた。
♡ 125Redis, キャッシュ, CacheNode.jsの設計をつらつらと概観する
♡ 107JavaScript, Node.js, v8, libuvAdvent Calendar 2016 投稿数の多いユーザランキング(上位50位)
♡ 34Qiita, C#, AdventCalendarTwitterから効率よく情報収集できるかもしれない「node-twatch」というCLIツールをNode.jsでつくりました
♡ 24Node.js, Twitter, npm, TwitterAPI, Slack社内でビブリオバトルを開催してみた ! (みんなでワイワイ本紹介をやるなら必見 !)
♡ 19JavaScript, アジャイル, 勉強会, 技術書, リモートワークCTOが語る若手エンジニアが次へ進むための本14冊
♡ 12本, アドベントカレンダー20231ヶ月間JavaScript一色の開発環境に飛び込んで学んだこと
♡ 7JavaScript, Node.jsNode JSのコールバックパターン
♡ 3JavaScript, Node.js
この本は技書デッキのカードです (攻撃 14) 図鑑でこの本を見る
この本に興味がある方におすすめ
関連する本
関連記事
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、技術書と共通の語彙や原則が残っています。OSS のコードから辿れる影響と、似ているだけの例の見分け方を整理しました。
設計の引き出しは経験だけでは増えない
実務経験だけでは設計の引き出しに限界があります。なぜ経験だけでは不十分なのか、本が設計力に対して果たす、他で代えにくい役割を論じます。
Web デザイン本ガイド - HTML/CSS、Figma、Photoshop を学ぶ順番
Web デザインを独学する本の選び方を「コーディング、ツール、デザイン原則」の 3 本柱で整理。HTML/CSS の入門書、Figma と Photoshop の教本、レイアウトと配色の定番書を、2026 年 8 月時点の収載書から学ぶ順番つきで解説します。
関連用語
デザインパターン
ソフトウェア設計で繰り返し現れる問題に対する再利用可能な解決策のカタログ
JavaScript
Web ブラウザーで動作する言語として生まれ、今やサーバーやアプリ開発まで担う汎用言語
WebAssembly
ブラウザーでネイティブに近い速度でコードを実行するバイナリ命令形式
Iterator パターン
コレクションの内部構造を公開せずに要素へ順番にアクセスする手段を提供するデザインパターン。JavaScript の Iterator プロトコル / Generator / Async Iterator と遅延評価の落とし穴を解説
パターンマッチ
値の構造に基づいて分岐処理を行う制御構文で、switch 文の強化版
コンパイラー
人間が書いたソースコードを機械が実行できる形式に一括変換するプログラム