大規模Webアプリケーション開発入門

大規模Webアプリケーション開発入門 ―変化に強いWeb開発を実現する10の原則

大規模Webアプリケーション開発入門 ―変化に強いWeb開発を実現する10の原則

かねてから、何言語ができるうんぬんということで、エンジニアの要員を調整するのってどうなんだろう?と思っています。たしかにJavaなどでは、Web系の開発ではDIコンテナなどを使うことがあるので、PHPRubyで開発している人たちからみたらとっつきにくいなどはあるのかもしれませんが、、Webアプリケーションを仕事で開発する上では、サーバーサイドで使うプログラミング言語よりも大事な要素はたくさんあると思います。*1

本書は大規模アプリケーション開発において、変化に強いWeb開発を実現する10の原則として、HTML、CSSJavaScriptAjaxPHP、そしてデータ管理やパフォーマンスなど、Webアプリケーションを構成する各レイヤで考慮すべきことを包括的に解説しています。Web開発に興味のある開発者、マネージャなどは読んでみると良いかもしれません。確認するって意味でも。

以下、本書の目次

1章 大規模Webアプリケーション開発の原則
1.1 複雑さへの対処
1.2 モジュール式コンポーネント
1.2.1 モジュール性の実現
1.2.2 モジュール性のメリット
1.3 大規模Webアプリケーションのための10の原則
2章 オブジェクト指向
2.1 OOPの基本
2.2 なぜオブジェクト指向なのか?
2.3 UMLクラス図
2.3.1 汎化
2.3.2 関連
2.4 Webページのモデリング
2.4.1 ページ型の定義
2.4.2 モジュール型の定義
2.5 コードの記述
2.6 モジュール性の実現
2.7 オブジェクト指向PHP
2.7.1 クラスとインタフェース
2.7.2 PHPにおける継承
2.8 オブジェクト指向JavaScript
2.8.1 オブジェクト
2.8.2 JavaScriptでの継承
3章 HTML
3.1 モジュール式HTML
3.1.1 悪い例:tableとプレゼンテーションマークアップの使用
3.1.2 優れた例:CSSの利用
3.1.3 最良の例:意味的有意性を持つHTML
3.1.4 優れたHTMLのメリット
3.2 HTMLタグ
3.2.1 不適切なHTMLタグ
3.2.2 適切なHTMLタグ
3.2.3 ID、クラス、名前
3.2.4 命名規則
3.3 XHTML
3.3.1 XHTMLの利点
3.3.2 XHTMLの指針
3.4 RDFa
3.4.1 RDFaトリプル
3.4.2 RDFaの適用
3.5 HTML5
4章 CSS
4.1 モジュール式CSS
4.1.1 CSSの取り入れ
4.1.2 CSSの適用
4.1.3 詳細度と重要度
4.1.4 CSSでのスコーピング
4.1.5 標準モジュールフォーマット
4.2 ポジショニングの手法
4.2.1 CSSボックスモデル
4.2.2 文書フロー
4.2.3 相対位置配置
4.2.4 絶対位置配置
4.2.5 フローティング
4.3 レイアウトとコンテナ
4.3.1 レイアウトの例
4.3.2 コンテナの例
4.4 その他の実践手法
4.4.1 ブラウザリセットCSS
4.4.2 フォント正規化
5章 JavaScript
5.1 モジュール式JavaScript
5.1.1 JavaScriptの取り入れ
5.1.2 JavaScriptでのスコーピング
5.2 DOMの扱い
5.2.1 一般的なDOMメソッド
5.2.2 有名なDOMライブラリ
5.3 イベントの扱い
5.3.1 イベント処理の正規化
5.3.2 悪い例:イベントハンドラのグローバルデータ
5.3.3 優れた例:イベントハンドラのオブジェクトデータ
5.3.4 イベント駆動型アプリケーション
5.4 アニメーションの扱い
5.4.1 モーションアニメーション
5.4.2 サイジングアニメーション
5.4.3 色の遷移
5.5 例:連鎖型選択リスト
6章 データ管理
6.1 動的モジュール
6.2 データマネージャ
6.2.1 データマネージャの作成
6.2.2 データマネージャの拡張
6.3 SQLをソースとして使ったデータ
6.3.1 SQLの例
6.4 XMLをソースとして使ったデータ
6.4.1 XMLの例
6.5 Webサービスからのデータ
6.6 JSON形式のデータ
6.7 Cookieとフォーム
6.7.1 Cookie内のデータの管理
6.7.2 フォームデータの管理
7章 PHP
7.1 モジュール式Webページ
7.1.1 PHPでのページの生成
7.2 ページの扱い
7.2.1 Pageクラスのpublicインタフェース
7.2.2 Pageクラスの抽象インタフェース
7.2.3 Pageクラスの実装
7.2.4 Pageクラスの拡張
7.3 モジュールの扱い
7.3.1 Moduleクラスのpublicインタフェース
7.3.2 Moduleクラスの抽象インタフェース
7.3.3 Moduleクラスの実装
7.3.4 Moduleクラスの拡張
7.3.5 モジュールの例:スライドショー
7.4 レイアウトとコンテナ
7.5 考慮すべき特殊事項
7.5.1 モジュールのバリエーションへの対応
7.5.2 モジュールの複数のインスタンス
7.5.3 動的なJavaScriptCSS
7.5.4 入れ子になったモジュールの実装
8章 Ajax
8.1 ブラウザ側の処理
8.1.1 接続の管理
8.1.2 Ajaxライブラリの利用
8.2 サーバ側の処理
8.2.1 交換形式
8.2.2 サーバプロキシ
8.2.3 モジュール式Ajax
8.3 MVCAjax
8.3.1 MVCを使ったAjaxの利用
8.3.2 Modelオブジェクトのpublicインタフェース
8.3.3 Modelオブジェクトの実装
8.3.4 Viewオブジェクトのpublicインタフェース
8.3.5 Viewオブジェクトの抽象インタフェース
8.3.6 Viewオブジェクトの実装
8.3.7 Connectオブジェクトのpublicインタフェース
8.3.8 Connectオブジェクトの抽象メソッド
8.3.9 Connectオブジェクトの実装
8.3.10 コントローラ
8.3.11 MVCを使ったAjaxの例:アコーディオンリスト
9章 パフォーマンス
9.1 キャッシュの使いどころ
9.1.1 CSSJavaScriptのキャッシュ
9.1.2 モジュールのキャッシュ
9.1.3 ページのキャッシュ
9.1.4 Ajaxを使ったキャッシュ
9.1.5 Expiresヘッダの利用
9.2 JavaScriptの管理
9.2.1 JavaScriptの配置
9.2.2 JavaScriptの最小化
9.2.3 重複の削除
9.3 資産の分散
9.3.1 コンテンツデリバリネットワーク
9.3.2 DNSルックアップの最小化
9.3.3 HTTPリクエストの最小化
9.4 サイト評価指標の管理
9.5 モジュールテスト
9.5.1 テストデータの利用
9.5.2 テストデータの作成
10章 アプリケーションアーキテクチャ
10.1 モジュール式の考え方
10.2 コンポーネントの構成
10.2.1 サイト全体に及ぶアーキテクチャ
10.2.2 セクションのアーキテクチャ
10.2.3 ページのアーキテクチャ
10.3 アーキテクチャと保守
10.3.1 モジュールの用途の再編
10.3.2 モジュールのバリエーションの追加
10.3.3 広範囲に及ぶ変更
10.3.4 データソースの変更
10.3.5 外部へのモジュールの公開

*1:そもそも、サーバサイドとかと分けるのもあれなんですが。。。