メニュー

pospomeのサーバサイドアーキテクチャ

発売日: 2018/10/8 全文検索: 対応
★★★★★ ★★★★★ 0件
サーバサイドのアプリケーションアーキテクチャにおける"レイヤ構造"について体系的にまとめました。
"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 おわりに
  • 3.1 はじめに
  • 3.2 パッケージの横割りとは
  • 3.3 パッケージの縦割りとは
  • 3.4 パッケージの縦割りが抱える問題
    • 3.4.1 共通実装
    • 3.4.2 機能間の依存
  • 3.5 縦割りを扱う際のポイント
    • 3.5.1 共通実装の扱い
    • 3.5.2 各レイヤ内実装
  • 3.6 縦割りとDB設計
    • 3.6.1 依存関係のコントロール
    • 3.6.2 マイクロサービスへの切り出し
  • 3.7 パッケージの縦割りにおける機能パッケージの分割粒度
  • 3.8 Go言語におけるフラットパッケージと縦割り
  • 3.9 おわりに
  • 4.1 はじめに
  • 4.2 リポジトリパターンとは
    • 4.2.1 CRUD操作の特徴
    • 4.2.2 実装
    • 4.2.3 インターフェースの導入
    • 4.2.4 メリット
  • 4.3 リポジトリパターンとDAOの違い
  • 4.4 複数のデータソースを扱う
  • 4.5 モデルの部分的なCRUD操作
  • 4.6 Read操作におけるモデル以外の戻り値
  • 4.7 実装に対する依存
  • 4.8 ビジネスロジック
  • 4.9 トランザクション境界
  • 4.10 トランザクションの抽象化
  • 4.11 Go言語におけるグローバル変数を利用したDIの欠点
  • 4.12 おわりに
奥付

まだレビューが投稿されていません