Top▲
マーリンアームズ サポート   翻訳   コンサル   講座   アプリ   コラム

スケーラブルWebサイト    Cal Henderson著    武舎広幸+福地太郎+武舎るみ訳

★News★ 『実践 JavaScript! プログラミングを楽しみながら しっかり身につける』(武舎広幸著、オーム社)出版   →詳細   →Amazon

本の目次

訳者まえがき
まえがき

1章 はじめに
	1.1 ウェブアプリケーションとは?
	1.2 ウェブアプリケーションの構築法
	1.3 アーキテクチャとは?
	1.4 どう始めるか

2章 ウェブアプリケーションのアーキテクチャ
	2.1 階層化されたソフトウェアアーキテクチャ
	2.2 階層化技術
	2.3 ソフトウェアインタフェースの設計
	2.4 A地点からB地点へ
	2.5 ソフトウェアとハードウェアの分離
	2.6 ハードウェアプラットフォーム
		2.6.1 共有ハードウェア
		2.6.2 専用ハードウェア
		2.6.3 コロケーション
		2.6.4 セルフホスティング
	2.7 ハードウェアプラットフォームの成長
		2.7.1 入手可能性と調達期間
		2.7.2 輸入、出荷、設置
		2.7.3 場所
		2.7.4 電源
		2.7.5 ネットワークオペレーションセンター(NOC)
		2.7.6 接続性
	2.8 ハードウェア冗長性
	2.9 ネットワーキング
	2.10 言語、技術、データベース

3章 開発環境
	3.1 3つのルール
	3.2 ソース管理の実施
		3.2.1 ソース管理とは何か?
		3.2.2 ユーティリティ
		3.2.3 ソース管理製品
		3.2.4 ソース管理に入れるべきもの
		3.2.5 ソース管理に入れるべきでないもの
	3.3 ワンステップビルド
		3.3.1 サイトの直接編集
		3.3.2 作業環境の構築
		3.3.3 リリース過程のまとめ
		3.3.4 ビルドツール
		3.3.5 リリース管理
		3.3.6 自動化すべきでないもの
	3.4 問題追跡管理
		3.4.1 最低限の機能
		3.4.2 問題追跡管理ソフトウェア
		3.4.3 何を追跡管理すべきか
		3.4.4 問題管理戦略
		3.4.5 CADT
	3.5 開発モデルの大規模化
	3.6 コーディング規準
	3.7 テスト
		3.7.1 リグレッションテスト(回帰テスト)
		3.7.2 手動テスト

4章 国際化とローカライゼーションとUnicode
	4.1 国際化とローカライゼーション
		4.1.1 ウェブアプリケーションの国際化
		4.1.2 ウェブアプリケーションのローカライゼーション
	4.2 Unicodeの概要
	4.3 UTF-8エンコーディング
	4.4 UTF-8ウェブアプリケーション
		4.4.1 出力の制御
		4.4.2 入力の制御
	4.5 PHPでUTF-8を使う
	4.6 他の言語でUTF-8を使う
	4.7 MySQLでUTF-8を使う
	4.8 電子メールでUTF-8を使う
	4.9 JavaScriptでUTF-8を使う
	4.10 APIでUTF-8を使う

5章 データの一貫性とセキュリティ
	5.1 データ一貫性ポリシー
	5.2 良好、正当、不正
	5.3 UTF-8のフィルタリング
	5.4 制御文字のフィルタリング
	5.5 HTMLのフィルタリング
		5.5.1 なぜHTMLを使うのか?
		5.5.2 HTML入力のフィルタリング
		5.5.3 ブラックリストとホワイトリスト
		5.5.4 開始タグと終了タグの対応づけ
		5.5.5 HTMLの処理
	5.6 クロスサイトスクリプティング(XSS)
		5.6.1 正規の抜け穴
		5.6.2 ユーザー入力に関するセキュリティホール
		5.6.3 タグと括弧の対応づけ
		5.6.4 プロトコルフィルタリング
	5.7 SQLインジェクション攻撃
		5.7.1 SQLインジェクション攻撃の対策
		5.7.2 SQLインジェクション攻撃の防止

6章 電子メール
	6.1 メールの受信
		6.1.1 ファイルのアップロード
		6.1.2 モバイルブログ
		6.1.3 追跡機能のサポート
		6.1.4 単純な自動化とAPI
	6.2 電子メール機能のアプリケーションへの組み込み
		6.2.1 別のアプローチ
	6.3 MIMEフォーマット
	6.4 単純なMIMEメールの解析
	6.5 UUエンコードされた添付ファイルの解析
	6.6 TNEF添付ファイル
	6.7 携帯電話
	6.8 文字セットとエンコーディング
	6.9 ユーザーの認識
	6.10 単体テスト

7章 リモートサービス
	7.1 リモートサービスの掟
	7.2 ソケット
	7.3 HTTPの利用
		7.3.1 HTTPの要求と応答のサイクル
		7.3.2 HTTP認証
		7.3.3 HTTPリクエストの生成
	7.4 リモートサービスの冗長性
	7.5 非同期のシステム
	7.6 XMLによる情報交換
		7.6.1 XMLの解析
		7.6.2 REST
		7.6.3 XML-RPC
		7.6.4 SOAP
	7.7 ライトウェイトプロトコル
		7.7.1 メモリ使用量
		7.7.2 ネットワーク速度
		7.7.3 解析の速度
		7.7.4 書き込み速度
		7.7.5 欠点
		7.7.6 ソースからシステムを作る

8章 ボトルネック
	8.1 ボトルネックの特定
		8.1.1 ソフトウェアコンポーネントによる分割
		8.1.2 ハードウェアコンポーネントによる分割
	8.2 CPU使用率
		8.2.1 コードのプロファイリング
		8.2.2 Opcodeキャッシング
		8.2.3 テンプレート処理の高速化
		8.2.4 一般的な解決方法
	8.3 I/O
		8.3.1 ディスクI/O
		8.3.2 ネットワークI/O
		8.3.3 メモリI/O
	8.4 メモリとスワッピング
	8.5 外部サービスとブラックボックス
	8.6 データベース
		8.6.1 クエリのスポットチェック
		8.6.2 クエリのプロファイリング
		8.6.3 クエリとインデックスの最適化
		8.6.4 キャッシング
		8.6.5 非正規化

9章 ウェブアプリケーションのスケーリング
	9.1 スケーリングにまつわる神話
		9.1.1 スケーラビリティとは?
		9.1.2 ハードウェアプラットフォームのスケーリング
		9.1.3 垂直方向のスケーリング
		9.1.4 水平方向のスケーリング
		9.1.5 継続作業
		9.1.6 冗長性
	9.2 ネットワークのスケーリング
	9.3 PHPのスケーリング
	9.4 ロードバランシング(負荷分散)
		9.4.1 ハードウェアを使ったロードバランシング
		9.4.2 ソフトウェアによるロードバランシング
		9.4.3 レイヤ4
		9.4.4 レイヤ7
		9.4.5 きわめて大規模なバランシング
		9.4.6 非HTTPのトラフィックのバランシング
	9.5 MySQLのスケーリング
		9.5.1 ストレージバックエンド
		9.5.2 MyISAM
		9.5.3 InnoDB
		9.5.4 BDB
		9.5.5 ヒープ
	9.6 MySQLのレプリケーション
		9.6.1 マスタ/スレーブのレプリケーション
		9.6.2 ツリーレプリケーション
		9.6.3 マスタ/マスタレプリケーション
		9.6.4 レプリケーションの失敗
		9.6.5 レプリケーションのタイムラグ
	9.7 データベースの分割
		9.7.1 クラスタリング
		9.7.2 フェデレーション(連携)
	9.8 大規模なデータベースのスケーリング
	9.9 ストレージのスケーリング
		9.9.1 ファイルシステム
		9.9.2 プロトコル
		9.9.3 RAID
		9.9.4 フェデレーション(連係)
	9.10 キャッシング
		9.10.1 データのキャッシング
		9.10.2 HTTPリクエストのキャッシング
	9.11 スケーリングのまとめ

10章 統計、監視、警告
	10.1 ウェブ統計の追跡
		10.1.1 サーバログファイル
		10.1.2 分析
		10.1.3 ビーコンの使用
		10.1.4 Spread
		10.1.5 ロードバランサ
		10.1.6 カスタマイズされたメトリックの追跡
	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 下限値のチェック

11章 API
	11.1 データフィード
		11.1.1 RSS
		11.1.2 RDF
		11.1.3 Atom
		11.1.4 その他
		11.1.5 フィードの自動検知
		11.1.6 フィードのテンプレート
		11.1.7 OPML
		11.1.8 フィードの認証
	11.2 モバイルコンテンツ
	11.3 ウェブサービス
	11.4 APIトランスポート
		11.4.1 REST
		11.4.2 XML-RPC
		11.4.3 SOAP
		11.4.4 トランスポートの抽象化
	11.5 APIの乱用
		11.5.1 APIキーによる監視
		11.5.2 スロットリング
		11.5.3 キャッシング
	11.6 認証
		11.6.1 認証なし
		11.6.2 プレーンテキスト
		11.6.3 MAC
		11.6.4 トークンベースのシステム
	11.7 将来

索引