なぜ依存を注入するのか DI の原理・原則とパターン

ナゼイゾンヲチュウニュウスルノカ ディーアイノゲンリゲンソクトパターン

なぜ依存を注入するのか DI の原理・原則とパターンの表紙
著者:
Steven van Deursen / Mark Seemann / 須田智之(スティーブンヴァンドゥールセン / マークシーマン / スダトモユキ)
価格:
¥4,796
出版社:
マイナビ出版
出版日:
2024年05月17日頃
ISBN:
9784839983062
シリーズ:
Compass Books シリーズ
在庫:
1
判型:
単行本

なぜ注目されているか

総合222位 言及 694 件・うち記事 24 件を掲載
出版前出版日08015920222023202420252026

書籍紹介

依存注入 (Dependency Injection: DI) は関連性のあるパターンや原則を集めたものであり、その第一の目的は保守しやすいソフトウェアを構築することにあります。サンプル・コードに C# を用いていますが、扱っていることの多くは他のオブジェクト指向プログラミング言語やプラットフォームでも適用できるようになっています。

・依存注入とは何か? なぜ・どのように使うのか
・疎結合なコードで構築されたアプリケーションの分析・評価

・有用な設計パターン、アンチ・パターンのカタログ

最初から最後まで一貫して依存注入について見ていくのですが、より優れたオブジェクト指向のプログラミングが行えるようになることも本書の目標としています。ドメイン駆動設計やクリーン・アーキテクチャに関する既刊書があまり触らなかった部分にスポット・ライトを当ててくれるような内容にもなっていますので、設計に関する既刊書を読んだあとに抱えていたモヤモヤしていた部分を、依存注入の観点から明確にしてくれる可能性が本書にはあります。

Manning Publishing: Dependency Injection Principles, Practices, and Patterns の翻訳書
第 1 部: 依存注入 (Dependency Injection: DI) の役割

第 1 章: 依存注入 (Dependency Injection: DI) の基本: 依存注入とは何なのか? なぜ使うのか? どのように使うのか?

第 2 章: 密結合したコードで構築されたアプリケーション

第 3 章: 疎結合なコードへの変換

第 2 部: カタログ
第 4 章: 依存注入のパターン

第 5 章: 依存注入のアンチ・パターン

第 6 章: コードの嫌な臭い (code smell)

第 3 部: 純粋な依存注入 (Pure DI)
第 7 章: オブジェクト合成 (object composition)

第 8 章: オブジェクトの生存期間 (lifetime)

第 9 章: 介入 (interception)

第 10 章: 設計だけで実現するアスペクト指向プログラミング (Aspect-Oriented Programming: AOP)

第 11 章: ツールを用いたアスペクト指向プログラミング

第 4 部: DI コンテナ
第 12 章: DI コンテナとは?

第 13 章: DI コンテナ: Autofac

第 14 章: DI コンテナ: Simple Injector

第 15 章: DI コンテナ: MS.DI (Microsoft.Extensions.DependencyInjection)

用語集・参考文献

技書の森解説

依存注入 (Dependency Injection、DI) をフレームワークの機能の使い方としてではなく、保守しやすいソフトウェアを作るための原則とパターンの集まりとして体系的に学びたい人に向けた翻訳書が、『なぜ依存を注入するのか DI の原理・原則とパターン』 (Steven van Deursen、Mark Seemann 著、須田智之 訳、マイナビ出版、2024 年 5 月刊) です。原書は Manning の Dependency Injection Principles, Practices, and Patterns で、サンプル・コードには C# を使いながらも、扱う内容の多くは他のオブジェクト指向言語やプラットフォームにも適用できると版元は説明しています。DI の目的、疎結合なコードの評価のしかた、設計パターンとアンチ・パターンのカタログを一冊で押さえられる構成です。

4 部 15 章の構成、DI の役割から 3 種の DI コンテナまで

構成は 4 部 15 章に用語集と参考文献が続きます。第 1 部は DI の役割で、DI とは何か、なぜ、どのように使うのかという基本から、密結合したコードで構築されたアプリケーションと、それを疎結合なコードへ変換する過程を扱います。第 2 部はカタログと題され、DI のパターン、DI のアンチ・パターン、コードの嫌な臭いの 3 章が並びます。第 3 部は純粋な依存注入 (Pure DI) を主題に、オブジェクト合成、オブジェクトの生存期間、介入、設計だけで実現するアスペクト指向プログラミング、ツールを用いたアスペクト指向プログラミングへと進みます。最後の第 4 部で初めて DI コンテナを取り上げ、DI コンテナとは何かを説明したあと、Autofac、Simple Injector、MS.DI (Microsoft.Extensions.DependencyInjection) の 3 つを個別の章で解説します。

コンテナより先に原則を学ぶ構成が効く理由

DI を学ぶときにつまずきやすいのは、DI コンテナの設定方法と DI という設計の考え方が混同される点です。コンストラクタで依存を受け取るといった書き方を覚えても、どのクラスが依存を組み立てる責任を持つのか、オブジェクトをいつ作りいつ破棄するのか、ログやトランザクションのような横断的な処理をどこに置くのかが決まっていなければ、コンテナを入れても結合の強さは変わりません。本書がコンテナを第 4 部まで登場させず、第 3 部でオブジェクト合成や生存期間、介入をコンテナなしの Pure DI で説明する並びになっているのは、この順序の問題に対する一つの答えになっています。設計上の問題の兆候、いわゆる コードの臭い を DI の観点から扱う章や、アンチ・パターンの章が独立していることも、既存のコードを見直す際の判断の物差しとして役立ちます。

設計書を読んだあとの補完に、C# 読者以外も視野に

版元は、ドメイン駆動設計や クリーン・アーキテクチャ に関する既刊書があまり触れなかった部分に光を当て、設計書を読んだあとに残るもやもやを 依存注入 の観点から明確にしうる本だと紹介しています。レイヤーやドメインの分け方を学んだものの、それらを実際のオブジェクトとしてどう組み立てて結線するかで手が止まった経験がある人には、ちょうどその隙間を埋める内容です。読み進めるには、インタフェースや抽象クラス、ポリモーフィズムといったオブジェクト指向の基礎と、C# のコードを読める程度の素養が前提になります。Java や TypeScript を主に書く人でも原則の部分は持ち帰れますが、第 4 部のコンテナの章は .NET の 3 製品に特化しているため、自分の言語の DI コンテナの使い方を手早く知りたいだけなら、各フレームワークの公式ドキュメントのほうが早く用が済みます。設計の本を段階的に選びたい場合は 設計 / アーキテクチャ本ガイド も参考になります。

テストしにくいクラスや変更のたびに波及するコードに悩み、DI を書き方ではなく設計の原則として腹落ちさせたい開発者、チームで DI の使い方の基準を作りたいリードエンジニアにとって、原則からパターン、アンチ・パターン、コンテナまでを一貫した視点で通して学べる本書は、手元に置いて繰り返し参照する価値のある一冊です。

言及した記事 (24 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: