@k2works/claude-code-booster 6.2.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 (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 +16 -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,1462 +0,0 @@
1
- ---
2
- type: Article
3
- title: "第35章:システム間連携パターン"
4
- description: "本章では、第33章で解説した境界づけられたコンテキストと、第34章で解説したメッセージングパターンを活用して、販売管理・財務会計・生産管理の3つのシステム間の具体的な連携パターンを解説します。"
5
- tags: [article, practical-database-design, part5]
6
- status: stable
7
- generated: { by: human:kakimomokuri, at: 2026-03-30T08:34:28Z }
8
- ---
9
-
10
- # 第35章:システム間連携パターン
11
-
12
- 本章では、第33章で解説した境界づけられたコンテキストと、第34章で解説したメッセージングパターンを活用して、販売管理・財務会計・生産管理の3つのシステム間の具体的な連携パターンを解説します。
13
-
14
- ---
15
-
16
- ## 35.1 販売管理と財務会計の連携
17
-
18
- 販売管理システムと財務会計システムの連携は、基幹業務システム統合の中核となる部分です。売上、請求、入金などの取引データを正確に会計仕訳へ変換することが求められます。
19
-
20
- ### 連携の全体像
21
-
22
- ```plantuml
23
- @startuml
24
- title 販売管理と財務会計の連携全体像
25
-
26
- package "販売管理システム" as sales {
27
- rectangle "受注管理" as order
28
- rectangle "出荷管理" as shipment
29
- rectangle "売上管理" as sales_mgmt
30
- rectangle "請求管理" as billing
31
- rectangle "入金管理" as receipt
32
- }
33
-
34
- package "イベントバス" as events {
35
- collections "売上イベント" as sales_event
36
- collections "請求イベント" as billing_event
37
- collections "入金イベント" as receipt_event
38
- }
39
-
40
- package "財務会計システム" as accounting {
41
- rectangle "自動仕訳" as auto_journal
42
- rectangle "仕訳管理" as journal
43
- rectangle "残高管理" as balance
44
- rectangle "決算処理" as closing
45
- }
46
-
47
- order --> shipment
48
- shipment --> sales_mgmt
49
- sales_mgmt --> billing
50
- billing --> receipt
51
-
52
- sales_mgmt --> sales_event : 売上計上
53
- billing --> billing_event : 請求確定
54
- receipt --> receipt_event : 入金確認
55
-
56
- sales_event --> auto_journal
57
- billing_event --> auto_journal
58
- receipt_event --> auto_journal
59
-
60
- auto_journal --> journal
61
- journal --> balance
62
-
63
- @enduml
64
- ```
65
-
66
- ### 売上データから仕訳データへの変換
67
-
68
- 売上計上時に発生する仕訳は、売上の種類や取引条件によって異なります。
69
-
70
- ```plantuml
71
- @startuml
72
- title 売上から仕訳への変換フロー
73
-
74
- |販売管理|
75
- start
76
- :売上計上;
77
- :売上イベント発行;
78
-
79
- |イベントバス|
80
- :売上イベント受信;
81
-
82
- |財務会計|
83
- :仕訳パターン判定;
84
- note right
85
- ・商品グループ
86
- ・顧客グループ
87
- ・取引条件
88
- end note
89
-
90
- :仕訳明細生成;
91
- note right
92
- 借方:売掛金
93
- 貸方:売上高
94
- 貸方:仮受消費税
95
- end note
96
-
97
- :貸借一致検証;
98
- :仕訳登録;
99
- :残高更新;
100
-
101
- stop
102
-
103
- @enduml
104
- ```
105
-
106
- #### 売上仕訳の基本パターン
107
-
108
- ```plantuml
109
- @startuml
110
- title 売上仕訳の基本パターン
111
-
112
- object "売上データ" as sales {
113
- 売上番号 = "SLS-2024-001"
114
- 売上日 = "2024/01/15"
115
- 顧客コード = "CUS-001"
116
- 売上金額 = 110,000円
117
- 消費税額 = 10,000円
118
- 税抜金額 = 100,000円
119
- }
120
-
121
- object "仕訳伝票" as journal {
122
- 伝票番号 = "JRN-2024-001"
123
- 起票日 = "2024/01/15"
124
- 伝票区分 = "売上仕訳"
125
- }
126
-
127
- object "借方明細" as debit {
128
- 勘定科目 = "売掛金"
129
- 金額 = 110,000円
130
- 摘要 = "CUS-001 売上"
131
- }
132
-
133
- object "貸方明細1" as credit1 {
134
- 勘定科目 = "売上高"
135
- 金額 = 100,000円
136
- 摘要 = "商品売上"
137
- }
138
-
139
- object "貸方明細2" as credit2 {
140
- 勘定科目 = "仮受消費税"
141
- 金額 = 10,000円
142
- 摘要 = "消費税10%"
143
- }
144
-
145
- sales --> journal : 変換
146
- journal --> debit
147
- journal --> credit1
148
- journal --> credit2
149
-
150
- note bottom of journal
151
- 【貸借一致の検証】
152
- 借方合計:110,000円
153
- 貸方合計:110,000円
154
- 差額:0円 ✓
155
- end note
156
-
157
- @enduml
158
- ```
159
-
160
- #### 売上仕訳パターンマスタ
161
-
162
- ```plantuml
163
- @startuml
164
- title 自動仕訳パターンマスタの構造
165
-
166
- entity "自動仕訳パターン" as pattern {
167
- *パターンID : string
168
- --
169
- *取引種別 : string
170
- 商品グループ : string
171
- 顧客グループ : string
172
- 借方科目コード : string
173
- 貸方科目コード : string
174
- 消費税科目コード : string
175
- 適用開始日 : date
176
- 適用終了日 : date
177
- }
178
-
179
- entity "勘定科目" as account {
180
- *科目コード : string
181
- --
182
- 科目名 : string
183
- BSPL区分 : string
184
- 貸借区分 : string
185
- }
186
-
187
- pattern }o--|| account : 借方科目
188
- pattern }o--|| account : 貸方科目
189
- pattern }o--|| account : 消費税科目
190
-
191
- @enduml
192
- ```
193
-
194
- <details>
195
- <summary>仕訳パターンテーブル定義</summary>
196
-
197
- ```sql
198
- -- 自動仕訳パターンマスタ
199
- CREATE TABLE 自動仕訳パターン (
200
- パターンID VARCHAR(20) PRIMARY KEY,
201
- 取引種別 VARCHAR(20) NOT NULL,
202
- 商品グループ VARCHAR(10),
203
- 顧客グループ VARCHAR(10),
204
- 借方科目コード VARCHAR(10) NOT NULL,
205
- 貸方科目コード VARCHAR(10) NOT NULL,
206
- 消費税科目コード VARCHAR(10),
207
- 適用開始日 DATE NOT NULL,
208
- 適用終了日 DATE,
209
- 作成日時 TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
210
- 更新日時 TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
211
- FOREIGN KEY (借方科目コード) REFERENCES 勘定科目(科目コード),
212
- FOREIGN KEY (貸方科目コード) REFERENCES 勘定科目(科目コード),
213
- FOREIGN KEY (消費税科目コード) REFERENCES 勘定科目(科目コード)
214
- );
215
-
216
- -- サンプルデータ
217
- INSERT INTO 自動仕訳パターン VALUES
218
- ('PTN-SALES-001', '売上', NULL, NULL, '1310', '4110', '2191', '2024-01-01', NULL),
219
- ('PTN-SALES-002', '売上', 'FOOD', NULL, '1310', '4120', '2191', '2024-01-01', NULL),
220
- ('PTN-RETURN-001', '売上返品', NULL, NULL, '4110', '1310', '2191', '2024-01-01', NULL);
221
- ```
222
-
223
- </details>
224
-
225
- ### 自動仕訳パターンの適用
226
-
227
- 商品グループや顧客グループに応じて、適切な仕訳パターンを自動選択します。
228
-
229
- ```plantuml
230
- @startuml
231
- title 自動仕訳パターン判定ロジック
232
-
233
- start
234
-
235
- :売上イベント受信;
236
-
237
- :商品グループ取得;
238
- :顧客グループ取得;
239
-
240
- if (特定商品グループ?) then (yes)
241
- :商品グループ専用\nパターン検索;
242
- else (no)
243
- if (特定顧客グループ?) then (yes)
244
- :顧客グループ専用\nパターン検索;
245
- else (no)
246
- :汎用パターン検索;
247
- endif
248
- endif
249
-
250
- if (パターン見つかった?) then (yes)
251
- :仕訳明細生成;
252
- :仕訳登録;
253
- else (no)
254
- :エラー通知;
255
- :手動仕訳待ち\nキューに投入;
256
- endif
257
-
258
- stop
259
-
260
- @enduml
261
- ```
262
-
263
- <details>
264
- <summary>Java 実装例</summary>
265
-
266
- ```java
267
- // 自動仕訳パターンリポジトリ
268
- public interface JournalPatternRepository {
269
- Optional<JournalPattern> findByTransactionTypeAndGroups(
270
- TransactionType type,
271
- String productGroup,
272
- String customerGroup,
273
- LocalDate effectiveDate
274
- );
275
- }
276
-
277
- // 自動仕訳サービス
278
- @Service
279
- @Transactional
280
- public class AutoJournalService {
281
- private final JournalPatternRepository patternRepository;
282
- private final JournalRepository journalRepository;
283
- private final AccountRepository accountRepository;
284
-
285
- @EventListener
286
- public void handleSalesCompleted(SalesCompletedEvent event) {
287
- // パターン検索(優先順位:商品グループ > 顧客グループ > 汎用)
288
- JournalPattern pattern = findPattern(event);
289
-
290
- // 仕訳伝票生成
291
- JournalEntry journal = createJournalEntry(event, pattern);
292
-
293
- // 貸借一致検証
294
- validateBalance(journal);
295
-
296
- // 仕訳登録
297
- journalRepository.save(journal);
298
-
299
- // 残高更新イベント発行
300
- publishBalanceUpdateEvent(journal);
301
- }
302
-
303
- private JournalPattern findPattern(SalesCompletedEvent event) {
304
- // 1. 商品グループ + 顧客グループで検索
305
- Optional<JournalPattern> pattern = patternRepository
306
- .findByTransactionTypeAndGroups(
307
- TransactionType.SALES,
308
- event.productGroup(),
309
- event.customerGroup(),
310
- event.salesDate()
311
- );
312
-
313
- if (pattern.isPresent()) return pattern.get();
314
-
315
- // 2. 商品グループのみで検索
316
- pattern = patternRepository.findByTransactionTypeAndGroups(
317
- TransactionType.SALES,
318
- event.productGroup(),
319
- null,
320
- event.salesDate()
321
- );
322
-
323
- if (pattern.isPresent()) return pattern.get();
324
-
325
- // 3. 顧客グループのみで検索
326
- pattern = patternRepository.findByTransactionTypeAndGroups(
327
- TransactionType.SALES,
328
- null,
329
- event.customerGroup(),
330
- event.salesDate()
331
- );
332
-
333
- if (pattern.isPresent()) return pattern.get();
334
-
335
- // 4. 汎用パターンで検索
336
- return patternRepository.findByTransactionTypeAndGroups(
337
- TransactionType.SALES,
338
- null,
339
- null,
340
- event.salesDate()
341
- ).orElseThrow(() -> new PatternNotFoundException(
342
- "仕訳パターンが見つかりません: " + event.salesId()
343
- ));
344
- }
345
-
346
- private JournalEntry createJournalEntry(
347
- SalesCompletedEvent event,
348
- JournalPattern pattern) {
349
-
350
- List<JournalLine> lines = new ArrayList<>();
351
-
352
- // 借方:売掛金
353
- lines.add(JournalLine.debit(
354
- pattern.debitAccountCode(),
355
- event.totalAmount(),
356
- "売掛金計上 " + event.customerName()
357
- ));
358
-
359
- // 貸方:売上高
360
- lines.add(JournalLine.credit(
361
- pattern.creditAccountCode(),
362
- event.netAmount(),
363
- "売上計上 " + event.salesId()
364
- ));
365
-
366
- // 貸方:仮受消費税
367
- if (event.taxAmount().compareTo(BigDecimal.ZERO) > 0) {
368
- lines.add(JournalLine.credit(
369
- pattern.taxAccountCode(),
370
- event.taxAmount(),
371
- "仮受消費税"
372
- ));
373
- }
374
-
375
- return new JournalEntry(
376
- generateJournalId(),
377
- event.salesDate(),
378
- JournalType.AUTO_SALES,
379
- event.salesId(),
380
- lines
381
- );
382
- }
383
-
384
- private void validateBalance(JournalEntry journal) {
385
- BigDecimal debitTotal = journal.lines().stream()
386
- .filter(l -> l.debitCredit() == DebitCredit.DEBIT)
387
- .map(JournalLine::amount)
388
- .reduce(BigDecimal.ZERO, BigDecimal::add);
389
-
390
- BigDecimal creditTotal = journal.lines().stream()
391
- .filter(l -> l.debitCredit() == DebitCredit.CREDIT)
392
- .map(JournalLine::amount)
393
- .reduce(BigDecimal.ZERO, BigDecimal::add);
394
-
395
- if (debitTotal.compareTo(creditTotal) != 0) {
396
- throw new BalanceMismatchException(
397
- "貸借不一致: 借方=" + debitTotal + ", 貸方=" + creditTotal
398
- );
399
- }
400
- }
401
- }
402
- ```
403
-
404
- </details>
405
-
406
- ### イベント駆動による仕訳生成
407
-
408
- 販売管理システムで発生する各種イベントに応じて、自動的に仕訳を生成します。
409
-
410
- ```plantuml
411
- @startuml
412
- title 販売イベントと仕訳の対応
413
-
414
- ' 配置を制御するための設定
415
- skinparam nodesep 50
416
- skinparam ranksep 50
417
-
418
- rectangle "販売管理イベント" as sales_events {
419
- rectangle "売上計上" as sales_completed
420
- rectangle "売上返品" as sales_return
421
- rectangle "請求確定" as billing_confirmed
422
- rectangle "入金確認" as payment_received
423
- rectangle "貸倒発生" as bad_debt
424
- }
425
-
426
- rectangle "自動仕訳" as auto_journal {
427
- rectangle "売上仕訳\n生成" as sales_journal
428
- rectangle "返品仕訳\n生成" as return_journal
429
- rectangle "(請求時仕訳\nなし)" as billing_journal
430
- rectangle "入金仕訳\n生成" as payment_journal
431
- rectangle "貸倒仕訳\n生成" as bad_debt_journal
432
- }
433
-
434
- rectangle "仕訳パターン" as patterns {
435
- rectangle "==売上仕訳\n\n借方: 売掛金\n貸方: 売上高\n貸方: 仮受消費税" as p1
436
- rectangle "==返品仕訳\n\n借方: 売上高\n借方: 仮受消費税\n貸方: 売掛金" as p2
437
- rectangle "==入金仕訳\n\n借方: 普通預金\n貸方: 売掛金" as p3
438
- rectangle "==貸倒仕訳\n\n借方: 貸倒損失\n貸方: 売掛金" as p4
439
- }
440
-
441
- sales_completed --> sales_journal
442
- sales_return --> return_journal
443
- billing_confirmed --> billing_journal
444
- payment_received --> payment_journal
445
- bad_debt --> bad_debt_journal
446
-
447
- sales_journal --> p1
448
- return_journal --> p2
449
- payment_journal --> p3
450
- bad_debt_journal --> p4
451
-
452
- @enduml
453
- ```
454
-
455
- #### 入金消込と仕訳生成
456
-
457
- ```plantuml
458
- @startuml
459
- title 入金消込と仕訳生成フロー
460
-
461
- |販売管理|
462
- start
463
- :入金データ受信;
464
- :請求データ照合;
465
-
466
- if (消込対象あり?) then (yes)
467
- :入金消込処理;
468
- :消込イベント発行;
469
- else (no)
470
- :前受金計上;
471
- :前受金イベント発行;
472
- endif
473
-
474
- |財務会計|
475
- if (消込イベント?) then (yes)
476
- :入金仕訳生成;
477
- note right
478
- 借方: 普通預金
479
- 貸方: 売掛金
480
- end note
481
- else (no)
482
- :前受金仕訳生成;
483
- note right
484
- 借方: 普通預金
485
- 貸方: 前受金
486
- end note
487
- endif
488
-
489
- :仕訳登録;
490
- :売掛金残高更新;
491
-
492
- stop
493
-
494
- @enduml
495
- ```
496
-
497
- ---
498
-
499
- ## 35.2 販売管理と生産管理の連携
500
-
501
- 販売管理システムと生産管理システムの連携は、需要と供給のバランスを取るために重要です。受注情報を生産計画に反映し、在庫情報を双方向で同期します。
502
-
503
- ### 連携の全体像
504
-
505
- ```plantuml
506
- @startuml
507
- title 販売管理と生産管理の連携全体像
508
-
509
- package "販売管理システム" as sales {
510
- rectangle "受注管理" as order
511
- rectangle "出荷管理" as shipment
512
- rectangle "在庫照会" as sales_inv
513
- }
514
-
515
- package "イベントバス" as events {
516
- collections "受注イベント" as order_event
517
- collections "在庫イベント" as inv_event
518
- collections "完成イベント" as complete_event
519
- }
520
-
521
- package "生産管理システム" as production {
522
- rectangle "生産計画" as plan
523
- rectangle "MRP" as mrp
524
- rectangle "製造管理" as manufacturing
525
- rectangle "在庫管理" as prod_inv
526
- }
527
-
528
- order --> order_event : 受注確定
529
- order_event --> plan : 需要情報
530
-
531
- plan --> mrp : 所要量展開
532
- mrp --> manufacturing : 製造指示
533
-
534
- manufacturing --> complete_event : 完成報告
535
- complete_event --> prod_inv : 在庫計上
536
- prod_inv --> inv_event : 在庫更新
537
-
538
- inv_event --> sales_inv : 在庫同期
539
- sales_inv --> shipment : 引当可能数
540
-
541
- @enduml
542
- ```
543
-
544
- ### 受注情報から生産計画への連携
545
-
546
- ```plantuml
547
- @startuml
548
- title 受注から生産計画への連携フロー
549
-
550
- |販売管理|
551
- start
552
- :受注登録;
553
- :受注確定;
554
- :受注イベント発行;
555
-
556
- |生産計画|
557
- :受注イベント受信;
558
- :需要情報登録;
559
-
560
- :在庫・発注残確認;
561
- if (在庫で充足?) then (yes)
562
- :引当処理;
563
- else (no)
564
- :正味所要量計算;
565
- if (製品?) then (yes)
566
- :製造オーダ作成;
567
- else (no)
568
- :発注提案作成;
569
- endif
570
- endif
571
-
572
- :計画確定;
573
- :計画確定イベント発行;
574
-
575
- |販売管理|
576
- :納期回答更新;
577
-
578
- stop
579
-
580
- @enduml
581
- ```
582
-
583
- #### 受注イベントの構造
584
-
585
- ```plantuml
586
- @startuml
587
- title 受注イベントの構造
588
-
589
- class "OrderConfirmedEvent" as event {
590
- +eventId: String
591
- +timestamp: Instant
592
- +orderId: String
593
- +customerId: String
594
- +requestedDeliveryDate: LocalDate
595
- +priority: Priority
596
- +lines: List<OrderLineEvent>
597
- }
598
-
599
- class "OrderLineEvent" as line {
600
- +lineNumber: int
601
- +productId: String
602
- +quantity: BigDecimal
603
- +unit: String
604
- +requestedDate: LocalDate
605
- }
606
-
607
- event "1" -- "*" line
608
-
609
- note right of event
610
- 【生産計画に必要な情報】
611
- ・製品コード
612
- ・必要数量
613
- ・希望納期
614
- ・優先度
615
- end note
616
-
617
- @enduml
618
- ```
619
-
620
- <details>
621
- <summary>Java 実装例</summary>
622
-
623
- ```java
624
- // 受注確定イベント
625
- public record OrderConfirmedEvent(
626
- String eventId,
627
- Instant timestamp,
628
- String orderId,
629
- String customerId,
630
- LocalDate requestedDeliveryDate,
631
- Priority priority,
632
- List<OrderLineEvent> lines
633
- ) {
634
- public enum Priority {
635
- URGENT, // 緊急
636
- HIGH, // 高
637
- NORMAL, // 通常
638
- LOW // 低
639
- }
640
- }
641
-
642
- // 生産計画サービス
643
- @Service
644
- public class ProductionPlanningService {
645
- private final DemandRepository demandRepository;
646
- private final InventoryRepository inventoryRepository;
647
- private final MrpService mrpService;
648
-
649
- @EventListener
650
- public void handleOrderConfirmed(OrderConfirmedEvent event) {
651
- // 需要情報として登録
652
- for (OrderLineEvent line : event.lines()) {
653
- Demand demand = Demand.fromOrder(
654
- event.orderId(),
655
- line.productId(),
656
- line.quantity(),
657
- line.requestedDate(),
658
- event.priority()
659
- );
660
- demandRepository.save(demand);
661
-
662
- // 在庫引当を試行
663
- AllocationResult result = tryAllocate(demand);
664
-
665
- if (!result.isFullyAllocated()) {
666
- // MRP実行して製造/発注オーダを生成
667
- mrpService.execute(demand);
668
- }
669
- }
670
-
671
- // 納期回答イベント発行
672
- publishDeliveryDateResponse(event.orderId());
673
- }
674
-
675
- private AllocationResult tryAllocate(Demand demand) {
676
- BigDecimal available = inventoryRepository
677
- .findAvailableQuantity(demand.productId());
678
-
679
- if (available.compareTo(demand.quantity()) >= 0) {
680
- // 引当実行
681
- inventoryRepository.allocate(
682
- demand.productId(),
683
- demand.quantity(),
684
- demand.demandId()
685
- );
686
- return AllocationResult.fullyAllocated(demand.quantity());
687
- } else {
688
- // 部分引当
689
- if (available.compareTo(BigDecimal.ZERO) > 0) {
690
- inventoryRepository.allocate(
691
- demand.productId(),
692
- available,
693
- demand.demandId()
694
- );
695
- }
696
- return AllocationResult.partiallyAllocated(
697
- available,
698
- demand.quantity().subtract(available)
699
- );
700
- }
701
- }
702
- }
703
- ```
704
-
705
- </details>
706
-
707
- ### 需要予測データの共有
708
-
709
- ```plantuml
710
- @startuml
711
- title 需要予測データの共有
712
-
713
- package "販売管理" as sales {
714
- rectangle "販売実績" as sales_history
715
- rectangle "受注残" as backlog
716
- rectangle "見積案件" as quotation
717
- }
718
-
719
- package "需要予測エンジン" as forecast {
720
- rectangle "時系列分析" as time_series
721
- rectangle "季節調整" as seasonal
722
- rectangle "トレンド分析" as trend
723
- }
724
-
725
- package "生産計画" as planning {
726
- rectangle "MPS\n(基準生産計画)" as mps
727
- rectangle "MRP\n(所要量計画)" as mrp
728
- }
729
-
730
- sales_history --> forecast
731
- backlog --> forecast
732
- quotation --> forecast
733
-
734
- forecast --> mps : 需要予測データ
735
- mps --> mrp : 計画生産量
736
-
737
- note right of forecast
738
- 【予測データの内容】
739
- ・製品別月次予測数量
740
- ・予測精度(信頼区間)
741
- ・季節変動係数
742
- ・トレンド方向
743
- end note
744
-
745
- @enduml
746
- ```
747
-
748
- #### 需要予測イベント
749
-
750
- ```plantuml
751
- @startuml
752
- title 需要予測の連携サイクル
753
-
754
- |販売管理|
755
- start
756
- :月次販売実績集計;
757
- :受注残・見積集計;
758
- :需要予測更新;
759
- :予測データ発行;
760
-
761
- |生産計画|
762
- :予測データ受信;
763
- :MPS更新;
764
- note right
765
- ・月次生産計画
766
- ・安全在庫調整
767
- ・生産能力確認
768
- end note
769
-
770
- :MRP実行;
771
- :発注提案生成;
772
- :製造計画生成;
773
-
774
- if (計画変更あり?) then (yes)
775
- :計画変更通知;
776
- endif
777
-
778
- |販売管理|
779
- :納期情報更新;
780
-
781
- stop
782
-
783
- @enduml
784
- ```
785
-
786
- ### 在庫情報の同期
787
-
788
- 販売管理と生産管理の両方で在庫を管理する場合、整合性を保つ必要があります。
789
-
790
- ```plantuml
791
- @startuml
792
- title 在庫情報の同期パターン
793
-
794
- package "販売管理" as sales {
795
- database "販売在庫ビュー\n----\n在庫数\n引当数\n有効在庫数" as sales_inv
796
- }
797
-
798
- package "生産管理" as production {
799
- database "生産在庫(マスタ)\n----\n在庫数\n引当数\n品質状態\nロット情報" as prod_inv
800
- }
801
-
802
- package "同期メカニズム" as sync {
803
- collections "在庫更新\nイベント" as inv_event
804
- rectangle "在庫同期\nサービス" as sync_svc
805
- }
806
-
807
- prod_inv --> inv_event : 在庫変動時
808
- inv_event --> sync_svc
809
- sync_svc --> sales_inv : ビュー更新
810
-
811
- note bottom of sync
812
- 【同期タイミング】
813
- ・完成時(入庫)
814
- ・出荷時(出庫)
815
- ・棚卸差異発生時
816
- ・品質状態変更時
817
-
818
- 【同期内容】
819
- ・製品別在庫数
820
- ・引当可能数
821
- ・入庫予定
822
- end note
823
-
824
- @enduml
825
- ```
826
-
827
- <details>
828
- <summary>Java 実装例</summary>
829
-
830
- ```java
831
- // 在庫更新イベント
832
- public record InventoryUpdatedEvent(
833
- String eventId,
834
- Instant timestamp,
835
- String productId,
836
- String warehouseId,
837
- BigDecimal previousQuantity,
838
- BigDecimal currentQuantity,
839
- BigDecimal allocatedQuantity,
840
- UpdateReason reason
841
- ) {
842
- public enum UpdateReason {
843
- COMPLETION, // 製造完成
844
- SHIPMENT, // 出荷
845
- RECEIPT, // 入荷
846
- ADJUSTMENT, // 棚卸調整
847
- QUALITY_CHANGE // 品質状態変更
848
- }
849
-
850
- public BigDecimal getAvailableQuantity() {
851
- return currentQuantity.subtract(allocatedQuantity);
852
- }
853
- }
854
-
855
- // 在庫同期サービス
856
- @Service
857
- public class InventorySyncService {
858
- private final SalesInventoryRepository salesInventoryRepository;
859
-
860
- @EventListener
861
- public void handleInventoryUpdated(InventoryUpdatedEvent event) {
862
- // 販売在庫ビューを更新
863
- SalesInventory salesInv = salesInventoryRepository
864
- .findByProductId(event.productId())
865
- .orElse(new SalesInventory(event.productId()));
866
-
867
- salesInv.updateQuantity(
868
- event.currentQuantity(),
869
- event.allocatedQuantity()
870
- );
871
-
872
- salesInventoryRepository.save(salesInv);
873
-
874
- // 低在庫アラート
875
- if (salesInv.getAvailableQuantity()
876
- .compareTo(salesInv.getSafetyStock()) < 0) {
877
- publishLowStockAlert(event.productId());
878
- }
879
- }
880
- }
881
- ```
882
-
883
- </details>
884
-
885
- ---
886
-
887
- ## 35.3 生産管理と財務会計の連携
888
-
889
- 生産管理システムと財務会計システムの連携は、製造原価の正確な把握と会計処理に不可欠です。
890
-
891
- ### 連携の全体像
892
-
893
- ```plantuml
894
- @startuml
895
- title 生産管理と財務会計の連携全体像
896
-
897
- package "生産管理システム" as production {
898
- rectangle "購買管理" as purchase
899
- rectangle "製造管理" as manufacturing
900
- rectangle "在庫管理" as inventory
901
- rectangle "原価管理" as cost
902
- }
903
-
904
- package "イベントバス" as events {
905
- collections "検収イベント" as receipt_event
906
- collections "完成イベント" as complete_event
907
- collections "棚卸イベント" as inventory_event
908
- collections "原価イベント" as cost_event
909
- }
910
-
911
- package "財務会計システム" as accounting {
912
- rectangle "自動仕訳" as auto_journal
913
- rectangle "仕訳管理" as journal
914
- rectangle "原価会計" as cost_acc
915
- }
916
-
917
- purchase --> receipt_event : 検収確定
918
- manufacturing --> complete_event : 製造完成
919
- inventory --> inventory_event : 棚卸差異
920
- cost --> cost_event : 原価計算完了
921
-
922
- receipt_event --> auto_journal
923
- complete_event --> auto_journal
924
- inventory_event --> auto_journal
925
- cost_event --> cost_acc
926
-
927
- auto_journal --> journal
928
-
929
- @enduml
930
- ```
931
-
932
- ### 製造原価から仕訳への変換
933
-
934
- 製造原価は、材料費・労務費・製造間接費の3要素で構成されます。
935
-
936
- ```plantuml
937
- @startuml
938
- title 製造原価の構成と仕訳
939
-
940
- object "製造原価" as cost {
941
- 製造オーダ = "WO-2024-001"
942
- 製品コード = "PRD-001"
943
- 完成数量 = 100
944
- }
945
-
946
- object "材料費" as material {
947
- 直接材料費 = 50,000円
948
- 間接材料費 = 5,000円
949
- }
950
-
951
- object "労務費" as labor {
952
- 直接労務費 = 30,000円
953
- 間接労務費 = 10,000円
954
- }
955
-
956
- object "製造間接費" as overhead {
957
- 配賦額 = 15,000円
958
- }
959
-
960
- object "原価仕訳" as journal {
961
- 借方: 製品 110,000円
962
- 貸方: 仕掛品 110,000円
963
- }
964
-
965
- cost --> material
966
- cost --> labor
967
- cost --> overhead
968
-
969
- material --> journal : 55,000円
970
- labor --> journal : 40,000円
971
- overhead --> journal : 15,000円
972
-
973
- note bottom of journal
974
- 【製造完成時の仕訳】
975
- 借方:製品(資産)
976
- 貸方:仕掛品(資産)
977
-
978
- 製品原価 = 材料費 + 労務費 + 製造間接費
979
- = 55,000 + 40,000 + 15,000
980
- = 110,000円
981
- end note
982
-
983
- @enduml
984
- ```
985
-
986
- #### 製造原価計算フロー
987
-
988
- ```plantuml
989
- @startuml
990
- title 製造原価計算と仕訳生成フロー
991
-
992
- |生産管理|
993
- start
994
- :製造完成報告;
995
-
996
- :材料消費実績集計;
997
- note right
998
- ・直接材料費
999
- ・間接材料費
1000
- end note
1001
-
1002
- :工数実績集計;
1003
- note right
1004
- ・直接労務費
1005
- ・間接労務費
1006
- end note
1007
-
1008
- :製造間接費配賦;
1009
- note right
1010
- ・配賦基準で按分
1011
- (直接作業時間等)
1012
- end note
1013
-
1014
- :製品原価計算;
1015
- :完成原価イベント発行;
1016
-
1017
- |財務会計|
1018
- :原価イベント受信;
1019
- :製造完成仕訳生成;
1020
- note right
1021
- 借方: 製品
1022
- 貸方: 仕掛品
1023
- end note
1024
-
1025
- :仕訳登録;
1026
- :在庫評価額更新;
1027
-
1028
- stop
1029
-
1030
- @enduml
1031
- ```
1032
-
1033
- <details>
1034
- <summary>Java 実装例</summary>
1035
-
1036
- ```java
1037
- // 製造完成原価イベント
1038
- public record ManufacturingCompletedEvent(
1039
- String eventId,
1040
- Instant timestamp,
1041
- String workOrderId,
1042
- String productId,
1043
- BigDecimal completedQuantity,
1044
- CostBreakdown costBreakdown
1045
- ) {
1046
- public record CostBreakdown(
1047
- BigDecimal directMaterialCost,
1048
- BigDecimal indirectMaterialCost,
1049
- BigDecimal directLaborCost,
1050
- BigDecimal indirectLaborCost,
1051
- BigDecimal manufacturingOverhead
1052
- ) {
1053
- public BigDecimal getTotalCost() {
1054
- return directMaterialCost
1055
- .add(indirectMaterialCost)
1056
- .add(directLaborCost)
1057
- .add(indirectLaborCost)
1058
- .add(manufacturingOverhead);
1059
- }
1060
-
1061
- public BigDecimal getMaterialCost() {
1062
- return directMaterialCost.add(indirectMaterialCost);
1063
- }
1064
-
1065
- public BigDecimal getLaborCost() {
1066
- return directLaborCost.add(indirectLaborCost);
1067
- }
1068
- }
1069
- }
1070
-
1071
- // 製造原価仕訳サービス
1072
- @Service
1073
- public class ManufacturingJournalService {
1074
- private final JournalRepository journalRepository;
1075
-
1076
- @EventListener
1077
- public void handleManufacturingCompleted(ManufacturingCompletedEvent event) {
1078
- CostBreakdown cost = event.costBreakdown();
1079
-
1080
- List<JournalLine> lines = new ArrayList<>();
1081
-
1082
- // 借方:製品
1083
- lines.add(JournalLine.debit(
1084
- AccountCode.FINISHED_GOODS,
1085
- cost.getTotalCost(),
1086
- "製造完成 " + event.workOrderId()
1087
- ));
1088
-
1089
- // 貸方:仕掛品
1090
- lines.add(JournalLine.credit(
1091
- AccountCode.WORK_IN_PROCESS,
1092
- cost.getTotalCost(),
1093
- "仕掛品振替"
1094
- ));
1095
-
1096
- JournalEntry journal = new JournalEntry(
1097
- generateJournalId(),
1098
- LocalDate.now(),
1099
- JournalType.MANUFACTURING_COMPLETION,
1100
- event.workOrderId(),
1101
- lines
1102
- );
1103
-
1104
- journalRepository.save(journal);
1105
- }
1106
- }
1107
- ```
1108
-
1109
- </details>
1110
-
1111
- ### 検収データの会計連携
1112
-
1113
- 仕入先からの購買品検収時に、買掛金を計上します。
1114
-
1115
- ```plantuml
1116
- @startuml
1117
- title 検収から仕訳への連携
1118
-
1119
- |生産管理|
1120
- start
1121
- :入荷受入;
1122
- :受入検査;
1123
-
1124
- if (検査合格?) then (yes)
1125
- :検収処理;
1126
- :在庫計上;
1127
- :検収イベント発行;
1128
- else (no)
1129
- :返品処理;
1130
- stop
1131
- endif
1132
-
1133
- |財務会計|
1134
- :検収イベント受信;
1135
- :仕入仕訳生成;
1136
- note right
1137
- 借方: 材料/仕掛品
1138
- 借方: 仮払消費税
1139
- 貸方: 買掛金
1140
- end note
1141
-
1142
- :仕訳登録;
1143
- :買掛金残高更新;
1144
-
1145
- stop
1146
-
1147
- @enduml
1148
- ```
1149
-
1150
- #### 検収仕訳のパターン
1151
-
1152
- ```plantuml
1153
- @startuml
1154
- title 検収仕訳のパターン
1155
-
1156
- object "検収データ" as receipt {
1157
- 検収番号 = "RCV-2024-001"
1158
- 検収日 = "2024/01/15"
1159
- 仕入先 = "SUP-001"
1160
- 検収金額 = 55,000円
1161
- 消費税額 = 5,000円
1162
- }
1163
-
1164
- object "材料検収仕訳" as material_journal {
1165
- 借方: 材料 50,000円
1166
- 借方: 仮払消費税 5,000円
1167
- 貸方: 買掛金 55,000円
1168
- }
1169
-
1170
- object "外注検収仕訳" as subcontract_journal {
1171
- 借方: 外注加工費 50,000円
1172
- 借方: 仮払消費税 5,000円
1173
- 貸方: 買掛金 55,000円
1174
- }
1175
-
1176
- receipt --> material_journal : 材料の場合
1177
- receipt --> subcontract_journal : 外注の場合
1178
-
1179
- @enduml
1180
- ```
1181
-
1182
- ### 棚卸差異の会計処理
1183
-
1184
- 棚卸で発見された差異は、適切に会計処理する必要があります。
1185
-
1186
- ```plantuml
1187
- @startuml
1188
- title 棚卸差異の会計処理フロー
1189
-
1190
- |生産管理|
1191
- start
1192
- :棚卸実施;
1193
- :帳簿在庫と\n実地在庫の比較;
1194
-
1195
- if (差異あり?) then (yes)
1196
- :差異原因分析;
1197
-
1198
- if (帳簿 > 実地?) then (棚卸減耗)
1199
- :減耗損計上;
1200
- :棚卸減耗\nイベント発行;
1201
- else (帳簿 < 実地)
1202
- :在庫増加調整;
1203
- :棚卸増加\nイベント発行;
1204
- endif
1205
- else (no)
1206
- :差異なし\n処理終了;
1207
- stop
1208
- endif
1209
-
1210
- |財務会計|
1211
- :棚卸イベント受信;
1212
-
1213
- if (減耗?) then (yes)
1214
- :減耗仕訳生成;
1215
- note right
1216
- 借方: 棚卸減耗損
1217
- 貸方: 材料/製品
1218
- end note
1219
- else (no)
1220
- :増加仕訳生成;
1221
- note right
1222
- 借方: 材料/製品
1223
- 貸方: 雑収入
1224
- end note
1225
- endif
1226
-
1227
- :仕訳登録;
1228
- :在庫評価額更新;
1229
-
1230
- stop
1231
-
1232
- @enduml
1233
- ```
1234
-
1235
- <details>
1236
- <summary>Java 実装例</summary>
1237
-
1238
- ```java
1239
- // 棚卸差異イベント
1240
- public record InventoryAdjustmentEvent(
1241
- String eventId,
1242
- Instant timestamp,
1243
- String productId,
1244
- String warehouseId,
1245
- BigDecimal bookQuantity,
1246
- BigDecimal actualQuantity,
1247
- BigDecimal differenceQuantity,
1248
- BigDecimal unitCost,
1249
- AdjustmentType type,
1250
- String reason
1251
- ) {
1252
- public enum AdjustmentType {
1253
- SHRINKAGE, // 減耗(帳簿 > 実地)
1254
- SURPLUS // 過剰(帳簿 < 実地)
1255
- }
1256
-
1257
- public BigDecimal getAdjustmentAmount() {
1258
- return differenceQuantity.abs().multiply(unitCost);
1259
- }
1260
- }
1261
-
1262
- // 棚卸仕訳サービス
1263
- @Service
1264
- public class InventoryAdjustmentJournalService {
1265
- private final JournalRepository journalRepository;
1266
-
1267
- @EventListener
1268
- public void handleInventoryAdjustment(InventoryAdjustmentEvent event) {
1269
- List<JournalLine> lines = new ArrayList<>();
1270
-
1271
- if (event.type() == AdjustmentType.SHRINKAGE) {
1272
- // 減耗の場合
1273
- lines.add(JournalLine.debit(
1274
- AccountCode.INVENTORY_SHRINKAGE_LOSS,
1275
- event.getAdjustmentAmount(),
1276
- "棚卸減耗 " + event.productId() + " " + event.reason()
1277
- ));
1278
- lines.add(JournalLine.credit(
1279
- determineInventoryAccount(event.productId()),
1280
- event.getAdjustmentAmount(),
1281
- "在庫減少"
1282
- ));
1283
- } else {
1284
- // 過剰の場合
1285
- lines.add(JournalLine.debit(
1286
- determineInventoryAccount(event.productId()),
1287
- event.getAdjustmentAmount(),
1288
- "在庫増加"
1289
- ));
1290
- lines.add(JournalLine.credit(
1291
- AccountCode.MISCELLANEOUS_INCOME,
1292
- event.getAdjustmentAmount(),
1293
- "棚卸差益 " + event.productId()
1294
- ));
1295
- }
1296
-
1297
- JournalEntry journal = new JournalEntry(
1298
- generateJournalId(),
1299
- LocalDate.now(),
1300
- JournalType.INVENTORY_ADJUSTMENT,
1301
- event.eventId(),
1302
- lines
1303
- );
1304
-
1305
- journalRepository.save(journal);
1306
- }
1307
-
1308
- private String determineInventoryAccount(String productId) {
1309
- // 製品か材料かで勘定科目を決定
1310
- Product product = productRepository.findById(productId).orElseThrow();
1311
- return switch (product.type()) {
1312
- case FINISHED_GOODS -> AccountCode.FINISHED_GOODS;
1313
- case WORK_IN_PROCESS -> AccountCode.WORK_IN_PROCESS;
1314
- case RAW_MATERIAL -> AccountCode.RAW_MATERIALS;
1315
- default -> AccountCode.SUPPLIES;
1316
- };
1317
- }
1318
- }
1319
- ```
1320
-
1321
- </details>
1322
-
1323
- ---
1324
-
1325
- ## 35.4 三システム統合の全体像
1326
-
1327
- 販売・生産・会計の3システムを統合した全体像を整理します。
1328
-
1329
- ```plantuml
1330
- @startuml
1331
- title 基幹業務システム統合の全体像
1332
-
1333
- package "販売管理" as sales {
1334
- rectangle "受注" as order
1335
- rectangle "出荷" as shipment
1336
- rectangle "売上" as sales_tx
1337
- rectangle "請求" as billing
1338
- rectangle "入金" as receipt
1339
- }
1340
-
1341
- package "生産管理" as production {
1342
- rectangle "生産計画" as plan
1343
- rectangle "購買" as purchase
1344
- rectangle "製造" as manufacturing
1345
- rectangle "在庫" as inventory
1346
- rectangle "原価" as cost
1347
- }
1348
-
1349
- package "財務会計" as accounting {
1350
- rectangle "仕訳" as journal
1351
- rectangle "売掛金" as ar
1352
- rectangle "買掛金" as ap
1353
- rectangle "在庫資産" as inv_asset
1354
- }
1355
-
1356
- ' 販売→生産
1357
- order --> plan : 受注情報
1358
- inventory --> shipment : 在庫引当
1359
-
1360
- ' 販売→会計
1361
- sales_tx --> journal : 売上仕訳
1362
- billing --> ar : 請求
1363
- receipt --> ar : 入金消込
1364
-
1365
- ' 生産→会計
1366
- purchase --> ap : 検収仕訳
1367
- manufacturing --> inv_asset : 完成仕訳
1368
- cost --> journal : 原価仕訳
1369
-
1370
- ' 在庫
1371
- inventory --> inv_asset : 在庫評価
1372
-
1373
- @enduml
1374
- ```
1375
-
1376
- ### イベントカタログ
1377
-
1378
- ```plantuml
1379
- @startuml
1380
- title システム間連携イベントカタログ
1381
-
1382
- class "販売イベント" as sales_events {
1383
- OrderConfirmed(受注確定)
1384
- ShipmentCompleted(出荷完了)
1385
- SalesCompleted(売上計上)
1386
- BillingConfirmed(請求確定)
1387
- PaymentReceived(入金確認)
1388
- }
1389
-
1390
- class "生産イベント" as prod_events {
1391
- DemandRegistered(需要登録)
1392
- WorkOrderReleased(製造指示)
1393
- ProductionCompleted(製造完成)
1394
- ReceiptConfirmed(検収確定)
1395
- InventoryAdjusted(在庫調整)
1396
- }
1397
-
1398
- class "会計イベント" as acc_events {
1399
- JournalPosted(仕訳計上)
1400
- BalanceUpdated(残高更新)
1401
- MonthEndClosed(月次締め)
1402
- }
1403
-
1404
- note right of sales_events
1405
- 【発行元】販売管理
1406
- 【購読者】生産計画、自動仕訳
1407
- end note
1408
-
1409
- note right of prod_events
1410
- 【発行元】生産管理
1411
- 【購読者】販売在庫、自動仕訳
1412
- end note
1413
-
1414
- note right of acc_events
1415
- 【発行元】財務会計
1416
- 【購読者】経営ダッシュボード
1417
- end note
1418
-
1419
- @enduml
1420
- ```
1421
-
1422
- ---
1423
-
1424
- ## 35.5 まとめ
1425
-
1426
- 本章では、基幹業務システムの具体的な連携パターンについて解説しました。
1427
-
1428
- ### 学んだ連携パターン
1429
-
1430
- | 連携パターン | 発生元 | 連携先 | 主な処理 |
1431
- |------------|-------|-------|---------|
1432
- | 売上→仕訳 | 販売管理 | 財務会計 | 売掛金・売上計上 |
1433
- | 入金→消込 | 販売管理 | 財務会計 | 売掛金消込 |
1434
- | 受注→計画 | 販売管理 | 生産管理 | 需要登録・MRP |
1435
- | 完成→在庫 | 生産管理 | 販売管理 | 在庫同期 |
1436
- | 検収→仕訳 | 生産管理 | 財務会計 | 買掛金計上 |
1437
- | 完成→仕訳 | 生産管理 | 財務会計 | 製品・仕掛品振替 |
1438
- | 棚卸→仕訳 | 生産管理 | 財務会計 | 棚卸損益計上 |
1439
-
1440
- ### 連携設計のポイント
1441
-
1442
- 1. **イベント駆動の採用**
1443
-
1444
- - システム間の疎結合を実現
1445
- - 非同期処理による可用性向上
1446
- - 監査証跡の確保
1447
-
1448
- 2. **自動仕訳パターンの標準化**
1449
-
1450
- - 取引種別ごとの仕訳パターン定義
1451
- - 柔軟な条件分岐(商品/顧客グループ)
1452
- - 例外処理の明確化
1453
-
1454
- 3. **データ整合性の確保**
1455
-
1456
- - イベント順序の保証
1457
- - 補償トランザクション
1458
- - 定期的な突合処理
1459
-
1460
- ### 次章の予告
1461
-
1462
- 第36章では、マスタデータ管理(MDM)について解説します。複数システムで共有されるマスタデータの一元管理方法と、MDMパターンの選択基準を学びます。