@k2works/claude-code-booster 6.1.0 → 6.3.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 (622) hide show
  1. package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +3 -7
  2. package/lib/assets/docs/article/index.md +16 -41
  3. package/lib/assets/docs/assets/js/extra.js +5 -1
  4. package/lib/assets/docs/assets/js/mathjax.js +27 -0
  5. package/lib/assets/docs/index.md +1 -1
  6. package/lib/assets/mkdocs.yml +6 -7
  7. package/lib/assets/ops/docker/mkdoc/Dockerfile +19 -19
  8. package/lib/assets/package.json +1 -1
  9. package/package.json +1 -1
  10. package/lib/assets/docs/article/functional-desgin-ppp/all/01-immutability-and-data-transformation.md +0 -484
  11. package/lib/assets/docs/article/functional-desgin-ppp/all/02-function-composition.md +0 -528
  12. package/lib/assets/docs/article/functional-desgin-ppp/all/03-polymorphism.md +0 -546
  13. package/lib/assets/docs/article/functional-desgin-ppp/all/04-data-validation.md +0 -309
  14. package/lib/assets/docs/article/functional-desgin-ppp/all/05-property-based-testing.md +0 -329
  15. package/lib/assets/docs/article/functional-desgin-ppp/all/06-tdd-and-functional.md +0 -507
  16. package/lib/assets/docs/article/functional-desgin-ppp/all/07-composite-pattern.md +0 -307
  17. package/lib/assets/docs/article/functional-desgin-ppp/all/08-decorator-pattern.md +0 -300
  18. package/lib/assets/docs/article/functional-desgin-ppp/all/09-adapter-pattern.md +0 -345
  19. package/lib/assets/docs/article/functional-desgin-ppp/all/10-strategy-pattern.md +0 -312
  20. package/lib/assets/docs/article/functional-desgin-ppp/all/11-command-pattern.md +0 -295
  21. package/lib/assets/docs/article/functional-desgin-ppp/all/12-visitor-pattern.md +0 -331
  22. package/lib/assets/docs/article/functional-desgin-ppp/all/13-abstract-factory-pattern.md +0 -328
  23. package/lib/assets/docs/article/functional-desgin-ppp/all/14-abstract-server-pattern.md +0 -374
  24. package/lib/assets/docs/article/functional-desgin-ppp/all/15-gossiping-bus-drivers.md +0 -165
  25. package/lib/assets/docs/article/functional-desgin-ppp/all/16-payroll-system.md +0 -187
  26. package/lib/assets/docs/article/functional-desgin-ppp/all/17-video-rental-system.md +0 -321
  27. package/lib/assets/docs/article/functional-desgin-ppp/all/18-concurrency-system.md +0 -296
  28. package/lib/assets/docs/article/functional-desgin-ppp/all/19-wa-tor-simulation.md +0 -295
  29. package/lib/assets/docs/article/functional-desgin-ppp/all/20-pattern-interactions.md +0 -283
  30. package/lib/assets/docs/article/functional-desgin-ppp/all/21-best-practices.md +0 -303
  31. package/lib/assets/docs/article/functional-desgin-ppp/all/22-oo-to-fp-migration.md +0 -346
  32. package/lib/assets/docs/article/functional-desgin-ppp/all/index.md +0 -388
  33. package/lib/assets/docs/article/functional-desgin-ppp/clojure/01-immutability-and-data-transformation.md +0 -282
  34. package/lib/assets/docs/article/functional-desgin-ppp/clojure/02-function-composition.md +0 -389
  35. package/lib/assets/docs/article/functional-desgin-ppp/clojure/03-polymorphism.md +0 -393
  36. package/lib/assets/docs/article/functional-desgin-ppp/clojure/04-clojure-spec.md +0 -359
  37. package/lib/assets/docs/article/functional-desgin-ppp/clojure/05-property-based-testing.md +0 -361
  38. package/lib/assets/docs/article/functional-desgin-ppp/clojure/06-tdd-in-functional.md +0 -392
  39. package/lib/assets/docs/article/functional-desgin-ppp/clojure/07-composite-pattern.md +0 -538
  40. package/lib/assets/docs/article/functional-desgin-ppp/clojure/08-decorator-pattern.md +0 -404
  41. package/lib/assets/docs/article/functional-desgin-ppp/clojure/09-adapter-pattern.md +0 -408
  42. package/lib/assets/docs/article/functional-desgin-ppp/clojure/10-strategy-pattern.md +0 -494
  43. package/lib/assets/docs/article/functional-desgin-ppp/clojure/11-command-pattern.md +0 -575
  44. package/lib/assets/docs/article/functional-desgin-ppp/clojure/12-visitor-pattern.md +0 -576
  45. package/lib/assets/docs/article/functional-desgin-ppp/clojure/13-abstract-factory-pattern.md +0 -484
  46. package/lib/assets/docs/article/functional-desgin-ppp/clojure/14-abstract-server-pattern.md +0 -471
  47. package/lib/assets/docs/article/functional-desgin-ppp/clojure/15-gossiping-bus-drivers.md +0 -334
  48. package/lib/assets/docs/article/functional-desgin-ppp/clojure/16-payroll-system.md +0 -410
  49. package/lib/assets/docs/article/functional-desgin-ppp/clojure/17-video-rental-system.md +0 -459
  50. package/lib/assets/docs/article/functional-desgin-ppp/clojure/18-concurrency-system.md +0 -484
  51. package/lib/assets/docs/article/functional-desgin-ppp/clojure/19-wator-simulation.md +0 -748
  52. package/lib/assets/docs/article/functional-desgin-ppp/clojure/20-pattern-interactions.md +0 -576
  53. package/lib/assets/docs/article/functional-desgin-ppp/clojure/21-best-practices.md +0 -527
  54. package/lib/assets/docs/article/functional-desgin-ppp/clojure/22-oo-to-fp-migration.md +0 -541
  55. package/lib/assets/docs/article/functional-desgin-ppp/clojure/index.md +0 -241
  56. package/lib/assets/docs/article/functional-desgin-ppp/elixir/01-immutability-and-data-transformation.md +0 -392
  57. package/lib/assets/docs/article/functional-desgin-ppp/elixir/02-function-composition.md +0 -383
  58. package/lib/assets/docs/article/functional-desgin-ppp/elixir/03-polymorphism.md +0 -384
  59. package/lib/assets/docs/article/functional-desgin-ppp/elixir/04-data-validation.md +0 -204
  60. package/lib/assets/docs/article/functional-desgin-ppp/elixir/05-property-based-testing.md +0 -277
  61. package/lib/assets/docs/article/functional-desgin-ppp/elixir/06-tdd-and-fp.md +0 -303
  62. package/lib/assets/docs/article/functional-desgin-ppp/elixir/07-effects-and-pure-functions.md +0 -173
  63. package/lib/assets/docs/article/functional-desgin-ppp/elixir/08-error-handling-strategies.md +0 -177
  64. package/lib/assets/docs/article/functional-desgin-ppp/elixir/09-io-and-external-systems.md +0 -263
  65. package/lib/assets/docs/article/functional-desgin-ppp/elixir/10-concurrency-patterns.md +0 -278
  66. package/lib/assets/docs/article/functional-desgin-ppp/elixir/11-command-pattern.md +0 -157
  67. package/lib/assets/docs/article/functional-desgin-ppp/elixir/12-visitor-pattern.md +0 -185
  68. package/lib/assets/docs/article/functional-desgin-ppp/elixir/13-abstract-factory-pattern.md +0 -613
  69. package/lib/assets/docs/article/functional-desgin-ppp/elixir/14-abstract-server-pattern.md +0 -738
  70. package/lib/assets/docs/article/functional-desgin-ppp/elixir/15-gossiping-bus-drivers.md +0 -300
  71. package/lib/assets/docs/article/functional-desgin-ppp/elixir/16-payroll-system.md +0 -429
  72. package/lib/assets/docs/article/functional-desgin-ppp/elixir/17-video-rental-system.md +0 -328
  73. package/lib/assets/docs/article/functional-desgin-ppp/elixir/18-concurrency-system.md +0 -475
  74. package/lib/assets/docs/article/functional-desgin-ppp/elixir/19-wator-simulation.md +0 -532
  75. package/lib/assets/docs/article/functional-desgin-ppp/elixir/20-pattern-interactions.md +0 -296
  76. package/lib/assets/docs/article/functional-desgin-ppp/elixir/21-best-practices.md +0 -349
  77. package/lib/assets/docs/article/functional-desgin-ppp/elixir/22-oo-to-fp-migration.md +0 -404
  78. package/lib/assets/docs/article/functional-desgin-ppp/elixir/index.md +0 -248
  79. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/01-immutability-and-data-transformation.md +0 -393
  80. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/02-function-composition.md +0 -461
  81. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/03-polymorphism.md +0 -504
  82. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/04-data-validation.md +0 -425
  83. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/05-property-based-testing.md +0 -391
  84. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/06-tdd-functional.md +0 -696
  85. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/07-composite-pattern.md +0 -451
  86. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/08-decorator-pattern.md +0 -488
  87. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/09-adapter-pattern.md +0 -488
  88. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/10-strategy-pattern.md +0 -436
  89. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/11-command-pattern.md +0 -437
  90. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/12-visitor-pattern.md +0 -348
  91. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/13-abstract-factory-pattern.md +0 -318
  92. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/14-abstract-server-pattern.md +0 -605
  93. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/15-gossiping-bus-drivers.md +0 -364
  94. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/16-payroll-system.md +0 -359
  95. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/17-video-rental-system.md +0 -423
  96. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/18-concurrency-system.md +0 -376
  97. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/19-wator-simulation.md +0 -412
  98. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/20-pattern-interactions.md +0 -300
  99. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/21-best-practices.md +0 -333
  100. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/22-oo-to-fp-migration.md +0 -341
  101. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/index.md +0 -274
  102. package/lib/assets/docs/article/functional-desgin-ppp/haskell/01-immutability-and-data-transformation.md +0 -307
  103. package/lib/assets/docs/article/functional-desgin-ppp/haskell/02-function-composition.md +0 -313
  104. package/lib/assets/docs/article/functional-desgin-ppp/haskell/03-polymorphism.md +0 -371
  105. package/lib/assets/docs/article/functional-desgin-ppp/haskell/04-data-validation.md +0 -266
  106. package/lib/assets/docs/article/functional-desgin-ppp/haskell/05-property-based-testing.md +0 -263
  107. package/lib/assets/docs/article/functional-desgin-ppp/haskell/06-tdd-functional.md +0 -292
  108. package/lib/assets/docs/article/functional-desgin-ppp/haskell/07-composite-pattern.md +0 -404
  109. package/lib/assets/docs/article/functional-desgin-ppp/haskell/08-decorator-pattern.md +0 -328
  110. package/lib/assets/docs/article/functional-desgin-ppp/haskell/09-adapter-pattern.md +0 -391
  111. package/lib/assets/docs/article/functional-desgin-ppp/haskell/10-strategy-pattern.md +0 -296
  112. package/lib/assets/docs/article/functional-desgin-ppp/haskell/11-command-pattern.md +0 -312
  113. package/lib/assets/docs/article/functional-desgin-ppp/haskell/12-visitor-pattern.md +0 -335
  114. package/lib/assets/docs/article/functional-desgin-ppp/haskell/13-abstract-factory-pattern.md +0 -341
  115. package/lib/assets/docs/article/functional-desgin-ppp/haskell/14-abstract-server-pattern.md +0 -388
  116. package/lib/assets/docs/article/functional-desgin-ppp/haskell/15-gossiping-bus-drivers.md +0 -186
  117. package/lib/assets/docs/article/functional-desgin-ppp/haskell/16-payroll-system.md +0 -228
  118. package/lib/assets/docs/article/functional-desgin-ppp/haskell/17-video-rental-system.md +0 -253
  119. package/lib/assets/docs/article/functional-desgin-ppp/haskell/18-concurrency-system.md +0 -372
  120. package/lib/assets/docs/article/functional-desgin-ppp/haskell/19-wator-simulation.md +0 -447
  121. package/lib/assets/docs/article/functional-desgin-ppp/haskell/20-pattern-interactions.md +0 -334
  122. package/lib/assets/docs/article/functional-desgin-ppp/haskell/21-best-practices.md +0 -412
  123. package/lib/assets/docs/article/functional-desgin-ppp/haskell/22-oo-to-fp-migration.md +0 -478
  124. package/lib/assets/docs/article/functional-desgin-ppp/haskell/index.md +0 -174
  125. package/lib/assets/docs/article/functional-desgin-ppp/index.md +0 -90
  126. package/lib/assets/docs/article/functional-desgin-ppp/rust/01-immutability-and-data-transformation.md +0 -459
  127. package/lib/assets/docs/article/functional-desgin-ppp/rust/02-function-composition.md +0 -472
  128. package/lib/assets/docs/article/functional-desgin-ppp/rust/03-polymorphism.md +0 -434
  129. package/lib/assets/docs/article/functional-desgin-ppp/rust/04-data-validation.md +0 -282
  130. package/lib/assets/docs/article/functional-desgin-ppp/rust/05-property-based-testing.md +0 -256
  131. package/lib/assets/docs/article/functional-desgin-ppp/rust/06-tdd-and-functional.md +0 -850
  132. package/lib/assets/docs/article/functional-desgin-ppp/rust/07-composite-pattern.md +0 -393
  133. package/lib/assets/docs/article/functional-desgin-ppp/rust/08-decorator-pattern.md +0 -392
  134. package/lib/assets/docs/article/functional-desgin-ppp/rust/09-adapter-pattern.md +0 -348
  135. package/lib/assets/docs/article/functional-desgin-ppp/rust/10-strategy-pattern.md +0 -340
  136. package/lib/assets/docs/article/functional-desgin-ppp/rust/11-command-pattern.md +0 -365
  137. package/lib/assets/docs/article/functional-desgin-ppp/rust/12-visitor-pattern.md +0 -388
  138. package/lib/assets/docs/article/functional-desgin-ppp/rust/13-abstract-factory-pattern.md +0 -370
  139. package/lib/assets/docs/article/functional-desgin-ppp/rust/14-abstract-server-pattern.md +0 -401
  140. package/lib/assets/docs/article/functional-desgin-ppp/rust/15-gossiping-bus-drivers.md +0 -309
  141. package/lib/assets/docs/article/functional-desgin-ppp/rust/16-payroll-system.md +0 -306
  142. package/lib/assets/docs/article/functional-desgin-ppp/rust/17-video-rental-system.md +0 -313
  143. package/lib/assets/docs/article/functional-desgin-ppp/rust/18-concurrency-system.md +0 -324
  144. package/lib/assets/docs/article/functional-desgin-ppp/rust/19-wator-simulation.md +0 -320
  145. package/lib/assets/docs/article/functional-desgin-ppp/rust/20-pattern-interactions.md +0 -313
  146. package/lib/assets/docs/article/functional-desgin-ppp/rust/21-best-practices.md +0 -345
  147. package/lib/assets/docs/article/functional-desgin-ppp/rust/22-oo-to-fp-migration.md +0 -358
  148. package/lib/assets/docs/article/functional-desgin-ppp/rust/index.md +0 -243
  149. package/lib/assets/docs/article/functional-desgin-ppp/scala/01-immutability-and-data-transformation.md +0 -337
  150. package/lib/assets/docs/article/functional-desgin-ppp/scala/02-function-composition.md +0 -357
  151. package/lib/assets/docs/article/functional-desgin-ppp/scala/03-polymorphism.md +0 -366
  152. package/lib/assets/docs/article/functional-desgin-ppp/scala/04-data-validation.md +0 -373
  153. package/lib/assets/docs/article/functional-desgin-ppp/scala/05-property-based-testing.md +0 -524
  154. package/lib/assets/docs/article/functional-desgin-ppp/scala/06-tdd-functional.md +0 -566
  155. package/lib/assets/docs/article/functional-desgin-ppp/scala/07-composite-pattern.md +0 -372
  156. package/lib/assets/docs/article/functional-desgin-ppp/scala/08-decorator-pattern.md +0 -336
  157. package/lib/assets/docs/article/functional-desgin-ppp/scala/09-adapter-pattern.md +0 -526
  158. package/lib/assets/docs/article/functional-desgin-ppp/scala/10-strategy-pattern.md +0 -450
  159. package/lib/assets/docs/article/functional-desgin-ppp/scala/11-command-pattern.md +0 -416
  160. package/lib/assets/docs/article/functional-desgin-ppp/scala/12-visitor-pattern.md +0 -388
  161. package/lib/assets/docs/article/functional-desgin-ppp/scala/13-abstract-factory-pattern.md +0 -407
  162. package/lib/assets/docs/article/functional-desgin-ppp/scala/14-abstract-server-pattern.md +0 -485
  163. package/lib/assets/docs/article/functional-desgin-ppp/scala/15-gossiping-bus-drivers.md +0 -400
  164. package/lib/assets/docs/article/functional-desgin-ppp/scala/16-payroll-system.md +0 -351
  165. package/lib/assets/docs/article/functional-desgin-ppp/scala/17-video-rental-system.md +0 -333
  166. package/lib/assets/docs/article/functional-desgin-ppp/scala/18-concurrency-system.md +0 -739
  167. package/lib/assets/docs/article/functional-desgin-ppp/scala/19-wator-simulation.md +0 -633
  168. package/lib/assets/docs/article/functional-desgin-ppp/scala/20-pattern-interactions.md +0 -521
  169. package/lib/assets/docs/article/functional-desgin-ppp/scala/21-best-practices.md +0 -442
  170. package/lib/assets/docs/article/functional-desgin-ppp/scala/22-oo-to-fp-migration.md +0 -697
  171. package/lib/assets/docs/article/functional-desgin-ppp/scala/index.md +0 -243
  172. package/lib/assets/docs/article/getting-start-docker-kubernetes/01-container-and-docker-basics.md +0 -341
  173. package/lib/assets/docs/article/getting-start-docker-kubernetes/02-container-deployment.md +0 -785
  174. package/lib/assets/docs/article/getting-start-docker-kubernetes/03-practical-container-build-deploy.md +0 -466
  175. package/lib/assets/docs/article/getting-start-docker-kubernetes/04-multi-container-application.md +0 -878
  176. package/lib/assets/docs/article/getting-start-docker-kubernetes/05-kubernetes-introduction.md +0 -585
  177. package/lib/assets/docs/article/getting-start-docker-kubernetes/06-kubernetes-deploy-cluster.md +0 -620
  178. package/lib/assets/docs/article/getting-start-docker-kubernetes/07-kubernetes-advanced.md +0 -621
  179. package/lib/assets/docs/article/getting-start-docker-kubernetes/08-kubernetes-packaging.md +0 -518
  180. package/lib/assets/docs/article/getting-start-docker-kubernetes/09-container-operations.md +0 -546
  181. package/lib/assets/docs/article/getting-start-docker-kubernetes/10-optimal-container-image.md +0 -640
  182. package/lib/assets/docs/article/getting-start-docker-kubernetes/11-continuous-delivery.md +0 -607
  183. package/lib/assets/docs/article/getting-start-docker-kubernetes/12-container-use-cases.md +0 -463
  184. package/lib/assets/docs/article/getting-start-docker-kubernetes/13-case-monolith-compose-vs-kustomize.md +0 -346
  185. package/lib/assets/docs/article/getting-start-docker-kubernetes/14-case-event-driven-kustomize-vs-helm.md +0 -324
  186. package/lib/assets/docs/article/getting-start-docker-kubernetes/15-case-escqrs-axon-kustomize-vs-helm.md +0 -297
  187. package/lib/assets/docs/article/getting-start-docker-kubernetes/16-case-escqrs-kafka-kustomize-vs-helm.md +0 -256
  188. package/lib/assets/docs/article/getting-start-docker-kubernetes/17-case-comparison-summary.md +0 -141
  189. package/lib/assets/docs/article/getting-start-docker-kubernetes/18-case-load-testing.md +0 -303
  190. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-a-dev-tools-setup.md +0 -274
  191. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-b-orchestration-environments.md +0 -530
  192. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-c-tips.md +0 -519
  193. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-01-comic.png +0 -0
  194. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-02-comic.png +0 -0
  195. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-03-comic.png +0 -0
  196. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-04-comic.png +0 -0
  197. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-05-comic.png +0 -0
  198. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-06-comic.png +0 -0
  199. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-07-comic.png +0 -0
  200. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-08-comic.png +0 -0
  201. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-09-comic.png +0 -0
  202. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-10-comic.png +0 -0
  203. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-11-comic.png +0 -0
  204. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/chapter-12-comic.png +0 -0
  205. package/lib/assets/docs/article/getting-start-docker-kubernetes/images/overview-comic.png +0 -0
  206. package/lib/assets/docs/article/getting-start-docker-kubernetes/index.md +0 -82
  207. package/lib/assets/docs/article/getting-start-docker-kubernetes/outline.md +0 -220
  208. package/lib/assets/docs/article/getting-start-tdd/clojure/01-todo-list-and-first-test.md +0 -175
  209. package/lib/assets/docs/article/getting-start-tdd/clojure/02-fake-it-and-triangulation.md +0 -171
  210. package/lib/assets/docs/article/getting-start-tdd/clojure/03-obvious-implementation-and-refactoring.md +0 -144
  211. package/lib/assets/docs/article/getting-start-tdd/clojure/04-version-control-and-conventional-commits.md +0 -97
  212. package/lib/assets/docs/article/getting-start-tdd/clojure/05-package-management-and-static-analysis.md +0 -308
  213. package/lib/assets/docs/article/getting-start-tdd/clojure/06-task-runner-and-ci-cd.md +0 -250
  214. package/lib/assets/docs/article/getting-start-tdd/clojure/07-protocols-and-records.md +0 -140
  215. package/lib/assets/docs/article/getting-start-tdd/clojure/08-multimethods-and-design-patterns.md +0 -139
  216. package/lib/assets/docs/article/getting-start-tdd/clojure/09-namespaces-and-module-design.md +0 -136
  217. package/lib/assets/docs/article/getting-start-tdd/clojure/10-higher-order-functions-and-composition.md +0 -123
  218. package/lib/assets/docs/article/getting-start-tdd/clojure/11-persistent-data-and-pipeline.md +0 -147
  219. package/lib/assets/docs/article/getting-start-tdd/clojure/12-error-handling-and-spec.md +0 -170
  220. package/lib/assets/docs/article/getting-start-tdd/clojure/index.md +0 -65
  221. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter01.md +0 -241
  222. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter02.md +0 -253
  223. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter03.md +0 -211
  224. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter04.md +0 -101
  225. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter05.md +0 -265
  226. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter06.md +0 -204
  227. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter07.md +0 -223
  228. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter08.md +0 -258
  229. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter09.md +0 -183
  230. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter10.md +0 -175
  231. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter11.md +0 -201
  232. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter12.md +0 -220
  233. package/lib/assets/docs/article/getting-start-tdd/csharp/index.md +0 -83
  234. package/lib/assets/docs/article/getting-start-tdd/elixir/01-todo-list-and-first-test.md +0 -96
  235. package/lib/assets/docs/article/getting-start-tdd/elixir/02-fake-it-and-triangulation.md +0 -104
  236. package/lib/assets/docs/article/getting-start-tdd/elixir/03-obvious-implementation-and-refactoring.md +0 -118
  237. package/lib/assets/docs/article/getting-start-tdd/elixir/04-version-control-and-conventional-commits.md +0 -105
  238. package/lib/assets/docs/article/getting-start-tdd/elixir/05-package-management-and-static-analysis.md +0 -97
  239. package/lib/assets/docs/article/getting-start-tdd/elixir/06-task-runner-and-ci-cd.md +0 -80
  240. package/lib/assets/docs/article/getting-start-tdd/elixir/07-structs-and-protocols.md +0 -119
  241. package/lib/assets/docs/article/getting-start-tdd/elixir/08-pattern-matching-and-guards.md +0 -117
  242. package/lib/assets/docs/article/getting-start-tdd/elixir/09-module-design-and-behaviours.md +0 -113
  243. package/lib/assets/docs/article/getting-start-tdd/elixir/10-higher-order-functions-and-pipeline.md +0 -187
  244. package/lib/assets/docs/article/getting-start-tdd/elixir/11-stream-and-lazy-evaluation.md +0 -151
  245. package/lib/assets/docs/article/getting-start-tdd/elixir/12-error-handling-and-with.md +0 -154
  246. package/lib/assets/docs/article/getting-start-tdd/elixir/index.md +0 -35
  247. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter01.md +0 -211
  248. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter02.md +0 -255
  249. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter03.md +0 -227
  250. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter04.md +0 -188
  251. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter05.md +0 -276
  252. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter06.md +0 -199
  253. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter07.md +0 -170
  254. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter08.md +0 -184
  255. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter09.md +0 -231
  256. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter10.md +0 -198
  257. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter11.md +0 -221
  258. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter12.md +0 -224
  259. package/lib/assets/docs/article/getting-start-tdd/fsharp/index.md +0 -71
  260. package/lib/assets/docs/article/getting-start-tdd/go/01-todo-list-and-first-test.md +0 -222
  261. package/lib/assets/docs/article/getting-start-tdd/go/02-fake-it-and-triangulation.md +0 -311
  262. package/lib/assets/docs/article/getting-start-tdd/go/03-obvious-implementation-and-refactoring.md +0 -348
  263. package/lib/assets/docs/article/getting-start-tdd/go/04-version-control-and-conventional-commits.md +0 -121
  264. package/lib/assets/docs/article/getting-start-tdd/go/05-package-management-and-static-analysis.md +0 -281
  265. package/lib/assets/docs/article/getting-start-tdd/go/06-task-runner-and-ci-cd.md +0 -242
  266. package/lib/assets/docs/article/getting-start-tdd/go/07-encapsulation-and-polymorphism.md +0 -402
  267. package/lib/assets/docs/article/getting-start-tdd/go/08-design-patterns.md +0 -430
  268. package/lib/assets/docs/article/getting-start-tdd/go/09-solid-principles-and-module-design.md +0 -408
  269. package/lib/assets/docs/article/getting-start-tdd/go/10-higher-order-functions-and-composition.md +0 -234
  270. package/lib/assets/docs/article/getting-start-tdd/go/11-immutable-data-and-pipeline.md +0 -304
  271. package/lib/assets/docs/article/getting-start-tdd/go/12-error-handling-and-type-safety.md +0 -419
  272. package/lib/assets/docs/article/getting-start-tdd/go/index.md +0 -83
  273. package/lib/assets/docs/article/getting-start-tdd/haskell/01-todo-list-and-first-test.md +0 -288
  274. package/lib/assets/docs/article/getting-start-tdd/haskell/02-fake-it-and-triangulation.md +0 -346
  275. package/lib/assets/docs/article/getting-start-tdd/haskell/03-obvious-implementation-and-refactoring.md +0 -266
  276. package/lib/assets/docs/article/getting-start-tdd/haskell/04-version-control-and-conventional-commits.md +0 -191
  277. package/lib/assets/docs/article/getting-start-tdd/haskell/05-package-management-and-static-analysis.md +0 -322
  278. package/lib/assets/docs/article/getting-start-tdd/haskell/06-task-runner-and-ci-cd.md +0 -318
  279. package/lib/assets/docs/article/getting-start-tdd/haskell/07-algebraic-data-types-and-type-classes.md +0 -421
  280. package/lib/assets/docs/article/getting-start-tdd/haskell/08-pattern-matching-and-guards.md +0 -399
  281. package/lib/assets/docs/article/getting-start-tdd/haskell/09-module-design-and-smart-constructors.md +0 -470
  282. package/lib/assets/docs/article/getting-start-tdd/haskell/10-higher-order-functions-and-currying.md +0 -443
  283. package/lib/assets/docs/article/getting-start-tdd/haskell/11-function-composition-and-point-free.md +0 -401
  284. package/lib/assets/docs/article/getting-start-tdd/haskell/12-monad-and-error-handling.md +0 -640
  285. package/lib/assets/docs/article/getting-start-tdd/haskell/index.md +0 -49
  286. package/lib/assets/docs/article/getting-start-tdd/index.md +0 -93
  287. package/lib/assets/docs/article/getting-start-tdd/integration/01-language-overview.md +0 -384
  288. package/lib/assets/docs/article/getting-start-tdd/integration/02-test-framework-comparison.md +0 -358
  289. package/lib/assets/docs/article/getting-start-tdd/integration/03-tdd-pattern-comparison.md +0 -454
  290. package/lib/assets/docs/article/getting-start-tdd/integration/04-type-system-comparison.md +0 -418
  291. package/lib/assets/docs/article/getting-start-tdd/integration/05-dev-environment-comparison.md +0 -339
  292. package/lib/assets/docs/article/getting-start-tdd/integration/06-learning-roadmap.md +0 -299
  293. package/lib/assets/docs/article/getting-start-tdd/integration/index.md +0 -69
  294. package/lib/assets/docs/article/getting-start-tdd/java/01-todo-list-and-first-test.md +0 -243
  295. package/lib/assets/docs/article/getting-start-tdd/java/02-fake-it-and-triangulation.md +0 -270
  296. package/lib/assets/docs/article/getting-start-tdd/java/03-obvious-implementation-and-refactoring.md +0 -194
  297. package/lib/assets/docs/article/getting-start-tdd/java/04-version-control-and-conventional-commits.md +0 -124
  298. package/lib/assets/docs/article/getting-start-tdd/java/05-package-management-and-static-analysis.md +0 -391
  299. package/lib/assets/docs/article/getting-start-tdd/java/06-task-runner-and-ci-cd.md +0 -281
  300. package/lib/assets/docs/article/getting-start-tdd/java/07-encapsulation-and-polymorphism.md +0 -635
  301. package/lib/assets/docs/article/getting-start-tdd/java/08-design-patterns.md +0 -402
  302. package/lib/assets/docs/article/getting-start-tdd/java/09-solid-principles-and-module-design.md +0 -319
  303. package/lib/assets/docs/article/getting-start-tdd/java/10-higher-order-functions-and-composition.md +0 -197
  304. package/lib/assets/docs/article/getting-start-tdd/java/11-immutable-data-and-pipeline.md +0 -176
  305. package/lib/assets/docs/article/getting-start-tdd/java/12-error-handling-and-type-safety.md +0 -214
  306. package/lib/assets/docs/article/getting-start-tdd/java/index.md +0 -61
  307. package/lib/assets/docs/article/getting-start-tdd/node/01-todo-list-and-first-test.md +0 -253
  308. package/lib/assets/docs/article/getting-start-tdd/node/02-fake-it-and-triangulation.md +0 -271
  309. package/lib/assets/docs/article/getting-start-tdd/node/03-obvious-implementation-and-refactoring.md +0 -178
  310. package/lib/assets/docs/article/getting-start-tdd/node/04-version-control-and-conventional-commits.md +0 -121
  311. package/lib/assets/docs/article/getting-start-tdd/node/05-package-management-and-static-analysis.md +0 -323
  312. package/lib/assets/docs/article/getting-start-tdd/node/06-task-runner-and-ci-cd.md +0 -244
  313. package/lib/assets/docs/article/getting-start-tdd/node/07-encapsulation-and-polymorphism.md +0 -336
  314. package/lib/assets/docs/article/getting-start-tdd/node/08-design-patterns.md +0 -331
  315. package/lib/assets/docs/article/getting-start-tdd/node/09-solid-principles-and-module-design.md +0 -294
  316. package/lib/assets/docs/article/getting-start-tdd/node/10-higher-order-functions-and-composition.md +0 -208
  317. package/lib/assets/docs/article/getting-start-tdd/node/11-immutable-data-and-pipeline.md +0 -216
  318. package/lib/assets/docs/article/getting-start-tdd/node/12-error-handling-and-type-safety.md +0 -304
  319. package/lib/assets/docs/article/getting-start-tdd/node/index.md +0 -56
  320. package/lib/assets/docs/article/getting-start-tdd/php/01-todo-list-and-first-test.md +0 -268
  321. package/lib/assets/docs/article/getting-start-tdd/php/02-fake-it-and-triangulation.md +0 -209
  322. package/lib/assets/docs/article/getting-start-tdd/php/03-obvious-implementation-and-refactoring.md +0 -257
  323. package/lib/assets/docs/article/getting-start-tdd/php/04-version-control-and-conventional-commits.md +0 -150
  324. package/lib/assets/docs/article/getting-start-tdd/php/05-package-management-and-static-analysis.md +0 -419
  325. package/lib/assets/docs/article/getting-start-tdd/php/06-task-runner-and-ci-cd.md +0 -330
  326. package/lib/assets/docs/article/getting-start-tdd/php/07-encapsulation-and-polymorphism.md +0 -380
  327. package/lib/assets/docs/article/getting-start-tdd/php/08-design-patterns.md +0 -461
  328. package/lib/assets/docs/article/getting-start-tdd/php/09-solid-principles-and-module-design.md +0 -468
  329. package/lib/assets/docs/article/getting-start-tdd/php/10-higher-order-functions-and-composition.md +0 -190
  330. package/lib/assets/docs/article/getting-start-tdd/php/11-immutable-data-and-pipeline.md +0 -274
  331. package/lib/assets/docs/article/getting-start-tdd/php/12-error-handling-and-type-safety.md +0 -316
  332. package/lib/assets/docs/article/getting-start-tdd/php/index.md +0 -84
  333. package/lib/assets/docs/article/getting-start-tdd/python/01-todo-list-and-first-test.md +0 -210
  334. package/lib/assets/docs/article/getting-start-tdd/python/02-fake-it-and-triangulation.md +0 -256
  335. package/lib/assets/docs/article/getting-start-tdd/python/03-obvious-implementation-and-refactoring.md +0 -208
  336. package/lib/assets/docs/article/getting-start-tdd/python/04-version-control-and-conventional-commits.md +0 -96
  337. package/lib/assets/docs/article/getting-start-tdd/python/05-package-management-and-static-analysis.md +0 -283
  338. package/lib/assets/docs/article/getting-start-tdd/python/06-task-runner-and-ci-cd.md +0 -199
  339. package/lib/assets/docs/article/getting-start-tdd/python/07-encapsulation-and-polymorphism.md +0 -217
  340. package/lib/assets/docs/article/getting-start-tdd/python/08-design-patterns.md +0 -181
  341. package/lib/assets/docs/article/getting-start-tdd/python/09-solid-principles-and-module-design.md +0 -139
  342. package/lib/assets/docs/article/getting-start-tdd/python/10-higher-order-functions-and-composition.md +0 -131
  343. package/lib/assets/docs/article/getting-start-tdd/python/11-immutable-data-and-pipeline.md +0 -125
  344. package/lib/assets/docs/article/getting-start-tdd/python/12-error-handling-and-type-safety.md +0 -135
  345. package/lib/assets/docs/article/getting-start-tdd/python/index.md +0 -55
  346. package/lib/assets/docs/article/getting-start-tdd/ruby/01-todo-list-and-first-test.md +0 -240
  347. package/lib/assets/docs/article/getting-start-tdd/ruby/02-fake-it-and-triangulation.md +0 -247
  348. package/lib/assets/docs/article/getting-start-tdd/ruby/03-obvious-implementation-and-refactoring.md +0 -237
  349. package/lib/assets/docs/article/getting-start-tdd/ruby/04-version-control-and-conventional-commits.md +0 -121
  350. package/lib/assets/docs/article/getting-start-tdd/ruby/05-package-management-and-static-analysis.md +0 -296
  351. package/lib/assets/docs/article/getting-start-tdd/ruby/06-task-runner-and-ci-cd.md +0 -257
  352. package/lib/assets/docs/article/getting-start-tdd/ruby/07-encapsulation-and-polymorphism.md +0 -288
  353. package/lib/assets/docs/article/getting-start-tdd/ruby/08-design-patterns.md +0 -338
  354. package/lib/assets/docs/article/getting-start-tdd/ruby/09-solid-principles-and-module-design.md +0 -205
  355. package/lib/assets/docs/article/getting-start-tdd/ruby/10-higher-order-functions-and-composition.md +0 -184
  356. package/lib/assets/docs/article/getting-start-tdd/ruby/11-immutable-data-and-pipeline.md +0 -246
  357. package/lib/assets/docs/article/getting-start-tdd/ruby/12-error-handling-and-type-safety.md +0 -407
  358. package/lib/assets/docs/article/getting-start-tdd/ruby/index.md +0 -83
  359. package/lib/assets/docs/article/getting-start-tdd/rust/01-todo-list-and-first-test.md +0 -220
  360. package/lib/assets/docs/article/getting-start-tdd/rust/02-fake-it-and-triangulation.md +0 -273
  361. package/lib/assets/docs/article/getting-start-tdd/rust/03-obvious-implementation-and-refactoring.md +0 -242
  362. package/lib/assets/docs/article/getting-start-tdd/rust/04-version-control-and-conventional-commits.md +0 -101
  363. package/lib/assets/docs/article/getting-start-tdd/rust/05-package-management-and-static-analysis.md +0 -221
  364. package/lib/assets/docs/article/getting-start-tdd/rust/06-task-runner-and-ci-cd.md +0 -173
  365. package/lib/assets/docs/article/getting-start-tdd/rust/07-encapsulation-and-polymorphism.md +0 -151
  366. package/lib/assets/docs/article/getting-start-tdd/rust/08-design-patterns.md +0 -154
  367. package/lib/assets/docs/article/getting-start-tdd/rust/09-solid-principles-and-module-design.md +0 -119
  368. package/lib/assets/docs/article/getting-start-tdd/rust/10-higher-order-functions-and-composition.md +0 -103
  369. package/lib/assets/docs/article/getting-start-tdd/rust/11-immutable-data-and-pipeline.md +0 -114
  370. package/lib/assets/docs/article/getting-start-tdd/rust/12-error-handling-and-type-safety.md +0 -121
  371. package/lib/assets/docs/article/getting-start-tdd/rust/index.md +0 -83
  372. package/lib/assets/docs/article/getting-start-tdd/scala/01-todo-list-and-first-test.md +0 -120
  373. package/lib/assets/docs/article/getting-start-tdd/scala/02-fake-it-and-triangulation.md +0 -116
  374. package/lib/assets/docs/article/getting-start-tdd/scala/03-obvious-implementation-and-refactoring.md +0 -108
  375. package/lib/assets/docs/article/getting-start-tdd/scala/04-version-control-and-conventional-commits.md +0 -132
  376. package/lib/assets/docs/article/getting-start-tdd/scala/05-package-management-and-static-analysis.md +0 -205
  377. package/lib/assets/docs/article/getting-start-tdd/scala/06-task-runner-and-ci-cd.md +0 -195
  378. package/lib/assets/docs/article/getting-start-tdd/scala/07-case-classes-and-traits.md +0 -148
  379. package/lib/assets/docs/article/getting-start-tdd/scala/08-pattern-matching-and-sealed-traits.md +0 -115
  380. package/lib/assets/docs/article/getting-start-tdd/scala/09-packages-and-module-design.md +0 -84
  381. package/lib/assets/docs/article/getting-start-tdd/scala/10-higher-order-functions-and-composition.md +0 -113
  382. package/lib/assets/docs/article/getting-start-tdd/scala/11-collections-and-lazy-evaluation.md +0 -103
  383. package/lib/assets/docs/article/getting-start-tdd/scala/12-error-handling-and-type-safety.md +0 -101
  384. package/lib/assets/docs/article/getting-start-tdd/scala/index.md +0 -65
  385. package/lib/assets/docs/article/grokking-concurrency/all/index.md +0 -403
  386. package/lib/assets/docs/article/grokking-concurrency/all/part-1-ch02-sequential.md +0 -563
  387. package/lib/assets/docs/article/grokking-concurrency/all/part-2-ch04-05-threads.md +0 -478
  388. package/lib/assets/docs/article/grokking-concurrency/all/part-3-ch06-multitasking.md +0 -529
  389. package/lib/assets/docs/article/grokking-concurrency/all/part-4-ch07-parallel-patterns.md +0 -429
  390. package/lib/assets/docs/article/grokking-concurrency/all/part-5-ch08-09-synchronization.md +0 -519
  391. package/lib/assets/docs/article/grokking-concurrency/all/part-6-ch10-11-nonblocking-io.md +0 -444
  392. package/lib/assets/docs/article/grokking-concurrency/all/part-7-ch12-async.md +0 -474
  393. package/lib/assets/docs/article/grokking-concurrency/all/part-8-ch13-mapreduce.md +0 -386
  394. package/lib/assets/docs/article/grokking-concurrency/clojure/index.md +0 -106
  395. package/lib/assets/docs/article/grokking-concurrency/clojure/part-1.md +0 -107
  396. package/lib/assets/docs/article/grokking-concurrency/clojure/part-2.md +0 -100
  397. package/lib/assets/docs/article/grokking-concurrency/clojure/part-3.md +0 -121
  398. package/lib/assets/docs/article/grokking-concurrency/clojure/part-4.md +0 -122
  399. package/lib/assets/docs/article/grokking-concurrency/clojure/part-5.md +0 -117
  400. package/lib/assets/docs/article/grokking-concurrency/clojure/part-6.md +0 -88
  401. package/lib/assets/docs/article/grokking-concurrency/clojure/part-7.md +0 -99
  402. package/lib/assets/docs/article/grokking-concurrency/clojure/part-8.md +0 -119
  403. package/lib/assets/docs/article/grokking-concurrency/csharp/index.md +0 -91
  404. package/lib/assets/docs/article/grokking-concurrency/csharp/part-1.md +0 -96
  405. package/lib/assets/docs/article/grokking-concurrency/csharp/part-2.md +0 -122
  406. package/lib/assets/docs/article/grokking-concurrency/csharp/part-3.md +0 -100
  407. package/lib/assets/docs/article/grokking-concurrency/csharp/part-4.md +0 -111
  408. package/lib/assets/docs/article/grokking-concurrency/csharp/part-5.md +0 -98
  409. package/lib/assets/docs/article/grokking-concurrency/csharp/part-6.md +0 -60
  410. package/lib/assets/docs/article/grokking-concurrency/csharp/part-7.md +0 -83
  411. package/lib/assets/docs/article/grokking-concurrency/csharp/part-8.md +0 -91
  412. package/lib/assets/docs/article/grokking-concurrency/fsharp/index.md +0 -55
  413. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-1.md +0 -79
  414. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-2.md +0 -102
  415. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-3.md +0 -93
  416. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-4.md +0 -109
  417. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-5.md +0 -103
  418. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-6.md +0 -92
  419. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-7.md +0 -120
  420. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-8.md +0 -106
  421. package/lib/assets/docs/article/grokking-concurrency/haskell/index.md +0 -238
  422. package/lib/assets/docs/article/grokking-concurrency/haskell/part-1.md +0 -95
  423. package/lib/assets/docs/article/grokking-concurrency/haskell/part-2.md +0 -95
  424. package/lib/assets/docs/article/grokking-concurrency/haskell/part-3.md +0 -90
  425. package/lib/assets/docs/article/grokking-concurrency/haskell/part-4.md +0 -105
  426. package/lib/assets/docs/article/grokking-concurrency/haskell/part-5.md +0 -98
  427. package/lib/assets/docs/article/grokking-concurrency/haskell/part-6.md +0 -94
  428. package/lib/assets/docs/article/grokking-concurrency/haskell/part-7.md +0 -110
  429. package/lib/assets/docs/article/grokking-concurrency/haskell/part-8.md +0 -117
  430. package/lib/assets/docs/article/grokking-concurrency/index.md +0 -66
  431. package/lib/assets/docs/article/grokking-concurrency/java/index.md +0 -92
  432. package/lib/assets/docs/article/grokking-concurrency/java/part-1.md +0 -307
  433. package/lib/assets/docs/article/grokking-concurrency/java/part-2.md +0 -333
  434. package/lib/assets/docs/article/grokking-concurrency/java/part-3.md +0 -220
  435. package/lib/assets/docs/article/grokking-concurrency/java/part-4.md +0 -212
  436. package/lib/assets/docs/article/grokking-concurrency/java/part-5.md +0 -111
  437. package/lib/assets/docs/article/grokking-concurrency/java/part-6.md +0 -68
  438. package/lib/assets/docs/article/grokking-concurrency/java/part-7.md +0 -100
  439. package/lib/assets/docs/article/grokking-concurrency/java/part-8.md +0 -100
  440. package/lib/assets/docs/article/grokking-concurrency/python/index.md +0 -303
  441. package/lib/assets/docs/article/grokking-concurrency/python/part-1.md +0 -238
  442. package/lib/assets/docs/article/grokking-concurrency/python/part-2.md +0 -417
  443. package/lib/assets/docs/article/grokking-concurrency/python/part-3.md +0 -226
  444. package/lib/assets/docs/article/grokking-concurrency/python/part-4.md +0 -298
  445. package/lib/assets/docs/article/grokking-concurrency/python/part-5.md +0 -314
  446. package/lib/assets/docs/article/grokking-concurrency/python/part-6.md +0 -296
  447. package/lib/assets/docs/article/grokking-concurrency/python/part-7.md +0 -313
  448. package/lib/assets/docs/article/grokking-concurrency/python/part-8.md +0 -359
  449. package/lib/assets/docs/article/grokking-concurrency/rust/index.md +0 -260
  450. package/lib/assets/docs/article/grokking-concurrency/rust/part-1.md +0 -107
  451. package/lib/assets/docs/article/grokking-concurrency/rust/part-2.md +0 -119
  452. package/lib/assets/docs/article/grokking-concurrency/rust/part-3.md +0 -125
  453. package/lib/assets/docs/article/grokking-concurrency/rust/part-4.md +0 -174
  454. package/lib/assets/docs/article/grokking-concurrency/rust/part-5.md +0 -157
  455. package/lib/assets/docs/article/grokking-concurrency/rust/part-6.md +0 -93
  456. package/lib/assets/docs/article/grokking-concurrency/rust/part-7.md +0 -132
  457. package/lib/assets/docs/article/grokking-concurrency/rust/part-8.md +0 -154
  458. package/lib/assets/docs/article/grokking-concurrency/scala/index.md +0 -59
  459. package/lib/assets/docs/article/grokking-concurrency/scala/part-1.md +0 -77
  460. package/lib/assets/docs/article/grokking-concurrency/scala/part-2.md +0 -111
  461. package/lib/assets/docs/article/grokking-concurrency/scala/part-3.md +0 -92
  462. package/lib/assets/docs/article/grokking-concurrency/scala/part-4.md +0 -109
  463. package/lib/assets/docs/article/grokking-concurrency/scala/part-5.md +0 -118
  464. package/lib/assets/docs/article/grokking-concurrency/scala/part-6.md +0 -82
  465. package/lib/assets/docs/article/grokking-concurrency/scala/part-7.md +0 -130
  466. package/lib/assets/docs/article/grokking-concurrency/scala/part-8.md +0 -128
  467. package/lib/assets/docs/article/grokkingfp/all/index.md +0 -368
  468. package/lib/assets/docs/article/grokkingfp/all/part-1-ch01-fp-introduction.md +0 -539
  469. package/lib/assets/docs/article/grokkingfp/all/part-1-ch02-pure-functions.md +0 -932
  470. package/lib/assets/docs/article/grokkingfp/all/part-2-ch03-immutable-data.md +0 -1137
  471. package/lib/assets/docs/article/grokkingfp/all/part-2-ch04-higher-order-functions.md +0 -1113
  472. package/lib/assets/docs/article/grokkingfp/all/part-2-ch05-flatmap.md +0 -1035
  473. package/lib/assets/docs/article/grokkingfp/all/part-3-ch06-option.md +0 -794
  474. package/lib/assets/docs/article/grokkingfp/all/part-3-ch07-either-adt.md +0 -880
  475. package/lib/assets/docs/article/grokkingfp/all/part-4-ch08-io-monad.md +0 -981
  476. package/lib/assets/docs/article/grokkingfp/all/part-4-ch09-streams.md +0 -935
  477. package/lib/assets/docs/article/grokkingfp/all/part-5-ch10-concurrency.md +0 -879
  478. package/lib/assets/docs/article/grokkingfp/all/part-6-ch11-application.md +0 -724
  479. package/lib/assets/docs/article/grokkingfp/all/part-6-ch12-testing.md +0 -635
  480. package/lib/assets/docs/article/grokkingfp/all/writing-plan.md +0 -721
  481. package/lib/assets/docs/article/grokkingfp/clojure/index.md +0 -276
  482. package/lib/assets/docs/article/grokkingfp/clojure/part-1.md +0 -676
  483. package/lib/assets/docs/article/grokkingfp/clojure/part-2.md +0 -652
  484. package/lib/assets/docs/article/grokkingfp/clojure/part-3.md +0 -629
  485. package/lib/assets/docs/article/grokkingfp/clojure/part-4.md +0 -706
  486. package/lib/assets/docs/article/grokkingfp/clojure/part-5.md +0 -760
  487. package/lib/assets/docs/article/grokkingfp/clojure/part-6.md +0 -730
  488. package/lib/assets/docs/article/grokkingfp/csharp/index.md +0 -246
  489. package/lib/assets/docs/article/grokkingfp/csharp/part-1.md +0 -820
  490. package/lib/assets/docs/article/grokkingfp/csharp/part-2.md +0 -980
  491. package/lib/assets/docs/article/grokkingfp/csharp/part-3.md +0 -990
  492. package/lib/assets/docs/article/grokkingfp/csharp/part-4.md +0 -958
  493. package/lib/assets/docs/article/grokkingfp/csharp/part-5.md +0 -956
  494. package/lib/assets/docs/article/grokkingfp/csharp/part-6.md +0 -748
  495. package/lib/assets/docs/article/grokkingfp/elixir/index.md +0 -203
  496. package/lib/assets/docs/article/grokkingfp/elixir/part-1.md +0 -721
  497. package/lib/assets/docs/article/grokkingfp/elixir/part-2.md +0 -847
  498. package/lib/assets/docs/article/grokkingfp/elixir/part-3.md +0 -994
  499. package/lib/assets/docs/article/grokkingfp/elixir/part-4.md +0 -983
  500. package/lib/assets/docs/article/grokkingfp/elixir/part-5.md +0 -1295
  501. package/lib/assets/docs/article/grokkingfp/elixir/part-6.md +0 -1058
  502. package/lib/assets/docs/article/grokkingfp/fsharp/index.md +0 -210
  503. package/lib/assets/docs/article/grokkingfp/fsharp/part-1.md +0 -723
  504. package/lib/assets/docs/article/grokkingfp/fsharp/part-2.md +0 -970
  505. package/lib/assets/docs/article/grokkingfp/fsharp/part-3.md +0 -981
  506. package/lib/assets/docs/article/grokkingfp/fsharp/part-4.md +0 -841
  507. package/lib/assets/docs/article/grokkingfp/fsharp/part-5.md +0 -920
  508. package/lib/assets/docs/article/grokkingfp/fsharp/part-6.md +0 -931
  509. package/lib/assets/docs/article/grokkingfp/haskell/index.md +0 -234
  510. package/lib/assets/docs/article/grokkingfp/haskell/part-1.md +0 -600
  511. package/lib/assets/docs/article/grokkingfp/haskell/part-2.md +0 -875
  512. package/lib/assets/docs/article/grokkingfp/haskell/part-3.md +0 -924
  513. package/lib/assets/docs/article/grokkingfp/haskell/part-4.md +0 -887
  514. package/lib/assets/docs/article/grokkingfp/haskell/part-5.md +0 -854
  515. package/lib/assets/docs/article/grokkingfp/haskell/part-6.md +0 -853
  516. package/lib/assets/docs/article/grokkingfp/index.md +0 -143
  517. package/lib/assets/docs/article/grokkingfp/java/index.md +0 -211
  518. package/lib/assets/docs/article/grokkingfp/java/part-1.md +0 -657
  519. package/lib/assets/docs/article/grokkingfp/java/part-2.md +0 -684
  520. package/lib/assets/docs/article/grokkingfp/java/part-3.md +0 -681
  521. package/lib/assets/docs/article/grokkingfp/java/part-4.md +0 -780
  522. package/lib/assets/docs/article/grokkingfp/java/part-5.md +0 -968
  523. package/lib/assets/docs/article/grokkingfp/java/part-6.md +0 -1337
  524. package/lib/assets/docs/article/grokkingfp/python/index.md +0 -258
  525. package/lib/assets/docs/article/grokkingfp/python/part-1.md +0 -452
  526. package/lib/assets/docs/article/grokkingfp/python/part-2.md +0 -967
  527. package/lib/assets/docs/article/grokkingfp/python/part-3.md +0 -1013
  528. package/lib/assets/docs/article/grokkingfp/python/part-4.md +0 -774
  529. package/lib/assets/docs/article/grokkingfp/python/part-5.md +0 -756
  530. package/lib/assets/docs/article/grokkingfp/python/part-6.md +0 -870
  531. package/lib/assets/docs/article/grokkingfp/ruby/index.md +0 -330
  532. package/lib/assets/docs/article/grokkingfp/ruby/part-1.md +0 -764
  533. package/lib/assets/docs/article/grokkingfp/ruby/part-2.md +0 -947
  534. package/lib/assets/docs/article/grokkingfp/ruby/part-3.md +0 -955
  535. package/lib/assets/docs/article/grokkingfp/ruby/part-4.md +0 -930
  536. package/lib/assets/docs/article/grokkingfp/ruby/part-5.md +0 -917
  537. package/lib/assets/docs/article/grokkingfp/ruby/part-6.md +0 -1421
  538. package/lib/assets/docs/article/grokkingfp/rust/index.md +0 -242
  539. package/lib/assets/docs/article/grokkingfp/rust/part-1.md +0 -643
  540. package/lib/assets/docs/article/grokkingfp/rust/part-2.md +0 -1069
  541. package/lib/assets/docs/article/grokkingfp/rust/part-3.md +0 -1003
  542. package/lib/assets/docs/article/grokkingfp/rust/part-4.md +0 -582
  543. package/lib/assets/docs/article/grokkingfp/rust/part-5.md +0 -714
  544. package/lib/assets/docs/article/grokkingfp/rust/part-6.md +0 -517
  545. package/lib/assets/docs/article/grokkingfp/scala/index.md +0 -171
  546. package/lib/assets/docs/article/grokkingfp/scala/part-1.md +0 -552
  547. package/lib/assets/docs/article/grokkingfp/scala/part-2.md +0 -955
  548. package/lib/assets/docs/article/grokkingfp/scala/part-3.md +0 -928
  549. package/lib/assets/docs/article/grokkingfp/scala/part-4.md +0 -751
  550. package/lib/assets/docs/article/grokkingfp/scala/part-5.md +0 -731
  551. package/lib/assets/docs/article/grokkingfp/scala/part-6.md +0 -876
  552. package/lib/assets/docs/article/grokkingfp/typescript/index.md +0 -273
  553. package/lib/assets/docs/article/grokkingfp/typescript/part-1.md +0 -570
  554. package/lib/assets/docs/article/grokkingfp/typescript/part-2.md +0 -1138
  555. package/lib/assets/docs/article/grokkingfp/typescript/part-3.md +0 -851
  556. package/lib/assets/docs/article/grokkingfp/typescript/part-4.md +0 -1096
  557. package/lib/assets/docs/article/grokkingfp/typescript/part-5.md +0 -726
  558. package/lib/assets/docs/article/grokkingfp/typescript/part-6.md +0 -991
  559. package/lib/assets/docs/article/practical-database-design/index.md +0 -121
  560. package/lib/assets/docs/article/practical-database-design/part1/chapter01.md +0 -297
  561. package/lib/assets/docs/article/practical-database-design/part1/chapter02.md +0 -527
  562. package/lib/assets/docs/article/practical-database-design/part1/chapter03.md +0 -566
  563. package/lib/assets/docs/article/practical-database-design/part2/chapter04.md +0 -933
  564. package/lib/assets/docs/article/practical-database-design/part2/chapter05.md +0 -1636
  565. package/lib/assets/docs/article/practical-database-design/part2/chapter06.md +0 -2725
  566. package/lib/assets/docs/article/practical-database-design/part2/chapter07.md +0 -2091
  567. package/lib/assets/docs/article/practical-database-design/part2/chapter08.md +0 -2114
  568. package/lib/assets/docs/article/practical-database-design/part2/chapter09.md +0 -2040
  569. package/lib/assets/docs/article/practical-database-design/part2/chapter10.md +0 -1396
  570. package/lib/assets/docs/article/practical-database-design/part2/chapter11.md +0 -1686
  571. package/lib/assets/docs/article/practical-database-design/part2/chapter12.md +0 -1426
  572. package/lib/assets/docs/article/practical-database-design/part2/chapter13.md +0 -1443
  573. package/lib/assets/docs/article/practical-database-design/part3/chapter14.md +0 -676
  574. package/lib/assets/docs/article/practical-database-design/part3/chapter15.md +0 -1634
  575. package/lib/assets/docs/article/practical-database-design/part3/chapter16.md +0 -1924
  576. package/lib/assets/docs/article/practical-database-design/part3/chapter17.md +0 -1717
  577. package/lib/assets/docs/article/practical-database-design/part3/chapter18.md +0 -2104
  578. package/lib/assets/docs/article/practical-database-design/part3/chapter19.md +0 -1132
  579. package/lib/assets/docs/article/practical-database-design/part3/chapter20.md +0 -1040
  580. package/lib/assets/docs/article/practical-database-design/part3/chapter21.md +0 -1391
  581. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter14-orm.md +0 -1000
  582. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter15-orm.md +0 -1309
  583. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter16-orm.md +0 -1175
  584. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter17-orm.md +0 -1593
  585. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter18-orm.md +0 -1192
  586. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter19-orm.md +0 -1025
  587. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter20-orm.md +0 -1762
  588. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter21-orm.md +0 -1456
  589. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter22-orm.md +0 -1887
  590. package/lib/assets/docs/article/practical-database-design/part4/chapter22.md +0 -974
  591. package/lib/assets/docs/article/practical-database-design/part4/chapter23.md +0 -2078
  592. package/lib/assets/docs/article/practical-database-design/part4/chapter24.md +0 -2448
  593. package/lib/assets/docs/article/practical-database-design/part4/chapter25.md +0 -3670
  594. package/lib/assets/docs/article/practical-database-design/part4/chapter26.md +0 -2925
  595. package/lib/assets/docs/article/practical-database-design/part4/chapter27.md +0 -3114
  596. package/lib/assets/docs/article/practical-database-design/part4/chapter28.md +0 -2706
  597. package/lib/assets/docs/article/practical-database-design/part4/chapter29.md +0 -2552
  598. package/lib/assets/docs/article/practical-database-design/part4/chapter30.md +0 -2188
  599. package/lib/assets/docs/article/practical-database-design/part4/chapter31.md +0 -1200
  600. package/lib/assets/docs/article/practical-database-design/part4/chapter32.md +0 -2109
  601. package/lib/assets/docs/article/practical-database-design/part5/chapter33.md +0 -1041
  602. package/lib/assets/docs/article/practical-database-design/part5/chapter34.md +0 -1618
  603. package/lib/assets/docs/article/practical-database-design/part5/chapter35.md +0 -1462
  604. package/lib/assets/docs/article/practical-database-design/part5/chapter36.md +0 -1301
  605. package/lib/assets/docs/article/practical-database-design/part5/chapter37.md +0 -1479
  606. package/lib/assets/docs/article/practical-database-design/part5/chapter38.md +0 -1707
  607. package/lib/assets/docs/article/practical-database-design/part5/chapter39.md +0 -2343
  608. package/lib/assets/docs/article/practical-database-design/study/study2-1.md +0 -1702
  609. package/lib/assets/docs/article/practical-database-design/study/study2-2.md +0 -1356
  610. package/lib/assets/docs/article/practical-database-design/study/study2-3.md +0 -2053
  611. package/lib/assets/docs/article/practical-database-design/study/study2-4.md +0 -2238
  612. package/lib/assets/docs/article/practical-database-design/study/study2-5.md +0 -2427
  613. package/lib/assets/docs/article/practical-database-design/study/study3-1.md +0 -2214
  614. package/lib/assets/docs/article/practical-database-design/study/study3-2.md +0 -2230
  615. package/lib/assets/docs/article/practical-database-design/study/study3-3.md +0 -2262
  616. package/lib/assets/docs/article/practical-database-design/study/study3-4.md +0 -2115
  617. package/lib/assets/docs/article/practical-database-design/study/study3-5.md +0 -2516
  618. package/lib/assets/docs/article/practical-database-design/study/study4-1.md +0 -2596
  619. package/lib/assets/docs/article/practical-database-design/study/study4-2.md +0 -2084
  620. package/lib/assets/docs/article/practical-database-design/study/study4-3.md +0 -1814
  621. package/lib/assets/docs/article/practical-database-design/study/study4-4.md +0 -1904
  622. 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の基本パターンを学び、基幹業務システムへの適用方法を理解します。