Ruby on Railsによるエンタープライズアプリケーション開発のための書籍です。本書ではRuby on Railsが省みることのなかった価値観のひとつであるデータ中心のアプローチに取り組み、これをRailsへと統合する方法を示しています。Railsが得意とするWebアプリケーションに、エンタープライズ分野で培われてきた安定したデータ基盤の構築ノウハウを取り込んでいます。また、そこから一歩進んで、Webサービスによる分散システムの構築や統合というテーマも扱っています。
エンタープライズ開発のエッセンスが詰め込まれた本書は、開発現場のアーキテクトおよびプログラマ必携の一冊です。
エンタープライズ Rails
―企業ユーザのためのWebアプリケーション設計術
Dan Chak 著、高井 直人 監訳、笹井 崇司 訳
- TOPICS
- Programming , Web , Ruby
- 発行年月日
- 2009年07月
- PRINT LENGTH
- 340
- ISBN
- 978-4-87311-416-3
- 原書
- Enterprise Rails
- FORMAT
目次
監訳者まえがき はじめに 1章 全体像 1.1 エンタープライズとは何か? 1.2 ゆっくりと成長する 1.3 すべての部品を理解する 1.3.1 永続化層 1.3.2 アプリケーション層 1.3.3 キャッシュ層 1.3.4 メッセージングシステム 1.3.5 Webサーバ 1.3.6 ファイアウォール 2章 プラグインによる構成 2.1 利点 2.2 自分のプラグインを書く 2.2.1 コアの機能追加 2.2.2 カスタム拡張 2.3 デプロイメント 2.3.1 svn:externals 3章 モジュールによる構成 3.1 ファイルとディレクトリ 3.2 名前空間のためのモジュール境界 3.2.1 モジュール間でのActiveRecordの連携 3.2.2 双方向関連 3.2.3 モジュールはサービスの予兆 3.2.4 ロード順序を適切にする 3.3 練習問題 3.4 リファクタリング 3.4.1 高度なモジュールリファクタリング 3.4.2 ユーティリティメソッドを解きほぐす 4章 砦としてのデータベース 4.1 データベースもアプリケーション 4.1.1 「すべてを支配している1つのフレームワークだ」 4.1.2 「私の会社では今まで誰もバグを書いたことがない」 4.1.3 「このRailsアプリケーションはこの世でたった1つのアプリケーションだ」 4.2 巨人の肩に乗る 4.2.1 正しいRDBMSを選択する 4.2.2 マイグレーションにおける注意事項 4.2.3 神話を打破する 4.3 運用とレポート 5章 堅牢なデータモデルの構築 5.1 映画のチケット 5.1.1 簡単なものから始める 5.1.2 制約 5.1.3 神話の打破 5.1.4 参照整合性 5.1.5 インデックスの導入 6章 第3正規形へのリファクタリング 6.1 第3正規形 6.1.1 タイミングが重要 6.2 リファクタリング:継承とミックスイン 6.3 練習問題 6.4 リファクタリングのステップ 7章 ドメインデータ 7.1 郵便番号を扱う 7.2 ドメインテーブルを使ったStrategyパターン 7.3 初日からリファクタリング 8章 複合キーとドメインキー正規形 8.1 なぜ複合自然キーが重要なのか? 8.1.1 複合キーを見つける 8.2 肩に乗って…… 8.2.1 ドメインキー正規形に移行する 8.2.2 Railsで複合キーを使う 8.2.3 遅延可能な外部キー制約 8.2.4 トレードオフを理解する 8.3 練習問題 8.4 リファクタリング 8.4.1 単一カラムのリファクタリング 8.4.2 複数カラムのリファクタリング 9章 トリガーを使って複雑な関係を保証する 9.1 トリガーによる制約チェック 9.1.1 PL/pgSQL関数の解剖 10章 多重テーブル継承 10.1 問題 10.2 ポリモーフィズムとは 10.3 継承と永続化 10.3.1 単一テーブル継承 10.3.2 多重テーブル継承 10.3.3 カラムにおけるXOR 10.3.4 Railsにおける洗練されたMTI 10.4 Factoryクラス 10.5 練習問題 10.6 リファクタリング 10.6.1 STIのリファクタリング 10.6.2 polymorphic => trueのリファクタリング 11章 View-Backedモデル 11.1 データベースビュー 11.1.1 ビューの作成 11.2 ビューに基づいたモデルを作る 11.3 検討 11.3.1 挿入、更新、削除 11.3.2 参照と制約 11.3.3 インデックス 11.4 練習問題 11.5 リファクタリング 12章 マテリアライズドビュー 12.1 マテリアライズドビューの原則 12.2 マテリアライズするべきビュー 12.2.1 形式化する 12.3 ターゲットテーブル 12.4 リフレッシュ関数と無効化関数 12.4.1 時間への依存 12.4.2 誰が代償を払うのか? 12.5 リフレッシュと無効化を起動する 12.5.1 映画のショータイム 12.6 調停者ビューを使って実装を隠蔽する 12.6.1 定期的なリフレッシュ 12.7 キャッシュインデックス 12.8 結果 12.9 入れ子になったキャッシュ 12.10 練習問題 13章 SOA入門 13.1 SOAとは何か? 13.2 なぜSOAなのか? 13.2.1 共有リソース 13.2.2 データベース負荷を軽減する 13.2.3 スケーラビリティⅡ:キャッシュはやっかい 13.2.4 ローカルの複雑さを軽減する 13.2.5 まとめ 13.3 練習問題 14章 SOAの検討 14.1 サービスの検討 14.1.1 実装の詳細を隠蔽する 14.1.2 APIはアクセス可能 14.2 API設計のベストプラクティス 14.2.1 必要なものをすべて送る 14.2.2 ラウンドトリップを制限する 14.2.3 並列化の機会を探す 14.2.4 できるだけ送らない 14.3 REST 対 XML-RPC 対 SOAP 14.3.1 XML-RPC 14.3.2 SOAP 15章 XML-RPCサービス 15.1 ActionWebServiceとRails 2.0 15.2 抽象化の壁作り 15.2.1 物理モデル層としてのActiveRecord 15.2.2 オブジェクトモデル層 15.2.3 APIの定義 15.3 さらなるテスト 15.4 クライアントプラグイン 15.4.1 共有コード 15.4.2 クライアントSingleton 15.4.3 インテグレーションテスト 16章 サービスへのリファクタリング 16.1 注文サービス 16.2 MoviesServiceとの統合 16.2.1 注文の検討 16.3 MoviesServiceオブジェクトモデル 16.4 すべてをまとめる 17章 REST入門 17.1 RESTの基礎 17.1.1 リソースと動詞 17.1.2 ハードウェアもアプリケーションの一部 17.2 RESTをSOAにマッピングする 17.2.1 CRUDへのマッピング 17.2.2 異なるクライアントに1つのインタフェース 17.2.3 HTTP+POX 17.2.4 サービス契約の定義 17.2.5 RubyにおけるRESTクライアント 17.2.6 意図されていたWebの使われ方 18章 RESTful Webサービス 18.1 問題のスコープ 18.1.1 ツール 18.2 MoviesWebService 18.2.1 リソースサーバの実装 18.2.2 アクションサーバの実装 18.2.3 クライアントの実装 19章 エンドツーエンドのキャッシュ 19.1 データ層のキャッシュをもう一度 19.1.1 スナップショット 19.1.2 リフレッシュ関数 19.1.3 無効化トリガー 19.1.4 インデックス 19.2 論理モデルのキャッシュ 19.2.1 検討 19.2.2 古くなったデータによる再構築を避ける 19.2.3 キャッシュインデックス 19.3 その他のキャッシュ 19.3.1 クエリ実行計画のキャッシュ 19.3.2 データベースクエリのキャッシュ 19.3.3 Railsのクエリキャッシュ 19.3.4 フラグメントキャッシュ、アクションキャッシュ、ページキャッシュ 索引