お詫びと訂正(正誤表)
              本書の以下の部分に誤りがありました。ここに訂正するとともに、ご迷惑をおかけしたことを深くお詫び申し上げます。
(2024年3月25日最終更新)
P.13
P.18
P.22
	| 誤 | 
		“Reuse-Release Equivalent Principle(REP)” | 
	
	| 正 | 
		“Reuse-Release Equivalence Principle(REP)” | 
	
P.25
P.28
	| 誤 | 
		閉鎖性共通の原則(CCP)加えて | 
	
	| 正 | 
		閉鎖性共通の原則(CCP)に加えて | 
	
P.44
P.53
P.58
P.66
P.70
P.73
	| 誤 | 
		図4-7 articlePreseneter:ArticlePreseneter | 
	
	| 正 | 
		articlePresenter:ArticlePresenter | 
	
P.74 図4-9
P.74 図4-9
	| 誤 | 
		visualised | 
	
	| 正 | 
		visualized | 
	
P.80 図5-1
P.80 図5-1
	| 誤 | 
		subscrbe() | 
	
	| 正 | 
		subscribe() | 
	
※UML図の矢印の頭を取る
P.81
	| 誤 | 
		Subscrbe() | 
	
	| 正 | 
		subscribe() | 
	
※UML図の矢印の頭を取る
P.83 図5-4
	| 誤 | 
		DatebasedriverInterface | 
	
	| 正 | 
		DatebaseDriverInterface | 
	
P.84
	| 誤 | 
		“Open Close Principle(OCP)” | 
	
	| 正 | 
		“Open Closed Principle(OCP)” | 
	
P.93
P.93 リスト5-12
P.93 リスト5-13
P.94 リスト5-14
P.94 リスト5-14
P.97
	| 誤 | 
		“Intereface Seperation Principle()” | 
	
	| 正 | 
		“Intereface Segregation Principle()” | 
	
P.98 リスト5-17
P.98 リスト5-17
P.98 リスト5-17
P.98 リスト5-17
P.98 リスト5-18
P.98 リスト5-18
P.99 リスト5-19
P.99 リスト5-19
P.99 リスト5-19
P.99 リスト5-19
P.119
P.125
	| 誤 | 
		TeatCaseクラス | 
	
	| 正 | 
		TestCaseクラス | 
	
P.134
	| 誤 | 
		willretuen() | 
	
	| 正 | 
		willreturn() | 
	
P.142
	| 誤 | 
		テストと実装はこうなります | 
	
	| 正 | 
		テストとコードを書く手順は割愛しますが、この進め方でいくと実装はこうなります | 
	
P.155 リスト6-38
P.155 リスト6-39
P.160
P.171
P.172
P.176
P.106
P.199
	| 誤 | 
		リスト8-3 getIterationの省略 | 
	
	| 正 | 
		リスト8-3 getIterator()の省略 | 
	
P.200
P.202 リスト8-7
P.203
	| 誤 | 
		RequestHandlerInterafce | 
	
	| 正 | 
		RequestHandlerInterface< | 
	
P.203 リスト8-9
P.204 リスト8-9
P.204 リスト8-9
P.207
	| 誤 | 
		PrizeItemInterafceとしましょう | 
	
	| 正 | 
		PrizeItemInterfaceとしましょう | 
	
P.207 リスト8-10
P.207 リスト8-11
P.208 リスト8-11
P.209 リスト8-12
P.210 リスト8-13
P.212
	| 誤 | 
		PrizeItemInterafce | 
	
	| 正 | 
		PrizeItemInterface | 
	
P.220
	| 誤 | 
		createAnimal()メソッド | 
	
	| 正 | 
		createPet()メソッド | 
	
P.231 リスト8-32
P.232 リスト8-32
P.232 リスト8-33
P.233 リスト8-33
P.233 リスト8-33
P.234 リスト8-34
P.234 リスト8-34
P.234 リスト8-34
P.235 リスト8-36
P.237 リスト8-37
P.237
	| 誤 | 
		MailerInterafce | 
	
	| 正 | 
		MailerInterface | 
	
P.237 リスト8-38
P.241 リスト8-41
P.242
P.247 図8-18
P.247 図8-18
P.247 図8-18
P.249 リスト8-46
P.262 リスト8-55
P.263 リスト8-55
P.273
P.297
P.307
	| 誤 | 
		Clear Craftmanship | 
	
	| 正 | 
		Clean Craftsmanship | 
	
P.xxiv
	| 誤 | 
		パッケージ原則を支えるためのに | 
	
	| 正 | 
		パッケージ原則を支えるために | 
	
「の」が不要です。
P.9
	| 誤 | 
		依存の実動作に違いが起きていることもあるれば | 
	
	| 正 | 
		依存の実動作に違いが起きていることもあれば | 
	
「る」が不要です。
P.49 ▼リスト3-7 多態性を活用したロギングのオンオフ コメント文
「o」が不要です。
P.138
	| 誤 | 
		▼リスト6-13 src/core/NumberConverter.php | 
	
	| 正 | 
		▼リスト6-13 src/Core/NumberConverter.php | 
	
	| 誤 | 
		▼リスト6-14 tests/core/NumberConverterTest.php | 
	
	| 正 | 
		▼リスト6-14 tests/Core/NumberConverterTest.php | 
	
P.147
	| 誤 | 
		▼リスト6-27 src/core/ReplaceRuleInterface.php(初案) | 
	
	| 正 | 
		▼リスト6-27 src/Core/ReplaceRuleInterface.php(初案) | 
	
P.161
	| 誤 | 
		▼リスト6-44 src/core/ReplaceRuleInterface.php(第2案) | 
	
	| 正 | 
		▼リスト6-44 src/Core/ReplaceRuleInterface.php(第2案) | 
	
P.190
	| 誤 | 
		▼リスト7-19 config/services/yaml(最適化版) | 
	
	| 正 | 
		▼リスト7-19 config/services.yaml(最適化版) | 
	
P.234 ▼リスト8-36 Mediatorのコードのミスページ
	| 誤 | 
		public function notifyActivity()
  | 
	
	| 正 | 
		public function notifyActivityDone()
  | 
	
P.253 ▼リスト8-50 Strategy パターンによる実現方法
	| 誤 | 
		interface CalcurationStrategyInterface
{
	public function validate(array $vars): bool;
	public function calcurate(array $vars): float;
}
class Expression implements ExpressionInterface
{
	protected ?array $vars = null;
	protected ?CalcurationStrategyInterface $calcurationStrategy = null;
	public function setCalcurationStrategy(
		CalcurationStrategyInterface $strategy
	): void {
		$this->calcurationStrategy = $strategy;
	}
	public function setVariables(array $vars): void {
		if ($this->calcurationStrategy->validate($vars)) {
			throw new InvalidArgumentException();
		}
		$this->vars = $vars;
}
	public function evaluate(): float
	{
		if ($this->vars === null || $this->calcalcurationStrategy === null) {
			throw new LogicException();
		}
		return $this->calcurationStrategy->calcurate($this->vars);
	}
}
class PlusCalcurationStrategy implements CalcurationStrategyInterface
{
	public function validate(array $vars): bool
	{
		return count($vars) === 2;
	}
	public function calcurate(array $vars): float
	{
		return $vars[0] + $vars[1];
	}
}
//他にminusCulculationStrategyもある
$expression = new Expression();
$expression->setCalcurationStrategy(new PlusCalcurationStrategy());
// ExpressionInterfaceとして使う
$expression->setVariables([1.1, 2.2]);
echo $expression->evaluate(); // 3.3
  | 
	
	| 正 | 
		interface CalculationStrategyInterface
{
	public function validate(array $vars): bool;
	public function calculate(array $vars): float;
}
class Expression implements ExpressionInterface
{
	protected ?array $vars = null;
	protected ?CalculationStrategyInterface $CalculationStrategy = null;
	public function setCalculationStrategy(
		CalculationStrategyInterface $strategy
	): void {
		$this->CalculationStrategy = $strategy;
	}
	public function setVariables(array $vars): void {
		if ($this->CalculationStrategy->validate($vars)) {
			throw new InvalidArgumentException();
		}
		$this->vars = $vars;
}
	public function evaluate(): float
	{
		if ($this->vars === null || $this->calCalculationStrategy === null) {
			throw new LogicException();
		}
		return $this->CalculationStrategy->calculate($this->vars);
	}
}
class PlusCalculationStrategy implements CalculationStrategyInterface
{
	public function validate(array $vars): bool
	{
		return count($vars) === 2;
	}
	public function calculate(array $vars): float
	{
		return $vars[0] + $vars[1];
	}
}
//他にminusCulculationStrategyもある
$expression = new Expression();
$expression->setCalculationStrategy(new PlusCalculationStrategy());
// ExpressionInterfaceとして使う
$expression->setVariables([1.1, 2.2]);
echo $expression->evaluate(); // 3.3
  | 
	
P.254 ▼図8-20 Strategyパターンによる式 図の中にある文字の修正
	| 誤 | 
		CalcurationStrategyInterface | 
	
	| 正 | 
		CalculationStrategyInterface | 
	
	| 誤 | 
		PlusCalcurationStrategy | 
	
	| 正 | 
		PlusCalculationStrategy | 
	
	| 誤 | 
		MinusCalcurationStrategy | 
	
	| 正 | 
		MinusCalculationStrategy | 
	
P.255 9行目
	| 誤 | 
		calcurate() | 
	
	| 正 | 
		calculate() | 
	
P.284
	| 誤 | 
		モデル駆動設計(MDD:Make Driven Design) | 
	
	| 正 | 
		モデル駆動設計(MDD:Model Driven Design) |