ちょうぜつソフトウェア設計入門

サポートページ

お詫びと訂正(正誤表)

本書の以下の部分に誤りがありました。ここに訂正するとともに、ご迷惑をおかけしたことを深くお詫び申し上げます。

(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

誤 図4-1 WheelS
正 Wheels

P.70

誤 していると
正 していること

P.73

誤 図4-7 articlePreseneter:ArticlePreseneter
正 articlePresenter:ArticlePresenter

P.74 図4-9

誤 fe^tch
正 fetch

P.74 図4-9

誤 visualised
正 visualized

P.80 図5-1

誤 writer
正 Writer

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

誤 remains件
正 done件

P.93 リスト5-12

誤
remains
正
done

P.93 リスト5-13

誤
remains
正
done

P.94 リスト5-14

誤
remains
正
done

P.94 リスト5-14

誤
super
正
parent

P.97

誤 “Intereface Seperation Principle()”
正 “Intereface Segregation Principle()”

P.98 リスト5-17

誤
Intereace
正
Interface

P.98 リスト5-17

誤
DatabaseDiriverInterace
正
DatabaseDriverInterface

P.98 リスト5-17

誤
DataOutputInteface
正
DataInputInterface

P.98 リスト5-17

誤
DataInputInteface
正
DataInputInterface

P.98 リスト5-18

誤
vendorDatabaseDiriver
正
DatabaseDriverInterface

P.98 リスト5-18

誤
DatabaseDiriverInterface
正
DatabaseDriverInterface

P.99 リスト5-19

誤
DatabaseDiriverInterface
正
DatabaseDriverInterface

P.99 リスト5-19

誤
DatabaseInputInterace
正
DatabaseInputInterface

P.99 リスト5-19

誤
DatabaseDiriverInterace
正
DatabaseDriverInterface

P.99 リスト5-19

誤
DatabaseOutputInterace
正
DatabaseOutputInterface

P.119

誤 単位のテスト
正 単体のテスト

P.125

誤 TeatCaseクラス
正 TestCaseクラス

P.134

誤 willretuen()
正 willreturn()

P.142

誤 テストと実装はこうなります
正 テストとコードを書く手順は割愛しますが、この進め方でいくと実装はこうなります

P.155 リスト6-38

誤
PassTroghRuleTest
正
PassThroghRuleTest

P.155 リスト6-39

誤
PassTroghRule
正
PassThroghRule

P.160

誤 実装コード見るまで
正 実装コードを見るまで

P.171

誤 役立つ
正 役に立つ

P.172

誤 ピンと来きませんね。
正 ピンと来ませんね。

P.176

誤 保証しいる
正 保証している

P.106

誤 なせならそれは
正 なぜならそれは

P.199

誤 リスト8-3 getIterationの省略
正 リスト8-3 getIterator()の省略

P.200

誤 $itrerator
正 $iterator

P.202 リスト8-7

誤
RequestHandlerInterafce
正
RequestHandlerInterface

P.203

誤 RequestHandlerInterafce
正 RequestHandlerInterface<

P.203 リスト8-9

誤
$userAccessCheker
正
$userAccessChecker

P.204 リスト8-9

誤
userAccessCheker
正
$userAccessChecker

P.204 リスト8-9

誤
$resourceCheker
正
$resourceChecker

P.207

誤 PrizeItemInterafceとしましょう
正 PrizeItemInterfaceとしましょう

P.207 リスト8-10

誤
PrizeItemInterafce
正
PrizeItemInterface

P.207 リスト8-11

誤
PrizeItemInterafce
正
PrizeItemInterface

P.208 リスト8-11

誤
PrizeItemInterafce
正
PrizeItemInterface

P.209 リスト8-12

誤
PrizeItemInterafce
正
PrizeItemInterface

P.210 リスト8-13

誤
PrizeItemInterafce
正
PrizeItemInterface

P.212

誤 PrizeItemInterafce
正 PrizeItemInterface

P.220

誤 createAnimal()メソッド
正 createPet()メソッド

P.231 リスト8-32

誤
finishTheWrok()
正
finishTheWork()

P.232 リスト8-32

誤
finishTheWrok()
正
finishTheWork()

P.232 リスト8-33

誤
finishTheWrok()
正
finishTheWork()

P.233 リスト8-33

誤
InterafceA
正
InterfaceA

P.233 リスト8-33

誤
finishTheWrok()
正
finishTheWork()

P.234 リスト8-34

誤
InterafceA
正
InterfaceA

P.234 リスト8-34

誤
InterafceB
正
InterfaceB

P.234 リスト8-34

誤
finishTheWrok()
正
finishTheWork()

P.235 リスト8-36

誤
finishTheWrok()
正
finishTheWork()

P.237 リスト8-37

誤
MailerInterafce
正
MailerInterface

P.237

誤 MailerInterafce
正 MailerInterface

P.237 リスト8-38

誤
MailerInterafce
正
MailerInterface

P.241 リスト8-41

誤
$bottoRight
正
$bottomRight

P.242

誤 よくありあす
正 よくあります

P.247 図8-18

誤 node1
正 leaf1

P.247 図8-18

誤 node2
正 leaf2

P.247 図8-18

誤 node3
正 leaf3

P.249 リスト8-46

誤
RunableInterafce
正
RunableInterface

P.262 リスト8-55

誤
CommandInterafce
正
CommandInterface

P.263 リスト8-55

誤
CommandInterafce
正
CommandInterface

P.273

誤 方法考える
正 方法を考える

P.297

誤 意味でしなかい
正 意味でしかない

P.307

誤 Clear Craftmanship
正 Clean Craftsmanship

(以下2023年1月5日更新)

P.xxiv

誤 パッケージ原則を支えるためのに
正 パッケージ原則を支えるために

「の」が不要です。

P.9

誤 依存の実動作に違いが起きていることもあるれば
正 依存の実動作に違いが起きていることもあれば

「る」が不要です。

P.49 ▼リスト3-7 多態性を活用したロギングのオンオフ コメント文

誤
Do nothiong
正
Do nothing

「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)