@k2works/claude-code-booster 4.4.1 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/claude-code-booster +2 -2
- package/lib/assets/.claude/agents/xp-architect.md +250 -250
- package/lib/assets/.claude/agents/xp-executive.md +207 -207
- package/lib/assets/.claude/agents/xp-interaction-designer.md +239 -239
- package/lib/assets/.claude/agents/xp-product-manager.md +245 -245
- package/lib/assets/.claude/agents/xp-programmer.md +268 -268
- package/lib/assets/.claude/agents/xp-project-manager.md +229 -229
- package/lib/assets/.claude/agents/xp-technical-writer.md +224 -224
- package/lib/assets/.claude/agents/xp-tester.md +265 -265
- package/lib/assets/.claude/agents/xp-user-representative.md +204 -204
- package/lib/assets/.claude/skills/analyzing-business-case/SKILL.md +148 -148
- package/lib/assets/.claude/skills/analyzing-business-strategy/SKILL.md +277 -277
- package/lib/assets/.claude/skills/analyzing-review/SKILL.md +174 -174
- package/lib/assets/.claude/skills/creating-iteration-report/SKILL.md +210 -210
- package/lib/assets/.claude/skills/creating-release-report/SKILL.md +161 -161
- package/lib/assets/.claude/skills/developing-review/SKILL.md +175 -175
- package/lib/assets/.claude/skills/developing-uiux-review/SKILL.md +207 -207
- package/lib/assets/.claude/skills/generating-bmc/SKILL.md +123 -123
- package/lib/assets/.claude/skills/operating-qt/SKILL.md +147 -147
- package/lib/assets/.claude/skills/operating-review/SKILL.md +171 -171
- package/lib/assets/.claude/skills/operating-script/SKILL.md +145 -145
- package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +168 -168
- package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +266 -266
- package/lib/assets/.claude/skills/validating-iteration-plan/SKILL.md +54 -54
- package/lib/assets/.devcontainer/devcontainer.json +1 -1
- package/lib/assets/.gitattributes +0 -2
- package/lib/assets/CLAUDE.md +193 -193
- package/lib/assets/Dockerfile +1 -6
- package/lib/assets/README.md +0 -16
- package/lib/assets/docs/article/functional-desgin-ppp/clojure/01-immutability-and-data-transformation.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/clojure/15-gossiping-bus-drivers.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/clojure/20-pattern-interactions.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/clojure/21-best-practices.md +6 -6
- package/lib/assets/docs/article/functional-desgin-ppp/clojure/22-oo-to-fp-migration.md +3 -3
- package/lib/assets/docs/article/functional-desgin-ppp/clojure/index.md +22 -22
- package/lib/assets/docs/article/functional-desgin-ppp/elixir/01-immutability-and-data-transformation.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/elixir/index.md +22 -22
- package/lib/assets/docs/article/functional-desgin-ppp/fsharp/01-immutability-and-data-transformation.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/fsharp/15-gossiping-bus-drivers.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/fsharp/17-video-rental-system.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/fsharp/19-wator-simulation.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/fsharp/21-best-practices.md +2 -2
- package/lib/assets/docs/article/functional-desgin-ppp/fsharp/22-oo-to-fp-migration.md +5 -5
- package/lib/assets/docs/article/functional-desgin-ppp/fsharp/index.md +22 -22
- package/lib/assets/docs/article/functional-desgin-ppp/haskell/15-gossiping-bus-drivers.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/haskell/20-pattern-interactions.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/rust/01-immutability-and-data-transformation.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/rust/index.md +22 -22
- package/lib/assets/docs/article/functional-desgin-ppp/scala/01-immutability-and-data-transformation.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/scala/15-gossiping-bus-drivers.md +1 -1
- package/lib/assets/docs/article/functional-desgin-ppp/scala/21-best-practices.md +3 -3
- package/lib/assets/docs/article/functional-desgin-ppp/scala/22-oo-to-fp-migration.md +3 -3
- package/lib/assets/docs/article/functional-desgin-ppp/scala/index.md +22 -22
- package/lib/assets/docs/article/getting-start-tdd/integration/04-type-system-comparison.md +2 -2
- package/lib/assets/docs/article/getting-start-tdd/integration/06-learning-roadmap.md +8 -8
- package/lib/assets/docs/article/getting-start-tdd/ruby/11-immutable-data-and-pipeline.md +2 -2
- package/lib/assets/docs/article/grokkingfp/all/part-2-ch03-immutable-data.md +3 -3
- package/lib/assets/docs/article/grokkingfp/all/part-3-ch06-option.md +4 -4
- package/lib/assets/docs/article/grokkingfp/all/writing-plan.md +8 -8
- package/lib/assets/docs/article/grokkingfp/elixir/part-1.md +1 -1
- package/lib/assets/docs/article/grokkingfp/elixir/part-5.md +1 -1
- package/lib/assets/docs/article/grokkingfp/elixir/part-6.md +1 -1
- package/lib/assets/docs/article/grokkingfp/fsharp/part-6.md +1 -1
- package/lib/assets/docs/article/grokkingfp/haskell/part-4.md +1 -1
- package/lib/assets/docs/article/grokkingfp/haskell/part-6.md +1 -1
- package/lib/assets/docs/article/grokkingfp/java/part-1.md +1 -1
- package/lib/assets/docs/article/grokkingfp/java/part-2.md +4 -4
- package/lib/assets/docs/article/grokkingfp/java/part-6.md +2 -2
- package/lib/assets/docs/article/grokkingfp/python/part-1.md +3 -3
- package/lib/assets/docs/article/grokkingfp/ruby/part-1.md +1 -1
- package/lib/assets/docs/article/grokkingfp/ruby/part-6.md +1 -1
- package/lib/assets/docs/article/grokkingfp/rust/part-4.md +1 -1
- package/lib/assets/docs/article/grokkingfp/scala/part-1.md +1 -1
- package/lib/assets/docs/article/grokkingfp/scala/part-3.md +1 -1
- package/lib/assets/docs/article/grokkingfp/scala/part-6.md +1 -1
- package/lib/assets/docs/article/grokkingfp/typescript/part-1.md +1 -1
- package/lib/assets/docs/article/grokkingfp/typescript/part-4.md +1 -1
- package/lib/assets/docs/article/grokkingfp/typescript/part-6.md +1 -1
- package/lib/assets/docs/article/index.md +39 -39
- package/lib/assets/docs/design/index.md +44 -44
- package/lib/assets/docs/index.md +33 -33
- package/lib/assets/docs/operation/index.md +16 -16
- package/lib/assets/docs/reference/CodexCLIMCP/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/343/203/225/343/203/255/343/203/274.md +546 -546
- package/lib/assets/docs/reference/SonarQube/343/203/255/343/203/274/343/202/253/343/203/253/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +1 -1
- package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +1 -1
- package/lib/assets/docs/reference/Vim/346/223/215/344/275/234/343/203/236/343/203/213/343/203/245/343/202/242/343/203/253.md +13 -0
- package/lib/assets/docs/reference/images/BMC.drawio.svg +3 -3
- package/lib/assets/docs/reference//347/265/214/345/226/266/346/210/246/347/225/245/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +566 -566
- package/lib/assets/docs/requirements/index.md +17 -17
- package/lib/assets/docs/strategy/index.md +17 -17
- package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273.md +327 -327
- package/lib/assets/docs/template//343/203/252/343/203/252/343/203/274/343/202/271/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +275 -275
- package/lib/assets/docs/template//344/272/213/344/276/213/345/210/206/346/236/220.md +513 -513
- package/lib/assets/ops/docker/sonarqube-local/docker-compose.yml +57 -57
- package/lib/assets/ops/nix/shells/.tmux.conf +2 -2
- package/lib/assets/ops/nix/shells/.vimrc +15 -2
- package/lib/assets/ops/nix/shells/shell.nix +1 -0
- package/package.json +1 -1
- package/lib/assets/.envrc +0 -1
|
@@ -72,7 +72,7 @@ funcs --> effects : 境界で実行
|
|
|
72
72
|
|
|
73
73
|
**ポイント**:
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
- プレーンなマップを使用(クラスではなく)
|
|
77
77
|
- 必要最小限のフィールド
|
|
78
78
|
- 明確な命名
|
|
@@ -93,7 +93,7 @@ funcs --> effects : 境界で実行
|
|
|
93
93
|
|
|
94
94
|
**原則**:
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
|
|
97
97
|
- 1つの関数は1つのことを行う
|
|
98
98
|
- 入力から出力への純粋な変換
|
|
99
99
|
- 副作用なし
|
|
@@ -121,7 +121,7 @@ funcs --> effects : 境界で実行
|
|
|
121
121
|
|
|
122
122
|
**スレッドマクロ `->` の活用**:
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
|
|
125
125
|
- データの流れが明確
|
|
126
126
|
- 各ステップが独立
|
|
127
127
|
- デバッグしやすい
|
|
@@ -147,7 +147,7 @@ funcs --> effects : 境界で実行
|
|
|
147
147
|
|
|
148
148
|
**検証関数のパターン**:
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
|
|
151
151
|
- 述語関数(`?` で終わる)を使用
|
|
152
152
|
- 合成可能な小さな検証
|
|
153
153
|
- 明確なエラー条件
|
|
@@ -173,7 +173,7 @@ funcs --> effects : 境界で実行
|
|
|
173
173
|
|
|
174
174
|
**イミュータビリティの利点**:
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
- 元のデータは変更されない
|
|
178
178
|
- 履歴の追跡が容易
|
|
179
179
|
- 並行処理が安全
|
|
@@ -196,7 +196,7 @@ funcs --> effects : 境界で実行
|
|
|
196
196
|
|
|
197
197
|
**純粋関数の条件**:
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
|
|
200
200
|
1. 同じ入力に対して常に同じ出力
|
|
201
201
|
2. 副作用がない
|
|
202
202
|
3. 外部状態に依存しない
|
|
@@ -81,7 +81,7 @@ inherit --> compose : 変換
|
|
|
81
81
|
|
|
82
82
|
**問題点**:
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
- 内部状態が可変
|
|
86
86
|
- テストが困難(状態に依存)
|
|
87
87
|
- 履歴の追跡が難しい
|
|
@@ -123,7 +123,7 @@ inherit --> compose : 変換
|
|
|
123
123
|
|
|
124
124
|
**利点**:
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
|
|
127
127
|
- 元のデータは不変
|
|
128
128
|
- テストが容易(入力 → 出力)
|
|
129
129
|
- 完全な履歴を保持
|
|
@@ -253,7 +253,7 @@ rectangle "フェーズ3" {
|
|
|
253
253
|
|
|
254
254
|
**利点**:
|
|
255
255
|
|
|
256
|
-
|
|
256
|
+
|
|
257
257
|
- 完全な監査証跡
|
|
258
258
|
- 任意の時点の状態を再構築可能
|
|
259
259
|
- デバッグが容易
|
|
@@ -10,21 +10,21 @@
|
|
|
10
10
|
|
|
11
11
|
1. [不変性とデータ変換](./01-immutability-and-data-transformation.md)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
- 不変データ構造の重要性
|
|
15
15
|
- データ変換パイプライン
|
|
16
16
|
- 副作用の分離
|
|
17
17
|
|
|
18
18
|
2. [関数合成と高階関数](./02-function-composition.md)
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
- 関数合成の基本
|
|
22
22
|
- 部分適用とカリー化
|
|
23
23
|
- 高階関数の活用
|
|
24
24
|
|
|
25
25
|
3. [多態性の実現方法](./03-polymorphism.md)
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
- マルチメソッドによるディスパッチ
|
|
29
29
|
- プロトコルとレコード
|
|
30
30
|
- マルチメソッド vs プロトコルの使い分け
|
|
@@ -33,21 +33,21 @@
|
|
|
33
33
|
|
|
34
34
|
4. [Clojure Spec による仕様定義](./04-clojure-spec.md)
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
- データ構造の仕様定義
|
|
38
38
|
- 関数仕様の定義(fdef)
|
|
39
39
|
- 実行時検証と自動テスト生成
|
|
40
40
|
|
|
41
41
|
5. [プロパティベーステスト](./05-property-based-testing.md)
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
- test.check の基本
|
|
45
45
|
- ジェネレータの作成
|
|
46
46
|
- プロパティの定義と検証
|
|
47
47
|
|
|
48
48
|
6. [テスト駆動開発と関数型プログラミング](./06-tdd-in-functional.md)
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
- Red-Green-Refactor サイクル
|
|
52
52
|
- テストファーストの関数設計
|
|
53
53
|
- リファクタリングと不変性
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
|
|
57
57
|
7. [Composite パターン](./07-composite-pattern.md)
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
- 個別オブジェクトと複合オブジェクトの統一的な扱い
|
|
61
61
|
- Shape(図形)の移動・拡大を統一インターフェースで操作
|
|
62
62
|
- Switchable(スイッチ)のグループ化と一括操作
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
|
|
65
65
|
8. [Decorator パターン](./08-decorator-pattern.md)
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
|
|
68
68
|
- 機能の動的な追加
|
|
69
69
|
- JournaledShape: 操作履歴の記録(ジャーナリング)
|
|
70
70
|
- 関数デコレータ: ログ、リトライ、キャッシュ
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
|
|
73
73
|
9. [Adapter パターン](./09-adapter-pattern.md)
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
- インターフェースの変換
|
|
77
77
|
- VariableLightAdapter: 可変強度ライトをオン/オフに適応
|
|
78
78
|
- データフォーマットアダプター: 新旧フォーマット変換
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
|
|
83
83
|
10. [Strategy パターン](./10-strategy-pattern.md)
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
|
|
86
86
|
- アルゴリズムをカプセル化し交換可能にする
|
|
87
87
|
- 料金計算: 通常・割引・会員・数量割引の各戦略
|
|
88
88
|
- 関数型アプローチ: 高階関数による戦略の合成
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
|
|
91
91
|
11. [Command パターン](./11-command-pattern.md)
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
- 操作をデータとしてカプセル化
|
|
95
95
|
- テキストコマンド: 挿入・削除・置換
|
|
96
96
|
- キャンバスコマンド: 図形の追加・削除・移動
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
|
|
99
99
|
12. [Visitor パターン](./12-visitor-pattern.md)
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
|
|
102
102
|
- データ構造と操作の分離
|
|
103
103
|
- JSON/XML 変換 Visitor の実装
|
|
104
104
|
- 面積・周囲長計算 Visitor
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
|
|
109
109
|
13. [Abstract Factory パターン](./13-abstract-factory-pattern.md)
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
|
|
112
112
|
- 関連するオブジェクトのファミリーを一貫して生成
|
|
113
113
|
- ShapeFactory: Standard/Outlined/Filled の各実装
|
|
114
114
|
- UIFactory: プラットフォーム別 UI コンポーネント生成
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
|
|
117
117
|
14. [Abstract Server パターン](./14-abstract-server-pattern.md)
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
|
|
120
120
|
- 依存関係逆転の原則(DIP)の実現
|
|
121
121
|
- Switchable: Light/Fan/Motor の統一インターフェース
|
|
122
122
|
- Repository: データアクセスの抽象化
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
|
|
127
127
|
15. [ゴシップ好きなバスの運転手](./15-gossiping-bus-drivers.md)
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
|
|
130
130
|
- バス運転手が停留所で噂を共有するシミュレーション
|
|
131
131
|
- 無限シーケンス(cycle)による循環ルート表現
|
|
132
132
|
- 集合演算による噂の伝播
|
|
@@ -134,28 +134,28 @@
|
|
|
134
134
|
|
|
135
135
|
16. [給与計算システム](./16-payroll-system.md)
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
|
|
138
138
|
- ドメインモデリング
|
|
139
139
|
- 支払いスケジュールと給与タイプ
|
|
140
140
|
- Clojure Spec によるデータ検証
|
|
141
141
|
|
|
142
142
|
17. [レンタルビデオシステム](./17-video-rental-system.md)
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
|
|
145
145
|
- 料金計算ロジックの設計
|
|
146
146
|
- ポリシーパターンの適用
|
|
147
147
|
- テキスト/HTML フォーマッターの実装
|
|
148
148
|
|
|
149
149
|
18. [並行処理システム](./18-concurrency-system.md)
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
|
|
152
152
|
- Clojure エージェントによる非同期処理
|
|
153
153
|
- 状態機械パターン
|
|
154
154
|
- イベント駆動アーキテクチャ
|
|
155
155
|
|
|
156
156
|
19. [Wa-Tor シミュレーション](./19-wator-simulation.md)
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
- 捕食者-被食者モデルの実装
|
|
160
160
|
- セルオートマトンとマルチメソッド
|
|
161
161
|
- GUI との統合(Quil)
|
|
@@ -165,21 +165,21 @@
|
|
|
165
165
|
|
|
166
166
|
20. [パターン間の相互作用](./20-pattern-interactions.md)
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
|
|
169
169
|
- Composite と Decorator の組み合わせ
|
|
170
170
|
- Command と Observer の連携
|
|
171
171
|
- 複合的なアーキテクチャ設計
|
|
172
172
|
|
|
173
173
|
21. [関数型デザインのベストプラクティス](./21-best-practices.md)
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
|
|
176
176
|
- データ中心設計
|
|
177
177
|
- 純粋関数と副作用の分離
|
|
178
178
|
- テスト可能な設計
|
|
179
179
|
|
|
180
180
|
22. [オブジェクト指向から関数型への移行](./22-oo-to-fp-migration.md)
|
|
181
181
|
|
|
182
|
-
|
|
182
|
+
|
|
183
183
|
- 既存コードのリファクタリング戦略
|
|
184
184
|
- 段階的な移行アプローチ
|
|
185
185
|
- 共存と統合
|
|
@@ -10,21 +10,21 @@
|
|
|
10
10
|
|
|
11
11
|
1. [不変性とデータ変換](./01-immutability-and-data-transformation.md)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
- マップと構造体による不変データ
|
|
15
15
|
- パイプ演算子によるデータ変換
|
|
16
16
|
- Enum と Stream による遅延評価
|
|
17
17
|
|
|
18
18
|
2. [関数合成と高階関数](./02-function-composition.md)
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
- 無名関数とキャプチャ演算子
|
|
22
22
|
- 関数合成のパターン
|
|
23
23
|
- 高階関数の活用
|
|
24
24
|
|
|
25
25
|
3. [多態性の実現方法](./03-polymorphism.md)
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
- プロトコルによる多態性
|
|
29
29
|
- ビヘイビアとコールバック
|
|
30
30
|
- パターンマッチングによる型の切り替え
|
|
@@ -33,21 +33,21 @@
|
|
|
33
33
|
|
|
34
34
|
4. [データ検証](./04-data-validation.md)
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
- Ecto.Changeset によるバリデーション
|
|
38
38
|
- カスタムバリデータの作成
|
|
39
39
|
- with 式によるエラーハンドリング
|
|
40
40
|
|
|
41
41
|
5. [プロパティベーステスト](./05-property-based-testing.md)
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
- StreamData の基本
|
|
45
45
|
- ジェネレータの作成
|
|
46
46
|
- プロパティの定義と検証
|
|
47
47
|
|
|
48
48
|
6. [TDD と関数型プログラミング](./06-tdd-functional.md)
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
- ExUnit によるテスト
|
|
52
52
|
- Red-Green-Refactor サイクル
|
|
53
53
|
- ドキュメントテスト(doctest)
|
|
@@ -56,21 +56,21 @@
|
|
|
56
56
|
|
|
57
57
|
7. [Composite パターン](./07-composite-pattern.md)
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
- 再帰的なデータ構造
|
|
61
61
|
- ネストした構造の操作
|
|
62
62
|
- アキュムレータを使った走査
|
|
63
63
|
|
|
64
64
|
8. [Decorator パターン](./08-decorator-pattern.md)
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
- 関数合成によるデコレーション
|
|
68
68
|
- 高階関数でのラッピング
|
|
69
69
|
- マクロによる振る舞いの追加
|
|
70
70
|
|
|
71
71
|
9. [Adapter パターン](./09-adapter-pattern.md)
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
- 関数アダプター
|
|
75
75
|
- プロトコル変換
|
|
76
76
|
- レガシーコードとの統合
|
|
@@ -79,21 +79,21 @@
|
|
|
79
79
|
|
|
80
80
|
10. [Strategy パターン](./10-strategy-pattern.md)
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
- 第一級関数としての戦略
|
|
84
84
|
- モジュールによる戦略実装
|
|
85
85
|
- 動的な戦略切り替え
|
|
86
86
|
|
|
87
87
|
11. [Command パターン](./11-command-pattern.md)
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
- 不変コマンドデータ
|
|
91
91
|
- コマンドの履歴と Undo
|
|
92
92
|
- GenServer によるコマンド管理
|
|
93
93
|
|
|
94
94
|
12. [Visitor パターン](./12-visitor-pattern.md)
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
|
|
97
97
|
- パターンマッチによる訪問
|
|
98
98
|
- プロトコルベースのビジター
|
|
99
99
|
- Enum.reduce による走査
|
|
@@ -102,14 +102,14 @@
|
|
|
102
102
|
|
|
103
103
|
13. [Abstract Factory パターン](./13-abstract-factory-pattern.md)
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
|
|
106
106
|
- 関数ファクトリー
|
|
107
107
|
- モジュールベースの生成
|
|
108
108
|
- 設定による依存性注入
|
|
109
109
|
|
|
110
110
|
14. [Abstract Server パターン](./14-abstract-server-pattern.md)
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
- ビヘイビアによる抽象化
|
|
114
114
|
- 実装の差し替え
|
|
115
115
|
- テスタブルな設計
|
|
@@ -118,35 +118,35 @@
|
|
|
118
118
|
|
|
119
119
|
15. [ゴシップ好きなバスの運転手](./15-gossiping-bus-drivers.md)
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
|
|
122
122
|
- Agent による状態管理
|
|
123
123
|
- シミュレーションの実装
|
|
124
124
|
- 再帰的な処理
|
|
125
125
|
|
|
126
126
|
16. [給与計算システム](./16-payroll-system.md)
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
|
|
129
129
|
- ドメインモデリング
|
|
130
130
|
- 多態的な計算
|
|
131
131
|
- レポート生成
|
|
132
132
|
|
|
133
133
|
17. [レンタルビデオシステム](./17-video-rental-system.md)
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
|
|
136
136
|
- 状態遷移の管理
|
|
137
137
|
- イベントソーシング
|
|
138
138
|
- ビジネスルールの実装
|
|
139
139
|
|
|
140
140
|
18. [並行処理システム](./18-concurrency-system.md)
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
|
|
143
143
|
- GenServer による状態管理
|
|
144
144
|
- Task による並行実行
|
|
145
145
|
- OTP パターン
|
|
146
146
|
|
|
147
147
|
19. [Wa-Tor シミュレーション](./19-wator-simulation.md)
|
|
148
148
|
|
|
149
|
-
|
|
149
|
+
|
|
150
150
|
- セルオートマトン
|
|
151
151
|
- 不変グリッドの更新
|
|
152
152
|
- プロセスベースのシミュレーション
|
|
@@ -155,14 +155,14 @@
|
|
|
155
155
|
|
|
156
156
|
20. [パターン間の相互作用](./20-pattern-interactions.md)
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
|
|
159
159
|
- Composite + Decorator
|
|
160
160
|
- Command + Observer
|
|
161
161
|
- パターンの組み合わせ
|
|
162
162
|
|
|
163
163
|
21. [ベストプラクティス](./21-best-practices.md)
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
|
|
166
166
|
- データ中心設計
|
|
167
167
|
- 純粋関数の分離
|
|
168
168
|
- OTP パターンの活用
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
|
|
171
171
|
22. [OO から FP への移行](./22-oo-to-fp-migration.md)
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
- 移行戦略(Strangler Fig、アダプター)
|
|
175
175
|
- イベントソーシング
|
|
176
176
|
- 段階的な関数抽出
|
|
@@ -77,7 +77,7 @@ type AccountOO(id: string, initialBalance: decimal) =
|
|
|
77
77
|
|
|
78
78
|
**問題点**:
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
|
|
81
81
|
- 内部状態が可変
|
|
82
82
|
- テストが困難(状態に依存)
|
|
83
83
|
- 履歴の追跡が難しい
|
|
@@ -133,7 +133,7 @@ module Account =
|
|
|
133
133
|
|
|
134
134
|
**改善点**:
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
|
|
137
137
|
- 状態が不変
|
|
138
138
|
- 元のデータは変更されない
|
|
139
139
|
- Result 型でエラーを表現
|
|
@@ -177,7 +177,7 @@ let getName (animal: Animal) : string =
|
|
|
177
177
|
|
|
178
178
|
**利点**:
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
|
|
181
181
|
- 新しい動物を追加すると、コンパイラがすべての `match` を更新するよう警告
|
|
182
182
|
- 関数を追加しても既存のコードに影響なし
|
|
183
183
|
- パターンマッチングによる網羅性チェック
|
|
@@ -219,7 +219,7 @@ let createInMemoryRepo<'T> (getId: 'T -> string) : Repository<'T> =
|
|
|
219
219
|
|
|
220
220
|
**利点**:
|
|
221
221
|
|
|
222
|
-
|
|
222
|
+
|
|
223
223
|
- テスト用のモックが簡単
|
|
224
224
|
- 部分的な実装が可能
|
|
225
225
|
- 関数を引数として渡せる
|
|
@@ -264,7 +264,7 @@ let replay (events: AccountEvent list) : Account =
|
|
|
264
264
|
|
|
265
265
|
**利点**:
|
|
266
266
|
|
|
267
|
-
|
|
267
|
+
|
|
268
268
|
- 完全な履歴を保持
|
|
269
269
|
- 任意の時点の状態を再構築可能
|
|
270
270
|
- 監査ログとして使用可能
|