@k2works/claude-code-booster 6.2.0 → 6.3.1

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 (618) hide show
  1. package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +3 -7
  2. package/lib/assets/docs/article/index.md +17 -41
  3. package/lib/assets/docs/index.md +1 -1
  4. package/lib/assets/mkdocs.yml +0 -6
  5. package/package.json +1 -1
  6. package/lib/assets/docs/article/functional-desgin-ppp/all/01-immutability-and-data-transformation.md +0 -484
  7. package/lib/assets/docs/article/functional-desgin-ppp/all/02-function-composition.md +0 -528
  8. package/lib/assets/docs/article/functional-desgin-ppp/all/03-polymorphism.md +0 -546
  9. package/lib/assets/docs/article/functional-desgin-ppp/all/04-data-validation.md +0 -309
  10. package/lib/assets/docs/article/functional-desgin-ppp/all/05-property-based-testing.md +0 -329
  11. package/lib/assets/docs/article/functional-desgin-ppp/all/06-tdd-and-functional.md +0 -507
  12. package/lib/assets/docs/article/functional-desgin-ppp/all/07-composite-pattern.md +0 -307
  13. package/lib/assets/docs/article/functional-desgin-ppp/all/08-decorator-pattern.md +0 -300
  14. package/lib/assets/docs/article/functional-desgin-ppp/all/09-adapter-pattern.md +0 -345
  15. package/lib/assets/docs/article/functional-desgin-ppp/all/10-strategy-pattern.md +0 -312
  16. package/lib/assets/docs/article/functional-desgin-ppp/all/11-command-pattern.md +0 -295
  17. package/lib/assets/docs/article/functional-desgin-ppp/all/12-visitor-pattern.md +0 -331
  18. package/lib/assets/docs/article/functional-desgin-ppp/all/13-abstract-factory-pattern.md +0 -328
  19. package/lib/assets/docs/article/functional-desgin-ppp/all/14-abstract-server-pattern.md +0 -374
  20. package/lib/assets/docs/article/functional-desgin-ppp/all/15-gossiping-bus-drivers.md +0 -165
  21. package/lib/assets/docs/article/functional-desgin-ppp/all/16-payroll-system.md +0 -187
  22. package/lib/assets/docs/article/functional-desgin-ppp/all/17-video-rental-system.md +0 -321
  23. package/lib/assets/docs/article/functional-desgin-ppp/all/18-concurrency-system.md +0 -296
  24. package/lib/assets/docs/article/functional-desgin-ppp/all/19-wa-tor-simulation.md +0 -295
  25. package/lib/assets/docs/article/functional-desgin-ppp/all/20-pattern-interactions.md +0 -283
  26. package/lib/assets/docs/article/functional-desgin-ppp/all/21-best-practices.md +0 -303
  27. package/lib/assets/docs/article/functional-desgin-ppp/all/22-oo-to-fp-migration.md +0 -346
  28. package/lib/assets/docs/article/functional-desgin-ppp/all/index.md +0 -388
  29. package/lib/assets/docs/article/functional-desgin-ppp/clojure/01-immutability-and-data-transformation.md +0 -282
  30. package/lib/assets/docs/article/functional-desgin-ppp/clojure/02-function-composition.md +0 -389
  31. package/lib/assets/docs/article/functional-desgin-ppp/clojure/03-polymorphism.md +0 -393
  32. package/lib/assets/docs/article/functional-desgin-ppp/clojure/04-clojure-spec.md +0 -359
  33. package/lib/assets/docs/article/functional-desgin-ppp/clojure/05-property-based-testing.md +0 -361
  34. package/lib/assets/docs/article/functional-desgin-ppp/clojure/06-tdd-in-functional.md +0 -392
  35. package/lib/assets/docs/article/functional-desgin-ppp/clojure/07-composite-pattern.md +0 -538
  36. package/lib/assets/docs/article/functional-desgin-ppp/clojure/08-decorator-pattern.md +0 -404
  37. package/lib/assets/docs/article/functional-desgin-ppp/clojure/09-adapter-pattern.md +0 -408
  38. package/lib/assets/docs/article/functional-desgin-ppp/clojure/10-strategy-pattern.md +0 -494
  39. package/lib/assets/docs/article/functional-desgin-ppp/clojure/11-command-pattern.md +0 -575
  40. package/lib/assets/docs/article/functional-desgin-ppp/clojure/12-visitor-pattern.md +0 -576
  41. package/lib/assets/docs/article/functional-desgin-ppp/clojure/13-abstract-factory-pattern.md +0 -484
  42. package/lib/assets/docs/article/functional-desgin-ppp/clojure/14-abstract-server-pattern.md +0 -471
  43. package/lib/assets/docs/article/functional-desgin-ppp/clojure/15-gossiping-bus-drivers.md +0 -334
  44. package/lib/assets/docs/article/functional-desgin-ppp/clojure/16-payroll-system.md +0 -410
  45. package/lib/assets/docs/article/functional-desgin-ppp/clojure/17-video-rental-system.md +0 -459
  46. package/lib/assets/docs/article/functional-desgin-ppp/clojure/18-concurrency-system.md +0 -484
  47. package/lib/assets/docs/article/functional-desgin-ppp/clojure/19-wator-simulation.md +0 -748
  48. package/lib/assets/docs/article/functional-desgin-ppp/clojure/20-pattern-interactions.md +0 -576
  49. package/lib/assets/docs/article/functional-desgin-ppp/clojure/21-best-practices.md +0 -527
  50. package/lib/assets/docs/article/functional-desgin-ppp/clojure/22-oo-to-fp-migration.md +0 -541
  51. package/lib/assets/docs/article/functional-desgin-ppp/clojure/index.md +0 -241
  52. package/lib/assets/docs/article/functional-desgin-ppp/elixir/01-immutability-and-data-transformation.md +0 -392
  53. package/lib/assets/docs/article/functional-desgin-ppp/elixir/02-function-composition.md +0 -383
  54. package/lib/assets/docs/article/functional-desgin-ppp/elixir/03-polymorphism.md +0 -384
  55. package/lib/assets/docs/article/functional-desgin-ppp/elixir/04-data-validation.md +0 -204
  56. package/lib/assets/docs/article/functional-desgin-ppp/elixir/05-property-based-testing.md +0 -277
  57. package/lib/assets/docs/article/functional-desgin-ppp/elixir/06-tdd-and-fp.md +0 -303
  58. package/lib/assets/docs/article/functional-desgin-ppp/elixir/07-effects-and-pure-functions.md +0 -173
  59. package/lib/assets/docs/article/functional-desgin-ppp/elixir/08-error-handling-strategies.md +0 -177
  60. package/lib/assets/docs/article/functional-desgin-ppp/elixir/09-io-and-external-systems.md +0 -263
  61. package/lib/assets/docs/article/functional-desgin-ppp/elixir/10-concurrency-patterns.md +0 -278
  62. package/lib/assets/docs/article/functional-desgin-ppp/elixir/11-command-pattern.md +0 -157
  63. package/lib/assets/docs/article/functional-desgin-ppp/elixir/12-visitor-pattern.md +0 -185
  64. package/lib/assets/docs/article/functional-desgin-ppp/elixir/13-abstract-factory-pattern.md +0 -613
  65. package/lib/assets/docs/article/functional-desgin-ppp/elixir/14-abstract-server-pattern.md +0 -738
  66. package/lib/assets/docs/article/functional-desgin-ppp/elixir/15-gossiping-bus-drivers.md +0 -300
  67. package/lib/assets/docs/article/functional-desgin-ppp/elixir/16-payroll-system.md +0 -429
  68. package/lib/assets/docs/article/functional-desgin-ppp/elixir/17-video-rental-system.md +0 -328
  69. package/lib/assets/docs/article/functional-desgin-ppp/elixir/18-concurrency-system.md +0 -475
  70. package/lib/assets/docs/article/functional-desgin-ppp/elixir/19-wator-simulation.md +0 -532
  71. package/lib/assets/docs/article/functional-desgin-ppp/elixir/20-pattern-interactions.md +0 -296
  72. package/lib/assets/docs/article/functional-desgin-ppp/elixir/21-best-practices.md +0 -349
  73. package/lib/assets/docs/article/functional-desgin-ppp/elixir/22-oo-to-fp-migration.md +0 -404
  74. package/lib/assets/docs/article/functional-desgin-ppp/elixir/index.md +0 -248
  75. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/01-immutability-and-data-transformation.md +0 -393
  76. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/02-function-composition.md +0 -461
  77. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/03-polymorphism.md +0 -504
  78. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/04-data-validation.md +0 -425
  79. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/05-property-based-testing.md +0 -391
  80. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/06-tdd-functional.md +0 -696
  81. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/07-composite-pattern.md +0 -451
  82. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/08-decorator-pattern.md +0 -488
  83. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/09-adapter-pattern.md +0 -488
  84. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/10-strategy-pattern.md +0 -436
  85. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/11-command-pattern.md +0 -437
  86. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/12-visitor-pattern.md +0 -348
  87. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/13-abstract-factory-pattern.md +0 -318
  88. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/14-abstract-server-pattern.md +0 -605
  89. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/15-gossiping-bus-drivers.md +0 -364
  90. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/16-payroll-system.md +0 -359
  91. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/17-video-rental-system.md +0 -423
  92. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/18-concurrency-system.md +0 -376
  93. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/19-wator-simulation.md +0 -412
  94. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/20-pattern-interactions.md +0 -300
  95. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/21-best-practices.md +0 -333
  96. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/22-oo-to-fp-migration.md +0 -341
  97. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/index.md +0 -274
  98. package/lib/assets/docs/article/functional-desgin-ppp/haskell/01-immutability-and-data-transformation.md +0 -307
  99. package/lib/assets/docs/article/functional-desgin-ppp/haskell/02-function-composition.md +0 -313
  100. package/lib/assets/docs/article/functional-desgin-ppp/haskell/03-polymorphism.md +0 -371
  101. package/lib/assets/docs/article/functional-desgin-ppp/haskell/04-data-validation.md +0 -266
  102. package/lib/assets/docs/article/functional-desgin-ppp/haskell/05-property-based-testing.md +0 -263
  103. package/lib/assets/docs/article/functional-desgin-ppp/haskell/06-tdd-functional.md +0 -292
  104. package/lib/assets/docs/article/functional-desgin-ppp/haskell/07-composite-pattern.md +0 -404
  105. package/lib/assets/docs/article/functional-desgin-ppp/haskell/08-decorator-pattern.md +0 -328
  106. package/lib/assets/docs/article/functional-desgin-ppp/haskell/09-adapter-pattern.md +0 -391
  107. package/lib/assets/docs/article/functional-desgin-ppp/haskell/10-strategy-pattern.md +0 -296
  108. package/lib/assets/docs/article/functional-desgin-ppp/haskell/11-command-pattern.md +0 -312
  109. package/lib/assets/docs/article/functional-desgin-ppp/haskell/12-visitor-pattern.md +0 -335
  110. package/lib/assets/docs/article/functional-desgin-ppp/haskell/13-abstract-factory-pattern.md +0 -341
  111. package/lib/assets/docs/article/functional-desgin-ppp/haskell/14-abstract-server-pattern.md +0 -388
  112. package/lib/assets/docs/article/functional-desgin-ppp/haskell/15-gossiping-bus-drivers.md +0 -186
  113. package/lib/assets/docs/article/functional-desgin-ppp/haskell/16-payroll-system.md +0 -228
  114. package/lib/assets/docs/article/functional-desgin-ppp/haskell/17-video-rental-system.md +0 -253
  115. package/lib/assets/docs/article/functional-desgin-ppp/haskell/18-concurrency-system.md +0 -372
  116. package/lib/assets/docs/article/functional-desgin-ppp/haskell/19-wator-simulation.md +0 -447
  117. package/lib/assets/docs/article/functional-desgin-ppp/haskell/20-pattern-interactions.md +0 -334
  118. package/lib/assets/docs/article/functional-desgin-ppp/haskell/21-best-practices.md +0 -412
  119. package/lib/assets/docs/article/functional-desgin-ppp/haskell/22-oo-to-fp-migration.md +0 -478
  120. package/lib/assets/docs/article/functional-desgin-ppp/haskell/index.md +0 -174
  121. package/lib/assets/docs/article/functional-desgin-ppp/index.md +0 -90
  122. package/lib/assets/docs/article/functional-desgin-ppp/rust/01-immutability-and-data-transformation.md +0 -459
  123. package/lib/assets/docs/article/functional-desgin-ppp/rust/02-function-composition.md +0 -472
  124. package/lib/assets/docs/article/functional-desgin-ppp/rust/03-polymorphism.md +0 -434
  125. package/lib/assets/docs/article/functional-desgin-ppp/rust/04-data-validation.md +0 -282
  126. package/lib/assets/docs/article/functional-desgin-ppp/rust/05-property-based-testing.md +0 -256
  127. package/lib/assets/docs/article/functional-desgin-ppp/rust/06-tdd-and-functional.md +0 -850
  128. package/lib/assets/docs/article/functional-desgin-ppp/rust/07-composite-pattern.md +0 -393
  129. package/lib/assets/docs/article/functional-desgin-ppp/rust/08-decorator-pattern.md +0 -392
  130. package/lib/assets/docs/article/functional-desgin-ppp/rust/09-adapter-pattern.md +0 -348
  131. package/lib/assets/docs/article/functional-desgin-ppp/rust/10-strategy-pattern.md +0 -340
  132. package/lib/assets/docs/article/functional-desgin-ppp/rust/11-command-pattern.md +0 -365
  133. package/lib/assets/docs/article/functional-desgin-ppp/rust/12-visitor-pattern.md +0 -388
  134. package/lib/assets/docs/article/functional-desgin-ppp/rust/13-abstract-factory-pattern.md +0 -370
  135. package/lib/assets/docs/article/functional-desgin-ppp/rust/14-abstract-server-pattern.md +0 -401
  136. package/lib/assets/docs/article/functional-desgin-ppp/rust/15-gossiping-bus-drivers.md +0 -309
  137. package/lib/assets/docs/article/functional-desgin-ppp/rust/16-payroll-system.md +0 -306
  138. package/lib/assets/docs/article/functional-desgin-ppp/rust/17-video-rental-system.md +0 -313
  139. package/lib/assets/docs/article/functional-desgin-ppp/rust/18-concurrency-system.md +0 -324
  140. package/lib/assets/docs/article/functional-desgin-ppp/rust/19-wator-simulation.md +0 -320
  141. package/lib/assets/docs/article/functional-desgin-ppp/rust/20-pattern-interactions.md +0 -313
  142. package/lib/assets/docs/article/functional-desgin-ppp/rust/21-best-practices.md +0 -345
  143. package/lib/assets/docs/article/functional-desgin-ppp/rust/22-oo-to-fp-migration.md +0 -358
  144. package/lib/assets/docs/article/functional-desgin-ppp/rust/index.md +0 -243
  145. package/lib/assets/docs/article/functional-desgin-ppp/scala/01-immutability-and-data-transformation.md +0 -337
  146. package/lib/assets/docs/article/functional-desgin-ppp/scala/02-function-composition.md +0 -357
  147. package/lib/assets/docs/article/functional-desgin-ppp/scala/03-polymorphism.md +0 -366
  148. package/lib/assets/docs/article/functional-desgin-ppp/scala/04-data-validation.md +0 -373
  149. package/lib/assets/docs/article/functional-desgin-ppp/scala/05-property-based-testing.md +0 -524
  150. package/lib/assets/docs/article/functional-desgin-ppp/scala/06-tdd-functional.md +0 -566
  151. package/lib/assets/docs/article/functional-desgin-ppp/scala/07-composite-pattern.md +0 -372
  152. package/lib/assets/docs/article/functional-desgin-ppp/scala/08-decorator-pattern.md +0 -336
  153. package/lib/assets/docs/article/functional-desgin-ppp/scala/09-adapter-pattern.md +0 -526
  154. package/lib/assets/docs/article/functional-desgin-ppp/scala/10-strategy-pattern.md +0 -450
  155. package/lib/assets/docs/article/functional-desgin-ppp/scala/11-command-pattern.md +0 -416
  156. package/lib/assets/docs/article/functional-desgin-ppp/scala/12-visitor-pattern.md +0 -388
  157. package/lib/assets/docs/article/functional-desgin-ppp/scala/13-abstract-factory-pattern.md +0 -407
  158. package/lib/assets/docs/article/functional-desgin-ppp/scala/14-abstract-server-pattern.md +0 -485
  159. package/lib/assets/docs/article/functional-desgin-ppp/scala/15-gossiping-bus-drivers.md +0 -400
  160. package/lib/assets/docs/article/functional-desgin-ppp/scala/16-payroll-system.md +0 -351
  161. package/lib/assets/docs/article/functional-desgin-ppp/scala/17-video-rental-system.md +0 -333
  162. package/lib/assets/docs/article/functional-desgin-ppp/scala/18-concurrency-system.md +0 -739
  163. package/lib/assets/docs/article/functional-desgin-ppp/scala/19-wator-simulation.md +0 -633
  164. package/lib/assets/docs/article/functional-desgin-ppp/scala/20-pattern-interactions.md +0 -521
  165. package/lib/assets/docs/article/functional-desgin-ppp/scala/21-best-practices.md +0 -442
  166. package/lib/assets/docs/article/functional-desgin-ppp/scala/22-oo-to-fp-migration.md +0 -697
  167. package/lib/assets/docs/article/functional-desgin-ppp/scala/index.md +0 -243
  168. package/lib/assets/docs/article/getting-start-docker-kubernetes/01-container-and-docker-basics.md +0 -341
  169. package/lib/assets/docs/article/getting-start-docker-kubernetes/02-container-deployment.md +0 -785
  170. package/lib/assets/docs/article/getting-start-docker-kubernetes/03-practical-container-build-deploy.md +0 -466
  171. package/lib/assets/docs/article/getting-start-docker-kubernetes/04-multi-container-application.md +0 -878
  172. package/lib/assets/docs/article/getting-start-docker-kubernetes/05-kubernetes-introduction.md +0 -585
  173. package/lib/assets/docs/article/getting-start-docker-kubernetes/06-kubernetes-deploy-cluster.md +0 -620
  174. package/lib/assets/docs/article/getting-start-docker-kubernetes/07-kubernetes-advanced.md +0 -621
  175. package/lib/assets/docs/article/getting-start-docker-kubernetes/08-kubernetes-packaging.md +0 -518
  176. package/lib/assets/docs/article/getting-start-docker-kubernetes/09-container-operations.md +0 -546
  177. package/lib/assets/docs/article/getting-start-docker-kubernetes/10-optimal-container-image.md +0 -640
  178. package/lib/assets/docs/article/getting-start-docker-kubernetes/11-continuous-delivery.md +0 -607
  179. package/lib/assets/docs/article/getting-start-docker-kubernetes/12-container-use-cases.md +0 -463
  180. package/lib/assets/docs/article/getting-start-docker-kubernetes/13-case-monolith-compose-vs-kustomize.md +0 -346
  181. package/lib/assets/docs/article/getting-start-docker-kubernetes/14-case-event-driven-kustomize-vs-helm.md +0 -324
  182. package/lib/assets/docs/article/getting-start-docker-kubernetes/15-case-escqrs-axon-kustomize-vs-helm.md +0 -297
  183. package/lib/assets/docs/article/getting-start-docker-kubernetes/16-case-escqrs-kafka-kustomize-vs-helm.md +0 -256
  184. package/lib/assets/docs/article/getting-start-docker-kubernetes/17-case-comparison-summary.md +0 -141
  185. package/lib/assets/docs/article/getting-start-docker-kubernetes/18-case-load-testing.md +0 -303
  186. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-a-dev-tools-setup.md +0 -274
  187. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-b-orchestration-environments.md +0 -530
  188. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-c-tips.md +0 -519
  189. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-01-comic.png +0 -0
  190. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-02-comic.png +0 -0
  191. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-03-comic.png +0 -0
  192. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-04-comic.png +0 -0
  193. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-05-comic.png +0 -0
  194. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-06-comic.png +0 -0
  195. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-07-comic.png +0 -0
  196. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-08-comic.png +0 -0
  197. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-09-comic.png +0 -0
  198. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-10-comic.png +0 -0
  199. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-11-comic.png +0 -0
  200. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-12-comic.png +0 -0
  201. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/overview-comic.png +0 -0
  202. package/lib/assets/docs/article/getting-start-docker-kubernetes/index.md +0 -82
  203. package/lib/assets/docs/article/getting-start-docker-kubernetes/outline.md +0 -220
  204. package/lib/assets/docs/article/getting-start-tdd/clojure/01-todo-list-and-first-test.md +0 -175
  205. package/lib/assets/docs/article/getting-start-tdd/clojure/02-fake-it-and-triangulation.md +0 -171
  206. package/lib/assets/docs/article/getting-start-tdd/clojure/03-obvious-implementation-and-refactoring.md +0 -144
  207. package/lib/assets/docs/article/getting-start-tdd/clojure/04-version-control-and-conventional-commits.md +0 -97
  208. package/lib/assets/docs/article/getting-start-tdd/clojure/05-package-management-and-static-analysis.md +0 -308
  209. package/lib/assets/docs/article/getting-start-tdd/clojure/06-task-runner-and-ci-cd.md +0 -250
  210. package/lib/assets/docs/article/getting-start-tdd/clojure/07-protocols-and-records.md +0 -140
  211. package/lib/assets/docs/article/getting-start-tdd/clojure/08-multimethods-and-design-patterns.md +0 -139
  212. package/lib/assets/docs/article/getting-start-tdd/clojure/09-namespaces-and-module-design.md +0 -136
  213. package/lib/assets/docs/article/getting-start-tdd/clojure/10-higher-order-functions-and-composition.md +0 -123
  214. package/lib/assets/docs/article/getting-start-tdd/clojure/11-persistent-data-and-pipeline.md +0 -147
  215. package/lib/assets/docs/article/getting-start-tdd/clojure/12-error-handling-and-spec.md +0 -170
  216. package/lib/assets/docs/article/getting-start-tdd/clojure/index.md +0 -65
  217. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter01.md +0 -241
  218. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter02.md +0 -253
  219. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter03.md +0 -211
  220. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter04.md +0 -101
  221. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter05.md +0 -265
  222. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter06.md +0 -204
  223. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter07.md +0 -223
  224. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter08.md +0 -258
  225. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter09.md +0 -183
  226. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter10.md +0 -175
  227. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter11.md +0 -201
  228. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter12.md +0 -220
  229. package/lib/assets/docs/article/getting-start-tdd/csharp/index.md +0 -83
  230. package/lib/assets/docs/article/getting-start-tdd/elixir/01-todo-list-and-first-test.md +0 -96
  231. package/lib/assets/docs/article/getting-start-tdd/elixir/02-fake-it-and-triangulation.md +0 -104
  232. package/lib/assets/docs/article/getting-start-tdd/elixir/03-obvious-implementation-and-refactoring.md +0 -118
  233. package/lib/assets/docs/article/getting-start-tdd/elixir/04-version-control-and-conventional-commits.md +0 -105
  234. package/lib/assets/docs/article/getting-start-tdd/elixir/05-package-management-and-static-analysis.md +0 -97
  235. package/lib/assets/docs/article/getting-start-tdd/elixir/06-task-runner-and-ci-cd.md +0 -80
  236. package/lib/assets/docs/article/getting-start-tdd/elixir/07-structs-and-protocols.md +0 -119
  237. package/lib/assets/docs/article/getting-start-tdd/elixir/08-pattern-matching-and-guards.md +0 -117
  238. package/lib/assets/docs/article/getting-start-tdd/elixir/09-module-design-and-behaviours.md +0 -113
  239. package/lib/assets/docs/article/getting-start-tdd/elixir/10-higher-order-functions-and-pipeline.md +0 -187
  240. package/lib/assets/docs/article/getting-start-tdd/elixir/11-stream-and-lazy-evaluation.md +0 -151
  241. package/lib/assets/docs/article/getting-start-tdd/elixir/12-error-handling-and-with.md +0 -154
  242. package/lib/assets/docs/article/getting-start-tdd/elixir/index.md +0 -35
  243. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter01.md +0 -211
  244. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter02.md +0 -255
  245. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter03.md +0 -227
  246. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter04.md +0 -188
  247. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter05.md +0 -276
  248. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter06.md +0 -199
  249. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter07.md +0 -170
  250. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter08.md +0 -184
  251. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter09.md +0 -231
  252. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter10.md +0 -198
  253. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter11.md +0 -221
  254. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter12.md +0 -224
  255. package/lib/assets/docs/article/getting-start-tdd/fsharp/index.md +0 -71
  256. package/lib/assets/docs/article/getting-start-tdd/go/01-todo-list-and-first-test.md +0 -222
  257. package/lib/assets/docs/article/getting-start-tdd/go/02-fake-it-and-triangulation.md +0 -311
  258. package/lib/assets/docs/article/getting-start-tdd/go/03-obvious-implementation-and-refactoring.md +0 -348
  259. package/lib/assets/docs/article/getting-start-tdd/go/04-version-control-and-conventional-commits.md +0 -121
  260. package/lib/assets/docs/article/getting-start-tdd/go/05-package-management-and-static-analysis.md +0 -281
  261. package/lib/assets/docs/article/getting-start-tdd/go/06-task-runner-and-ci-cd.md +0 -242
  262. package/lib/assets/docs/article/getting-start-tdd/go/07-encapsulation-and-polymorphism.md +0 -402
  263. package/lib/assets/docs/article/getting-start-tdd/go/08-design-patterns.md +0 -430
  264. package/lib/assets/docs/article/getting-start-tdd/go/09-solid-principles-and-module-design.md +0 -408
  265. package/lib/assets/docs/article/getting-start-tdd/go/10-higher-order-functions-and-composition.md +0 -234
  266. package/lib/assets/docs/article/getting-start-tdd/go/11-immutable-data-and-pipeline.md +0 -304
  267. package/lib/assets/docs/article/getting-start-tdd/go/12-error-handling-and-type-safety.md +0 -419
  268. package/lib/assets/docs/article/getting-start-tdd/go/index.md +0 -83
  269. package/lib/assets/docs/article/getting-start-tdd/haskell/01-todo-list-and-first-test.md +0 -288
  270. package/lib/assets/docs/article/getting-start-tdd/haskell/02-fake-it-and-triangulation.md +0 -346
  271. package/lib/assets/docs/article/getting-start-tdd/haskell/03-obvious-implementation-and-refactoring.md +0 -266
  272. package/lib/assets/docs/article/getting-start-tdd/haskell/04-version-control-and-conventional-commits.md +0 -191
  273. package/lib/assets/docs/article/getting-start-tdd/haskell/05-package-management-and-static-analysis.md +0 -322
  274. package/lib/assets/docs/article/getting-start-tdd/haskell/06-task-runner-and-ci-cd.md +0 -318
  275. package/lib/assets/docs/article/getting-start-tdd/haskell/07-algebraic-data-types-and-type-classes.md +0 -421
  276. package/lib/assets/docs/article/getting-start-tdd/haskell/08-pattern-matching-and-guards.md +0 -399
  277. package/lib/assets/docs/article/getting-start-tdd/haskell/09-module-design-and-smart-constructors.md +0 -470
  278. package/lib/assets/docs/article/getting-start-tdd/haskell/10-higher-order-functions-and-currying.md +0 -443
  279. package/lib/assets/docs/article/getting-start-tdd/haskell/11-function-composition-and-point-free.md +0 -401
  280. package/lib/assets/docs/article/getting-start-tdd/haskell/12-monad-and-error-handling.md +0 -640
  281. package/lib/assets/docs/article/getting-start-tdd/haskell/index.md +0 -49
  282. package/lib/assets/docs/article/getting-start-tdd/index.md +0 -93
  283. package/lib/assets/docs/article/getting-start-tdd/integration/01-language-overview.md +0 -384
  284. package/lib/assets/docs/article/getting-start-tdd/integration/02-test-framework-comparison.md +0 -358
  285. package/lib/assets/docs/article/getting-start-tdd/integration/03-tdd-pattern-comparison.md +0 -454
  286. package/lib/assets/docs/article/getting-start-tdd/integration/04-type-system-comparison.md +0 -418
  287. package/lib/assets/docs/article/getting-start-tdd/integration/05-dev-environment-comparison.md +0 -339
  288. package/lib/assets/docs/article/getting-start-tdd/integration/06-learning-roadmap.md +0 -299
  289. package/lib/assets/docs/article/getting-start-tdd/integration/index.md +0 -69
  290. package/lib/assets/docs/article/getting-start-tdd/java/01-todo-list-and-first-test.md +0 -243
  291. package/lib/assets/docs/article/getting-start-tdd/java/02-fake-it-and-triangulation.md +0 -270
  292. package/lib/assets/docs/article/getting-start-tdd/java/03-obvious-implementation-and-refactoring.md +0 -194
  293. package/lib/assets/docs/article/getting-start-tdd/java/04-version-control-and-conventional-commits.md +0 -124
  294. package/lib/assets/docs/article/getting-start-tdd/java/05-package-management-and-static-analysis.md +0 -391
  295. package/lib/assets/docs/article/getting-start-tdd/java/06-task-runner-and-ci-cd.md +0 -281
  296. package/lib/assets/docs/article/getting-start-tdd/java/07-encapsulation-and-polymorphism.md +0 -635
  297. package/lib/assets/docs/article/getting-start-tdd/java/08-design-patterns.md +0 -402
  298. package/lib/assets/docs/article/getting-start-tdd/java/09-solid-principles-and-module-design.md +0 -319
  299. package/lib/assets/docs/article/getting-start-tdd/java/10-higher-order-functions-and-composition.md +0 -197
  300. package/lib/assets/docs/article/getting-start-tdd/java/11-immutable-data-and-pipeline.md +0 -176
  301. package/lib/assets/docs/article/getting-start-tdd/java/12-error-handling-and-type-safety.md +0 -214
  302. package/lib/assets/docs/article/getting-start-tdd/java/index.md +0 -61
  303. package/lib/assets/docs/article/getting-start-tdd/node/01-todo-list-and-first-test.md +0 -253
  304. package/lib/assets/docs/article/getting-start-tdd/node/02-fake-it-and-triangulation.md +0 -271
  305. package/lib/assets/docs/article/getting-start-tdd/node/03-obvious-implementation-and-refactoring.md +0 -178
  306. package/lib/assets/docs/article/getting-start-tdd/node/04-version-control-and-conventional-commits.md +0 -121
  307. package/lib/assets/docs/article/getting-start-tdd/node/05-package-management-and-static-analysis.md +0 -323
  308. package/lib/assets/docs/article/getting-start-tdd/node/06-task-runner-and-ci-cd.md +0 -244
  309. package/lib/assets/docs/article/getting-start-tdd/node/07-encapsulation-and-polymorphism.md +0 -336
  310. package/lib/assets/docs/article/getting-start-tdd/node/08-design-patterns.md +0 -331
  311. package/lib/assets/docs/article/getting-start-tdd/node/09-solid-principles-and-module-design.md +0 -294
  312. package/lib/assets/docs/article/getting-start-tdd/node/10-higher-order-functions-and-composition.md +0 -208
  313. package/lib/assets/docs/article/getting-start-tdd/node/11-immutable-data-and-pipeline.md +0 -216
  314. package/lib/assets/docs/article/getting-start-tdd/node/12-error-handling-and-type-safety.md +0 -304
  315. package/lib/assets/docs/article/getting-start-tdd/node/index.md +0 -56
  316. package/lib/assets/docs/article/getting-start-tdd/php/01-todo-list-and-first-test.md +0 -268
  317. package/lib/assets/docs/article/getting-start-tdd/php/02-fake-it-and-triangulation.md +0 -209
  318. package/lib/assets/docs/article/getting-start-tdd/php/03-obvious-implementation-and-refactoring.md +0 -257
  319. package/lib/assets/docs/article/getting-start-tdd/php/04-version-control-and-conventional-commits.md +0 -150
  320. package/lib/assets/docs/article/getting-start-tdd/php/05-package-management-and-static-analysis.md +0 -419
  321. package/lib/assets/docs/article/getting-start-tdd/php/06-task-runner-and-ci-cd.md +0 -330
  322. package/lib/assets/docs/article/getting-start-tdd/php/07-encapsulation-and-polymorphism.md +0 -380
  323. package/lib/assets/docs/article/getting-start-tdd/php/08-design-patterns.md +0 -461
  324. package/lib/assets/docs/article/getting-start-tdd/php/09-solid-principles-and-module-design.md +0 -468
  325. package/lib/assets/docs/article/getting-start-tdd/php/10-higher-order-functions-and-composition.md +0 -190
  326. package/lib/assets/docs/article/getting-start-tdd/php/11-immutable-data-and-pipeline.md +0 -274
  327. package/lib/assets/docs/article/getting-start-tdd/php/12-error-handling-and-type-safety.md +0 -316
  328. package/lib/assets/docs/article/getting-start-tdd/php/index.md +0 -84
  329. package/lib/assets/docs/article/getting-start-tdd/python/01-todo-list-and-first-test.md +0 -210
  330. package/lib/assets/docs/article/getting-start-tdd/python/02-fake-it-and-triangulation.md +0 -256
  331. package/lib/assets/docs/article/getting-start-tdd/python/03-obvious-implementation-and-refactoring.md +0 -208
  332. package/lib/assets/docs/article/getting-start-tdd/python/04-version-control-and-conventional-commits.md +0 -96
  333. package/lib/assets/docs/article/getting-start-tdd/python/05-package-management-and-static-analysis.md +0 -283
  334. package/lib/assets/docs/article/getting-start-tdd/python/06-task-runner-and-ci-cd.md +0 -199
  335. package/lib/assets/docs/article/getting-start-tdd/python/07-encapsulation-and-polymorphism.md +0 -217
  336. package/lib/assets/docs/article/getting-start-tdd/python/08-design-patterns.md +0 -181
  337. package/lib/assets/docs/article/getting-start-tdd/python/09-solid-principles-and-module-design.md +0 -139
  338. package/lib/assets/docs/article/getting-start-tdd/python/10-higher-order-functions-and-composition.md +0 -131
  339. package/lib/assets/docs/article/getting-start-tdd/python/11-immutable-data-and-pipeline.md +0 -125
  340. package/lib/assets/docs/article/getting-start-tdd/python/12-error-handling-and-type-safety.md +0 -135
  341. package/lib/assets/docs/article/getting-start-tdd/python/index.md +0 -55
  342. package/lib/assets/docs/article/getting-start-tdd/ruby/01-todo-list-and-first-test.md +0 -240
  343. package/lib/assets/docs/article/getting-start-tdd/ruby/02-fake-it-and-triangulation.md +0 -247
  344. package/lib/assets/docs/article/getting-start-tdd/ruby/03-obvious-implementation-and-refactoring.md +0 -237
  345. package/lib/assets/docs/article/getting-start-tdd/ruby/04-version-control-and-conventional-commits.md +0 -121
  346. package/lib/assets/docs/article/getting-start-tdd/ruby/05-package-management-and-static-analysis.md +0 -296
  347. package/lib/assets/docs/article/getting-start-tdd/ruby/06-task-runner-and-ci-cd.md +0 -257
  348. package/lib/assets/docs/article/getting-start-tdd/ruby/07-encapsulation-and-polymorphism.md +0 -288
  349. package/lib/assets/docs/article/getting-start-tdd/ruby/08-design-patterns.md +0 -338
  350. package/lib/assets/docs/article/getting-start-tdd/ruby/09-solid-principles-and-module-design.md +0 -205
  351. package/lib/assets/docs/article/getting-start-tdd/ruby/10-higher-order-functions-and-composition.md +0 -184
  352. package/lib/assets/docs/article/getting-start-tdd/ruby/11-immutable-data-and-pipeline.md +0 -246
  353. package/lib/assets/docs/article/getting-start-tdd/ruby/12-error-handling-and-type-safety.md +0 -407
  354. package/lib/assets/docs/article/getting-start-tdd/ruby/index.md +0 -83
  355. package/lib/assets/docs/article/getting-start-tdd/rust/01-todo-list-and-first-test.md +0 -220
  356. package/lib/assets/docs/article/getting-start-tdd/rust/02-fake-it-and-triangulation.md +0 -273
  357. package/lib/assets/docs/article/getting-start-tdd/rust/03-obvious-implementation-and-refactoring.md +0 -242
  358. package/lib/assets/docs/article/getting-start-tdd/rust/04-version-control-and-conventional-commits.md +0 -101
  359. package/lib/assets/docs/article/getting-start-tdd/rust/05-package-management-and-static-analysis.md +0 -221
  360. package/lib/assets/docs/article/getting-start-tdd/rust/06-task-runner-and-ci-cd.md +0 -173
  361. package/lib/assets/docs/article/getting-start-tdd/rust/07-encapsulation-and-polymorphism.md +0 -151
  362. package/lib/assets/docs/article/getting-start-tdd/rust/08-design-patterns.md +0 -154
  363. package/lib/assets/docs/article/getting-start-tdd/rust/09-solid-principles-and-module-design.md +0 -119
  364. package/lib/assets/docs/article/getting-start-tdd/rust/10-higher-order-functions-and-composition.md +0 -103
  365. package/lib/assets/docs/article/getting-start-tdd/rust/11-immutable-data-and-pipeline.md +0 -114
  366. package/lib/assets/docs/article/getting-start-tdd/rust/12-error-handling-and-type-safety.md +0 -121
  367. package/lib/assets/docs/article/getting-start-tdd/rust/index.md +0 -83
  368. package/lib/assets/docs/article/getting-start-tdd/scala/01-todo-list-and-first-test.md +0 -120
  369. package/lib/assets/docs/article/getting-start-tdd/scala/02-fake-it-and-triangulation.md +0 -116
  370. package/lib/assets/docs/article/getting-start-tdd/scala/03-obvious-implementation-and-refactoring.md +0 -108
  371. package/lib/assets/docs/article/getting-start-tdd/scala/04-version-control-and-conventional-commits.md +0 -132
  372. package/lib/assets/docs/article/getting-start-tdd/scala/05-package-management-and-static-analysis.md +0 -205
  373. package/lib/assets/docs/article/getting-start-tdd/scala/06-task-runner-and-ci-cd.md +0 -195
  374. package/lib/assets/docs/article/getting-start-tdd/scala/07-case-classes-and-traits.md +0 -148
  375. package/lib/assets/docs/article/getting-start-tdd/scala/08-pattern-matching-and-sealed-traits.md +0 -115
  376. package/lib/assets/docs/article/getting-start-tdd/scala/09-packages-and-module-design.md +0 -84
  377. package/lib/assets/docs/article/getting-start-tdd/scala/10-higher-order-functions-and-composition.md +0 -113
  378. package/lib/assets/docs/article/getting-start-tdd/scala/11-collections-and-lazy-evaluation.md +0 -103
  379. package/lib/assets/docs/article/getting-start-tdd/scala/12-error-handling-and-type-safety.md +0 -101
  380. package/lib/assets/docs/article/getting-start-tdd/scala/index.md +0 -65
  381. package/lib/assets/docs/article/grokking-concurrency/all/index.md +0 -403
  382. package/lib/assets/docs/article/grokking-concurrency/all/part-1-ch02-sequential.md +0 -563
  383. package/lib/assets/docs/article/grokking-concurrency/all/part-2-ch04-05-threads.md +0 -478
  384. package/lib/assets/docs/article/grokking-concurrency/all/part-3-ch06-multitasking.md +0 -529
  385. package/lib/assets/docs/article/grokking-concurrency/all/part-4-ch07-parallel-patterns.md +0 -429
  386. package/lib/assets/docs/article/grokking-concurrency/all/part-5-ch08-09-synchronization.md +0 -519
  387. package/lib/assets/docs/article/grokking-concurrency/all/part-6-ch10-11-nonblocking-io.md +0 -444
  388. package/lib/assets/docs/article/grokking-concurrency/all/part-7-ch12-async.md +0 -474
  389. package/lib/assets/docs/article/grokking-concurrency/all/part-8-ch13-mapreduce.md +0 -386
  390. package/lib/assets/docs/article/grokking-concurrency/clojure/index.md +0 -106
  391. package/lib/assets/docs/article/grokking-concurrency/clojure/part-1.md +0 -107
  392. package/lib/assets/docs/article/grokking-concurrency/clojure/part-2.md +0 -100
  393. package/lib/assets/docs/article/grokking-concurrency/clojure/part-3.md +0 -121
  394. package/lib/assets/docs/article/grokking-concurrency/clojure/part-4.md +0 -122
  395. package/lib/assets/docs/article/grokking-concurrency/clojure/part-5.md +0 -117
  396. package/lib/assets/docs/article/grokking-concurrency/clojure/part-6.md +0 -88
  397. package/lib/assets/docs/article/grokking-concurrency/clojure/part-7.md +0 -99
  398. package/lib/assets/docs/article/grokking-concurrency/clojure/part-8.md +0 -119
  399. package/lib/assets/docs/article/grokking-concurrency/csharp/index.md +0 -91
  400. package/lib/assets/docs/article/grokking-concurrency/csharp/part-1.md +0 -96
  401. package/lib/assets/docs/article/grokking-concurrency/csharp/part-2.md +0 -122
  402. package/lib/assets/docs/article/grokking-concurrency/csharp/part-3.md +0 -100
  403. package/lib/assets/docs/article/grokking-concurrency/csharp/part-4.md +0 -111
  404. package/lib/assets/docs/article/grokking-concurrency/csharp/part-5.md +0 -98
  405. package/lib/assets/docs/article/grokking-concurrency/csharp/part-6.md +0 -60
  406. package/lib/assets/docs/article/grokking-concurrency/csharp/part-7.md +0 -83
  407. package/lib/assets/docs/article/grokking-concurrency/csharp/part-8.md +0 -91
  408. package/lib/assets/docs/article/grokking-concurrency/fsharp/index.md +0 -55
  409. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-1.md +0 -79
  410. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-2.md +0 -102
  411. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-3.md +0 -93
  412. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-4.md +0 -109
  413. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-5.md +0 -103
  414. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-6.md +0 -92
  415. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-7.md +0 -120
  416. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-8.md +0 -106
  417. package/lib/assets/docs/article/grokking-concurrency/haskell/index.md +0 -238
  418. package/lib/assets/docs/article/grokking-concurrency/haskell/part-1.md +0 -95
  419. package/lib/assets/docs/article/grokking-concurrency/haskell/part-2.md +0 -95
  420. package/lib/assets/docs/article/grokking-concurrency/haskell/part-3.md +0 -90
  421. package/lib/assets/docs/article/grokking-concurrency/haskell/part-4.md +0 -105
  422. package/lib/assets/docs/article/grokking-concurrency/haskell/part-5.md +0 -98
  423. package/lib/assets/docs/article/grokking-concurrency/haskell/part-6.md +0 -94
  424. package/lib/assets/docs/article/grokking-concurrency/haskell/part-7.md +0 -110
  425. package/lib/assets/docs/article/grokking-concurrency/haskell/part-8.md +0 -117
  426. package/lib/assets/docs/article/grokking-concurrency/index.md +0 -66
  427. package/lib/assets/docs/article/grokking-concurrency/java/index.md +0 -92
  428. package/lib/assets/docs/article/grokking-concurrency/java/part-1.md +0 -307
  429. package/lib/assets/docs/article/grokking-concurrency/java/part-2.md +0 -333
  430. package/lib/assets/docs/article/grokking-concurrency/java/part-3.md +0 -220
  431. package/lib/assets/docs/article/grokking-concurrency/java/part-4.md +0 -212
  432. package/lib/assets/docs/article/grokking-concurrency/java/part-5.md +0 -111
  433. package/lib/assets/docs/article/grokking-concurrency/java/part-6.md +0 -68
  434. package/lib/assets/docs/article/grokking-concurrency/java/part-7.md +0 -100
  435. package/lib/assets/docs/article/grokking-concurrency/java/part-8.md +0 -100
  436. package/lib/assets/docs/article/grokking-concurrency/python/index.md +0 -303
  437. package/lib/assets/docs/article/grokking-concurrency/python/part-1.md +0 -238
  438. package/lib/assets/docs/article/grokking-concurrency/python/part-2.md +0 -417
  439. package/lib/assets/docs/article/grokking-concurrency/python/part-3.md +0 -226
  440. package/lib/assets/docs/article/grokking-concurrency/python/part-4.md +0 -298
  441. package/lib/assets/docs/article/grokking-concurrency/python/part-5.md +0 -314
  442. package/lib/assets/docs/article/grokking-concurrency/python/part-6.md +0 -296
  443. package/lib/assets/docs/article/grokking-concurrency/python/part-7.md +0 -313
  444. package/lib/assets/docs/article/grokking-concurrency/python/part-8.md +0 -359
  445. package/lib/assets/docs/article/grokking-concurrency/rust/index.md +0 -260
  446. package/lib/assets/docs/article/grokking-concurrency/rust/part-1.md +0 -107
  447. package/lib/assets/docs/article/grokking-concurrency/rust/part-2.md +0 -119
  448. package/lib/assets/docs/article/grokking-concurrency/rust/part-3.md +0 -125
  449. package/lib/assets/docs/article/grokking-concurrency/rust/part-4.md +0 -174
  450. package/lib/assets/docs/article/grokking-concurrency/rust/part-5.md +0 -157
  451. package/lib/assets/docs/article/grokking-concurrency/rust/part-6.md +0 -93
  452. package/lib/assets/docs/article/grokking-concurrency/rust/part-7.md +0 -132
  453. package/lib/assets/docs/article/grokking-concurrency/rust/part-8.md +0 -154
  454. package/lib/assets/docs/article/grokking-concurrency/scala/index.md +0 -59
  455. package/lib/assets/docs/article/grokking-concurrency/scala/part-1.md +0 -77
  456. package/lib/assets/docs/article/grokking-concurrency/scala/part-2.md +0 -111
  457. package/lib/assets/docs/article/grokking-concurrency/scala/part-3.md +0 -92
  458. package/lib/assets/docs/article/grokking-concurrency/scala/part-4.md +0 -109
  459. package/lib/assets/docs/article/grokking-concurrency/scala/part-5.md +0 -118
  460. package/lib/assets/docs/article/grokking-concurrency/scala/part-6.md +0 -82
  461. package/lib/assets/docs/article/grokking-concurrency/scala/part-7.md +0 -130
  462. package/lib/assets/docs/article/grokking-concurrency/scala/part-8.md +0 -128
  463. package/lib/assets/docs/article/grokkingfp/all/index.md +0 -368
  464. package/lib/assets/docs/article/grokkingfp/all/part-1-ch01-fp-introduction.md +0 -539
  465. package/lib/assets/docs/article/grokkingfp/all/part-1-ch02-pure-functions.md +0 -932
  466. package/lib/assets/docs/article/grokkingfp/all/part-2-ch03-immutable-data.md +0 -1137
  467. package/lib/assets/docs/article/grokkingfp/all/part-2-ch04-higher-order-functions.md +0 -1113
  468. package/lib/assets/docs/article/grokkingfp/all/part-2-ch05-flatmap.md +0 -1035
  469. package/lib/assets/docs/article/grokkingfp/all/part-3-ch06-option.md +0 -794
  470. package/lib/assets/docs/article/grokkingfp/all/part-3-ch07-either-adt.md +0 -880
  471. package/lib/assets/docs/article/grokkingfp/all/part-4-ch08-io-monad.md +0 -981
  472. package/lib/assets/docs/article/grokkingfp/all/part-4-ch09-streams.md +0 -935
  473. package/lib/assets/docs/article/grokkingfp/all/part-5-ch10-concurrency.md +0 -879
  474. package/lib/assets/docs/article/grokkingfp/all/part-6-ch11-application.md +0 -724
  475. package/lib/assets/docs/article/grokkingfp/all/part-6-ch12-testing.md +0 -635
  476. package/lib/assets/docs/article/grokkingfp/all/writing-plan.md +0 -721
  477. package/lib/assets/docs/article/grokkingfp/clojure/index.md +0 -276
  478. package/lib/assets/docs/article/grokkingfp/clojure/part-1.md +0 -676
  479. package/lib/assets/docs/article/grokkingfp/clojure/part-2.md +0 -652
  480. package/lib/assets/docs/article/grokkingfp/clojure/part-3.md +0 -629
  481. package/lib/assets/docs/article/grokkingfp/clojure/part-4.md +0 -706
  482. package/lib/assets/docs/article/grokkingfp/clojure/part-5.md +0 -760
  483. package/lib/assets/docs/article/grokkingfp/clojure/part-6.md +0 -730
  484. package/lib/assets/docs/article/grokkingfp/csharp/index.md +0 -246
  485. package/lib/assets/docs/article/grokkingfp/csharp/part-1.md +0 -820
  486. package/lib/assets/docs/article/grokkingfp/csharp/part-2.md +0 -980
  487. package/lib/assets/docs/article/grokkingfp/csharp/part-3.md +0 -990
  488. package/lib/assets/docs/article/grokkingfp/csharp/part-4.md +0 -958
  489. package/lib/assets/docs/article/grokkingfp/csharp/part-5.md +0 -956
  490. package/lib/assets/docs/article/grokkingfp/csharp/part-6.md +0 -748
  491. package/lib/assets/docs/article/grokkingfp/elixir/index.md +0 -203
  492. package/lib/assets/docs/article/grokkingfp/elixir/part-1.md +0 -721
  493. package/lib/assets/docs/article/grokkingfp/elixir/part-2.md +0 -847
  494. package/lib/assets/docs/article/grokkingfp/elixir/part-3.md +0 -994
  495. package/lib/assets/docs/article/grokkingfp/elixir/part-4.md +0 -983
  496. package/lib/assets/docs/article/grokkingfp/elixir/part-5.md +0 -1295
  497. package/lib/assets/docs/article/grokkingfp/elixir/part-6.md +0 -1058
  498. package/lib/assets/docs/article/grokkingfp/fsharp/index.md +0 -210
  499. package/lib/assets/docs/article/grokkingfp/fsharp/part-1.md +0 -723
  500. package/lib/assets/docs/article/grokkingfp/fsharp/part-2.md +0 -970
  501. package/lib/assets/docs/article/grokkingfp/fsharp/part-3.md +0 -981
  502. package/lib/assets/docs/article/grokkingfp/fsharp/part-4.md +0 -841
  503. package/lib/assets/docs/article/grokkingfp/fsharp/part-5.md +0 -920
  504. package/lib/assets/docs/article/grokkingfp/fsharp/part-6.md +0 -931
  505. package/lib/assets/docs/article/grokkingfp/haskell/index.md +0 -234
  506. package/lib/assets/docs/article/grokkingfp/haskell/part-1.md +0 -600
  507. package/lib/assets/docs/article/grokkingfp/haskell/part-2.md +0 -875
  508. package/lib/assets/docs/article/grokkingfp/haskell/part-3.md +0 -924
  509. package/lib/assets/docs/article/grokkingfp/haskell/part-4.md +0 -887
  510. package/lib/assets/docs/article/grokkingfp/haskell/part-5.md +0 -854
  511. package/lib/assets/docs/article/grokkingfp/haskell/part-6.md +0 -853
  512. package/lib/assets/docs/article/grokkingfp/index.md +0 -143
  513. package/lib/assets/docs/article/grokkingfp/java/index.md +0 -211
  514. package/lib/assets/docs/article/grokkingfp/java/part-1.md +0 -657
  515. package/lib/assets/docs/article/grokkingfp/java/part-2.md +0 -684
  516. package/lib/assets/docs/article/grokkingfp/java/part-3.md +0 -681
  517. package/lib/assets/docs/article/grokkingfp/java/part-4.md +0 -780
  518. package/lib/assets/docs/article/grokkingfp/java/part-5.md +0 -968
  519. package/lib/assets/docs/article/grokkingfp/java/part-6.md +0 -1337
  520. package/lib/assets/docs/article/grokkingfp/python/index.md +0 -258
  521. package/lib/assets/docs/article/grokkingfp/python/part-1.md +0 -452
  522. package/lib/assets/docs/article/grokkingfp/python/part-2.md +0 -967
  523. package/lib/assets/docs/article/grokkingfp/python/part-3.md +0 -1013
  524. package/lib/assets/docs/article/grokkingfp/python/part-4.md +0 -774
  525. package/lib/assets/docs/article/grokkingfp/python/part-5.md +0 -756
  526. package/lib/assets/docs/article/grokkingfp/python/part-6.md +0 -870
  527. package/lib/assets/docs/article/grokkingfp/ruby/index.md +0 -330
  528. package/lib/assets/docs/article/grokkingfp/ruby/part-1.md +0 -764
  529. package/lib/assets/docs/article/grokkingfp/ruby/part-2.md +0 -947
  530. package/lib/assets/docs/article/grokkingfp/ruby/part-3.md +0 -955
  531. package/lib/assets/docs/article/grokkingfp/ruby/part-4.md +0 -930
  532. package/lib/assets/docs/article/grokkingfp/ruby/part-5.md +0 -917
  533. package/lib/assets/docs/article/grokkingfp/ruby/part-6.md +0 -1421
  534. package/lib/assets/docs/article/grokkingfp/rust/index.md +0 -242
  535. package/lib/assets/docs/article/grokkingfp/rust/part-1.md +0 -643
  536. package/lib/assets/docs/article/grokkingfp/rust/part-2.md +0 -1069
  537. package/lib/assets/docs/article/grokkingfp/rust/part-3.md +0 -1003
  538. package/lib/assets/docs/article/grokkingfp/rust/part-4.md +0 -582
  539. package/lib/assets/docs/article/grokkingfp/rust/part-5.md +0 -714
  540. package/lib/assets/docs/article/grokkingfp/rust/part-6.md +0 -517
  541. package/lib/assets/docs/article/grokkingfp/scala/index.md +0 -171
  542. package/lib/assets/docs/article/grokkingfp/scala/part-1.md +0 -552
  543. package/lib/assets/docs/article/grokkingfp/scala/part-2.md +0 -955
  544. package/lib/assets/docs/article/grokkingfp/scala/part-3.md +0 -928
  545. package/lib/assets/docs/article/grokkingfp/scala/part-4.md +0 -751
  546. package/lib/assets/docs/article/grokkingfp/scala/part-5.md +0 -731
  547. package/lib/assets/docs/article/grokkingfp/scala/part-6.md +0 -876
  548. package/lib/assets/docs/article/grokkingfp/typescript/index.md +0 -273
  549. package/lib/assets/docs/article/grokkingfp/typescript/part-1.md +0 -570
  550. package/lib/assets/docs/article/grokkingfp/typescript/part-2.md +0 -1138
  551. package/lib/assets/docs/article/grokkingfp/typescript/part-3.md +0 -851
  552. package/lib/assets/docs/article/grokkingfp/typescript/part-4.md +0 -1096
  553. package/lib/assets/docs/article/grokkingfp/typescript/part-5.md +0 -726
  554. package/lib/assets/docs/article/grokkingfp/typescript/part-6.md +0 -991
  555. package/lib/assets/docs/article/practical-database-design/index.md +0 -121
  556. package/lib/assets/docs/article/practical-database-design/part1/chapter01.md +0 -297
  557. package/lib/assets/docs/article/practical-database-design/part1/chapter02.md +0 -527
  558. package/lib/assets/docs/article/practical-database-design/part1/chapter03.md +0 -566
  559. package/lib/assets/docs/article/practical-database-design/part2/chapter04.md +0 -933
  560. package/lib/assets/docs/article/practical-database-design/part2/chapter05.md +0 -1636
  561. package/lib/assets/docs/article/practical-database-design/part2/chapter06.md +0 -2725
  562. package/lib/assets/docs/article/practical-database-design/part2/chapter07.md +0 -2091
  563. package/lib/assets/docs/article/practical-database-design/part2/chapter08.md +0 -2114
  564. package/lib/assets/docs/article/practical-database-design/part2/chapter09.md +0 -2040
  565. package/lib/assets/docs/article/practical-database-design/part2/chapter10.md +0 -1396
  566. package/lib/assets/docs/article/practical-database-design/part2/chapter11.md +0 -1686
  567. package/lib/assets/docs/article/practical-database-design/part2/chapter12.md +0 -1426
  568. package/lib/assets/docs/article/practical-database-design/part2/chapter13.md +0 -1443
  569. package/lib/assets/docs/article/practical-database-design/part3/chapter14.md +0 -676
  570. package/lib/assets/docs/article/practical-database-design/part3/chapter15.md +0 -1634
  571. package/lib/assets/docs/article/practical-database-design/part3/chapter16.md +0 -1924
  572. package/lib/assets/docs/article/practical-database-design/part3/chapter17.md +0 -1717
  573. package/lib/assets/docs/article/practical-database-design/part3/chapter18.md +0 -2104
  574. package/lib/assets/docs/article/practical-database-design/part3/chapter19.md +0 -1132
  575. package/lib/assets/docs/article/practical-database-design/part3/chapter20.md +0 -1040
  576. package/lib/assets/docs/article/practical-database-design/part3/chapter21.md +0 -1391
  577. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter14-orm.md +0 -1000
  578. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter15-orm.md +0 -1309
  579. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter16-orm.md +0 -1175
  580. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter17-orm.md +0 -1593
  581. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter18-orm.md +0 -1192
  582. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter19-orm.md +0 -1025
  583. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter20-orm.md +0 -1762
  584. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter21-orm.md +0 -1456
  585. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter22-orm.md +0 -1887
  586. package/lib/assets/docs/article/practical-database-design/part4/chapter22.md +0 -974
  587. package/lib/assets/docs/article/practical-database-design/part4/chapter23.md +0 -2078
  588. package/lib/assets/docs/article/practical-database-design/part4/chapter24.md +0 -2448
  589. package/lib/assets/docs/article/practical-database-design/part4/chapter25.md +0 -3670
  590. package/lib/assets/docs/article/practical-database-design/part4/chapter26.md +0 -2925
  591. package/lib/assets/docs/article/practical-database-design/part4/chapter27.md +0 -3114
  592. package/lib/assets/docs/article/practical-database-design/part4/chapter28.md +0 -2706
  593. package/lib/assets/docs/article/practical-database-design/part4/chapter29.md +0 -2552
  594. package/lib/assets/docs/article/practical-database-design/part4/chapter30.md +0 -2188
  595. package/lib/assets/docs/article/practical-database-design/part4/chapter31.md +0 -1200
  596. package/lib/assets/docs/article/practical-database-design/part4/chapter32.md +0 -2109
  597. package/lib/assets/docs/article/practical-database-design/part5/chapter33.md +0 -1041
  598. package/lib/assets/docs/article/practical-database-design/part5/chapter34.md +0 -1618
  599. package/lib/assets/docs/article/practical-database-design/part5/chapter35.md +0 -1462
  600. package/lib/assets/docs/article/practical-database-design/part5/chapter36.md +0 -1301
  601. package/lib/assets/docs/article/practical-database-design/part5/chapter37.md +0 -1479
  602. package/lib/assets/docs/article/practical-database-design/part5/chapter38.md +0 -1707
  603. package/lib/assets/docs/article/practical-database-design/part5/chapter39.md +0 -2343
  604. package/lib/assets/docs/article/practical-database-design/study/study2-1.md +0 -1702
  605. package/lib/assets/docs/article/practical-database-design/study/study2-2.md +0 -1356
  606. package/lib/assets/docs/article/practical-database-design/study/study2-3.md +0 -2053
  607. package/lib/assets/docs/article/practical-database-design/study/study2-4.md +0 -2238
  608. package/lib/assets/docs/article/practical-database-design/study/study2-5.md +0 -2427
  609. package/lib/assets/docs/article/practical-database-design/study/study3-1.md +0 -2214
  610. package/lib/assets/docs/article/practical-database-design/study/study3-2.md +0 -2230
  611. package/lib/assets/docs/article/practical-database-design/study/study3-3.md +0 -2262
  612. package/lib/assets/docs/article/practical-database-design/study/study3-4.md +0 -2115
  613. package/lib/assets/docs/article/practical-database-design/study/study3-5.md +0 -2516
  614. package/lib/assets/docs/article/practical-database-design/study/study4-1.md +0 -2596
  615. package/lib/assets/docs/article/practical-database-design/study/study4-2.md +0 -2084
  616. package/lib/assets/docs/article/practical-database-design/study/study4-3.md +0 -1814
  617. package/lib/assets/docs/article/practical-database-design/study/study4-4.md +0 -1904
  618. package/lib/assets/docs/article/practical-database-design/study/study4-5.md +0 -2887
@@ -1,1041 +0,0 @@
1
- ---
2
- type: Article
3
- title: "第33章:システム統合の概要"
4
- description: "本章から第5部「エンタープライズインテグレーション」の解説に入ります。"
5
- tags: [article, practical-database-design, part5]
6
- status: stable
7
- generated: { by: human:kakimomokuri, at: 2026-03-30T08:34:28Z }
8
- ---
9
-
10
- # 第33章:システム統合の概要
11
-
12
- 本章から第5部「エンタープライズインテグレーション」の解説に入ります。これまで解説してきた販売管理システム、財務会計システム、生産管理システムを統合し、企業全体として整合性のあるシステムを構築するための考え方とパターンについて解説します。
13
-
14
- ---
15
-
16
- ## 33.1 なぜシステム統合が必要か
17
-
18
- ### サイロ化した基幹業務システムの課題
19
-
20
- 企業の基幹業務システムは、歴史的に各業務部門のニーズに応じて個別に構築されてきました。この結果、システム間の連携が不十分な「サイロ化」した状態に陥りやすくなっています。
21
-
22
- ```plantuml
23
- @startuml
24
- title サイロ化した基幹業務システムの課題
25
-
26
- rectangle "営業部門" as sales_dept {
27
- database "販売管理DB" as sales_db
28
- rectangle "販売管理\nシステム" as sales_sys
29
- }
30
-
31
- rectangle "経理部門" as finance_dept {
32
- database "会計DB" as finance_db
33
- rectangle "財務会計\nシステム" as finance_sys
34
- }
35
-
36
- rectangle "製造部門" as mfg_dept {
37
- database "生産管理DB" as mfg_db
38
- rectangle "生産管理\nシステム" as mfg_sys
39
- }
40
-
41
- sales_sys --> sales_db
42
- finance_sys --> finance_db
43
- mfg_sys --> mfg_db
44
-
45
- note right of sales_dept
46
- ・顧客マスタの重複管理
47
- ・売上データの手動転記
48
- ・在庫情報の不整合
49
- end note
50
-
51
- note right of finance_dept
52
- ・仕訳入力の二重作業
53
- ・月次締めの遅延
54
- ・データ不一致の調整作業
55
- end note
56
-
57
- note right of mfg_dept
58
- ・受注情報の遅延
59
- ・在庫の二重管理
60
- ・原価情報の不正確さ
61
- end note
62
-
63
- @enduml
64
- ```
65
-
66
- サイロ化によって発生する主な課題は以下の通りです。
67
-
68
- | 課題カテゴリ | 具体的な問題 | 影響 |
69
- |------------|------------|------|
70
- | データ重複 | 同じマスタデータが複数システムに存在 | 更新漏れ、データ不整合 |
71
- | 手作業連携 | システム間のデータ転記が手動 | 作業コスト増、転記ミス |
72
- | 整合性欠如 | 各システムのデータが一致しない | 経営判断の遅延、誤り |
73
- | リアルタイム性欠如 | 情報の伝達に時間がかかる | 機会損失、過剰在庫 |
74
-
75
- ### データの一貫性と整合性の確保
76
-
77
- システム統合の最大の目的は、企業全体でのデータの一貫性と整合性を確保することです。
78
-
79
- ```plantuml
80
- @startuml
81
- title データの一貫性確保の全体像
82
-
83
- rectangle "統合された基幹業務システム" {
84
- rectangle "販売管理" as sales
85
- rectangle "財務会計" as finance
86
- rectangle "生産管理" as production
87
-
88
- database "共通マスタ" as master {
89
- rectangle "取引先マスタ"
90
- rectangle "商品/品目マスタ"
91
- rectangle "部門マスタ"
92
- }
93
- }
94
-
95
- rectangle "統合レイヤー" as integration {
96
- rectangle "イベントバス" as events
97
- rectangle "API Gateway" as api
98
- rectangle "MDM" as mdm
99
- }
100
-
101
- sales <--> integration
102
- finance <--> integration
103
- production <--> integration
104
- integration <--> master
105
-
106
- note bottom of integration
107
- ・リアルタイムイベント連携
108
- ・マスタデータの一元管理
109
- ・トランザクション整合性
110
- end note
111
-
112
- @enduml
113
- ```
114
-
115
- #### データ一貫性の3つのレベル
116
-
117
- ```plantuml
118
- @startuml
119
- title データ一貫性のレベル
120
-
121
- package "強い一貫性 (Strong Consistency)" {
122
- note as N1
123
- ・分散トランザクション
124
- ・2フェーズコミット
125
- ・リアルタイム同期
126
-
127
- 適用例:
128
- - 在庫引当と受注確定
129
- - 請求と売掛金計上
130
- end note
131
- }
132
-
133
- package "結果整合性 (Eventual Consistency)" {
134
- note as N2
135
- ・非同期メッセージング
136
- ・補償トランザクション
137
- ・最終的な整合性
138
-
139
- 適用例:
140
- - 売上から仕訳への自動転記
141
- - 実績から原価への集計
142
- end note
143
- }
144
-
145
- package "弱い一貫性 (Weak Consistency)" {
146
- note as N3
147
- ・バッチ処理による同期
148
- ・定期的な突合
149
- ・差異分析と調整
150
-
151
- 適用例:
152
- - 月次締め処理
153
- - マスタ同期バッチ
154
- end note
155
- }
156
-
157
- N1 -[hidden]-> N2
158
- N2 -[hidden]-> N3
159
-
160
- @enduml
161
- ```
162
-
163
- ### リアルタイム連携とバッチ連携
164
-
165
- システム統合における連携方式は、業務要件に応じて適切に選択する必要があります。
166
-
167
- ```plantuml
168
- @startuml
169
- title リアルタイム連携とバッチ連携の比較
170
-
171
- rectangle "リアルタイム連携" as realtime {
172
- rectangle "イベント駆動" as event
173
- rectangle "API 呼び出し" as api
174
- rectangle "メッセージング" as messaging
175
- }
176
-
177
- rectangle "バッチ連携" as batch {
178
- rectangle "ファイル連携" as file
179
- rectangle "ETL 処理" as etl
180
- rectangle "DB 連携" as db
181
- }
182
-
183
- note right of realtime
184
- 【特徴】
185
- ・即座にデータ反映
186
- ・トランザクション単位
187
- ・高い整合性
188
-
189
- 【適用例】
190
- ・受注→在庫引当
191
- ・出荷→売上計上
192
- ・仕入→買掛金計上
193
- end note
194
-
195
- note right of batch
196
- 【特徴】
197
- ・一括処理で効率的
198
- ・大量データに適する
199
- ・システム負荷を分散
200
-
201
- 【適用例】
202
- ・月次締め処理
203
- ・日次集計処理
204
- ・マスタ同期
205
- end note
206
-
207
- @enduml
208
- ```
209
-
210
- #### 連携方式の選択基準
211
-
212
- | 要件 | リアルタイム連携 | バッチ連携 |
213
- |-----|----------------|-----------|
214
- | データ鮮度 | 即座に反映が必要 | 定期的な反映で可 |
215
- | 処理量 | トランザクション単位 | 大量データの一括処理 |
216
- | 可用性要件 | 高可用性が必要 | 一時的な遅延許容可 |
217
- | 整合性要件 | 強い一貫性が必要 | 結果整合性で可 |
218
- | システム負荷 | 常時負荷発生 | 負荷を時間帯で分散 |
219
-
220
- ---
221
-
222
- ## 33.2 境界づけられたコンテキスト
223
-
224
- ### 境界づけられたコンテキスト(Bounded Context)とは
225
-
226
- ドメイン駆動設計(DDD)における「境界づけられたコンテキスト」は、特定のドメインモデルが適用される範囲を明確に定義する概念です。同じ用語でも、コンテキストによって意味や属性が異なることがあります。
227
-
228
- ```plantuml
229
- @startuml
230
- title 境界づけられたコンテキストの概念
231
-
232
- package "販売コンテキスト" as sales_ctx {
233
- class "商品" as sales_product {
234
- +商品コード
235
- +商品名
236
- +販売単価
237
- +在庫数
238
- }
239
- class "顧客" as customer {
240
- +顧客コード
241
- +顧客名
242
- +与信限度額
243
- }
244
- }
245
-
246
- package "生産コンテキスト" as prod_ctx {
247
- class "品目" as item {
248
- +品目コード
249
- +品目名
250
- +製造リードタイム
251
- +安全在庫数
252
- }
253
- class "BOM" as bom {
254
- +親品目
255
- +子品目
256
- +必要量
257
- }
258
- }
259
-
260
- package "会計コンテキスト" as acc_ctx {
261
- class "勘定科目" as account {
262
- +科目コード
263
- +科目名
264
- +BSPL区分
265
- }
266
- class "取引先" as partner {
267
- +取引先コード
268
- +取引先名
269
- +債権債務区分
270
- }
271
- }
272
-
273
- note bottom of sales_ctx
274
- 「商品」は販売価格と
275
- 在庫数で管理
276
- end note
277
-
278
- note bottom of prod_ctx
279
- 「品目」は製造観点で
280
- リードタイムとBOMで管理
281
- end note
282
-
283
- note bottom of acc_ctx
284
- 「取引先」は会計観点で
285
- 債権・債務で管理
286
- end note
287
-
288
- @enduml
289
- ```
290
-
291
- ### 基幹業務システムにおけるコンテキストの識別
292
-
293
- 本書で扱う基幹業務システムは、以下の3つの主要な境界づけられたコンテキストで構成されます。
294
-
295
- ```plantuml
296
- @startuml
297
- title 基幹業務システムのコンテキスト識別
298
-
299
- package "販売コンテキスト (Sales Context)" as sales {
300
- rectangle "受注管理" as order
301
- rectangle "出荷管理" as shipment
302
- rectangle "売上管理" as sales_mgmt
303
- rectangle "債権管理" as receivable
304
- rectangle "調達管理" as procurement
305
- rectangle "在庫管理\n(販売)" as sales_inv
306
- rectangle "債務管理" as payable
307
- }
308
-
309
- package "会計コンテキスト (Accounting Context)" as accounting {
310
- rectangle "勘定科目管理" as account_mgmt
311
- rectangle "仕訳管理" as journal
312
- rectangle "自動仕訳" as auto_journal
313
- rectangle "残高管理" as balance
314
- rectangle "決算処理" as closing
315
- }
316
-
317
- package "生産コンテキスト (Production Context)" as production {
318
- rectangle "生産計画" as plan
319
- rectangle "購買管理" as purchase
320
- rectangle "工程管理" as process
321
- rectangle "在庫管理\n(生産)" as prod_inv
322
- rectangle "品質管理" as quality
323
- rectangle "原価管理" as cost
324
- }
325
-
326
- sales --> accounting : 売上仕訳
327
- sales --> production : 受注情報
328
- production --> accounting : 原価仕訳
329
- production --> sales : 完成品在庫
330
-
331
- @enduml
332
- ```
333
-
334
- #### 販売コンテキスト
335
-
336
- 販売コンテキストは、顧客との取引に関するすべての業務を管理します。
337
-
338
- ```plantuml
339
- @startuml
340
- title 販売コンテキストのドメインモデル
341
-
342
- class "受注" as Order {
343
- +受注番号
344
- +受注日
345
- +顧客コード
346
- +合計金額
347
- +ステータス
348
- --
349
- +受注確定()
350
- +キャンセル()
351
- }
352
-
353
- class "受注明細" as OrderLine {
354
- +行番号
355
- +商品コード
356
- +数量
357
- +単価
358
- +金額
359
- }
360
-
361
- class "出荷指示" as ShipmentOrder {
362
- +出荷番号
363
- +出荷日
364
- +出荷先
365
- +ステータス
366
- --
367
- +出荷確定()
368
- }
369
-
370
- class "売上" as Sales {
371
- +売上番号
372
- +売上日
373
- +売上金額
374
- +消費税額
375
- --
376
- +計上()
377
- +取消()
378
- }
379
-
380
- Order "1" -- "*" OrderLine
381
- Order "1" -- "0..1" ShipmentOrder
382
- ShipmentOrder "1" -- "0..1" Sales
383
-
384
- note right of Order
385
- 集約ルート
386
- 受注全体のライフサイクル管理
387
- end note
388
-
389
- @enduml
390
- ```
391
-
392
- #### 会計コンテキスト
393
-
394
- 会計コンテキストは、企業の財務情報を正確に記録・管理します。
395
-
396
- ```plantuml
397
- @startuml
398
- title 会計コンテキストのドメインモデル
399
-
400
- class "仕訳伝票" as Journal {
401
- +伝票番号
402
- +起票日
403
- +伝票区分
404
- +ステータス
405
- --
406
- +登録()
407
- +承認()
408
- +取消()
409
- }
410
-
411
- class "仕訳明細" as JournalLine {
412
- +行番号
413
- +摘要
414
- }
415
-
416
- class "仕訳貸借明細" as JournalEntry {
417
- +貸借区分
418
- +勘定科目
419
- +金額
420
- +部門
421
- }
422
-
423
- class "勘定科目" as Account {
424
- +科目コード
425
- +科目名
426
- +BSPL区分
427
- +貸借区分
428
- }
429
-
430
- class "月次残高" as MonthlyBalance {
431
- +年月
432
- +科目コード
433
- +借方合計
434
- +貸方合計
435
- +残高
436
- }
437
-
438
- Journal "1" -- "*" JournalLine
439
- JournalLine "1" -- "2..*" JournalEntry
440
- JournalEntry "*" -- "1" Account
441
- Account "1" -- "*" MonthlyBalance
442
-
443
- note right of Journal
444
- 集約ルート
445
- 貸借一致の整合性を保証
446
- end note
447
-
448
- @enduml
449
- ```
450
-
451
- #### 生産コンテキスト
452
-
453
- 生産コンテキストは、製造業務の計画から実績管理までを担当します。
454
-
455
- ```plantuml
456
- @startuml
457
- title 生産コンテキストのドメインモデル
458
-
459
- class "製造オーダ" as WorkOrder {
460
- +オーダ番号
461
- +品目コード
462
- +計画数量
463
- +開始日
464
- +完了日
465
- +ステータス
466
- --
467
- +発行()
468
- +着手()
469
- +完了()
470
- }
471
-
472
- class "作業指示" as WorkInstruction {
473
- +指示番号
474
- +工程コード
475
- +作業日
476
- +計画工数
477
- }
478
-
479
- class "完成実績" as CompletionResult {
480
- +実績番号
481
- +完成数量
482
- +良品数
483
- +不良数
484
- +実績工数
485
- }
486
-
487
- class "品目" as Item {
488
- +品目コード
489
- +品目名
490
- +品目区分
491
- +リードタイム
492
- }
493
-
494
- class "BOM" as BOM {
495
- +親品目
496
- +子品目
497
- +必要量
498
- +歩留率
499
- }
500
-
501
- WorkOrder "1" -- "*" WorkInstruction
502
- WorkInstruction "1" -- "0..1" CompletionResult
503
- WorkOrder "*" -- "1" Item
504
- Item "1" -- "*" BOM : 親品目
505
-
506
- note right of WorkOrder
507
- 集約ルート
508
- 製造ライフサイクル管理
509
- end note
510
-
511
- @enduml
512
- ```
513
-
514
- ### コンテキストマップの作成
515
-
516
- コンテキストマップは、複数の境界づけられたコンテキスト間の関係を視覚化したものです。
517
-
518
- ```plantuml
519
- @startuml
520
- title 基幹業務システムのコンテキストマップ
521
-
522
- skinparam rectangle {
523
- BackgroundColor<<upstream>> LightBlue
524
- BackgroundColor<<downstream>> LightYellow
525
- BackgroundColor<<shared>> LightGreen
526
- }
527
-
528
- rectangle "販売コンテキスト" as sales <<upstream>> {
529
- rectangle "受注" as order
530
- rectangle "売上" as revenue
531
- rectangle "債権" as receivable
532
- }
533
-
534
- rectangle "会計コンテキスト" as accounting <<downstream>> {
535
- rectangle "仕訳" as journal
536
- rectangle "残高" as balance
537
- }
538
-
539
- rectangle "生産コンテキスト" as production <<upstream>> {
540
- rectangle "製造" as manufacturing
541
- rectangle "原価" as cost
542
- }
543
-
544
- rectangle "共有カーネル" as shared <<shared>> {
545
- rectangle "取引先マスタ"
546
- rectangle "部門マスタ"
547
- }
548
-
549
- sales -down-> accounting : "U/D\n自動仕訳\n(Published Language)"
550
- production -down-> accounting : "U/D\n原価仕訳\n(Published Language)"
551
- sales -right-> production : "Customer/Supplier\n受注連携"
552
-
553
- sales --> shared
554
- accounting --> shared
555
- production --> shared
556
-
557
- note right of sales
558
- 【Upstream】
559
- 売上イベントを発行
560
- end note
561
-
562
- note right of accounting
563
- 【Downstream】
564
- 売上/原価イベントを購読
565
- 自動仕訳を生成
566
- end note
567
-
568
- note bottom of shared
569
- 【Shared Kernel】
570
- 全コンテキスト共通の
571
- マスタデータ
572
- end note
573
-
574
- @enduml
575
- ```
576
-
577
- ### コンテキスト間の関係パターン
578
-
579
- ドメイン駆動設計では、コンテキスト間の関係を表す以下のパターンが定義されています。
580
-
581
- #### 共有カーネル(Shared Kernel)
582
-
583
- ```plantuml
584
- @startuml
585
- title 共有カーネルパターン
586
-
587
- package "販売コンテキスト" as sales {
588
- class "販売サービス"
589
- }
590
-
591
- package "生産コンテキスト" as production {
592
- class "生産サービス"
593
- }
594
-
595
- package "共有カーネル" as kernel {
596
- class "取引先" {
597
- +取引先コード
598
- +取引先名
599
- +住所
600
- }
601
- class "部門" {
602
- +部門コード
603
- +部門名
604
- +階層
605
- }
606
- }
607
-
608
- "販売サービス" --> "取引先"
609
- "販売サービス" --> "部門"
610
- "生産サービス" --> "取引先"
611
- "生産サービス" --> "部門"
612
-
613
- note bottom of kernel
614
- 両コンテキストで
615
- 共有するコアモデル
616
- 変更は協調して行う
617
- end note
618
-
619
- @enduml
620
- ```
621
-
622
- #### 顧客/供給者(Customer/Supplier)
623
-
624
- ```plantuml
625
- @startuml
626
- title 顧客/供給者パターン
627
-
628
- package "販売コンテキスト (Upstream/Supplier)" as sales {
629
- class "受注サービス" {
630
- +受注確定()
631
- +受注情報取得()
632
- }
633
- class "受注" {
634
- +受注番号
635
- +商品コード
636
- +数量
637
- +納期
638
- }
639
- }
640
-
641
- package "生産コンテキスト (Downstream/Customer)" as production {
642
- class "生産計画サービス" {
643
- +受注取込()
644
- +計画立案()
645
- }
646
- class "生産計画" {
647
- +計画番号
648
- +品目コード
649
- +計画数量
650
- }
651
- }
652
-
653
- "受注サービス" --> "受注"
654
- "生産計画サービス" --> "受注サービス" : 受注情報取得
655
- "生産計画サービス" --> "生産計画"
656
-
657
- note right of sales
658
- 【Supplier】
659
- 下流の要件を考慮して
660
- インターフェースを提供
661
- end note
662
-
663
- note right of production
664
- 【Customer】
665
- 上流に要件を伝え
666
- 提供されたAPIを利用
667
- end note
668
-
669
- @enduml
670
- ```
671
-
672
- #### 腐敗防止層(Anti-Corruption Layer)
673
-
674
- ```plantuml
675
- @startuml
676
- title 腐敗防止層パターン
677
-
678
- package "会計コンテキスト" as accounting {
679
- class "仕訳サービス" {
680
- +仕訳登録()
681
- }
682
- class "仕訳" {
683
- +伝票番号
684
- +科目コード
685
- +金額
686
- }
687
- }
688
-
689
- package "腐敗防止層 (ACL)" as acl {
690
- class "売上仕訳変換サービス" {
691
- +変換(売上イベント)
692
- }
693
- class "売上仕訳DTO" {
694
- +売上番号
695
- +売上日
696
- +明細リスト
697
- }
698
- }
699
-
700
- package "販売コンテキスト" as sales {
701
- class "売上" {
702
- +売上番号
703
- +売上日
704
- +顧客コード
705
- +商品情報
706
- +金額
707
- }
708
- }
709
-
710
- "仕訳サービス" --> "仕訳"
711
- "仕訳サービス" <-- "売上仕訳変換サービス"
712
- "売上仕訳変換サービス" --> "売上仕訳DTO"
713
- "売上仕訳変換サービス" ..> "売上" : 変換
714
-
715
- note right of acl
716
- 【ACL】
717
- 外部コンテキストのモデルを
718
- 自コンテキストのモデルに変換
719
- 外部の変更から保護
720
- end note
721
-
722
- @enduml
723
- ```
724
-
725
- #### 公開ホストサービス(Open Host Service)
726
-
727
- ```plantuml
728
- @startuml
729
- title 公開ホストサービスパターン
730
-
731
- package "販売コンテキスト" as sales {
732
- class "販売API" <<Open Host Service>> {
733
- +GET /orders/{id}
734
- +POST /orders
735
- +GET /sales/{id}
736
- }
737
-
738
- class "受注リソース" <<Published Language>> {
739
- +orderId: String
740
- +orderDate: Date
741
- +customer: Customer
742
- +lines: List<OrderLine>
743
- }
744
- }
745
-
746
- package "会計コンテキスト" as accounting {
747
- class "自動仕訳サービス"
748
- }
749
-
750
- package "生産コンテキスト" as production {
751
- class "生産計画サービス"
752
- }
753
-
754
- package "外部システム" as external {
755
- class "分析システム"
756
- }
757
-
758
- "販売API" --> "受注リソース"
759
- "自動仕訳サービス" --> "販売API"
760
- "生産計画サービス" --> "販売API"
761
- "分析システム" --> "販売API"
762
-
763
- note right of sales
764
- 【Open Host Service】
765
- 標準化されたAPIを公開
766
-
767
- 【Published Language】
768
- 共通のデータフォーマット
769
- (JSON/XML Schema)
770
- end note
771
-
772
- @enduml
773
- ```
774
-
775
- #### コンテキスト関係パターンの選択ガイド
776
-
777
- | パターン | 適用場面 | メリット | デメリット |
778
- |---------|---------|---------|----------|
779
- | 共有カーネル | 密接に連携するコンテキスト | モデルの一貫性 | 変更の調整が必要 |
780
- | 顧客/供給者 | 上流が下流の要件に対応可能 | 明確な責務分担 | 上流への依存 |
781
- | 適合者 | 上流が変更不可能な場合 | 導入が容易 | 上流に完全依存 |
782
- | 腐敗防止層 | レガシーシステムとの連携 | 独立性確保 | 実装コスト |
783
- | 公開ホストサービス | 複数の消費者が存在 | 再利用性 | API設計・維持コスト |
784
-
785
- ---
786
-
787
- ## 33.3 統合パターンの選択基準
788
-
789
- ### 同期 vs 非同期
790
-
791
- ```plantuml
792
- @startuml
793
- title 同期通信と非同期通信の比較
794
-
795
- rectangle "同期通信" as sync {
796
- actor "クライアント" as client1
797
- rectangle "サービスA" as serviceA1
798
- rectangle "サービスB" as serviceB1
799
-
800
- client1 -> serviceA1 : 1.リクエスト
801
- serviceA1 -> serviceB1 : 2.API呼び出し
802
- serviceB1 -> serviceA1 : 3.レスポンス
803
- serviceA1 -> client1 : 4.レスポンス
804
- }
805
-
806
- rectangle "非同期通信" as async {
807
- actor "クライアント" as client2
808
- rectangle "サービスA" as serviceA2
809
- queue "メッセージ\nキュー" as queue
810
- rectangle "サービスB" as serviceB2
811
-
812
- client2 -> serviceA2 : 1.リクエスト
813
- serviceA2 -> queue : 2.メッセージ発行
814
- serviceA2 -> client2 : 3.即時レスポンス
815
- queue -> serviceB2 : 4.メッセージ購読
816
- }
817
-
818
- note bottom of sync
819
- ・即座に結果を取得
820
- ・強い一貫性
821
- ・カップリングが強い
822
- ・障害伝播のリスク
823
- end note
824
-
825
- note bottom of async
826
- ・疎結合
827
- ・高い回復力
828
- ・スケーラビリティ
829
- ・結果整合性
830
- end note
831
-
832
- @enduml
833
- ```
834
-
835
- #### 選択の判断基準
836
-
837
- | 観点 | 同期を選択 | 非同期を選択 |
838
- |-----|----------|------------|
839
- | 応答要件 | 即座に結果が必要 | 遅延が許容される |
840
- | 一貫性要件 | 強い一貫性が必須 | 結果整合性で可 |
841
- | 可用性要件 | サービス間依存を許容 | 高可用性が必要 |
842
- | 処理量 | 少量のトランザクション | 大量のトランザクション |
843
- | 障害分離 | 障害伝播を許容 | 障害を分離したい |
844
-
845
- ### ポイントツーポイント vs ハブ&スポーク
846
-
847
- ```plantuml
848
- @startuml
849
- title 統合トポロジーの比較
850
-
851
- rectangle "ポイントツーポイント" as p2p {
852
- rectangle "販売" as sales1
853
- rectangle "会計" as acc1
854
- rectangle "生産" as prod1
855
- rectangle "在庫" as inv1
856
-
857
- sales1 <--> acc1
858
- sales1 <--> prod1
859
- sales1 <--> inv1
860
- acc1 <--> prod1
861
- acc1 <--> inv1
862
- prod1 <--> inv1
863
- }
864
-
865
- rectangle "ハブ&スポーク" as hub {
866
- rectangle "販売" as sales2
867
- rectangle "会計" as acc2
868
- rectangle "生産" as prod2
869
- rectangle "在庫" as inv2
870
-
871
- rectangle "統合ハブ\n(ESB/API GW)" as hub_center
872
-
873
- sales2 <--> hub_center
874
- acc2 <--> hub_center
875
- prod2 <--> hub_center
876
- inv2 <--> hub_center
877
- }
878
-
879
- note bottom of p2p
880
- 接続数: n(n-1)/2
881
- 4システムで6接続
882
-
883
- ・シンプルな初期構成
884
- ・システム数増加で複雑化
885
- ・個別の変換ロジック
886
- end note
887
-
888
- note bottom of hub
889
- 接続数: n
890
- 4システムで4接続
891
-
892
- ・一元的な管理
893
- ・変換ロジックの集約
894
- ・ハブが単一障害点
895
- end note
896
-
897
- @enduml
898
- ```
899
-
900
- ### データ統合 vs プロセス統合
901
-
902
- ```plantuml
903
- @startuml
904
- title データ統合とプロセス統合の比較
905
-
906
- rectangle "データ統合" as data_int {
907
- database "販売DB" as sales_db
908
- database "統合DB" as int_db
909
- database "会計DB" as acc_db
910
-
911
- sales_db --> int_db : ETL
912
- int_db --> acc_db : ETL
913
-
914
- note right of int_db
915
- ・データウェアハウス
916
- ・マスタデータ管理
917
- ・データレイク
918
- end note
919
- }
920
-
921
- rectangle "プロセス統合" as proc_int {
922
- rectangle "受注プロセス" as order_proc
923
- rectangle "出荷プロセス" as ship_proc
924
- rectangle "請求プロセス" as bill_proc
925
- rectangle "仕訳プロセス" as journal_proc
926
-
927
- order_proc --> ship_proc : イベント
928
- ship_proc --> bill_proc : イベント
929
- bill_proc --> journal_proc : イベント
930
-
931
- note right of journal_proc
932
- ・ワークフロー
933
- ・サービスオーケストレーション
934
- ・イベント駆動
935
- end note
936
- }
937
-
938
- @enduml
939
- ```
940
-
941
- #### 統合アプローチの比較
942
-
943
- | 観点 | データ統合 | プロセス統合 |
944
- |-----|----------|------------|
945
- | 主な目的 | データの一元化・分析 | 業務プロセスの自動化 |
946
- | 更新頻度 | バッチ(日次/週次) | リアルタイム/準リアルタイム |
947
- | 一貫性モデル | 結果整合性 | トランザクション整合性 |
948
- | 技術要素 | ETL、DWH、MDM | ESB、BPM、イベントバス |
949
- | 適用場面 | BI・レポーティング | 業務自動化・ワークフロー |
950
-
951
- ### 統合パターン選択のフローチャート
952
-
953
- ```plantuml
954
- @startuml
955
- title 統合パターン選択フローチャート
956
-
957
- start
958
-
959
- :連携要件の確認;
960
-
961
- if (即座にデータ反映が必要?) then (はい)
962
- :リアルタイム連携;
963
- if (強い一貫性が必要?) then (はい)
964
- :同期API連携;
965
- :分散トランザクション検討;
966
- else (いいえ)
967
- :非同期メッセージング;
968
- :イベント駆動アーキテクチャ;
969
- endif
970
- else (いいえ)
971
- :バッチ連携;
972
- if (大量データの移動?) then (はい)
973
- :ETL/ファイル連携;
974
- else (いいえ)
975
- :DB直接連携;
976
- endif
977
- endif
978
-
979
- :コンテキスト間関係の確認;
980
-
981
- if (既存システムとの連携?) then (はい)
982
- :腐敗防止層(ACL);
983
- else (いいえ)
984
- if (複数の消費者?) then (はい)
985
- :公開ホストサービス;
986
- :Published Language;
987
- else (いいえ)
988
- :顧客/供給者パターン;
989
- endif
990
- endif
991
-
992
- :統合トポロジーの決定;
993
-
994
- if (システム数が多い?) then (はい)
995
- :ハブ&スポーク;
996
- :API Gateway/ESB;
997
- else (いいえ)
998
- :ポイントツーポイント;
999
- endif
1000
-
1001
- stop
1002
-
1003
- @enduml
1004
- ```
1005
-
1006
- ---
1007
-
1008
- ## 33.4 まとめ
1009
-
1010
- 本章では、エンタープライズインテグレーションの基本概念について解説しました。
1011
-
1012
- ### 学んだこと
1013
-
1014
- 1. **システム統合の必要性**
1015
-
1016
- - サイロ化した基幹業務システムの課題
1017
- - データの一貫性・整合性確保の重要性
1018
- - リアルタイム連携とバッチ連携の使い分け
1019
-
1020
- 2. **境界づけられたコンテキスト**
1021
-
1022
- - 販売・会計・生産の3つのコンテキスト
1023
- - 各コンテキストの責務とドメインモデル
1024
- - コンテキストマップによる関係の可視化
1025
-
1026
- 3. **コンテキスト間の関係パターン**
1027
-
1028
- - 共有カーネル:共通モデルの共有
1029
- - 顧客/供給者:上流・下流の明確な関係
1030
- - 腐敗防止層:外部システムからの保護
1031
- - 公開ホストサービス:標準APIの提供
1032
-
1033
- 4. **統合パターンの選択基準**
1034
-
1035
- - 同期 vs 非同期の判断
1036
- - ポイントツーポイント vs ハブ&スポーク
1037
- - データ統合 vs プロセス統合
1038
-
1039
- ### 次章の予告
1040
-
1041
- 第34章では、メッセージングパターンについて詳しく解説します。メッセージチャネル、ルーティング、変換といったEnterprise Integration Patternsの基本パターンを学び、基幹業務システムへの適用方法を理解します。