@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
@@ -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
  - 判別共用体(Discriminated Union)
23
29
  - アクティブパターン
24
30
  - 型拡張とインターフェース
@@ -26,16 +32,22 @@
26
32
  ### 第2部: 仕様とテスト
27
33
 
28
34
  4. [データ検証](./04-data-validation.md)
35
+
36
+
29
37
  - Result 型によるエラーハンドリング
30
38
  - Computation Expression
31
39
  - カスタムバリデータの作成
32
40
 
33
41
  5. [プロパティベーステスト](./05-property-based-testing.md)
42
+
43
+
34
44
  - FsCheck の基本
35
45
  - ジェネレータの作成
36
46
  - プロパティの定義と検証
37
47
 
38
48
  6. [TDD と関数型プログラミング](./06-tdd-functional.md)
49
+
50
+
39
51
  - xUnit / Expecto によるテスト
40
52
  - Red-Green-Refactor サイクル
41
53
  - テストファーストの関数設計
@@ -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
  - fold による走査
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
  - マクロコマンド
71
93
 
72
94
  12. [Visitor パターン](./12-visitor-pattern.md)
95
+
96
+
73
97
  - パターンマッチによる訪問
74
98
  - fold ベースのビジター
75
99
  - 拡張可能なビジター
@@ -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
  - 不変状態の管理
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
  - MailboxProcessor(Agent)
108
144
  - 非同期ワークフロー
109
145
  - 並行状態管理
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
  - Computation Expression
126
168
  - 関数デコレーター
127
169
  - テスタブルな設計
128
170
 
129
171
  22. [OO から FP への移行](./22-oo-to-fp-migration.md)
172
+
173
+
130
174
  - 移行戦略
131
175
  - イベントソーシング
132
176
  - 段階的な関数抽出
@@ -55,6 +55,8 @@ makeDrivers routes = zipWith makeDriver [0..] routes
55
55
  ```
56
56
 
57
57
  ポイント:
58
+
59
+
58
60
  - `cycle` 関数で有限のルートを無限の循環シーケンスに変換
59
61
  - 噂は集合(Set)として管理
60
62
  - 各ドライバーは自分のIDを初期の噂として持つ
@@ -282,6 +282,8 @@ spec = do
282
282
  ### 1. 責任の分離
283
283
 
284
284
  各パターンは単一の責任を持つ:
285
+
286
+
285
287
  - Strategy: 価格計算方法
286
288
  - Decorator: 価格修飾
287
289
  - Command: 操作のカプセル化
@@ -410,6 +410,8 @@ pub fn process_items_efficiently(items: &[Item]) -> Vec<ProcessedItem> {
410
410
  ```
411
411
 
412
412
  Rust イテレータの利点:
413
+
414
+
413
415
  - **遅延評価**: `collect()` が呼ばれるまで実際の処理は行われない
414
416
  - **中間コレクションなし**: 各要素が一度のパスで処理される
415
417
  - **ゼロコスト抽象化**: コンパイル時に最適化され、手書きのループと同等の性能
@@ -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
  - enum と代数的データ型
23
29
  - trait による抽象化
24
30
  - ジェネリクスと trait bounds
@@ -26,16 +32,22 @@
26
32
  ### 第2部: 仕様とテスト
27
33
 
28
34
  4. [データ検証](./04-data-validation.md)
35
+
36
+
29
37
  - 型によるバリデーション
30
38
  - Result によるエラーハンドリング
31
39
  - カスタムバリデータの作成
32
40
 
33
41
  5. [プロパティベーステスト](./05-property-based-testing.md)
42
+
43
+
34
44
  - proptest の基本
35
45
  - ジェネレータの作成
36
46
  - プロパティの定義と検証
37
47
 
38
48
  6. [TDD と関数型プログラミング](./06-tdd-and-functional.md)
49
+
50
+
39
51
  - Rust 組み込みテストの活用
40
52
  - Red-Green-Refactor サイクル
41
53
  - テストファーストの関数設計
@@ -43,16 +55,22 @@
43
55
  ### 第3部: 構造パターン
44
56
 
45
57
  7. [Composite パターン](./07-composite-pattern.md)
58
+
59
+
46
60
  - 再帰的なデータ構造
47
61
  - enum によるツリー構造
48
62
  - fold による走査
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
  - マクロコマンド
71
93
 
72
94
  12. [Visitor パターン](./12-visitor-pattern.md)
95
+
96
+
73
97
  - match によるパターンマッチ
74
98
  - fold ベースのビジター
75
99
  - 拡張可能なビジター
@@ -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
  - trait オブジェクトによる生成
82
108
  - 依存性注入
83
109
 
84
110
  14. [Abstract Server パターン](./14-abstract-server-pattern.md)
111
+
112
+
85
113
  - trait による抽象化
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
  - 不変状態の管理
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
  - Mutex と RwLock による状態管理
108
144
  - チャネルによるメッセージパッシング
109
145
  - async/await と Tokio
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
  - 関数デコレーター
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
  - 段階的な関数抽出
@@ -286,6 +286,8 @@ def processItemsWithIterator(items: List[Item]): List[ProcessedItem] =
286
286
  ```
287
287
 
288
288
  Iterator の利点:
289
+
290
+
289
291
  - 中間コレクションを作成しない
290
292
  - 遅延評価により必要な要素のみ処理
291
293
  - メモリ効率が良い
@@ -75,6 +75,8 @@ object Driver:
75
75
  ```
76
76
 
77
77
  ポイント:
78
+
79
+
78
80
  - `position % route.length` で循環ルートを実現
79
81
  - 噂は `Set` で管理し、重複を自動排除
80
82
  - すべての状態変更は新しいインスタンスを返す(イミュータブル)
@@ -75,6 +75,8 @@ enum OrderStatus:
75
75
  ```
76
76
 
77
77
  **ポイント**:
78
+
79
+
78
80
  - case class を使用(不変性を保証)
79
81
  - 必要最小限のフィールド
80
82
  - 明確な命名
@@ -98,6 +100,8 @@ object OrderCalculations:
98
100
  ```
99
101
 
100
102
  **原則**:
103
+
104
+
101
105
  - 1つの関数は1つのことを行う
102
106
  - 入力から出力への純粋な変換
103
107
  - 副作用なし
@@ -183,6 +187,8 @@ object ImmutableUpdates:
183
187
  ```
184
188
 
185
189
  **イミュータビリティの利点**:
190
+
191
+
186
192
  - 元のデータは変更されない
187
193
  - 履歴の追跡が容易
188
194
  - 並行処理が安全
@@ -75,6 +75,8 @@ object OOStyle:
75
75
  ```
76
76
 
77
77
  **問題点**:
78
+
79
+
78
80
  - 内部状態が可変
79
81
  - テストが困難(状態に依存)
80
82
  - 履歴の追跡が難しい
@@ -121,6 +123,8 @@ object FPStyle:
121
123
  ```
122
124
 
123
125
  **利点**:
126
+
127
+
124
128
  - 元のデータは不変
125
129
  - テストが容易(入力 → 出力)
126
130
  - 完全な履歴を保持
@@ -271,6 +275,8 @@ val account = replayEvents(events) // balance: 700
271
275
  ```
272
276
 
273
277
  **利点**:
278
+
279
+
274
280
  - 完全な監査証跡
275
281
  - 任意の時点の状態を再構築可能
276
282
  - デバッグが容易
@@ -9,16 +9,22 @@
9
9
  ### 第1部: 関数型プログラミングの基礎原則
10
10
 
11
11
  1. [不変性とデータ変換](./01-immutability-and-data-transformation.md)
12
+
13
+
12
14
  - case class と不変データ構造
13
15
  - データ変換パイプライン
14
16
  - 副作用の分離
15
17
 
16
18
  2. [関数合成と高階関数](./02-function-composition.md)
19
+
20
+
17
21
  - andThen と compose による関数合成
18
22
  - カリー化と部分適用
19
23
  - 高階関数の活用
20
24
 
21
25
  3. [多態性の実現方法](./03-polymorphism.md)
26
+
27
+
22
28
  - sealed trait と代数的データ型
23
29
  - トレイトとミックスイン
24
30
  - 型クラスによる既存型の拡張
@@ -26,16 +32,22 @@
26
32
  ### 第2部: 仕様とテスト
27
33
 
28
34
  4. [データ検証](./04-data-validation.md)
35
+
36
+
29
37
  - 型によるバリデーション
30
38
  - Either によるエラーハンドリング
31
39
  - カスタムバリデータの作成
32
40
 
33
41
  5. [プロパティベーステスト](./05-property-based-testing.md)
42
+
43
+
34
44
  - ScalaCheck の基本
35
45
  - ジェネレータの作成
36
46
  - プロパティの定義と検証
37
47
 
38
48
  6. [TDD と関数型プログラミング](./06-tdd-functional.md)
49
+
50
+
39
51
  - ScalaTest によるテスト
40
52
  - Red-Green-Refactor サイクル
41
53
  - テストファーストの関数設計
@@ -43,16 +55,22 @@
43
55
  ### 第3部: 構造パターン
44
56
 
45
57
  7. [Composite パターン](./07-composite-pattern.md)
58
+
59
+
46
60
  - 再帰的なデータ構造
47
61
  - ADT によるツリー構造
48
62
  - fold による走査
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
  - マクロコマンド
71
93
 
72
94
  12. [Visitor パターン](./12-visitor-pattern.md)
95
+
96
+
73
97
  - パターンマッチによる訪問
74
98
  - fold ベースのビジター
75
99
  - 拡張可能なビジター
@@ -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
  - 不変状態の管理
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
  - 状態マシン
108
144
  - イベントバス
109
145
  - AtomicReference による同期
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
  - IO モナド
126
168
  - 関数デコレーター
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
  - 段階的な関数抽出
@@ -20,6 +20,8 @@
20
20
  | Haskell | オプション(推論優先) | HM 型推論 | あり(型クラス) |
21
21
 
22
22
  **メリット**:
23
+
24
+
23
25
  - コンパイル時にバグを検出できる
24
26
  - IDE の補完・リファクタリングが強力
25
27
  - ドキュメントとしての型情報
@@ -39,6 +41,8 @@
39
41
  | Elixir | Typespec | Dialyzer |
40
42
 
41
43
  **メリット**:
44
+
45
+
42
46
  - 素早いプロトタイピング
43
47
  - 柔軟なデータ操作
44
48
  - REPL での探索的開発
@@ -21,11 +21,15 @@ Java ──→ Python
21
21
  | 2 | **Python** | 1-2 週間 | 動的型付け、ABC、デコレータ、pytest |
22
22
 
23
23
  **Java を最初に学ぶ理由**:
24
+
25
+
24
26
  - 静的型付けと OOP の概念が明確に分かれている
25
27
  - JUnit 5 の構造が TDD の基本パターンを学ぶのに最適
26
28
  - エコシステムが成熟しており、学習リソースが豊富
27
29
 
28
30
  **Python を 2 番目に学ぶ理由**:
31
+
32
+
29
33
  - Java との対比で動的型付けの利点と欠点を体感できる
30
34
  - pytest のシンプルさが TDD の本質を理解させる
31
35
  - マルチパラダイムへの橋渡し
@@ -50,6 +54,8 @@ TypeScript ──→ Ruby ──→ Go or Rust
50
54
  | 5b | **Rust** | 2-3 週間 | 所有権、借用、trait、Result/Option、Clippy |
51
55
 
52
56
  **Go と Rust はどちらか一方を選択、または順に学習**:
57
+
58
+
53
59
  - **Go**: シンプルさを重視する場合。インターフェースの構造的部分型が新鮮
54
60
  - **Rust**: 型安全性を深く理解したい場合。所有権システムが根本的に新しい
55
61
 
@@ -75,11 +81,15 @@ F# ──→ Scala ──→ Elixir or Clojure ──→ Haskell
75
81
  | 9 | **Haskell** | 3-4 週間 | 型クラス、モナド、遅延評価、do 記法 |
76
82
 
77
83
  **F# を FP の入口に選ぶ理由**:
84
+
85
+
78
86
  - C# と同じ .NET ランタイム上で動作し、既存知識を活かせる
79
87
  - 判別共用体とパターンマッチングが FP の核心を教えてくれる
80
88
  - パイプライン演算子がデータフローの思考法を身につけさせる
81
89
 
82
90
  **Haskell を最後に学ぶ理由**:
91
+
92
+
83
93
  - 純粋関数型の概念(モナド、型クラス)は他の FP 言語の基礎があると理解しやすい
84
94
  - 他の言語で「なぜ FP が有用か」を体感した後に、最も厳密な FP を学ぶ
85
95
 
@@ -182,16 +192,22 @@ PHP と C# は上記のフェーズに含まれていませんが、以下のタ
182
192
  ### 各フェーズで意識すべきこと
183
193
 
184
194
  **フェーズ 1**:
195
+
196
+
185
197
  - TDD の Red-Green-Refactor サイクルを体に染み込ませる
186
198
  - テストを「先に」書く習慣を確立する
187
199
  - 静的型付けと動的型付けの違いを体感する
188
200
 
189
201
  **フェーズ 2**:
202
+
203
+
190
204
  - 同じ FizzBuzz 仕様を異なる言語で実装し、「何が同じで何が違うか」を意識する
191
205
  - 各言語のイディオムを尊重する(Go のシンプルさ、Ruby の表現力)
192
206
  - リンターの指摘を通じて「その言語らしいコード」を学ぶ
193
207
 
194
208
  **フェーズ 3**:
209
+
210
+
195
211
  - 「なぜ不変データが有用か」を自分の言葉で説明できるようになる
196
212
  - パターンマッチングの威力を体感する
197
213
  - モナドを「怖いもの」ではなく「便利な道具」として理解する
@@ -19,6 +19,8 @@ end
19
19
  ```
20
20
 
21
21
  `dup.freeze` のパターンにより:
22
+
23
+
22
24
  - `dup` で元の配列を変更しない
23
25
  - `freeze` で内部配列の変更を禁止
24
26
 
@@ -170,6 +172,8 @@ end
170
172
  ```
171
173
 
172
174
  `then` を使うことで、処理の流れが上から下へ自然に読めます:
175
+
176
+
173
177
  1. `(1..@count)` — 1 から count の Range を作成
174
178
  2. `.map { ... }` — 各数値を FizzBuzzValue に変換
175
179
  3. `.then { ... }` — 結果の配列を FizzBuzzList でラップ