サーバサイドのアプリケーションアーキテクチャにおける"レイヤ構造"について体系的にまとめました。
"Controllerパターン"から"クリーンアーキテクチャ"まで様々な実装が載っています。
サンプルコードはGo言語ですが、
アプリケーションアーキテクチャに関する内容がメインなので、
普段はGo言語以外の言語を利用している方も理解できると思います。
Go言語に特化した章も存在します。
筆者がオススメするのは第4章の"詳細リポジトリパターン"です。
ネット上にあるリポジトリパターンの説明に比べて1歩踏み込んだ内容になっています。
目次プレビュー
- はじめに
- 第1章 Webアプリケーションにおけるレイヤ構造パターン集
- 第2章 Go言語におけるWebアプリケーションのパッケージ構成
-
1.1 はじめに
-
1.2 レイヤとは?
-
1.3 レイヤ構造のメリットとデメリット
-
1.4 コントローラーパターン
-
1.4.1 パッケージ構成
-
1.4.2 レイヤの責務
-
1.4.3 メリット
-
1.4.4 デメリット
-
1.4.5 使い所
-
1.5 MVCパターン
-
1.5.1 パッケージ構成
-
1.5.2 レイヤ同士の依存関係
-
1.5.3 レイヤの責務
-
1.5.4 メリット
-
1.5.5 デメリット
-
1.6 MVC+サービスレイヤパターン
-
1.6.1 パッケージ構成
-
1.6.2 レイヤ同士の依存関係
-
1.6.3 レイヤの責務
-
1.6.4 サービスレイヤの実装方法
-
1.6.5 メリット
-
1.6.6 デメリット
-
1.7 レイヤードアーキテクチャ
-
1.7.1 パッケージ構成
-
1.7.2 レイヤ同士の依存関係
-
1.7.3 レイヤの責務
-
1.7.4 レイヤ依存パターン
-
1.7.5 メリット
-
1.7.6 デメリット
-
1.8 ヘキサゴナルアーキテクチャ
-
1.8.1 レイヤ同士の依存関係
-
1.8.2 ヘキサゴナルアーキテクチャの目的
-
1.8.3 アプリケーションと技術を分離する仕組み
-
1.8.4 パッケージ構成
-
1.8.5 レイヤの責務
-
1.8.6 ヘキサゴナルアーキテクチャの本質
-
1.9 クリーンアーキテクチャ
-
1.9.1 レイヤ同士の依存関係
-
1.9.2 パッケージ構成
-
1.9.3 レイヤの責務
-
1.9.4 インプットポートとアウトプットポート
-
1.9.5 インプットポート、アウトプットポート以外のポート
-
1.9.6 クリーンアーキテクチャの本質
-
1.9.7 ちゃんとしたクリーンアーキテクチャ実装は少ない
-
1.9.8 メリット
-
1.9.9 デメリット
-
1.10 レイヤードアーキテクチャ + ポート
-
1.10.1 インフラストラクチャレイヤにポートを定義する
-
1.10.2 ドメイレイヤにポートを置く
-
1.11 その他のレイヤ紹介
-
1.11.1 Decoratorレイヤ,Presenterレイヤ,Exhibitレイヤ
-
1.11.2 コアレイヤ
-
1.12 レイヤの肥大化と正当性
-
1.12.1 選択したレイヤ構造とコード量が合っていない
-
1.12.2 レイヤの責務に合わない実装を置いている
-
1.13 レイヤ内をどう実装するのか
-
1.14 どのレイヤ構造を採用すべきか
-
1.15 おわりに
-
2.1 はじめに
-
2.2 なぜ分からないのか?
-
2.3 Go言語のパッケージ構成
-
2.3.1 フラットパッケージとは
-
2.3.2 シングルパッケージとは
-
2.4 フラットパッケージの実装
-
2.5 フラットパッケージvsレイヤ構造
-
2.5.1 テスト
-
2.5.2 初期学習コスト
-
2.5.3 継続的な学習コスト
-
2.5.4 新規開発
-
2.5.5 OSS開発
-
2.5.6 パッケージのインポートとIDEの補完
-
2.5.7 コードの質
-
2.6 おわりに