impress top gearシリーズ<br> Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践

個数:1
紙書籍版価格
¥3,850
  • 電子書籍
  • Reader

impress top gearシリーズ
Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践

  • ISBN:9784295024040

ファイル: /

内容説明

※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。

Pythonで実践する、比類なき設計手法。
堅牢でしなやかなシステムを設計・開発できる!
DDDから、実装の実践/TDD/実用アプリの構築まで。


本書では、「コードの複雑化」や「フレームワークへの過度な依存」という、多くの開発者が直面する課題に対して、明確な解決策を提示します。

アプリケーション開発において「クリーンアーキテクチャ」の原則をどのように適用し、保守性と拡張性の高いシステムを構築するかについて、Pythonを使って具体的かつ実践的に解説します。主要なテーマは次のとおりです。

◆基本的な考え方◆クリーンアーキテクチャの概念、基盤となるSOLID原則、Python開発への適用方法などを解説。

◆設計の本質◆ドメイン駆動設計(DDD)のほか、インターフェイスアダプター、フレームワーク&ドライバーなど階層ごとの役割と実装について詳しく解説。

◆実践的なPython実装◆Pythonの特性を活かした具体的なコード例とプロジェクト構造を提示。

◆テスト駆動開発(TDD)◆設計の正しさを担保するためのテスト手法を、開発プロセスに統合。

◆実戦的な応用◆単純なサンプルにとどまらず、スケーラビリティを考慮した実務レベルのアプリの構築も想定。

具体的なアプリの開発を進めながら、変更に強く、テストしやすく、長期的に保守しやすいアプリ開発の実用的な戦略とパターンを提供します。

「動くコード」を書くだけの段階から、「変化に強く、10年先もメンテナンス可能なコード」を書くエンジニアへとステップアップしたい開発者にとって、必読の一冊です。

※本書は『Clean Architecture with Python: Implement scalable and maintainable applications using proven architectural principles』の翻訳書です。

■本書の構成
◆Part1 Pythonでのクリーンアーキテクチャの基礎
第1章 クリーンアーキテクチャの意義:Python開発を変える
第2章 SOLID原則:堅牢なPythonアプリケーションを構築する
第3章 Pythonの型システムを使ってクリーンアーキテクチャを強化する

◆Part2 クリーンアーキテクチャをPythonで実装する
第4章 ドメイン駆動設計:コアビジネスロジックを構築する
第5章 アプリケーション層:ユースケースのオーケストレーション
第6章 インターフェイスアダプター層:コントローラーとプレゼンター
第7章 フレームワーク&ドライバー層:外部インターフェイス
第8章 クリーンアーキテクチャによるテストパターンの実装

◆Part3 クリーンアーキテクチャをPythonで適用する
第9章 Web UIの追加:クリーンアーキテクチャのインターフェイスの柔軟性
第10章 可観測性の実装:監視と検証
第11章 レガシーからクリーンへ:保守性を高めるPythonのリファクタリング
第12章 クリーンアーキテクチャの旅:次なるステップ

目次

表紙
商標・サンプルコード・正誤表について
献辞
著者紹介・レビュー担当者紹介・謝辞
はじめに
目次
Part1 Pythonでのクリーンアーキテクチャの基礎
第1章 クリーンアーキテクチャの意義:Python開発を変える
1.1 本章のコードサンプルについて/1.2 なぜPythonでクリーンアーキテクチャなのか:計画性とアジリティの両立
1.2.1 現代のPython開発における複雑さの課題
1.2.2 アジリティの必要性/1.2.3 バランスを取る:計画性とアジリティのトレードオフ
1.2.4 複雑さを管理する上でのアーキテクチャの役割
1.2.5 クリーンアーキテクチャに向けた準備/1.3 クリーンアーキテクチャとは何か
1.3.1 オニオンアーキテクチャの概念
1.3.2 クリーンアーキテクチャの利点
1.3.3 コンテキストにおけるクリーンアーキテクチャ/1.4 クリーンアーキテクチャとPythonの自然な組み合わせ
1.4.1 クリーンアーキテクチャをPythonで実装する
1.4.2 実践的な例:Pythonプロジェクトでのクリーンアーキテクチャ
1.4.3 Python固有の注意点と潜在的な落とし穴
1.5 まとめ
1.6 参考資料
第2章 SOLID原則:堅牢なPythonアプリケーションを構築する
2.1 本章のコードサンプルについて/2.2 単一責任の力:焦点を絞った保守性の高いコードを作成する/2.2.1 単一責任とは
2.2.2 SRPとテスト/2.2.3 SRPのバランスを取る
2.3 Pythonでの開放/閉鎖設計:拡張可能なシステムを構築する
2.4 インターフェイス分離の原則:クライアントに合わせたインターフェイス設計
2.5 硬直から柔軟へ:Pythonでの継承とインターフェイス
2.5.1 LSPとは
2.5.2 硬直した階層の落とし穴
2.5.3 LSPによる柔軟性の実現
2.6 Pythonでの依存関係逆転:柔軟性のために分離する/2.6.1 DIPとは
2.6.2 DIPで設計を修正する
2.6.3 DIPのテストでの効果/2.6.4 SOLIDとクリーンアーキテクチャにおけるDIPの位置付け/2.7 まとめ
2.8 参考資料
第3章 Pythonの型システムを使ってクリーンアーキテクチャを強化する
3.1 本章のコードサンプルについて/3.2 Pythonの動的な環境における型認識/3.2.1 Pythonにおける型システムの進化
3.2.2 動的型付けと型ヒント
3.2.3 クリーンアーキテクチャでの型認識
3.2.4 課題と注意点
3.3 Pythonの型システムを活用する/3.3.1 基本的な型ヒント:単純な型からコンテナまで
3.3.2 Sequence型:コレクション型での柔軟性
3.3.3 Union型とOptional型
3.3.4 Literal型/3.3.5 型エイリアス
3.3.6 NewType型/3.3.7 Any型
3.4 自動化された静的型チェックツールを活用する
3.4.1 mypyのCLI
3.4.2 mypyを設定する
3.4.3 デプロイメントパイプラインでのmypy
3.4.4 IDEで型ヒントを活用して開発エクスペリエンスを向上させる
3.4.5 その他の型チェック機能
3.4.6 段階的な導入戦略
3.5 まとめ
3.6 参考資料
Part2 クリーンアーキテクチャをPythonで実装する
第4章 ドメイン駆動設計:コアビジネスロジックを構築する
4.1 本章のコードサンプルについて/4.2 DDDの原則に基づいたコアエンティティの識別とモデル化/4.2.1 DDDとは
4.2.2 ビジネス要件を分析する/4.2.3 ドメインモデリングの中心的な概念
4.2.4 タスク管理ドメインをモデル化する
4.3 エンティティをPythonで実装する/4.3.1 Pythonのエンティティ
4.3.2 ドメインエンティティを作成する
4.3.3 ビジネスルールをエンティティにカプセル化する
4.3.4 クリーンアーキテクチャにおける値オブジェクト
4.3.5 ドメインサービスを実装する
4.4 集約とファクトリによるドメインモデルの強化
4.4.1 DDDのパターン/4.4.2 集約
4.4.3 ファクトリパターン
4.5 ドメインの独立性を確保する/4.5.1 実践:依存関係ルール
4.5.2 外部の依存関係を回避する
4.5.3 ドメイン層の独立性とテスト容易性/4.5.4 より純粋なドメインモデルに向けたリファクタリング
4.6 まとめ/4.7 参考資料
第5章 アプリケーション層:ユースケースのオーケストレーション
5.1 本章のコードサンプルについて/5.2 アプリケーション層の役割を理解する
5.2.1 結果型を使ったエラー処理
5.2.2 アプリケーション層のパターン
5.2.3 進化を見据えた計画
5.3 ユースケースインタラクターを実装する
5.3.1 ユースケースを構造化する
5.3.2 依存関係の注入
5.3.3 複雑な操作を扱う
5.4 リクエストモデルとレスポンスモデルを定義する/5.4.1 リクエストモデル
5.4.2 レスポンスモデル
5.5 外部サービスからの分離を維持する
5.5.1 インターフェイス境界
5.5.2 進化するサービス要件に対応する
5.6 まとめ
5.7 参考資料
第6章 インターフェイスアダプター層:コントローラーとプレゼンター
6.1 本章のコードサンプルについて/6.2 インターフェイスアダプター層を設計する
6.2.1 クリーンアーキテクチャにおけるインターフェイスアダプター層の役割/6.2.2 インターフェイスアダプター層の責務
6.2.3 インターフェイスアダプター層とアプリケーション層の境界の違い/6.2.4 主要なコンポーネントとそれらの関係
6.2.5 インターフェイス設計の原則
6.3 コントローラーをPythonで実装する
6.3.1 コントローラーの責務とパターン
6.3.2 コントローラーでリクエストモデルを扱う
6.3.3 コントローラーの独立性を保つ
6.4 インターフェイスアダプターによる境界の適用
6.4.1 境界での成功/失敗パターンの明示的な処理
6.4.2 クリーンなデータ変換フロー
6.4.3 インターフェイスアダプターとアーキテクチャ上の境界
6.5 データフォーマット用のプレゼンターを構築する/6.5.1 Humble Objectパターンとは
6.5.2 プレゼンターインターフェイスを定義する
6.5.3 ビューモデルの扱い方
6.5.4 具体的なプレゼンターを実装する
6.6 まとめ/6.7 参考資料
第7章 フレームワーク&ドライバー層:外部インターフェイス
7.1 本章のコードサンプルについて/7.2 フレームワーク&ドライバー層とは/7.2.1 クリーンアーキテクチャでの位置付け
7.2.2 フレームワークとドライバーの違い
7.2.3 アプリケーションコンポジション
7.2.4 クリーンアーキテクチャの外側の層でのパターン
7.3 UIフレームワークアダプターを構築する/7.3.1 実際のフレームワークアダプター
7.4 コンポーネントの構造と境界
7.4.1 ユーザーインタラクションを実装する
7.4.2 実装から得られるドメインの洞察
7.4.3 ドメイン上の洞察を実装する:タスクとプロジェクトの関係
7.5 データベースアダプターを実装する/7.5.1 リポジトリインターフェイスの実装
7.5.2 リポジトリのインスタンス化を管理する
7.5.3 コンポーネントオーケストレーションの概要
7.6 外部サービスを統合する/7.6.1 クリーンアーキテクチャにおける外部サービス
7.6.2 SendGridの統合
7.6.3 アプリケーションのブートストラッププロセス
7.7 まとめ
7.8 参考資料
第8章 クリーンアーキテクチャによるテストパターンの実装
8.1 本章のコードサンプルについて/8.2 クリーンアーキテクチャにおけるテストの基盤
8.2.1 アーキテクチャ上のフィードバックとしてのテスト
8.2.2 複雑なテストから明確な境界へ
8.3 クリーンなコンポーネントをテストする:単体テストの実践
8.3.1 ドメインエンティティをテストする
8.3.2 Pythonでのテストダブル
8.3.3 ユースケースのオーケストレーションをテストする
8.3.4 インターフェイスアダプターをテストする
8.4 アーキテクチャの境界をまたぐテスト
8.5 テストを保守するためのツールとパターン
8.5.1 テストファイルを構造化する/8.5.2 包括的なカバレッジのためのパラメータ化されたテスト
8.5.3 テストフィクスチャを整理する
8.5.4 テストのツールとテクニック
8.6 まとめ
8.7 参考資料
Part3 クリーンアーキテクチャをPythonで適用する
第9章 Web UIの追加:クリーンアーキテクチャのインターフェイスの柔軟性
9.1 本章のコードサンプルについて/9.2 クリーンアーキテクチャでのインターフェイスの柔軟性を理解する/9.2.1 Webインターフェイスの実装を理解する
9.2.2 並行なインターフェイスの実装
9.2.3 インターフェイス境界で起こりがちな違反
9.3 クリーンアーキテクチャでのWebプレゼンテーションパターン/9.3.1 Web専用のプレゼンターを実装する
9.3.2 プレゼンターとテンプレートベースのフォーマットの違い
9.3.3 Web固有の状態を管理する
9.3.4 フォームの処理と検証
9.4 Flaskをクリーンアーキテクチャに統合する
9.4.1 ルートとテンプレートを実装する
9.4.2 クリーンアーキテクチャベースのWebアプリケーションを実行する
9.5 まとめ
9.6 参考資料
第10章 可観測性の実装:監視と検証
10.1 本章のコードサンプルについて/10.2 クリーンアーキテクチャにおける可観測性を理解する/10.2.1 クリーンアーキテクチャにおける自然な観測ポイント
10.2.2 クリーンアーキテクチャにおける可観測性
10.3 境界をまたぐインストルメンテーションを実装する/10.3.1 ロギングによるフレームワーク結合の回避
10.3.2 構造化ロギングパターンを実装する
10.3.3 境界をまたぐ可観測性を構築する
10.4 フィットネス関数を使ってアーキテクチャの整合性を検証する
10.4.1 階層構造を検証する
10.4.2 依存関係ルールを検証する
10.5 まとめ
10.6 参考資料
第11章 レガシーからクリーンへ:保守性を高めるPythonのリファクタリング
11.1 本章のコードサンプルについて/11.2 アーキテクチャ変革の評価と計画/11.2.1 クリーンアーキテクチャのレンズを通して評価する
11.2.2 ステークホルダーとの合意を形成する
11.2.3 より踏み込んだドメイン分析
11.2.4 段階的な実装ロードマップを作成する
11.2.5 変革作業を進めるためのアプローチ
11.3 段階的なクリーンアーキテクチャの実装/11.3.1 初期のシステム分析
11.3.2 ステージ1:ドメインの境界を確立する
11.3.3 ステージ2:インターフェイス層を実装する
11.3.4 ステージ3:レガシー実装とクリーンな実装を統合する
11.3.5 ステージ4:最適化/11.4 まとめ
11.5 参考資料
第12章 クリーンアーキテクチャの旅:次なるステップ
12.1 クリーンアーキテクチャの振り返り:俯瞰的な視点/12.1.1 アーキテクチャの層をまたぐ旅/12.1.2 Pythonとクリーンアーキテクチャの自然な調和
12.2 システムの種類を超えてクリーンアーキテクチャを適応させる/12.2.1 APIシステムでのクリーンアーキテクチャ
12.2.2 イベント駆動型アーキテクチャとクリーンアーキテクチャ
12.3 アーキテクチャリーダーシップとコミュニティエンゲージメント/12.3.1 アーキテクチャの変革をリードする
12.3.2 実装ギャップを埋める
12.3.3 アーキテクチャコミュニティを構築する
12.4 まとめ
12.5 参考資料
索引
翻訳者プロフィール・STAFF LIST
奥付

最近チェックした商品