@k2works/claude-code-booster 3.1.1 → 3.2.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.
Files changed (91) hide show
  1. package/lib/assets/.claude/skills/operating-docs/SKILL.md +19 -0
  2. package/lib/assets/CLAUDE.md +2 -0
  3. package/lib/assets/docs/article/functional-desgin-ppp/clojure/01-immutability-and-data-transformation.md +2 -0
  4. package/lib/assets/docs/article/functional-desgin-ppp/clojure/15-gossiping-bus-drivers.md +2 -0
  5. package/lib/assets/docs/article/functional-desgin-ppp/clojure/20-pattern-interactions.md +11 -6
  6. package/lib/assets/docs/article/functional-desgin-ppp/clojure/21-best-practices.md +12 -0
  7. package/lib/assets/docs/article/functional-desgin-ppp/clojure/22-oo-to-fp-migration.md +6 -0
  8. package/lib/assets/docs/article/functional-desgin-ppp/clojure/index.md +44 -0
  9. package/lib/assets/docs/article/functional-desgin-ppp/elixir/01-immutability-and-data-transformation.md +2 -0
  10. package/lib/assets/docs/article/functional-desgin-ppp/elixir/index.md +44 -0
  11. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/01-immutability-and-data-transformation.md +2 -0
  12. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/15-gossiping-bus-drivers.md +2 -0
  13. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/17-video-rental-system.md +2 -0
  14. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/19-wator-simulation.md +2 -0
  15. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/21-best-practices.md +4 -0
  16. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/22-oo-to-fp-migration.md +10 -0
  17. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/index.md +44 -0
  18. package/lib/assets/docs/article/functional-desgin-ppp/haskell/15-gossiping-bus-drivers.md +2 -0
  19. package/lib/assets/docs/article/functional-desgin-ppp/haskell/20-pattern-interactions.md +2 -0
  20. package/lib/assets/docs/article/functional-desgin-ppp/rust/01-immutability-and-data-transformation.md +2 -0
  21. package/lib/assets/docs/article/functional-desgin-ppp/rust/index.md +44 -0
  22. package/lib/assets/docs/article/functional-desgin-ppp/scala/01-immutability-and-data-transformation.md +2 -0
  23. package/lib/assets/docs/article/functional-desgin-ppp/scala/15-gossiping-bus-drivers.md +2 -0
  24. package/lib/assets/docs/article/functional-desgin-ppp/scala/21-best-practices.md +6 -0
  25. package/lib/assets/docs/article/functional-desgin-ppp/scala/22-oo-to-fp-migration.md +6 -0
  26. package/lib/assets/docs/article/functional-desgin-ppp/scala/index.md +44 -0
  27. package/lib/assets/docs/article/getting-start-tdd/integration/04-type-system-comparison.md +4 -0
  28. package/lib/assets/docs/article/getting-start-tdd/integration/06-learning-roadmap.md +16 -0
  29. package/lib/assets/docs/article/getting-start-tdd/ruby/11-immutable-data-and-pipeline.md +4 -0
  30. package/lib/assets/docs/article/grokkingfp/all/part-2-ch03-immutable-data.md +6 -0
  31. package/lib/assets/docs/article/grokkingfp/all/part-3-ch06-option.md +8 -0
  32. package/lib/assets/docs/article/grokkingfp/all/writing-plan.md +16 -0
  33. package/lib/assets/docs/article/grokkingfp/elixir/part-1.md +2 -0
  34. package/lib/assets/docs/article/grokkingfp/elixir/part-5.md +2 -0
  35. package/lib/assets/docs/article/grokkingfp/elixir/part-6.md +2 -0
  36. package/lib/assets/docs/article/grokkingfp/fsharp/part-6.md +2 -0
  37. package/lib/assets/docs/article/grokkingfp/haskell/part-4.md +2 -0
  38. package/lib/assets/docs/article/grokkingfp/haskell/part-6.md +2 -0
  39. package/lib/assets/docs/article/grokkingfp/java/part-1.md +2 -0
  40. package/lib/assets/docs/article/grokkingfp/java/part-2.md +8 -0
  41. package/lib/assets/docs/article/grokkingfp/java/part-6.md +4 -0
  42. package/lib/assets/docs/article/grokkingfp/python/part-1.md +6 -0
  43. package/lib/assets/docs/article/grokkingfp/ruby/part-1.md +2 -0
  44. package/lib/assets/docs/article/grokkingfp/ruby/part-6.md +2 -0
  45. package/lib/assets/docs/article/grokkingfp/rust/part-4.md +2 -0
  46. package/lib/assets/docs/article/grokkingfp/scala/part-1.md +2 -0
  47. package/lib/assets/docs/article/grokkingfp/scala/part-3.md +2 -0
  48. package/lib/assets/docs/article/grokkingfp/scala/part-6.md +2 -0
  49. package/lib/assets/docs/article/grokkingfp/typescript/part-1.md +2 -0
  50. package/lib/assets/docs/article/grokkingfp/typescript/part-4.md +2 -0
  51. package/lib/assets/docs/article/grokkingfp/typescript/part-6.md +2 -0
  52. package/lib/assets/docs/design/index.md +5 -0
  53. package/lib/assets/docs/index.md +3 -3
  54. package/lib/assets/docs/reference/Java/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +17 -15
  55. 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 +2 -0
  56. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +2 -0
  57. package/lib/assets/docs/reference/images/.gitkeep +0 -0
  58. package/lib/assets/docs/reference/images/Ansoff.drawio.svg +4 -0
  59. package/lib/assets/docs/reference/images/BMC.drawio.svg +4 -0
  60. package/lib/assets/docs/reference/images/BrandBasicStrategy.drawio.svg +4 -0
  61. package/lib/assets/docs/reference/images/BrandCategorization.drawio.svg +4 -0
  62. package/lib/assets/docs/reference/images/BrandRecurutementStrategy.drawio.svg +4 -0
  63. package/lib/assets/docs/reference/images/BrandValue.drawio.svg +4 -0
  64. package/lib/assets/docs/reference/images/BusinessActivitiy.svg +4 -0
  65. package/lib/assets/docs/reference/images/HRM.drawio.svg +4 -0
  66. package/lib/assets/docs/reference/images/MarketingStructure.drawio.svg +4 -0
  67. package/lib/assets/docs/reference/images/OrganizationElemnts.svg +4 -0
  68. package/lib/assets/docs/reference/images/PPM.drawio.svg +4 -0
  69. package/lib/assets/docs/reference/images/PositioningMap.drawio.svg +4 -0
  70. package/lib/assets/docs/reference/images/ProductLayer.drawio.svg +4 -0
  71. package/lib/assets/docs/reference/images/ProductMix.drawio.svg +4 -0
  72. package/lib/assets/docs/reference/images/SWOT.drawio.svg +4 -0
  73. package/lib/assets/docs/reference/images/TargetMarket.drawio.svg +4 -0
  74. package/lib/assets/docs/reference/images/ThreeGenericStrategies.drawio.svg +4 -0
  75. package/lib/assets/docs/reference/images/VRIO.drawio.svg +4 -0
  76. package/lib/assets/docs/reference/images/ValueChain.drawio.svg +4 -0
  77. package/lib/assets/docs/reference/index.md +11 -5
  78. package/lib/assets/docs/reference//343/202/263/343/203/274/343/203/207/343/202/243/343/203/263/343/202/260/343/201/250/343/203/206/343/202/271/343/203/210/343/202/254/343/202/244/343/203/211.md +8 -8
  79. package/lib/assets/docs/reference//343/203/206/343/202/271/343/203/210/346/210/246/347/225/245/343/202/254/343/202/244/343/203/211.md +12 -12
  80. package/lib/assets/docs/reference//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +15 -15
  81. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/203/273/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/343/202/254/343/202/244/343/203/211.md +2 -0
  82. package/lib/assets/docs/reference//343/203/255/343/202/270/343/202/253/343/203/253/343/202/267/343/203/263/343/202/255/343/203/263/343/202/260.md +1367 -0
  83. package/lib/assets/docs/reference//344/274/201/346/245/255/347/265/214/345/226/266/350/253/226.md +2637 -0
  84. package/lib/assets/docs/reference//350/250/200/350/252/236/345/210/245/351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +2 -0
  85. package/lib/assets/docs/reference//351/201/213/345/226/266/347/256/241/347/220/206.md +1391 -0
  86. package/lib/assets/docs/reference//351/235/236/346/251/237/350/203/275/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +12 -12
  87. package/lib/assets/docs/template/index.md +10 -9
  88. 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 +4 -2
  89. package/lib/assets/docs/template//344/274/201/346/245/255/345/210/206/346/236/220.md +573 -0
  90. package/lib/assets/mkdocs.yml +33 -29
  91. package/package.json +1 -1
@@ -93,6 +93,7 @@ description: 設計ドキュメントの一覧表示、進捗確認、内容参
93
93
 
94
94
  - タスク項目(リスト)の前には空行が必要
95
95
  - 番号付きリストのサブリスト前にも空行が必要
96
+ - 番号付きリストのサブリストは 5 スペースインデント(3 スペースは NG)
96
97
  - コロンで終わる行の直後にリストがある場合も空行が必要
97
98
  - 太字ラベル(半角・全角コロン両方)の直後にリストがある場合も空行が必要
98
99
 
@@ -126,6 +127,24 @@ description: 設計ドキュメントの一覧表示、進捗確認、内容参
126
127
  - コントロールパネル > ファイルサービス > SMB で設定
127
128
  ```
128
129
 
130
+ **NG 例** - 番号付きリストのサブリストのインデントが浅い:
131
+
132
+ ```markdown
133
+ 1. **データとしてのパターン**
134
+
135
+ - すべてのパターンがデータ構造として表現される
136
+ - パターン間の境界が明確
137
+ ```
138
+
139
+ **OK 例**:
140
+
141
+ ```markdown
142
+ 1. **データとしてのパターン**
143
+
144
+ - すべてのパターンがデータ構造として表現される
145
+ - パターン間の境界が明確
146
+ ```
147
+
129
148
  **NG 例** - コロンで終わる行の直後にリスト:
130
149
 
131
150
  ```markdown
@@ -10,6 +10,8 @@
10
10
 
11
11
  よいソフトウェアについての考えと規律と経験に関する知見は @docs/reference 内を参照してください。
12
12
 
13
+ あなたは @docs/reference/ロジカルシンキング.md に従い論理的に考え、問題を分析し、解決策を構築します。
14
+
13
15
  あなたは @docs/reference/開発ガイド.md に従いソフトウェア開発を手段として問題解決に取り組みます。
14
16
 
15
17
  あなたは既存のソフトウエア開発のベストプラクティスと最新の AI テクノロジーを融合させることによりソフトウエア開発にイノベーションをもたらします。
@@ -242,6 +242,8 @@ new-team: {:name (共有), :members [田中, 鈴木, 佐藤, 山田]}
242
242
  ```
243
243
 
244
244
  トランスデューサーの利点:
245
+
246
+
245
247
  - 中間コレクションを作成しない
246
248
  - 遅延評価との組み合わせが可能
247
249
  - 様々なコンテキスト(ベクター、チャネルなど)で再利用可能
@@ -57,6 +57,8 @@ end note
57
57
  ```
58
58
 
59
59
  ポイント:
60
+
61
+
60
62
  - `cycle` 関数で有限のルートを無限の循環シーケンスに変換
61
63
  - 噂は集合(set)として管理
62
64
 
@@ -151,6 +151,8 @@ BorderedShape o-- Shape : wraps
151
151
  ```
152
152
 
153
153
  **ポイント**:
154
+
155
+
154
156
  - `mapv` を使用してベクターを返す(イミュータブル)
155
157
  - 各子要素に対して同じ操作を適用
156
158
 
@@ -483,16 +485,19 @@ stop
483
485
  ### 4.3 関数型での組み合わせの利点
484
486
 
485
487
  1. **データとしてのパターン**
486
- - すべてのパターンがデータ構造として表現される
487
- - パターン間の境界が明確
488
+
489
+ - すべてのパターンがデータ構造として表現される
490
+ - パターン間の境界が明確
488
491
 
489
492
  2. **合成可能性**
490
- - 関数合成により自然にパターンを組み合わせ可能
491
- - パイプラインで処理を連結
493
+
494
+ - 関数合成により自然にパターンを組み合わせ可能
495
+ - パイプラインで処理を連結
492
496
 
493
497
  3. **テスト容易性**
494
- - 各パターンが純粋関数で実装
495
- - 組み合わせもテストしやすい
498
+
499
+ - 各パターンが純粋関数で実装
500
+ - 組み合わせもテストしやすい
496
501
 
497
502
  ## 5. テストコード
498
503
 
@@ -71,6 +71,8 @@ funcs --> effects : 境界で実行
71
71
  ```
72
72
 
73
73
  **ポイント**:
74
+
75
+
74
76
  - プレーンなマップを使用(クラスではなく)
75
77
  - 必要最小限のフィールド
76
78
  - 明確な命名
@@ -90,6 +92,8 @@ funcs --> effects : 境界で実行
90
92
  ```
91
93
 
92
94
  **原則**:
95
+
96
+
93
97
  - 1つの関数は1つのことを行う
94
98
  - 入力から出力への純粋な変換
95
99
  - 副作用なし
@@ -116,6 +120,8 @@ funcs --> effects : 境界で実行
116
120
  ```
117
121
 
118
122
  **スレッドマクロ `->` の活用**:
123
+
124
+
119
125
  - データの流れが明確
120
126
  - 各ステップが独立
121
127
  - デバッグしやすい
@@ -140,6 +146,8 @@ funcs --> effects : 境界で実行
140
146
  ```
141
147
 
142
148
  **検証関数のパターン**:
149
+
150
+
143
151
  - 述語関数(`?` で終わる)を使用
144
152
  - 合成可能な小さな検証
145
153
  - 明確なエラー条件
@@ -164,6 +172,8 @@ funcs --> effects : 境界で実行
164
172
  ```
165
173
 
166
174
  **イミュータビリティの利点**:
175
+
176
+
167
177
  - 元のデータは変更されない
168
178
  - 履歴の追跡が容易
169
179
  - 並行処理が安全
@@ -185,6 +195,8 @@ funcs --> effects : 境界で実行
185
195
  ```
186
196
 
187
197
  **純粋関数の条件**:
198
+
199
+
188
200
  1. 同じ入力に対して常に同じ出力
189
201
  2. 副作用がない
190
202
  3. 外部状態に依存しない
@@ -80,6 +80,8 @@ inherit --> compose : 変換
80
80
  ```
81
81
 
82
82
  **問題点**:
83
+
84
+
83
85
  - 内部状態が可変
84
86
  - テストが困難(状態に依存)
85
87
  - 履歴の追跡が難しい
@@ -120,6 +122,8 @@ inherit --> compose : 変換
120
122
  ```
121
123
 
122
124
  **利点**:
125
+
126
+
123
127
  - 元のデータは不変
124
128
  - テストが容易(入力 → 出力)
125
129
  - 完全な履歴を保持
@@ -248,6 +252,8 @@ rectangle "フェーズ3" {
248
252
  ```
249
253
 
250
254
  **利点**:
255
+
256
+
251
257
  - 完全な監査証跡
252
258
  - 任意の時点の状態を再構築可能
253
259
  - デバッグが容易
@@ -9,16 +9,22 @@
9
9
  ### 第1部: 関数型プログラミングの基礎原則
10
10
 
11
11
  1. [不変性とデータ変換](./01-immutability-and-data-transformation.md)
12
+
13
+
12
14
  - 不変データ構造の重要性
13
15
  - データ変換パイプライン
14
16
  - 副作用の分離
15
17
 
16
18
  2. [関数合成と高階関数](./02-function-composition.md)
19
+
20
+
17
21
  - 関数合成の基本
18
22
  - 部分適用とカリー化
19
23
  - 高階関数の活用
20
24
 
21
25
  3. [多態性の実現方法](./03-polymorphism.md)
26
+
27
+
22
28
  - マルチメソッドによるディスパッチ
23
29
  - プロトコルとレコード
24
30
  - マルチメソッド vs プロトコルの使い分け
@@ -26,16 +32,22 @@
26
32
  ### 第2部: 仕様とテスト
27
33
 
28
34
  4. [Clojure Spec による仕様定義](./04-clojure-spec.md)
35
+
36
+
29
37
  - データ構造の仕様定義
30
38
  - 関数仕様の定義(fdef)
31
39
  - 実行時検証と自動テスト生成
32
40
 
33
41
  5. [プロパティベーステスト](./05-property-based-testing.md)
42
+
43
+
34
44
  - test.check の基本
35
45
  - ジェネレータの作成
36
46
  - プロパティの定義と検証
37
47
 
38
48
  6. [テスト駆動開発と関数型プログラミング](./06-tdd-in-functional.md)
49
+
50
+
39
51
  - Red-Green-Refactor サイクル
40
52
  - テストファーストの関数設計
41
53
  - リファクタリングと不変性
@@ -43,18 +55,24 @@
43
55
  ### 第3部: デザインパターン - 構造パターン
44
56
 
45
57
  7. [Composite パターン](./07-composite-pattern.md)
58
+
59
+
46
60
  - 個別オブジェクトと複合オブジェクトの統一的な扱い
47
61
  - Shape(図形)の移動・拡大を統一インターフェースで操作
48
62
  - Switchable(スイッチ)のグループ化と一括操作
49
63
  - マルチメソッドによる多態性の実現
50
64
 
51
65
  8. [Decorator パターン](./08-decorator-pattern.md)
66
+
67
+
52
68
  - 機能の動的な追加
53
69
  - JournaledShape: 操作履歴の記録(ジャーナリング)
54
70
  - 関数デコレータ: ログ、リトライ、キャッシュ
55
71
  - デコレータの組み合わせ
56
72
 
57
73
  9. [Adapter パターン](./09-adapter-pattern.md)
74
+
75
+
58
76
  - インターフェースの変換
59
77
  - VariableLightAdapter: 可変強度ライトをオン/オフに適応
60
78
  - データフォーマットアダプター: 新旧フォーマット変換
@@ -63,18 +81,24 @@
63
81
  ### 第4部: デザインパターン - 振る舞いパターン
64
82
 
65
83
  10. [Strategy パターン](./10-strategy-pattern.md)
84
+
85
+
66
86
  - アルゴリズムをカプセル化し交換可能にする
67
87
  - 料金計算: 通常・割引・会員・数量割引の各戦略
68
88
  - 関数型アプローチ: 高階関数による戦略の合成
69
89
  - マルチメソッドによる多態性の実現
70
90
 
71
91
  11. [Command パターン](./11-command-pattern.md)
92
+
93
+
72
94
  - 操作をデータとしてカプセル化
73
95
  - テキストコマンド: 挿入・削除・置換
74
96
  - キャンバスコマンド: 図形の追加・削除・移動
75
97
  - Undo/Redo 機能と MacroCommand
76
98
 
77
99
  12. [Visitor パターン](./12-visitor-pattern.md)
100
+
101
+
78
102
  - データ構造と操作の分離
79
103
  - JSON/XML 変換 Visitor の実装
80
104
  - 面積・周囲長計算 Visitor
@@ -83,12 +107,16 @@
83
107
  ### 第5部: デザインパターン - 生成パターン
84
108
 
85
109
  13. [Abstract Factory パターン](./13-abstract-factory-pattern.md)
110
+
111
+
86
112
  - 関連するオブジェクトのファミリーを一貫して生成
87
113
  - ShapeFactory: Standard/Outlined/Filled の各実装
88
114
  - UIFactory: プラットフォーム別 UI コンポーネント生成
89
115
  - マルチメソッドによる製品生成のディスパッチ
90
116
 
91
117
  14. [Abstract Server パターン](./14-abstract-server-pattern.md)
118
+
119
+
92
120
  - 依存関係逆転の原則(DIP)の実現
93
121
  - Switchable: Light/Fan/Motor の統一インターフェース
94
122
  - Repository: データアクセスの抽象化
@@ -97,27 +125,37 @@
97
125
  ### 第6部: 実践的なケーススタディ
98
126
 
99
127
  15. [ゴシップ好きなバスの運転手](./15-gossiping-bus-drivers.md)
128
+
129
+
100
130
  - バス運転手が停留所で噂を共有するシミュレーション
101
131
  - 無限シーケンス(cycle)による循環ルート表現
102
132
  - 集合演算による噂の伝播
103
133
  - 状態変換パイプラインの実装
104
134
 
105
135
  16. [給与計算システム](./16-payroll-system.md)
136
+
137
+
106
138
  - ドメインモデリング
107
139
  - 支払いスケジュールと給与タイプ
108
140
  - Clojure Spec によるデータ検証
109
141
 
110
142
  17. [レンタルビデオシステム](./17-video-rental-system.md)
143
+
144
+
111
145
  - 料金計算ロジックの設計
112
146
  - ポリシーパターンの適用
113
147
  - テキスト/HTML フォーマッターの実装
114
148
 
115
149
  18. [並行処理システム](./18-concurrency-system.md)
150
+
151
+
116
152
  - Clojure エージェントによる非同期処理
117
153
  - 状態機械パターン
118
154
  - イベント駆動アーキテクチャ
119
155
 
120
156
  19. [Wa-Tor シミュレーション](./19-wator-simulation.md)
157
+
158
+
121
159
  - 捕食者-被食者モデルの実装
122
160
  - セルオートマトンとマルチメソッド
123
161
  - GUI との統合(Quil)
@@ -126,16 +164,22 @@
126
164
  ### 第7部: まとめと応用
127
165
 
128
166
  20. [パターン間の相互作用](./20-pattern-interactions.md)
167
+
168
+
129
169
  - Composite と Decorator の組み合わせ
130
170
  - Command と Observer の連携
131
171
  - 複合的なアーキテクチャ設計
132
172
 
133
173
  21. [関数型デザインのベストプラクティス](./21-best-practices.md)
174
+
175
+
134
176
  - データ中心設計
135
177
  - 純粋関数と副作用の分離
136
178
  - テスト可能な設計
137
179
 
138
180
  22. [オブジェクト指向から関数型への移行](./22-oo-to-fp-migration.md)
181
+
182
+
139
183
  - 既存コードのリファクタリング戦略
140
184
  - 段階的な移行アプローチ
141
185
  - 共存と統合
@@ -315,6 +315,8 @@ end
315
315
  ```
316
316
 
317
317
  Stream の利点:
318
+
319
+
318
320
  - 中間リストを作成しない
319
321
  - 遅延評価により必要な要素のみ処理
320
322
  - メモリ効率が良い
@@ -9,16 +9,22 @@
9
9
  ### 第1部: 関数型プログラミングの基礎原則
10
10
 
11
11
  1. [不変性とデータ変換](./01-immutability-and-data-transformation.md)
12
+
13
+
12
14
  - マップと構造体による不変データ
13
15
  - パイプ演算子によるデータ変換
14
16
  - Enum と Stream による遅延評価
15
17
 
16
18
  2. [関数合成と高階関数](./02-function-composition.md)
19
+
20
+
17
21
  - 無名関数とキャプチャ演算子
18
22
  - 関数合成のパターン
19
23
  - 高階関数の活用
20
24
 
21
25
  3. [多態性の実現方法](./03-polymorphism.md)
26
+
27
+
22
28
  - プロトコルによる多態性
23
29
  - ビヘイビアとコールバック
24
30
  - パターンマッチングによる型の切り替え
@@ -26,16 +32,22 @@
26
32
  ### 第2部: 仕様とテスト
27
33
 
28
34
  4. [データ検証](./04-data-validation.md)
35
+
36
+
29
37
  - Ecto.Changeset によるバリデーション
30
38
  - カスタムバリデータの作成
31
39
  - with 式によるエラーハンドリング
32
40
 
33
41
  5. [プロパティベーステスト](./05-property-based-testing.md)
42
+
43
+
34
44
  - StreamData の基本
35
45
  - ジェネレータの作成
36
46
  - プロパティの定義と検証
37
47
 
38
48
  6. [TDD と関数型プログラミング](./06-tdd-functional.md)
49
+
50
+
39
51
  - ExUnit によるテスト
40
52
  - Red-Green-Refactor サイクル
41
53
  - ドキュメントテスト(doctest)
@@ -43,16 +55,22 @@
43
55
  ### 第3部: 構造パターン
44
56
 
45
57
  7. [Composite パターン](./07-composite-pattern.md)
58
+
59
+
46
60
  - 再帰的なデータ構造
47
61
  - ネストした構造の操作
48
62
  - アキュムレータを使った走査
49
63
 
50
64
  8. [Decorator パターン](./08-decorator-pattern.md)
65
+
66
+
51
67
  - 関数合成によるデコレーション
52
68
  - 高階関数でのラッピング
53
69
  - マクロによる振る舞いの追加
54
70
 
55
71
  9. [Adapter パターン](./09-adapter-pattern.md)
72
+
73
+
56
74
  - 関数アダプター
57
75
  - プロトコル変換
58
76
  - レガシーコードとの統合
@@ -60,16 +78,22 @@
60
78
  ### 第4部: 振る舞いパターン
61
79
 
62
80
  10. [Strategy パターン](./10-strategy-pattern.md)
81
+
82
+
63
83
  - 第一級関数としての戦略
64
84
  - モジュールによる戦略実装
65
85
  - 動的な戦略切り替え
66
86
 
67
87
  11. [Command パターン](./11-command-pattern.md)
88
+
89
+
68
90
  - 不変コマンドデータ
69
91
  - コマンドの履歴と Undo
70
92
  - GenServer によるコマンド管理
71
93
 
72
94
  12. [Visitor パターン](./12-visitor-pattern.md)
95
+
96
+
73
97
  - パターンマッチによる訪問
74
98
  - プロトコルベースのビジター
75
99
  - Enum.reduce による走査
@@ -77,11 +101,15 @@
77
101
  ### 第5部: 生成パターン
78
102
 
79
103
  13. [Abstract Factory パターン](./13-abstract-factory-pattern.md)
104
+
105
+
80
106
  - 関数ファクトリー
81
107
  - モジュールベースの生成
82
108
  - 設定による依存性注入
83
109
 
84
110
  14. [Abstract Server パターン](./14-abstract-server-pattern.md)
111
+
112
+
85
113
  - ビヘイビアによる抽象化
86
114
  - 実装の差し替え
87
115
  - テスタブルな設計
@@ -89,26 +117,36 @@
89
117
  ### 第6部: ケーススタディ
90
118
 
91
119
  15. [ゴシップ好きなバスの運転手](./15-gossiping-bus-drivers.md)
120
+
121
+
92
122
  - Agent による状態管理
93
123
  - シミュレーションの実装
94
124
  - 再帰的な処理
95
125
 
96
126
  16. [給与計算システム](./16-payroll-system.md)
127
+
128
+
97
129
  - ドメインモデリング
98
130
  - 多態的な計算
99
131
  - レポート生成
100
132
 
101
133
  17. [レンタルビデオシステム](./17-video-rental-system.md)
134
+
135
+
102
136
  - 状態遷移の管理
103
137
  - イベントソーシング
104
138
  - ビジネスルールの実装
105
139
 
106
140
  18. [並行処理システム](./18-concurrency-system.md)
141
+
142
+
107
143
  - GenServer による状態管理
108
144
  - Task による並行実行
109
145
  - OTP パターン
110
146
 
111
147
  19. [Wa-Tor シミュレーション](./19-wator-simulation.md)
148
+
149
+
112
150
  - セルオートマトン
113
151
  - 不変グリッドの更新
114
152
  - プロセスベースのシミュレーション
@@ -116,17 +154,23 @@
116
154
  ### 第7部: まとめと応用
117
155
 
118
156
  20. [パターン間の相互作用](./20-pattern-interactions.md)
157
+
158
+
119
159
  - Composite + Decorator
120
160
  - Command + Observer
121
161
  - パターンの組み合わせ
122
162
 
123
163
  21. [ベストプラクティス](./21-best-practices.md)
164
+
165
+
124
166
  - データ中心設計
125
167
  - 純粋関数の分離
126
168
  - OTP パターンの活用
127
169
  - テスタブルな設計
128
170
 
129
171
  22. [OO から FP への移行](./22-oo-to-fp-migration.md)
172
+
173
+
130
174
  - 移行戦略(Strangler Fig、アダプター)
131
175
  - イベントソーシング
132
176
  - 段階的な関数抽出
@@ -275,6 +275,8 @@ let processItemsEfficiently items =
275
275
  ```
276
276
 
277
277
  `Seq` の利点:
278
+
279
+
278
280
  - 中間コレクションを作成しない
279
281
  - 必要な分だけ処理(遅延評価)
280
282
  - メモリ効率が良い
@@ -57,6 +57,8 @@ type Driver =
57
57
  ```
58
58
 
59
59
  ポイント:
60
+
61
+
60
62
  - `Route` はリストで保持し、`Position` でインデックスを管理
61
63
  - 噂は `Set<string>` として管理(集合演算が容易)
62
64
 
@@ -166,6 +166,8 @@ module Points =
166
166
  ```
167
167
 
168
168
  ポイントルール:
169
+
170
+
169
171
  - 通常のレンタル: 1ポイント
170
172
  - 新作2日以上: 2ポイント(ボーナス)
171
173
 
@@ -369,6 +369,8 @@ end note
369
369
  ```
370
370
 
371
371
  典型的なシナリオ:
372
+
373
+
372
374
  1. 魚の個体数が増加
373
375
  2. サメの餌が増え、サメも増加
374
376
  3. サメが増えすぎて魚が減少
@@ -77,6 +77,8 @@ and OrderStatus =
77
77
  ```
78
78
 
79
79
  **ポイント**:
80
+
81
+
80
82
  - プレーンなレコードを使用(クラスではなく)
81
83
  - 必要最小限のフィールド
82
84
  - 明確な命名
@@ -97,6 +99,8 @@ module Order =
97
99
  ```
98
100
 
99
101
  **原則**:
102
+
103
+
100
104
  - 1つの関数は1つのことを行う
101
105
  - 入力から出力への純粋な変換
102
106
  - 副作用なし
@@ -76,6 +76,8 @@ type AccountOO(id: string, initialBalance: decimal) =
76
76
  ```
77
77
 
78
78
  **問題点**:
79
+
80
+
79
81
  - 内部状態が可変
80
82
  - テストが困難(状態に依存)
81
83
  - 履歴の追跡が難しい
@@ -130,6 +132,8 @@ module Account =
130
132
  ```
131
133
 
132
134
  **改善点**:
135
+
136
+
133
137
  - 状態が不変
134
138
  - 元のデータは変更されない
135
139
  - Result 型でエラーを表現
@@ -172,6 +176,8 @@ let getName (animal: Animal) : string =
172
176
  ```
173
177
 
174
178
  **利点**:
179
+
180
+
175
181
  - 新しい動物を追加すると、コンパイラがすべての `match` を更新するよう警告
176
182
  - 関数を追加しても既存のコードに影響なし
177
183
  - パターンマッチングによる網羅性チェック
@@ -212,6 +218,8 @@ let createInMemoryRepo<'T> (getId: 'T -> string) : Repository<'T> =
212
218
  ```
213
219
 
214
220
  **利点**:
221
+
222
+
215
223
  - テスト用のモックが簡単
216
224
  - 部分的な実装が可能
217
225
  - 関数を引数として渡せる
@@ -255,6 +263,8 @@ let replay (events: AccountEvent list) : Account =
255
263
  ```
256
264
 
257
265
  **利点**:
266
+
267
+
258
268
  - 完全な履歴を保持
259
269
  - 任意の時点の状態を再構築可能
260
270
  - 監査ログとして使用可能