Skip to Content
テスト駆動開発を学ぶ
book

テスト駆動開発を学ぶ

by Saleem Siddiqui
May 2025
Intermediate to advanced
280 pages
3h 35m
Japanese
O'Reilly Media, Inc.
Content preview from テスト駆動開発を学ぶ

第11章. リデザインに賭ける

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

全体として、ニーズが高まるにつれてデザインを進化させる価値はある。1

マーティン・ファウラー『エンタープライズ・アプリケーション・アーキテクチャのパターン』(アディソン・ウェスリー、2002年)

第3章で、Portfolio エンティティを紹介した。このエンティティは我々のドメインの重要な概念を表しているので、責任を与えるのは当然だ。さて、Portfolio はあまりに多くの仕事をするので、それが表れている。その主な仕事は、Money エンティティのリポジトリになることである。しかし、通貨間のコンバージョンという責任も負っている。そのために、為替レートテーブルと変換ロジックを保持しなければならない。これは、Portfolio の責任には見えない。通貨変換は、ピーナッツバターがピザの上にあるのと同じくらい、ポートフォリオにあるべき仕事である。

私たちのソフトウェア・プログラミングは、私たちのニーズとともに成長してきた。我々の設計を改善し、現在実装されている通貨間の変換方法よりも優れた抽象化を探す価値がある。

ドメイン駆動設計(DDD)の原則は、継続的な学習である。 ドメインについて新しいことを学んだら、獲得した知識を設計に反映させる。その結果得られる設計とソフトウェアは、ドメインに対する理解の向上を反映したものでなければならない。

チップ

ドメイン駆動設計は、TDDによって支えられている学問である。エリック・エヴァンスの同名の著書は、このテーマに関する代表的な著作である。

ここ数章にわたって通貨変換を実装することで、私たちのプログラミングに新鮮な洞察を得ることができた。 重要な存在が欠けているのだ。両替を助けてくれる現実世界の機関の名前は何だろう?銀行だ。あるいは両替所だ。多くの場合、ドメインには複数の類似したエンティティがあり、我々のモデルの観点からは区別がつかない。どの違いが重要で、どの違いが重要でないかを学習することは、効果的なドメインモデリングに不可欠である。

この名前付けをBank とする。Bank の責務は何だろう? 一つは為替レートを保持すること。そして、為替レートに基づいて通貨間の両替ができなければならない。Bank は非対称の為替レートを許容すべきである。現実の世界には非対称の為替レートが存在するからだ。最後に、Bank 、為替レートがないために、ある通貨のお金を別の通貨に両替できない場合は、明確に通知すべきである。(通貨変換の基本規則をリストした第8章の「お金を混ぜる」を参照のこと)。

為替レートを保持するエンティティになることで、Bank 、コードも消臭される。嫌な臭いとは、為替レートを格納するためのキーの作成-例えば、USD->EUR-がPortfolio のあちこちに散らばっていることだ。この臭いは、抽象化が漏れていることを示す信頼できる指標である。為替レートの表現-キーと値-をBank の内部に置くことで、Portfolio が評価を行う方法を単純化することができる。

チップ

ある実体から別の実体へと、本来あるべきでないところにレスポンスが漏れてしまうことを「漏出抽象化」と呼ぶ。 ジョエル・スポルスキーの言葉を借りよう:「すべての非自明な抽象化は、ある程度漏れやすい」。しかし、空いた穴は再設計によってふさぐべきである。

依存性の注入

この新しいエンティティの必要性を確認した上で、次の問題は、 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

はじめての知識グラフ構築ガイド

はじめての知識グラフ構築ガイド

Jesus Barrasa, Jim Webber
初めてのGraphQL ―Webサービスを作って学ぶ新世代API

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

Eve Porcello, Alex Banks, 尾崎 沙耶, あんどうやすし
ユーザーストーリーマッピング

ユーザーストーリーマッピング

Jeff Patton, 川口 恭伸, 長尾 高弘

Publisher Resources

ISBN: 9798341650992