本書はWebアプリケーションの設計・開発におけるフレームワークの利用について解説したものです。Webアプリケーション開発では、MVC(Model/View/Controller)や3層アーキテクチャなどを採用した開発の枠組み(フレームワーク)が用いられます。本書はそのフレームワークの思想に沿ったアプリケーションの設計とプログラミングを実践的に解説するものです。フレームワークの狙いはどこにあるのか、効率的な開発と改修のためにはどう考えていくべきなのかを学ぶことができます。また、サンプルとしてS2StrutsによるJavaのアプリケーションを提供していることも本書の大きな特徴です。
筆者のシステム開発者、インストラクターとしての経験を活かし、さまざまな現場で応用可能な基本的技法をやさしく身に付けられます。
第1章 イントロダクション―エンジニアのスキルとフレームワーク
1.1 開発現場の現状
1.1.1 「人材とスキル」、ダブルの不足
1.1.2 エンジニアのスキルの基準を考える
1.1.3 まったく新しいテクノロジはない
1.1.4 「知っている」から「使いこなせる」へ
COLUMN 優秀な人間が集まればよいか
1.2 フレームワーク
1.2.1 フレームワーク登場の背景
COLUMN 良い設計/良いプログラミングには、どんな良いことがあるのか
1.2.2 フレームワークを使いこなすための前提知識
1.2.3 認識不足の現場
COLUMN これからのエンジニアは評価力、調達力、英語力
1.3 本書のメッセージ
1.3.1 レイヤの意味と役割
1.3.2 レイヤごとのデザインパターン(設計方法)
1.3.3 フレームワークをより深く理解する
1.3.4 アプリケーション作成の1つのスタイル
1.3.5 情報をどのように考え、扱うか
1.4 本書のメッセージを理解するために必要な知識
第2章 フレームワークの基本―MVCモデル
2.1 初期のMVCモデル(パターン)
2.1.1 基本構造
COLUMN ソフトウェアにおける部品の考え方
2.1.2 相互関係のルール
2.1.3 MVCモデルのメリットとデメリット
2.2 アーキテクチャパターン
2.2.1 アーキテクチャパターンの概要
2.2.2 Layers(階層)パターン
COLUMN BCEモデル
2.3 WebアプリケーションのMVCモデル
2.3.1 基本構成と概要
2.3.2 各オブジェクトの役割
COLUMN EoD(Easy of Development) 2.3.3 より鮮明に関係と流れをイメージする
2.4 システム設計視点で見るレイヤ(層)
2.5 実際はどうするか
2.6 階層化とフレームワーク
2.7 サンプルアプリケーションと動作環境
2.7.1 本書で扱うサンプルの概要
2.7.2 機能詳細
2.7.3 開発/動作環境
2.7.4 サンプルアプリケーションのダウンロードとセットアップ
第3章 プレゼンテーション層(ビューレイヤ)
3.1 プレゼンテーション(ビューレイヤ)の概要
3.2 プレゼンテーション層は何をしているのか
3.2.1 Webコンテナが受信したHTTPリクエストを受ける
3.2.2 ロジックに処理要求を伝える
3.2.3 レスポンス(HTML)を生成してWebコンテナに渡す
COLUMN 初めてWebアプリケーションを生成すると
3.3 プレゼンテーションがうまく設計/実装できない
3.3.1 役割がはっきりしないアプリケーションの構造
3.3.2 役割がはっきりしないとどうなるか
3.3.3 このような場合はどうするか?
3.3.4 プログラム構成を考え直す
3.4 パターンを使った機能の分割
3.4.1 Front ControllerパターンとApplication Controllerパターン
3.4.2 Strutsフレームワークのアーキテクチャ
3.5 サンプルで利用するフレームワーク
3.5.1 S2Strutsの概要
3.6 サンプルの設計/実装
3.6.1 画面レイアウトと画面遷移を設計する
3.6.2 「予約状況検索」を設計する
3.6.3 「予約状況検索」のクラス構造を設計する
3.6.4 「予約状況検索」の実装を確認する
3.6.5 「会議室予約」を設計する
3.6.6 「会議室予約」のクラス構造を設計する
3.6.7 「会議室予約」の実装を確認する
3.7 まとめ
第4章 ロジックレイヤ
4.1 ロジックレイヤの役割
4.2 ロジックレイヤの設計ポイント
4.2.1 ビューからロジックを分離する
4.3 ロジックレイヤと他のレイヤ間とのデータの受け渡し
4.3.1 DTOパターン(データの入れ物)
4.3.2 コンバータ(データを変換するもの)
4.3.3 ビューレイヤとロジックレイヤ間のデータ受け渡し
4.3.4 ロジックレイヤとデータアクセスレイヤ間のデータ受け渡し
4.4 ロジックレイヤを構成するバリエーション
4.4.1 ロジックをデータと分離するパターン
4.4.2 ロジックをデータと一緒にするパターン
4.4.3 2つのパターンについて
4.5 サンプル
4.5.1 予約登録ロジック
4.5.2 検索結果表示用のオブジェクトに変換する
4.6 まとめ
第5章 データアクセスレイヤ
5.1 データアクセスレイヤの役割
5.2 DAOパターンによるデータアクセス
5.2.1 DAOの役割
5.2.2 VALUEの役割
5.3 参照系機能
5.3.1 全オブジェクトをリストで取得する機能
5.3.2 指定されたIDを持つオブジェクトを取得する機能
5.3.3 検索条件に応じたオブジェクトを検索し、リストで取得する機能
5.4 更新系機能
5.4.1 オブジェクトを登録する機能
5.4.2 オブジェクトを変更する機能
5.4.3 オブジェクトを削除する機能
5.5 共通機能
5.6 オブジェクト同士の関連を構築して取得する
5.6.1 関連を取得する際に考えるべきこと
5.6.2 パターン1:データアクセスを利用する側で複数のDAOを呼び出す
5.6.3 パターン2:DAO自身が関連する別のDAOを呼び出す
5.6.4 パターン3:オブジェクトの構築を行う専用のクラスを用意して複数のDAOを呼び出す
5.7 オブジェクト同士の関連の構造を格納する
5.7.1 関連を格納する際に考えるべきこと
5.7.2 パターン1:オブジェクト自身が対応するDAOを呼び出す
5.7.3 パターン2:ロジックやビューなど、データアクセスを利用する側で複数のDAOを呼び出す
5.8 悪い設計
5.9 O/Rマッパー
5.9.1 O/Rマッパーを利用したDAOパターン
5.9.2 O/Rマッパーを利用する場合の注意点
5.9.3 S2DaoによるDAOパターンとその特徴
5.10 サンプル
5.10.1 準備
5.10.2 サンプルの構成
5.10.3 予約情報Beanの作成
5.10.4 予約情報テーブルのDAOの作成
5.10.5 予約情報DAOをSeasarにコンポーネントとして登録
5.10.6 予約情報テーブルのDAOテストクラスを作成
5.10.7 予約情報DAOの確認
5.10.8 指定されたIDを持つ予約情報を取得する
5.10.9 検索条件に応じた予約情報をリストで検索する
5.10.10 関連の取得
5.10.11 複数のDAOを利用した格納とトランザクション制御
5.11 まとめ
第6章 レイヤリングを支える技術―DIコンテナとAOP
6.1 DIコンテナが解決する問題点とその仕組み
6.1.1 依存性という問題
6.1.2 依存性という問題を解決する
6.1.3 DIコンテナによる依存性の解決
6.2 DIコンテナの基本機能
6.2.1 インスタンス管理と「依存性注入」の方法
6.2.2 設定ファイルの基本とインジェクション
6.2.3 DIコンテナによるオブジェクトの生成と組み立て
6.2.4 オブジェクトのライフサイクル
6.3 AOP(アスペクト指向プログラミング)
6.3.1 「横断的関心事」とは何か
6.3.2 アスペクトと機能のウィーブ(織り込み)
6.3.3 DIコンテナが提供するアスペクト指向の機能
6.3.4 AOPの設定と利用
6.4 DIコンテナが提供するテストのしやすさ
6.4.1 Seasar2が提供する拡張機能
6.5 まとめ
第7章 レイヤリングとアプリケーション構造
7.1 目指すべきアプリケーション構造
7.2 レイヤ構成とオブジェクトの配置・連携の指針
7.2.1 一覧表示/検索表示のパターン
7.2.2 登録/変更のパターン
7.3 アプリケーションの複雑さに応じたレイヤ構成
7.3.1 簡単な機能の場合
7.3.2 複雑な機能の場合
7.4 サンプル
7.4.1 予約状況の一覧(ビューヘルパーの利用)
7.5 まとめ
付属データはこちら
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1刷 | 031 図2.4の左側の図 |
2刷 | 未 |
|
2012.10.17 | ||||||
1刷 | 033 上から2行目 |
2刷 | 未 |
|
2010.03.16 | ||||||
1刷 | 042 表中「モデル」の「特徴と役割」の1行目 |
2刷 | 未 |
|
2012.10.17 | ||||||
1刷 | 071 「3.3.1 役割がはっきりしない…」の4行目 |
2刷 | 未 |
|
2012.10.17 |
らう さん
2010-04-04
プレゼン層、ロジック層、データアクセス層それぞれの設計、PGの具体例を掲載している。DBアクセスはTBL単位にクラス化するとかロジックとDAO/DTOを分ける/分けないなど設計で悩み勝ちな点もサポートされてる。Seaserフレームワークも使っていて実践的な例が豊富。
susue さん
2015-08-25
seaser2入門として
トルネードG&T さん
2019-05-10
Webアプリケーションフレームワーク指南書。なのだが、使っている言語がJavaな上に著者は応用書と位置付けているためJavaで利用されるフレームワークアプリケーションの話がかなり出てきてしまい、Railsを期待していた側としてはかなり読みにくかった。MVCの説明はあるものの主な枠組みとして扱われる3層アプリだとRailsでいうVCがひとつにまとまってる上にMが二分割ということに。ただひとつわかったのはWebアプリの基盤となる面倒な話がRailsだとかなりフレームワーク側で解決されているということ。