@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,93 +0,0 @@
1
- # テスト駆動開発から始めるプログラミング入門
2
-
3
- 本記事シリーズは、テスト駆動開発(TDD)の手法を用いて、様々なプログラミング言語の特徴を実践的に学ぶためのガイドです。
4
-
5
- FizzBuzz 問題を共通題材に、14 の言語で同じ TDD サイクル(Red-Green-Refactor)を体験し、言語ごとの設計思想と共通する本質を探求します。
6
-
7
- ## 言語別解説
8
-
9
- | 言語 | 環境 | 特徴 |
10
- |------|------|------|
11
- | [Java](java/index.md) | JVM | 静的型付け、オブジェクト指向、豊富なエコシステム |
12
- | [JavaScript](node/index.md) | Node.js | 動的型付け、プロトタイプベース、非同期処理 |
13
- | [TypeScript](node/index.md) | Node.js | JavaScript + 静的型付け、型推論、インターフェース |
14
- | [Python](python/index.md) | CPython | 動的型付け、読みやすさ重視、マルチパラダイム |
15
- | [Ruby](ruby/index.md) | CRuby | 動的型付け、すべてがオブジェクト、DSL 親和性 |
16
- | [PHP](php/index.md) | PHP | 動的型付け、Web 特化、漸進的型付け対応 |
17
- | [Go](go/index.md) | Go | 静的型付け、ゴルーチン、シンプルな言語仕様 |
18
- | [Rust](rust/index.md) | Rust | 所有権システム、ゼロコスト抽象化、メモリ安全性 |
19
- | [C#](csharp/index.md) | .NET | 静的型付け、OOP + FP ハイブリッド、LINQ |
20
- | [F#](fsharp/index.md) | .NET | 関数型ファースト、判別共用体、パイプライン |
21
- | [Clojure](clojure/index.md) | JVM | LISP 方言、動的型付け、不変データ構造 |
22
- | [Scala](scala/index.md) | JVM | OOP と FP の融合、強力な型システム、パターンマッチング |
23
- | [Elixir](elixir/index.md) | Erlang VM | 関数型、並行処理、パターンマッチング、OTP |
24
- | [Haskell](haskell/index.md) | GHC | 純粋関数型、型クラス、モナド、遅延評価 |
25
-
26
- ## 多言語統合解説
27
-
28
- [多言語統合解説](integration/index.md) では、14 言語の実装を横断的に比較し、TDD の本質と言語固有の表現を統合的に解説します。
29
-
30
- ## 章構成
31
-
32
- ### 第 1 部: TDD の基本サイクル
33
-
34
- | 章 | テーマ | Java | JS/TS | Python | Ruby | PHP | Go | Rust | C# | F# | Clojure | Scala | Elixir | Haskell |
35
- |----|--------|------|-------|--------|------|-----|-----|------|-----|-----|---------|-------|--------|---------|
36
- | 1 | TODO リストと最初のテスト | [Java](java/01-todo-list-and-first-test.md) | [JS/TS](node/01-todo-list-and-first-test.md) | [Python](python/01-todo-list-and-first-test.md) | [Ruby](ruby/01-todo-list-and-first-test.md) | [PHP](php/01-todo-list-and-first-test.md) | [Go](go/01-todo-list-and-first-test.md) | [Rust](rust/01-todo-list-and-first-test.md) | [C#](csharp/chapter01.md) | [F#](fsharp/chapter01.md) | [Clojure](clojure/01-todo-list-and-first-test.md) | [Scala](scala/01-todo-list-and-first-test.md) | [Elixir](elixir/01-todo-list-and-first-test.md) | [Haskell](haskell/01-todo-list-and-first-test.md) |
37
- | 2 | 仮実装と三角測量 | [Java](java/02-fake-it-and-triangulation.md) | [JS/TS](node/02-fake-it-and-triangulation.md) | [Python](python/02-fake-it-and-triangulation.md) | [Ruby](ruby/02-fake-it-and-triangulation.md) | [PHP](php/02-fake-it-and-triangulation.md) | [Go](go/02-fake-it-and-triangulation.md) | [Rust](rust/02-fake-it-and-triangulation.md) | [C#](csharp/chapter02.md) | [F#](fsharp/chapter02.md) | [Clojure](clojure/02-fake-it-and-triangulation.md) | [Scala](scala/02-fake-it-and-triangulation.md) | [Elixir](elixir/02-fake-it-and-triangulation.md) | [Haskell](haskell/02-fake-it-and-triangulation.md) |
38
- | 3 | 明白な実装とリファクタリング | [Java](java/03-obvious-implementation-and-refactoring.md) | [JS/TS](node/03-obvious-implementation-and-refactoring.md) | [Python](python/03-obvious-implementation-and-refactoring.md) | [Ruby](ruby/03-obvious-implementation-and-refactoring.md) | [PHP](php/03-obvious-implementation-and-refactoring.md) | [Go](go/03-obvious-implementation-and-refactoring.md) | [Rust](rust/03-obvious-implementation-and-refactoring.md) | [C#](csharp/chapter03.md) | [F#](fsharp/chapter03.md) | [Clojure](clojure/03-obvious-implementation-and-refactoring.md) | [Scala](scala/03-obvious-implementation-and-refactoring.md) | [Elixir](elixir/03-obvious-implementation-and-refactoring.md) | [Haskell](haskell/03-obvious-implementation-and-refactoring.md) |
39
-
40
- ### 第 2 部: 開発環境と自動化
41
-
42
- | 章 | テーマ | Java | JS/TS | Python | Ruby | PHP | Go | Rust | C# | F# | Clojure | Scala | Elixir | Haskell |
43
- |----|--------|------|-------|--------|------|-----|-----|------|-----|-----|---------|-------|--------|---------|
44
- | 4 | バージョン管理と Conventional Commits | [Java](java/04-version-control-and-conventional-commits.md) | [JS/TS](node/04-version-control-and-conventional-commits.md) | [Python](python/04-version-control-and-conventional-commits.md) | [Ruby](ruby/04-version-control-and-conventional-commits.md) | [PHP](php/04-version-control-and-conventional-commits.md) | [Go](go/04-version-control-and-conventional-commits.md) | [Rust](rust/04-version-control-and-conventional-commits.md) | [C#](csharp/chapter04.md) | [F#](fsharp/chapter04.md) | [Clojure](clojure/04-version-control-and-conventional-commits.md) | [Scala](scala/04-version-control-and-conventional-commits.md) | [Elixir](elixir/04-version-control-and-conventional-commits.md) | [Haskell](haskell/04-version-control-and-conventional-commits.md) |
45
- | 5 | パッケージ管理と静的解析 | [Java](java/05-package-management-and-static-analysis.md) | [JS/TS](node/05-package-management-and-static-analysis.md) | [Python](python/05-package-management-and-static-analysis.md) | [Ruby](ruby/05-package-management-and-static-analysis.md) | [PHP](php/05-package-management-and-static-analysis.md) | [Go](go/05-package-management-and-static-analysis.md) | [Rust](rust/05-package-management-and-static-analysis.md) | [C#](csharp/chapter05.md) | [F#](fsharp/chapter05.md) | [Clojure](clojure/05-package-management-and-static-analysis.md) | [Scala](scala/05-package-management-and-static-analysis.md) | [Elixir](elixir/05-package-management-and-static-analysis.md) | [Haskell](haskell/05-package-management-and-static-analysis.md) |
46
- | 6 | タスクランナーと CI/CD | [Java](java/06-task-runner-and-ci-cd.md) | [JS/TS](node/06-task-runner-and-ci-cd.md) | [Python](python/06-task-runner-and-ci-cd.md) | [Ruby](ruby/06-task-runner-and-ci-cd.md) | [PHP](php/06-task-runner-and-ci-cd.md) | [Go](go/06-task-runner-and-ci-cd.md) | [Rust](rust/06-task-runner-and-ci-cd.md) | [C#](csharp/chapter06.md) | [F#](fsharp/chapter06.md) | [Clojure](clojure/06-task-runner-and-ci-cd.md) | [Scala](scala/06-task-runner-and-ci-cd.md) | [Elixir](elixir/06-task-runner-and-ci-cd.md) | [Haskell](haskell/06-task-runner-and-ci-cd.md) |
47
-
48
- ### 第 3 部: オブジェクト指向設計
49
-
50
- | 章 | テーマ | Java | JS/TS | Python | Ruby | PHP | Go | Rust | C# | F# | Clojure | Scala | Elixir | Haskell |
51
- |----|--------|------|-------|--------|------|-----|-----|------|-----|-----|---------|-------|--------|---------|
52
- | 7 | カプセル化とポリモーフィズム | [Java](java/07-encapsulation-and-polymorphism.md) | [JS/TS](node/07-encapsulation-and-polymorphism.md) | [Python](python/07-encapsulation-and-polymorphism.md) | [Ruby](ruby/07-encapsulation-and-polymorphism.md) | [PHP](php/07-encapsulation-and-polymorphism.md) | [Go](go/07-encapsulation-and-polymorphism.md) | [Rust](rust/07-encapsulation-and-polymorphism.md) | [C#](csharp/chapter07.md) | [F#](fsharp/chapter07.md) | [Clojure](clojure/07-protocols-and-records.md) | [Scala](scala/07-case-classes-and-traits.md) | [Elixir](elixir/07-structs-and-protocols.md) | [Haskell](haskell/07-algebraic-data-types-and-type-classes.md) |
53
- | 8 | デザインパターンの適用 | [Java](java/08-design-patterns.md) | [JS/TS](node/08-design-patterns.md) | [Python](python/08-design-patterns.md) | [Ruby](ruby/08-design-patterns.md) | [PHP](php/08-design-patterns.md) | [Go](go/08-design-patterns.md) | [Rust](rust/08-design-patterns.md) | [C#](csharp/chapter08.md) | [F#](fsharp/chapter08.md) | [Clojure](clojure/08-multimethods-and-design-patterns.md) | [Scala](scala/08-pattern-matching-and-sealed-traits.md) | [Elixir](elixir/08-pattern-matching-and-guards.md) | [Haskell](haskell/08-pattern-matching-and-guards.md) |
54
- | 9 | SOLID 原則とモジュール設計 | [Java](java/09-solid-principles-and-module-design.md) | [JS/TS](node/09-solid-principles-and-module-design.md) | [Python](python/09-solid-principles-and-module-design.md) | [Ruby](ruby/09-solid-principles-and-module-design.md) | [PHP](php/09-solid-principles-and-module-design.md) | [Go](go/09-solid-principles-and-module-design.md) | [Rust](rust/09-solid-principles-and-module-design.md) | [C#](csharp/chapter09.md) | [F#](fsharp/chapter09.md) | [Clojure](clojure/09-namespaces-and-module-design.md) | [Scala](scala/09-packages-and-module-design.md) | [Elixir](elixir/09-module-design-and-behaviours.md) | [Haskell](haskell/09-module-design-and-smart-constructors.md) |
55
-
56
- ### 第 4 部: 関数型プログラミングへの展開
57
-
58
- | 章 | テーマ | Java | JS/TS | Python | Ruby | PHP | Go | Rust | C# | F# | Clojure | Scala | Elixir | Haskell |
59
- |----|--------|------|-------|--------|------|-----|-----|------|-----|-----|---------|-------|--------|---------|
60
- | 10 | 高階関数と関数合成 | [Java](java/10-higher-order-functions-and-composition.md) | [JS/TS](node/10-higher-order-functions-and-composition.md) | [Python](python/10-higher-order-functions-and-composition.md) | [Ruby](ruby/10-higher-order-functions-and-composition.md) | [PHP](php/10-higher-order-functions-and-composition.md) | [Go](go/10-higher-order-functions-and-composition.md) | [Rust](rust/10-higher-order-functions-and-composition.md) | [C#](csharp/chapter10.md) | [F#](fsharp/chapter10.md) | [Clojure](clojure/10-higher-order-functions-and-composition.md) | [Scala](scala/10-higher-order-functions-and-composition.md) | [Elixir](elixir/10-higher-order-functions-and-pipeline.md) | [Haskell](haskell/10-higher-order-functions-and-currying.md) |
61
- | 11 | 不変データとパイプライン処理 | [Java](java/11-immutable-data-and-pipeline.md) | [JS/TS](node/11-immutable-data-and-pipeline.md) | [Python](python/11-immutable-data-and-pipeline.md) | [Ruby](ruby/11-immutable-data-and-pipeline.md) | [PHP](php/11-immutable-data-and-pipeline.md) | [Go](go/11-immutable-data-and-pipeline.md) | [Rust](rust/11-immutable-data-and-pipeline.md) | [C#](csharp/chapter11.md) | [F#](fsharp/chapter11.md) | [Clojure](clojure/11-persistent-data-and-pipeline.md) | [Scala](scala/11-collections-and-lazy-evaluation.md) | [Elixir](elixir/11-stream-and-lazy-evaluation.md) | [Haskell](haskell/11-function-composition-and-point-free.md) |
62
- | 12 | エラーハンドリングと型安全性 | [Java](java/12-error-handling-and-type-safety.md) | [JS/TS](node/12-error-handling-and-type-safety.md) | [Python](python/12-error-handling-and-type-safety.md) | [Ruby](ruby/12-error-handling-and-type-safety.md) | [PHP](php/12-error-handling-and-type-safety.md) | [Go](go/12-error-handling-and-type-safety.md) | [Rust](rust/12-error-handling-and-type-safety.md) | [C#](csharp/chapter12.md) | [F#](fsharp/chapter12.md) | [Clojure](clojure/12-error-handling-and-spec.md) | [Scala](scala/12-error-handling-and-type-safety.md) | [Elixir](elixir/12-error-handling-and-with.md) | [Haskell](haskell/12-monad-and-error-handling.md) |
63
-
64
- ## テスト駆動開発について
65
-
66
- このシリーズでは、各プログラミング言語でテスト駆動開発の手法を用いて実装していきます。テスト駆動開発の基本的な流れは以下の通りです:
67
-
68
- 1. **レッド** - まず、失敗するテストを書く
69
- 2. **グリーン** - テストが通るように最小限のコードを実装する
70
- 3. **リファクタリング** - コードの品質を向上させる(重複の除去、可読性の向上など)
71
-
72
- この流れを繰り返すことで、確実に動作するコードを段階的に作り上げていきます。
73
-
74
- ## 対象読者
75
-
76
- - プログラミングの基本構文を理解している方
77
- - 複数のプログラミング言語に興味がある方
78
- - テスト駆動開発に興味がある方
79
- - 言語の特徴を理解したい方
80
-
81
- ## 共通のテーマ
82
-
83
- - FizzBuzz 問題を題材にした TDD 体験
84
- - 各言語のテスティングフレームワーク
85
- - 言語固有の特徴と設計思想
86
- - 開発環境の構築とツールチェーン
87
-
88
- ## 参照
89
-
90
- - 『テスト駆動開発』 - Kent Beck
91
- - 『リファクタリング』 - Martin Fowler
92
- - 『Clean Code』 - Robert C. Martin
93
- - 『エクストリームプログラミング』 - Kent Beck
@@ -1,384 +0,0 @@
1
- ---
2
- type: Article
3
- title: "12 言語の概要と分類"
4
- description: "本章では、12 言語を複数の軸で分類し、それぞれの設計思想と特徴を俯瞰します。"
5
- tags: [article, getting-start-tdd, integration]
6
- status: stable
7
- generated: { by: human:kakimomokuri, at: 2026-03-24T05:22:28Z }
8
- ---
9
-
10
- # 12 言語の概要と分類
11
-
12
- 本章では、12 言語を複数の軸で分類し、それぞれの設計思想と特徴を俯瞰します。最後に、各言語の FizzBuzz コア実装を比較することで、同一の仕様が言語ごとにどう表現されるかを確認します。
13
-
14
- ## パラダイム別分類
15
-
16
- プログラミング言語はその設計思想に基づいて、大きく以下のパラダイムに分類できます。
17
-
18
- ### OOP(オブジェクト指向プログラミング)
19
-
20
- クラスとオブジェクトを中心に、カプセル化・継承・ポリモーフィズムで設計する言語です。
21
-
22
- | 言語 | 特徴 |
23
- |------|------|
24
- | Java | 静的型付け、インターフェース、豊富なエコシステム |
25
- | C# | .NET ランタイム、LINQ、パターンマッチング対応 |
26
- | PHP | Web 特化、漸進的型付け、名前空間 |
27
-
28
- ### FP(関数型プログラミング)
29
-
30
- 関数を第一級オブジェクトとし、不変データ・副作用の分離を重視する言語です。
31
-
32
- | 言語 | 特徴 |
33
- |------|------|
34
- | Haskell | 純粋関数型、型クラス、モナド、遅延評価 |
35
- | Clojure | LISP 方言、動的型付け、不変データ構造、プロトコル |
36
- | Elixir | BEAM VM、パターンマッチング、パイプライン、OTP |
37
- | F# | .NET ランタイム、判別共用体、パイプライン演算子 |
38
-
39
- ### マルチパラダイム
40
-
41
- OOP と FP の両方を自然にサポートする言語です。
42
-
43
- | 言語 | OOP 要素 | FP 要素 |
44
- |------|---------|---------|
45
- | Python | クラス、継承、ABC | デコレータ、ジェネレータ、functools |
46
- | TypeScript | クラス、インターフェース | アロー関数、型ガード、ユニオン型 |
47
- | Ruby | すべてがオブジェクト | ブロック/Proc/Lambda、Enumerable |
48
- | Rust | trait、構造体 | パターンマッチング、イテレータ、Option/Result |
49
- | Scala | クラス、trait | sealed trait/case class、for 内包表記 |
50
- | Go | 構造体、インターフェース | ファーストクラス関数、クロージャ |
51
-
52
- ## 型システムによる分類
53
-
54
- 型システムは言語の安全性と表現力を大きく左右します。
55
-
56
- ### 静的型付け vs 動的型付け
57
-
58
- | 分類 | 言語 | 型チェックのタイミング |
59
- |------|------|---------------------|
60
- | 静的型付け | Java, TypeScript, Go, Rust, C#, F#, Scala, Haskell | コンパイル時 |
61
- | 動的型付け | Python, Ruby, PHP, Clojure, Elixir | 実行時 |
62
-
63
- ### 型の強さのスペクトル
64
-
65
- 型の強さは「暗黙の型変換をどれだけ許容するか」で測ることができます。
66
-
67
- ```
68
- 弱い型付け ←────────────────────────────→ 強い型付け
69
-
70
- PHP JavaScript Python Ruby Java Go C# F# Scala Rust Haskell
71
- ```
72
-
73
- | レベル | 言語例 | 特徴 |
74
- |--------|-------|------|
75
- | 非常に強い | Haskell, Rust | 暗黙の変換がほぼない、型推論が強力 |
76
- | 強い | Java, C#, F#, Scala, Go | 明示的なキャストが必要 |
77
- | 中程度 | Python, Ruby, TypeScript | 一部の暗黙変換を許容 |
78
- | 比較的柔軟 | PHP, Clojure, Elixir | 動的だが実行時にチェック |
79
-
80
- ### 型推論の能力
81
-
82
- | レベル | 言語 | 例 |
83
- |--------|------|-----|
84
- | 完全推論(HM 型推論) | Haskell, F# | ほぼすべてのローカル型を推論 |
85
- | 高い推論能力 | Rust, Scala, TypeScript | ローカル変数・ジェネリクスの推論 |
86
- | 中程度 | Java, C#, Go | `var` / `:=` によるローカル推論 |
87
- | 限定的 | Python, Ruby, PHP | 型ヒント/アノテーションで補完 |
88
- | 不要 | Clojure, Elixir | 動的型付けのため型推論が不要 |
89
-
90
- ## ランタイム環境による分類
91
-
92
- 言語がどの実行環境上で動作するかは、パフォーマンス特性やエコシステムに影響します。
93
-
94
- ### JVM(Java Virtual Machine)
95
-
96
- | 言語 | JVM 上の特徴 |
97
- |------|-------------|
98
- | Java | JVM のネイティブ言語、最大のエコシステム |
99
- | Scala | JVM + 独自の OOP/FP 融合 |
100
- | Clojure | JVM + LISP、Java ライブラリとの相互運用 |
101
-
102
- ### BEAM(Erlang VM)
103
-
104
- | 言語 | BEAM 上の特徴 |
105
- |------|-------------|
106
- | Elixir | 軽量プロセス、耐障害性、ホットコードスワップ |
107
-
108
- ### CLR(.NET Common Language Runtime)
109
-
110
- | 言語 | CLR 上の特徴 |
111
- |------|-------------|
112
- | C# | .NET のプライマリ言語、クロスプラットフォーム |
113
- | F# | .NET 上の関数型ファースト言語 |
114
-
115
- ### ネイティブコンパイル
116
-
117
- | 言語 | 特徴 |
118
- |------|------|
119
- | Rust | ゼロコスト抽象化、所有権システム、メモリ安全性 |
120
- | Go | 高速コンパイル、静的リンク、ゴルーチン |
121
- | Haskell | GHC によるネイティブコンパイル、遅延評価 |
122
-
123
- ### インタプリタ / JIT
124
-
125
- | 言語 | 特徴 |
126
- |------|------|
127
- | Python | CPython インタプリタ、豊富な科学計算ライブラリ |
128
- | Ruby | CRuby、DSL 構築に強い |
129
- | PHP | Zend Engine、Web に特化 |
130
- | TypeScript | Node.js (V8 JIT) 上で実行 |
131
-
132
- ## FizzBuzz コア実装の比較
133
-
134
- 同一の FizzBuzz 仕様を各言語でどう表現するかを比較します。いずれも「数値を受け取り、3 の倍数なら "Fizz"、5 の倍数なら "Buzz"、両方の倍数なら "FizzBuzz"、それ以外は数値の文字列を返す」という仕様です。
135
-
136
- ### Java
137
-
138
- ```java
139
- public abstract class FizzBuzzType {
140
- protected static final int FIZZ_NUMBER = 3;
141
- protected static final int BUZZ_NUMBER = 5;
142
-
143
- public abstract FizzBuzzValue generate(int number);
144
-
145
- protected boolean isFizz(int number) {
146
- return number % FIZZ_NUMBER == 0;
147
- }
148
-
149
- protected boolean isBuzz(int number) {
150
- return number % BUZZ_NUMBER == 0;
151
- }
152
-
153
- protected boolean isFizzBuzz(int number) {
154
- return isFizz(number) && isBuzz(number);
155
- }
156
- }
157
- ```
158
-
159
- ### Python
160
-
161
- ```python
162
- class FizzBuzzType(ABC):
163
- @abstractmethod
164
- def generate(self, number: int) -> FizzBuzzValue:
165
- pass
166
-
167
- def _is_fizz(self, number: int) -> bool:
168
- return number % 3 == 0
169
-
170
- def _is_buzz(self, number: int) -> bool:
171
- return number % 5 == 0
172
-
173
- def _is_fizz_buzz(self, number: int) -> bool:
174
- return number % 15 == 0
175
- ```
176
-
177
- ### TypeScript
178
-
179
- ```typescript
180
- export abstract class FizzBuzzType {
181
- static readonly TYPE_01 = 1;
182
- static readonly TYPE_02 = 2;
183
- static readonly TYPE_03 = 3;
184
-
185
- abstract generate(number: number): FizzBuzzValue;
186
-
187
- static create(type: number = FizzBuzzType.TYPE_01): FizzBuzzType {
188
- switch (type) {
189
- case FizzBuzzType.TYPE_01: return new FizzBuzzType01();
190
- case FizzBuzzType.TYPE_02: return new FizzBuzzType02();
191
- case FizzBuzzType.TYPE_03: return new FizzBuzzType03();
192
- default: throw new Error(`未定義のタイプ: ${type}`);
193
- }
194
- }
195
- }
196
- ```
197
-
198
- ### Ruby
199
-
200
- FizzBuzzType の継承による型分け(OOP スタイル)を採用しています。
201
-
202
- ```ruby
203
- class FizzBuzzType
204
- def generate(number)
205
- raise NotImplementedError
206
- end
207
-
208
- private
209
-
210
- def fizz?(number) = (number % 3).zero?
211
- def buzz?(number) = (number % 5).zero?
212
- def fizz_buzz?(number) = fizz?(number) && buzz?(number)
213
- end
214
- ```
215
-
216
- ### Go
217
-
218
- インターフェースと構造体による構造化プログラミングスタイルです。
219
-
220
- ```go
221
- func Generate(number int) string {
222
- switch {
223
- case number%15 == 0:
224
- return "FizzBuzz"
225
- case number%3 == 0:
226
- return "Fizz"
227
- case number%5 == 0:
228
- return "Buzz"
229
- default:
230
- return strconv.Itoa(number)
231
- }
232
- }
233
- ```
234
-
235
- ### PHP
236
-
237
- ```php
238
- final class FizzBuzz
239
- {
240
- public function generate(int $number): string
241
- {
242
- $type = new FizzBuzzType01();
243
- return $type->generate($number)->getValue();
244
- }
245
- }
246
- ```
247
-
248
- ### Rust
249
-
250
- パターンマッチングによる簡潔な表現です。
251
-
252
- ```rust
253
- pub fn generate(number: i32) -> String {
254
- match (number % 3, number % 5) {
255
- (0, 0) => "FizzBuzz".to_string(),
256
- (0, _) => "Fizz".to_string(),
257
- (_, 0) => "Buzz".to_string(),
258
- _ => number.to_string(),
259
- }
260
- }
261
- ```
262
-
263
- ### C#
264
-
265
- Factory パターンによる型安全な生成です。
266
-
267
- ```csharp
268
- public static class FizzBuzzRunner
269
- {
270
- public static string Generate(int number)
271
- {
272
- var type = FizzBuzzTypeFactory.Create(FizzBuzzTypeName.Standard);
273
- var value = type.Generate(number);
274
- return value.Value;
275
- }
276
- }
277
- ```
278
-
279
- ### F#
280
-
281
- 判別共用体とパイプラインによる関数型アプローチです。
282
-
283
- ```fsharp
284
- type FizzBuzzType =
285
- | Standard
286
- | NumberOnly
287
- | FizzBuzzOnly
288
-
289
- let generate (fizzBuzzType: FizzBuzzType) (number: int) : FizzBuzzValue =
290
- match fizzBuzzType with
291
- | Standard ->
292
- if isFizzBuzz number then createValue number "FizzBuzz"
293
- elif isFizz number then createValue number "Fizz"
294
- elif isBuzz number then createValue number "Buzz"
295
- else createValue number (string number)
296
- | NumberOnly -> createValue number (string number)
297
- | FizzBuzzOnly ->
298
- if number % 15 = 0 then createValue number "FizzBuzz"
299
- else createValue number (string number)
300
- ```
301
-
302
- ### Clojure
303
-
304
- プロトコルと defrecord による多態性です。
305
-
306
- ```clojure
307
- (defn fizzbuzz [n]
308
- (cond
309
- (and (zero? (mod n 3)) (zero? (mod n 5))) "FizzBuzz"
310
- (zero? (mod n 3)) "Fizz"
311
- (zero? (mod n 5)) "Buzz"
312
- :else (str n)))
313
- ```
314
-
315
- ### Scala
316
-
317
- パターンマッチングとガード節による表現です。
318
-
319
- ```scala
320
- object FizzBuzz:
321
- def generate(number: Int): String =
322
- number match
323
- case n if n % 15 == 0 => "FizzBuzz"
324
- case n if n % 3 == 0 => "Fizz"
325
- case n if n % 5 == 0 => "Buzz"
326
- case n => n.toString
327
- ```
328
-
329
- ### Elixir
330
-
331
- パターンマッチングとガード節、パイプラインによる関数型スタイルです。
332
-
333
- ```elixir
334
- def generate(number) when is_integer(number) and number > 0 do
335
- cond do
336
- rem(number, 15) == 0 -> "FizzBuzz"
337
- rem(number, 3) == 0 -> "Fizz"
338
- rem(number, 5) == 0 -> "Buzz"
339
- true -> Integer.to_string(number)
340
- end
341
- end
342
- ```
343
-
344
- ### Haskell
345
-
346
- ガード節による宣言的な定義です。
347
-
348
- ```haskell
349
- generate :: Int -> String
350
- generate n
351
- | n `mod` 15 == 0 = "FizzBuzz"
352
- | n `mod` 3 == 0 = "Fizz"
353
- | n `mod` 5 == 0 = "Buzz"
354
- | otherwise = show n
355
- ```
356
-
357
- ## 実装パターンの比較まとめ
358
-
359
- | 言語 | 分岐方法 | 型の安全性 | コード量 |
360
- |------|---------|-----------|---------|
361
- | Java | if/switch + 抽象クラス | コンパイル時チェック | 多い |
362
- | Python | if/elif + ABC | 型ヒントによる補完 | 中程度 |
363
- | TypeScript | switch + abstract class | コンパイル時チェック | 中程度 |
364
- | Ruby | if/case + 継承 | 動的ダックタイピング | 少ない |
365
- | Go | switch + interface | コンパイル時チェック | 中程度 |
366
- | PHP | match + 抽象クラス | 実行時チェック | 中程度 |
367
- | Rust | match(タプル) | コンパイル時 + 所有権 | 少ない |
368
- | C# | Factory + interface | コンパイル時チェック | 中程度 |
369
- | F# | match + 判別共用体 | コンパイル時 + 網羅性 | 少ない |
370
- | Clojure | cond + protocol | 実行時チェック | 少ない |
371
- | Scala | match + ガード節 | コンパイル時チェック | 少ない |
372
- | Elixir | cond + ガード節 | 実行時チェック | 少ない |
373
- | Haskell | ガード節 | コンパイル時 + 型クラス | 非常に少ない |
374
-
375
- ## まとめ
376
-
377
- 12 言語の概要を俯瞰すると、以下の傾向が見えてきます。
378
-
379
- 1. **OOP 言語**(Java, C#, PHP)は、クラス階層とインターフェースにより構造化された FizzBuzz 実装となります
380
- 2. **FP 言語**(Haskell, Clojure, Elixir, F#)は、パターンマッチングや条件式で簡潔に表現できます
381
- 3. **マルチパラダイム言語**(Rust, Scala, TypeScript, Python, Ruby, Go)は、状況に応じて OOP と FP を使い分けることができます
382
- 4. **パターンマッチング**を持つ言語(Rust, Scala, F#, Haskell, Elixir)は、FizzBuzz のような条件分岐を特に簡潔に書けます
383
-
384
- 次章では、これらの言語のテストフレームワークを詳しく比較します。