JavaScriptデザインパターン

[cover photo]
TOPICS
Web , JavaScript
発行年月日
PRINT LENGTH
282
ISBN
978-4-87311-618-1
原書
Learning JavaScript Design Patterns
FORMAT
PDF
Ebook
3,080円
Ebookを購入する

JavaScriptの人気とともに、JavaScriptでのデザインパターンの利用局面も増えています。本書ではGoFのデザインパターンに沿って、その実装例やパターンの適用事例を網羅的に示し、デザインパターンをJavaScriptにも応用したいというニーズに応えています。モジュール、オブサーバ、ファサード、メディエータといったGoFの代用的なデザインパターンだけでなく、リビーリングモジュールパターンや擬古典的デコレータパターンといった、新しいパターンも取り上げています。美しく、かつ構造化され、メンテナンス性の高いJavaScriptを書くために有用な一冊です。

目次

まえがき

1章 デザインパターンとは?
    1.1 はじめに
    1.2 パターンとは?
        1.2.1 既に日常的にパターンを使っている
    1.3 「パターン」性検査、プロトパターン、3の法則
    1.4 デザインパターンの構造
    1.5 デザインパターンを作成する
    1.6 アンチパターン
    1.7 デザインパターンのカテゴリー
        1.7.1 生成に関するデザインパターン
        1.7.2 構造に関するデザインパターン
        1.7.3 振る舞いに関するデザインパターン
    1.8 デザインパターンの分類
        1.8.1 クラスについての簡単な注記
2章  JavaScriptデザインパターン
    2.1 コンストラクタパターン
        2.1.1 オブジェクト作成
        2.1.2 基本的なコンストラクタ
        2.1.3 プロトタイプを使ったコンストラクタ
    2.2 モジュールパターン
        2.2.1 オブジェクトリテラル
        2.2.2 モジュールパターン
        2.2.3 モジュールパターンのバリエーション
    2.3 リビーリングモジュールパターン
        2.3.1 利点
        2.3.2 欠点
    2.4 シングルトンパターン
    2.5 オブザーバパターン
        2.5.1 オブザーバと発行/購読パターンの違い
        2.5.2 利点
        2.5.3 欠点
        2.5.4 発行 /購読パターンの実装
    2.6 メディエータパターン
        2.6.1 基本的な実装
        2.6.2 より高度な実装
        2.6.3 例
        2.6.4 利点と欠点
        2.6.5 メディエータとオブザーバの比較
        2.6.6 メディエータとファサードの比較
    2.7 プロトタイプパターン
    2.8 コマンドパターン
    2.9 ファサードパターン
        2.9.1 抽象についての注記
    2.10 ファクトリパターン
        2.10.1 ファクトリパターンを適用すべき状況
        2.10.2 ファクトリパターンを適用すべきではない状況
        2.10.3 抽象ファクトリ
    2.11 ミックスインパターン
    2.12 サブクラス化
    2.13 ミックスイン
        2.13.1 利点と欠点
    2.14 デコレータパターン
    2.15 擬古典的デコレータ
        2.15.1 インターフェイス
        2.15.2 抽象デコレータ
    2.16 jQueryを使ったデコレータ
    2.17 デコレータパターンの利点と欠点
    2.18 フライウェイトパターン
        2.18.1 フライウェイトを使ってみる
        2.18.2 フライウェイトとデータ共有
        2.18.3 古典的なフライウェイトの実装
        2.18.4 ダックパンチングによる「実装」
        2.18.5 コードを変換してフライウェイトを利用する
        2.18.6 基本的なファクトリ
        2.18.7 extrinsic状態を管理する
        2.18.8 フライウェイトと DOM

3章  JavaScriptのMV*パターン
    3.1 MVC
        3.1.1 Smalltalk-80の MVC
    3.2 JavaScript開発者のための MVC
        3.2.1 モデル
        3.2.2 ビュー
        3.2.3 コントローラ
        3.2.4 Backbone.jsのコントローラと他のライブラリ( Spine.jsなど)のコントローラ
    3.3 MVCは何の役に立つのか
    3.4 JavaScriptにおける Smalltalk-80のMVC
        3.4.1 徹底調査
    3.5 MVP
        3.5.1 モデル、ビュー、プレゼンター
        3.5.2 MVPか MVCか
        3.5.3 MVCと MVPとBackbone.js
    3.6 MVVM
        3.6.1 歴史
        3.6.2 モデル
        3.6.3 ビュー
        3.6.4 ビューモデル
    3.7 MVVMの利点と欠点
        3.7.1 利点
        3.7.2 欠点
    3.8 MVVMによる緩やかなデータバインド
    3.9 MVCとMVPと MVVMの比較
    3.10 Backbone.jsとKnockoutJSの比較

4章 モダンなモジュラー JavaScriptデザインパターン
    4.1 スクリプトローダに関するいくつかの注記
    4.2 AMD
        4.2.1 モジュールを使う
        4.2.2 Dojoを利用した AMDモジュール
        4.2.3 AMDモジュールのデザインパターン( Dojo)
        4.2.4 jQueryを使った AMDモジュール
        4.2.5 AMDについてのまとめ
    4.3 CommonJS
        4.3.1 CommonJSを使う
        4.3.2 複数の依存モジュールを扱う
        4.3.3 CommonJSをサポートするローダやフレームワーク
        4.3.4 CommonJSはブラウザにも適しているか?
    4.4 競合しているが有効性で並ぶ 2つのフォーマット: AMDとCommonJS
        4.4.1 UMD:AMDとCommonJSに互換なプラグインのためのモジュール
    4.5 ES Harmony
        4.5.1 モジュールのインポートとエクスポート
        4.5.2 リモートのソースからモジュールを読み込む
        4.5.3 モジュールローダ API
        4.5.4 サーバ用の CommonJS的なモジュール
        4.5.5 クラスとコンストラクタ、ゲッター、セッター
        4.5.6 ES Harmonyについてのまとめ
    4.6 まとめ

5章  jQueryのデザインパターン
    5.1 コンポジットパターン
    5.2 アダプタパターン
    5.3 ファサードパターン
    5.4 オブザーバパターン
    5.5 イテレータパターン
    5.6 遅延初期化
    5.7 プロキシパターン
    5.8 ビルダーパターン

6章  jQueryプラグインのデザインパターン
    6.1 パターン
    6.2 軽量スタートパターン
    6.3 完全なウィジェットファクトリパターン
    6.4 入れ子の名前空間プラグインパターン
    6.5 カスタムイベントプラグインパターン(ウィジェットファクトリと併用)
    6.6 DOMからオブジェクトへのブリッジパターンを使ったプロトタイプ継承
    6.7 jQuery UIウィジェットファクトリのブリッジパターン
    6.8 jQuery Mobileウィジェットのウィジェットファクトリ
    6.9 RequireJSとjQuery UIウィジェットファクトリ
    6.10 グローバルと呼び出し単位のどちらかでオーバーライドできるオプション(最適なオプションパターン)
    6.11 高度な設定と変更が可能なプラグインのパターン
    6.12 パターン以外にプラグインに必要なものとは?
        6.12.1 品質
        6.12.2 コードスタイル
        6.12.3 互換性
        6.12.4 信頼性
        6.12.5 パフォーマンス
        6.12.6 ドキュメント作成
        6.12.7 メンテナンス性
    6.13 jQueryプラグインのまとめ
    6.14 名前空間作成のパターン
    6.15 名前空間作成の基礎
        6.15.1 1-グローバル変数
        6.15.2 接頭辞による名前空間
        6.15.3 オブジェクトリテラル記法
        6.15.4 入れ子の名前空間
        6.15.5 即時呼び出し関数式( IIFE)
        6.15.6 名前空間の注入
    6.16 高度な名前空間パターン
        6.16.1 入れ子の名前空間を自動作成
        6.16.2 依存性宣言パターン
        6.16.3 深いオブジェクト拡張
        6.16.4 推奨

7章 おわりに

付録 参考資料
索引