hayashi-ay / booklist

1 stars 0 forks source link

Node.jsデザインパターン 第2版 #16

Open hayashi-ay opened 1 year ago

hayashi-ay commented 1 year ago

https://www.amazon.co.jp/dp/4873118735

2019年出版と古くdenoやbunなども出てきているが、コアの部分はまあNodejsについてちゃんと理解しておくのも良いことだなと思い購入。

hayashi-ay commented 1 year ago

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

1.1 Node.jsの「哲学」

1.1.1 小さなコア

1.1.2 小さなモジュール

1.1.3 露出部分最小化

1.1.4 単純さと実用主義

1.2 リアクタパターン

1.2.4 イベント多重分離

ノンブロッキングI/Oを処理する方法として、データが戻されるまでループを回してポーリングする「ビジーウェイト(busy-waiting)」と呼ばれる方法があるが、データが読み込みになるまでCPUを浪費してループを回すことになるので効率が良くない。 最近のOSでは「同期イベント多重分離(synchronous event demultiplexing)」や「イベント通知インターフェイス(event notification interface)」と呼ばれる機構が用意されている。 監視対象の複数リソースで生じるI/Oイベントをひとつのキューに集めて処理するものである。

1.2.6 libuv

イベント多重分離の実装はOSごとに異なるため抽象化するためにlibucというCのライブラリが作成された。libuvはシステムコールの抽象化だけでなくリアクタパターンの実装にもなっており、イベントループの生成、イベントキューの管理、非同期I/Oの実行などのAPIを提供している。

1.2.7 Node.jsのアーキテクチャ

リアクタパターンとlibuvはNodeの基本となる要素だが、全体としては他に以下の3つのコンポーネントもある。

Node.jsのアーキテクチャ image

hayashi-ay commented 1 year ago

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

2.1 コールバックパターン

2.2 モジュールシステムとパターン

2.2.2.5 requireは同期関数 2.2.2.6 依存解決 2.2.2.7 モジュールのキャッシュ 2.2.2.8 モジュールの循環参照

2.3 オブザーバーパターン

2.3.1 EventEmitterクラス

2.3.6 コールバックとの使い分け

hayashi-ay commented 1 year ago

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

hayashi-ay commented 1 year ago

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

4.1 プロミス

4.2 ジェネレータ

4.2.2 ジェネレーターを使った非同期制御フロー

thunk(サンク):コールバック以外のすべての引数を部分適用した関数

4.3 async/await

hayashi-ay commented 1 year ago

5章 ストリーム

5.1 ストリームの重要性

5.1.2 領域的な効率

5.1.3 時間的な効率

5.2 ストリームの基本的な使い方

5.2.1 ストリームの詳細

5.2.2. Readableストリーム

5.2.3 Writableストリーム

バックプレッシャ

5.2.4 Duplexストリーム

DuplexストリームはReadableかつWritableなストリームである。

5.2.5 Transformストリーム

5.2.6 パイプを使ったストリームの接続

5.3 非同期プログラミングにおけるストリームの活用

5.4 パイプ処理パターン

5.4.1 Combinedストリーム

5.4.2 ストリームのフォーク

5.4.3 ストリームのマージ

5.4.4 マルチプレクシングとデマルチプレシング

hayashi-ay commented 1 year ago

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

6.1 ファクトリ

6.2 公開コンストラクタ

6.3 プロキシ

6.4 デコレータ

デコレータは既存のオブジェクトの振る舞いを動的に拡張する構造パターンである。 hb

6.5 アダプタ

6.6 ストラテジー

6.7 ステート

6.8 テンプレート

6.9 ミドルウェア

6.9.1 Expressにおけるミドルウェア

6.9.2 パターンとしてのミドルウェア

6.10 コマンド

hayashi-ay commented 1 year ago

7章 モジュールの接続

7.1 モジュールと依存関係

7.2 モジュール接続のためのパターン

7.2.1 依存関係のハードコーディング

7.2.2 依存性注入

7.2.3 サービスロケータ

7.2.4 DIコンテナ

7.3 プラグインの接続

hayashi-ay commented 1 year ago

8章 ユニバーサルJavascript

8.1 ブラウザとのコード共有

8.2 Webpackの導入

8.3 クロスプラットフォーム開発の基礎

8.3.1 実行時のコード分岐

使用しないプラットフォーム向けのコードも最終的なバンドルに含まれることになるので、コードのサイズが増大する。

8.3.2 ビルド時のコード分岐

8.3.3 モジュールの置換

8.4 Reactの紹介

8.4.2 JSXとは

hayashi-ay commented 1 year ago

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

9.1 非同期に初期化されるモジュールのrequire

9.2 非同期のバッチ処理とキャッシュの利用

9.3 CPUバウンドなタスクの実行

hayashi-ay commented 1 year ago

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

10.1 アプリケーションスケーリング入門

10.2 クローニングと負荷分散

10.3 複雑なアプリケーションの分解

10.3.1 モノリシックなアーキテクチャ

hayashi-ay commented 1 year ago

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

11.1 メッセージ通信システムの基礎

11.2 パブリッシュ / サブスクライブ(pub/sub)パターン

一方向メッセージ通信のパターン。分散オブザーバーパターンに他ならない。

hayashi-ay commented 1 year ago

付録A ES2015以降のJava Scriptの主要機能