@k2works/claude-code-booster 4.17.0 → 5.0.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 (755) hide show
  1. package/lib/assets/.claude/skills/apply-okf/SKILL.md +88 -0
  2. package/lib/assets/.claude/skills/apply-okf/evals/evals.json +8 -0
  3. package/lib/assets/.claude/skills/apply-okf/scripts/__pycache__/okf_apply.cpython-314.pyc +0 -0
  4. package/lib/assets/.claude/skills/apply-okf/scripts/okf_apply.py +397 -0
  5. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.json +20 -0
  6. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.md +13 -0
  7. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/eval_metadata.json +14 -0
  8. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/grading.json +39 -0
  9. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/001-db.md +12 -0
  10. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/002-cache-strategy.md +20 -0
  11. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/index.md +4 -0
  12. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/design/data-model.md +12 -0
  13. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/design/index.md +3 -0
  14. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/index.md +10 -0
  15. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/log.md +7 -0
  16. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/deploy-old.md +12 -0
  17. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/deploy.md +12 -0
  18. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/index.md +4 -0
  19. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -0
  20. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/report.md +76 -0
  21. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/grading.json +39 -0
  22. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/001-db.md +12 -0
  23. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/002-cache-strategy.md +20 -0
  24. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/index.md +4 -0
  25. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/design/data-model.md +12 -0
  26. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/design/index.md +3 -0
  27. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/index.md +10 -0
  28. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/log.md +7 -0
  29. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/deploy-old.md +12 -0
  30. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/deploy.md +12 -0
  31. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/index.md +4 -0
  32. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -0
  33. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/report.md +22 -0
  34. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/eval_metadata.json +13 -0
  35. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/grading.json +34 -0
  36. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/001-db.md +12 -0
  37. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/002-cache-strategy.md +11 -0
  38. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/index.md +3 -0
  39. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/design/data-model.md +14 -0
  40. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/design/index.md +3 -0
  41. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/index.md +10 -0
  42. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/log.md +7 -0
  43. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/deploy-old.md +12 -0
  44. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/deploy.md +12 -0
  45. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/index.md +4 -0
  46. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -0
  47. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/report.md +61 -0
  48. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/grading.json +34 -0
  49. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/001-db.md +12 -0
  50. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/002-cache-strategy.md +11 -0
  51. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/index.md +3 -0
  52. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/design/data-model.md +13 -0
  53. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/design/index.md +3 -0
  54. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/index.md +10 -0
  55. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/log.md +7 -0
  56. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/deploy-old.md +12 -0
  57. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/deploy.md +12 -0
  58. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/index.md +4 -0
  59. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -0
  60. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/report.md +18 -0
  61. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/eval_metadata.json +13 -0
  62. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/grading.json +34 -0
  63. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/001-db.md +12 -0
  64. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/002-cache-strategy.md +11 -0
  65. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/index.md +3 -0
  66. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/design/data-model.md +12 -0
  67. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/design/index.md +3 -0
  68. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/index.md +10 -0
  69. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/log.md +7 -0
  70. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/deploy-old.md +13 -0
  71. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/deploy.md +12 -0
  72. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/index.md +7 -0
  73. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -0
  74. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/report.md +83 -0
  75. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/grading.json +34 -0
  76. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/001-db.md +12 -0
  77. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/002-cache-strategy.md +11 -0
  78. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/index.md +3 -0
  79. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/design/data-model.md +12 -0
  80. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/design/index.md +3 -0
  81. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/index.md +10 -0
  82. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/log.md +7 -0
  83. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/deploy-old.md +14 -0
  84. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/deploy.md +12 -0
  85. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/index.md +4 -0
  86. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -0
  87. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/report.md +15 -0
  88. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/review.html +1325 -0
  89. package/lib/assets/.claude/skills/closing-iteration/SKILL.md +16 -0
  90. package/lib/assets/.claude/skills/creating-adr/SKILL.md +4 -0
  91. package/lib/assets/.claude/skills/creating-journal/SKILL.md +12 -1
  92. package/lib/assets/.claude/skills/migrating-okf/SKILL.md +149 -0
  93. package/lib/assets/.claude/skills/migrating-okf/evals/evals.json +23 -0
  94. package/lib/assets/.claude/skills/migrating-okf/scripts/__pycache__/okf_check.cpython-314.pyc +0 -0
  95. package/lib/assets/.claude/skills/migrating-okf/scripts/okf_check.py +468 -0
  96. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.json +20 -0
  97. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.md +13 -0
  98. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/eval_metadata.json +15 -0
  99. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/grading.json +44 -0
  100. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/adr/index.md +10 -0
  101. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/index.md +15 -0
  102. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/log.md +5 -0
  103. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +966 -0
  104. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference/index.md +6 -0
  105. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +261 -0
  106. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +480 -0
  107. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +681 -0
  108. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/report.md +85 -0
  109. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/grading.json +44 -0
  110. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/adr/index.md +8 -0
  111. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/index.md +11 -0
  112. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/log.md +7 -0
  113. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +964 -0
  114. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference/index.md +9 -0
  115. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +250 -0
  116. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +469 -0
  117. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +677 -0
  118. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/report.md +49 -0
  119. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/eval_metadata.json +13 -0
  120. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/grading.json +34 -0
  121. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/index.md +7 -0
  122. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/log.md +7 -0
  123. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/metrics/churn.md +9 -0
  124. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/metrics/income-statement.md +15 -0
  125. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/report.md +147 -0
  126. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/review.html +1325 -0
  127. package/lib/assets/.claude/skills/opening-iteration/SKILL.md +15 -0
  128. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +4 -1
  129. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +2 -0
  130. package/lib/assets/.claude/skills/orchestrating-operation/SKILL.md +3 -1
  131. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +4 -1
  132. package/lib/assets/.claude/skills/planning-releases/SKILL.md +2 -0
  133. package/lib/assets/.env.example +9 -0
  134. package/lib/assets/CLAUDE.md +218 -216
  135. package/lib/assets/docs/article/functional-desgin-ppp/all/01-immutability-and-data-transformation.md +9 -0
  136. package/lib/assets/docs/article/functional-desgin-ppp/all/02-function-composition.md +9 -0
  137. package/lib/assets/docs/article/functional-desgin-ppp/all/03-polymorphism.md +9 -0
  138. package/lib/assets/docs/article/functional-desgin-ppp/all/04-data-validation.md +9 -0
  139. package/lib/assets/docs/article/functional-desgin-ppp/all/05-property-based-testing.md +9 -0
  140. package/lib/assets/docs/article/functional-desgin-ppp/all/06-tdd-and-functional.md +9 -0
  141. package/lib/assets/docs/article/functional-desgin-ppp/all/07-composite-pattern.md +9 -0
  142. package/lib/assets/docs/article/functional-desgin-ppp/all/08-decorator-pattern.md +10 -1
  143. package/lib/assets/docs/article/functional-desgin-ppp/all/09-adapter-pattern.md +9 -0
  144. package/lib/assets/docs/article/functional-desgin-ppp/all/10-strategy-pattern.md +9 -0
  145. package/lib/assets/docs/article/functional-desgin-ppp/all/11-command-pattern.md +9 -0
  146. package/lib/assets/docs/article/functional-desgin-ppp/all/12-visitor-pattern.md +9 -0
  147. package/lib/assets/docs/article/functional-desgin-ppp/all/13-abstract-factory-pattern.md +9 -0
  148. package/lib/assets/docs/article/functional-desgin-ppp/all/14-abstract-server-pattern.md +9 -0
  149. package/lib/assets/docs/article/functional-desgin-ppp/all/15-gossiping-bus-drivers.md +9 -0
  150. package/lib/assets/docs/article/functional-desgin-ppp/all/16-payroll-system.md +9 -0
  151. package/lib/assets/docs/article/functional-desgin-ppp/all/17-video-rental-system.md +9 -0
  152. package/lib/assets/docs/article/functional-desgin-ppp/all/18-concurrency-system.md +9 -0
  153. package/lib/assets/docs/article/functional-desgin-ppp/all/19-wa-tor-simulation.md +10 -1
  154. package/lib/assets/docs/article/functional-desgin-ppp/all/20-pattern-interactions.md +9 -0
  155. package/lib/assets/docs/article/functional-desgin-ppp/all/21-best-practices.md +9 -0
  156. package/lib/assets/docs/article/functional-desgin-ppp/all/22-oo-to-fp-migration.md +9 -0
  157. package/lib/assets/docs/article/functional-desgin-ppp/clojure/01-immutability-and-data-transformation.md +9 -0
  158. package/lib/assets/docs/article/functional-desgin-ppp/clojure/02-function-composition.md +9 -0
  159. package/lib/assets/docs/article/functional-desgin-ppp/clojure/03-polymorphism.md +9 -0
  160. package/lib/assets/docs/article/functional-desgin-ppp/clojure/04-clojure-spec.md +9 -0
  161. package/lib/assets/docs/article/functional-desgin-ppp/clojure/05-property-based-testing.md +9 -0
  162. package/lib/assets/docs/article/functional-desgin-ppp/clojure/06-tdd-in-functional.md +9 -0
  163. package/lib/assets/docs/article/functional-desgin-ppp/clojure/07-composite-pattern.md +9 -0
  164. package/lib/assets/docs/article/functional-desgin-ppp/clojure/08-decorator-pattern.md +9 -0
  165. package/lib/assets/docs/article/functional-desgin-ppp/clojure/09-adapter-pattern.md +9 -0
  166. package/lib/assets/docs/article/functional-desgin-ppp/clojure/10-strategy-pattern.md +9 -0
  167. package/lib/assets/docs/article/functional-desgin-ppp/clojure/11-command-pattern.md +9 -0
  168. package/lib/assets/docs/article/functional-desgin-ppp/clojure/12-visitor-pattern.md +9 -0
  169. package/lib/assets/docs/article/functional-desgin-ppp/clojure/13-abstract-factory-pattern.md +9 -0
  170. package/lib/assets/docs/article/functional-desgin-ppp/clojure/14-abstract-server-pattern.md +9 -0
  171. package/lib/assets/docs/article/functional-desgin-ppp/clojure/15-gossiping-bus-drivers.md +9 -0
  172. package/lib/assets/docs/article/functional-desgin-ppp/clojure/16-payroll-system.md +9 -0
  173. package/lib/assets/docs/article/functional-desgin-ppp/clojure/17-video-rental-system.md +9 -0
  174. package/lib/assets/docs/article/functional-desgin-ppp/clojure/18-concurrency-system.md +9 -0
  175. package/lib/assets/docs/article/functional-desgin-ppp/clojure/19-wator-simulation.md +9 -0
  176. package/lib/assets/docs/article/functional-desgin-ppp/clojure/20-pattern-interactions.md +9 -0
  177. package/lib/assets/docs/article/functional-desgin-ppp/clojure/21-best-practices.md +9 -0
  178. package/lib/assets/docs/article/functional-desgin-ppp/clojure/22-oo-to-fp-migration.md +9 -0
  179. package/lib/assets/docs/article/functional-desgin-ppp/clojure/index.md +3 -3
  180. package/lib/assets/docs/article/functional-desgin-ppp/elixir/01-immutability-and-data-transformation.md +9 -0
  181. package/lib/assets/docs/article/functional-desgin-ppp/elixir/02-function-composition.md +9 -0
  182. package/lib/assets/docs/article/functional-desgin-ppp/elixir/03-polymorphism.md +9 -0
  183. package/lib/assets/docs/article/functional-desgin-ppp/elixir/04-data-validation.md +9 -0
  184. package/lib/assets/docs/article/functional-desgin-ppp/elixir/05-property-based-testing.md +9 -0
  185. package/lib/assets/docs/article/functional-desgin-ppp/elixir/06-tdd-and-fp.md +9 -0
  186. package/lib/assets/docs/article/functional-desgin-ppp/elixir/07-effects-and-pure-functions.md +9 -0
  187. package/lib/assets/docs/article/functional-desgin-ppp/elixir/08-error-handling-strategies.md +9 -0
  188. package/lib/assets/docs/article/functional-desgin-ppp/elixir/09-io-and-external-systems.md +9 -0
  189. package/lib/assets/docs/article/functional-desgin-ppp/elixir/10-concurrency-patterns.md +9 -0
  190. package/lib/assets/docs/article/functional-desgin-ppp/elixir/11-command-pattern.md +9 -0
  191. package/lib/assets/docs/article/functional-desgin-ppp/elixir/12-visitor-pattern.md +9 -0
  192. package/lib/assets/docs/article/functional-desgin-ppp/elixir/13-abstract-factory-pattern.md +9 -0
  193. package/lib/assets/docs/article/functional-desgin-ppp/elixir/14-abstract-server-pattern.md +9 -0
  194. package/lib/assets/docs/article/functional-desgin-ppp/elixir/15-gossiping-bus-drivers.md +9 -0
  195. package/lib/assets/docs/article/functional-desgin-ppp/elixir/16-payroll-system.md +9 -0
  196. package/lib/assets/docs/article/functional-desgin-ppp/elixir/17-video-rental-system.md +9 -0
  197. package/lib/assets/docs/article/functional-desgin-ppp/elixir/18-concurrency-system.md +9 -0
  198. package/lib/assets/docs/article/functional-desgin-ppp/elixir/19-wator-simulation.md +9 -0
  199. package/lib/assets/docs/article/functional-desgin-ppp/elixir/20-pattern-interactions.md +9 -0
  200. package/lib/assets/docs/article/functional-desgin-ppp/elixir/21-best-practices.md +9 -0
  201. package/lib/assets/docs/article/functional-desgin-ppp/elixir/22-oo-to-fp-migration.md +9 -0
  202. package/lib/assets/docs/article/functional-desgin-ppp/elixir/index.md +22 -22
  203. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/01-immutability-and-data-transformation.md +9 -0
  204. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/02-function-composition.md +9 -0
  205. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/03-polymorphism.md +9 -0
  206. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/04-data-validation.md +9 -0
  207. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/05-property-based-testing.md +9 -0
  208. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/06-tdd-functional.md +9 -0
  209. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/07-composite-pattern.md +9 -0
  210. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/08-decorator-pattern.md +9 -0
  211. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/09-adapter-pattern.md +9 -0
  212. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/10-strategy-pattern.md +9 -0
  213. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/11-command-pattern.md +9 -0
  214. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/12-visitor-pattern.md +9 -0
  215. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/13-abstract-factory-pattern.md +9 -0
  216. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/14-abstract-server-pattern.md +9 -0
  217. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/15-gossiping-bus-drivers.md +9 -0
  218. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/16-payroll-system.md +9 -0
  219. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/17-video-rental-system.md +9 -0
  220. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/18-concurrency-system.md +9 -0
  221. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/19-wator-simulation.md +9 -0
  222. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/20-pattern-interactions.md +9 -0
  223. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/21-best-practices.md +9 -0
  224. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/22-oo-to-fp-migration.md +9 -0
  225. package/lib/assets/docs/article/functional-desgin-ppp/haskell/01-immutability-and-data-transformation.md +9 -0
  226. package/lib/assets/docs/article/functional-desgin-ppp/haskell/02-function-composition.md +9 -0
  227. package/lib/assets/docs/article/functional-desgin-ppp/haskell/03-polymorphism.md +9 -0
  228. package/lib/assets/docs/article/functional-desgin-ppp/haskell/04-data-validation.md +9 -0
  229. package/lib/assets/docs/article/functional-desgin-ppp/haskell/05-property-based-testing.md +9 -0
  230. package/lib/assets/docs/article/functional-desgin-ppp/haskell/06-tdd-functional.md +9 -0
  231. package/lib/assets/docs/article/functional-desgin-ppp/haskell/07-composite-pattern.md +9 -0
  232. package/lib/assets/docs/article/functional-desgin-ppp/haskell/08-decorator-pattern.md +9 -0
  233. package/lib/assets/docs/article/functional-desgin-ppp/haskell/09-adapter-pattern.md +9 -0
  234. package/lib/assets/docs/article/functional-desgin-ppp/haskell/10-strategy-pattern.md +9 -0
  235. package/lib/assets/docs/article/functional-desgin-ppp/haskell/11-command-pattern.md +9 -0
  236. package/lib/assets/docs/article/functional-desgin-ppp/haskell/12-visitor-pattern.md +9 -0
  237. package/lib/assets/docs/article/functional-desgin-ppp/haskell/13-abstract-factory-pattern.md +9 -0
  238. package/lib/assets/docs/article/functional-desgin-ppp/haskell/14-abstract-server-pattern.md +9 -0
  239. package/lib/assets/docs/article/functional-desgin-ppp/haskell/15-gossiping-bus-drivers.md +9 -0
  240. package/lib/assets/docs/article/functional-desgin-ppp/haskell/16-payroll-system.md +9 -0
  241. package/lib/assets/docs/article/functional-desgin-ppp/haskell/17-video-rental-system.md +9 -0
  242. package/lib/assets/docs/article/functional-desgin-ppp/haskell/18-concurrency-system.md +9 -0
  243. package/lib/assets/docs/article/functional-desgin-ppp/haskell/19-wator-simulation.md +9 -0
  244. package/lib/assets/docs/article/functional-desgin-ppp/haskell/20-pattern-interactions.md +9 -0
  245. package/lib/assets/docs/article/functional-desgin-ppp/haskell/21-best-practices.md +9 -0
  246. package/lib/assets/docs/article/functional-desgin-ppp/haskell/22-oo-to-fp-migration.md +9 -0
  247. package/lib/assets/docs/article/functional-desgin-ppp/rust/01-immutability-and-data-transformation.md +9 -0
  248. package/lib/assets/docs/article/functional-desgin-ppp/rust/02-function-composition.md +9 -0
  249. package/lib/assets/docs/article/functional-desgin-ppp/rust/03-polymorphism.md +9 -0
  250. package/lib/assets/docs/article/functional-desgin-ppp/rust/04-data-validation.md +9 -0
  251. package/lib/assets/docs/article/functional-desgin-ppp/rust/05-property-based-testing.md +9 -0
  252. package/lib/assets/docs/article/functional-desgin-ppp/rust/06-tdd-and-functional.md +9 -0
  253. package/lib/assets/docs/article/functional-desgin-ppp/rust/07-composite-pattern.md +9 -0
  254. package/lib/assets/docs/article/functional-desgin-ppp/rust/08-decorator-pattern.md +9 -0
  255. package/lib/assets/docs/article/functional-desgin-ppp/rust/09-adapter-pattern.md +9 -0
  256. package/lib/assets/docs/article/functional-desgin-ppp/rust/10-strategy-pattern.md +9 -0
  257. package/lib/assets/docs/article/functional-desgin-ppp/rust/11-command-pattern.md +9 -0
  258. package/lib/assets/docs/article/functional-desgin-ppp/rust/12-visitor-pattern.md +9 -0
  259. package/lib/assets/docs/article/functional-desgin-ppp/rust/13-abstract-factory-pattern.md +9 -0
  260. package/lib/assets/docs/article/functional-desgin-ppp/rust/14-abstract-server-pattern.md +9 -0
  261. package/lib/assets/docs/article/functional-desgin-ppp/rust/15-gossiping-bus-drivers.md +9 -0
  262. package/lib/assets/docs/article/functional-desgin-ppp/rust/16-payroll-system.md +9 -0
  263. package/lib/assets/docs/article/functional-desgin-ppp/rust/17-video-rental-system.md +9 -0
  264. package/lib/assets/docs/article/functional-desgin-ppp/rust/18-concurrency-system.md +9 -0
  265. package/lib/assets/docs/article/functional-desgin-ppp/rust/19-wator-simulation.md +9 -0
  266. package/lib/assets/docs/article/functional-desgin-ppp/rust/20-pattern-interactions.md +9 -0
  267. package/lib/assets/docs/article/functional-desgin-ppp/rust/21-best-practices.md +9 -0
  268. package/lib/assets/docs/article/functional-desgin-ppp/rust/22-oo-to-fp-migration.md +9 -0
  269. package/lib/assets/docs/article/functional-desgin-ppp/scala/01-immutability-and-data-transformation.md +9 -0
  270. package/lib/assets/docs/article/functional-desgin-ppp/scala/02-function-composition.md +9 -0
  271. package/lib/assets/docs/article/functional-desgin-ppp/scala/03-polymorphism.md +9 -0
  272. package/lib/assets/docs/article/functional-desgin-ppp/scala/04-data-validation.md +9 -0
  273. package/lib/assets/docs/article/functional-desgin-ppp/scala/05-property-based-testing.md +9 -0
  274. package/lib/assets/docs/article/functional-desgin-ppp/scala/06-tdd-functional.md +9 -0
  275. package/lib/assets/docs/article/functional-desgin-ppp/scala/07-composite-pattern.md +9 -0
  276. package/lib/assets/docs/article/functional-desgin-ppp/scala/08-decorator-pattern.md +9 -0
  277. package/lib/assets/docs/article/functional-desgin-ppp/scala/09-adapter-pattern.md +9 -0
  278. package/lib/assets/docs/article/functional-desgin-ppp/scala/10-strategy-pattern.md +9 -0
  279. package/lib/assets/docs/article/functional-desgin-ppp/scala/11-command-pattern.md +9 -0
  280. package/lib/assets/docs/article/functional-desgin-ppp/scala/12-visitor-pattern.md +9 -0
  281. package/lib/assets/docs/article/functional-desgin-ppp/scala/13-abstract-factory-pattern.md +9 -0
  282. package/lib/assets/docs/article/functional-desgin-ppp/scala/14-abstract-server-pattern.md +9 -0
  283. package/lib/assets/docs/article/functional-desgin-ppp/scala/15-gossiping-bus-drivers.md +9 -0
  284. package/lib/assets/docs/article/functional-desgin-ppp/scala/16-payroll-system.md +9 -0
  285. package/lib/assets/docs/article/functional-desgin-ppp/scala/17-video-rental-system.md +9 -0
  286. package/lib/assets/docs/article/functional-desgin-ppp/scala/18-concurrency-system.md +9 -0
  287. package/lib/assets/docs/article/functional-desgin-ppp/scala/19-wator-simulation.md +9 -0
  288. package/lib/assets/docs/article/functional-desgin-ppp/scala/20-pattern-interactions.md +9 -0
  289. package/lib/assets/docs/article/functional-desgin-ppp/scala/21-best-practices.md +9 -0
  290. package/lib/assets/docs/article/functional-desgin-ppp/scala/22-oo-to-fp-migration.md +9 -0
  291. package/lib/assets/docs/article/getting-start-docker-kubernetes/01-container-and-docker-basics.md +341 -332
  292. package/lib/assets/docs/article/getting-start-docker-kubernetes/02-container-deployment.md +785 -776
  293. package/lib/assets/docs/article/getting-start-docker-kubernetes/03-practical-container-build-deploy.md +466 -457
  294. package/lib/assets/docs/article/getting-start-docker-kubernetes/04-multi-container-application.md +878 -869
  295. package/lib/assets/docs/article/getting-start-docker-kubernetes/05-kubernetes-introduction.md +585 -576
  296. package/lib/assets/docs/article/getting-start-docker-kubernetes/06-kubernetes-deploy-cluster.md +620 -611
  297. package/lib/assets/docs/article/getting-start-docker-kubernetes/07-kubernetes-advanced.md +621 -612
  298. package/lib/assets/docs/article/getting-start-docker-kubernetes/08-kubernetes-packaging.md +518 -509
  299. package/lib/assets/docs/article/getting-start-docker-kubernetes/09-container-operations.md +546 -537
  300. package/lib/assets/docs/article/getting-start-docker-kubernetes/10-optimal-container-image.md +640 -631
  301. package/lib/assets/docs/article/getting-start-docker-kubernetes/11-continuous-delivery.md +607 -598
  302. package/lib/assets/docs/article/getting-start-docker-kubernetes/12-container-use-cases.md +463 -454
  303. package/lib/assets/docs/article/getting-start-docker-kubernetes/13-case-monolith-compose-vs-kustomize.md +346 -337
  304. package/lib/assets/docs/article/getting-start-docker-kubernetes/14-case-event-driven-kustomize-vs-helm.md +324 -315
  305. package/lib/assets/docs/article/getting-start-docker-kubernetes/15-case-escqrs-axon-kustomize-vs-helm.md +297 -288
  306. package/lib/assets/docs/article/getting-start-docker-kubernetes/16-case-escqrs-kafka-kustomize-vs-helm.md +256 -247
  307. package/lib/assets/docs/article/getting-start-docker-kubernetes/17-case-comparison-summary.md +141 -132
  308. package/lib/assets/docs/article/getting-start-docker-kubernetes/18-case-load-testing.md +303 -294
  309. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-a-dev-tools-setup.md +274 -265
  310. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-b-orchestration-environments.md +530 -521
  311. package/lib/assets/docs/article/getting-start-docker-kubernetes/appendix-c-tips.md +519 -510
  312. package/lib/assets/docs/article/getting-start-docker-kubernetes/outline.md +220 -211
  313. package/lib/assets/docs/article/getting-start-tdd/clojure/01-todo-list-and-first-test.md +9 -0
  314. package/lib/assets/docs/article/getting-start-tdd/clojure/02-fake-it-and-triangulation.md +9 -0
  315. package/lib/assets/docs/article/getting-start-tdd/clojure/03-obvious-implementation-and-refactoring.md +9 -0
  316. package/lib/assets/docs/article/getting-start-tdd/clojure/04-version-control-and-conventional-commits.md +9 -0
  317. package/lib/assets/docs/article/getting-start-tdd/clojure/05-package-management-and-static-analysis.md +9 -0
  318. package/lib/assets/docs/article/getting-start-tdd/clojure/06-task-runner-and-ci-cd.md +9 -0
  319. package/lib/assets/docs/article/getting-start-tdd/clojure/07-protocols-and-records.md +9 -0
  320. package/lib/assets/docs/article/getting-start-tdd/clojure/08-multimethods-and-design-patterns.md +9 -0
  321. package/lib/assets/docs/article/getting-start-tdd/clojure/09-namespaces-and-module-design.md +9 -0
  322. package/lib/assets/docs/article/getting-start-tdd/clojure/10-higher-order-functions-and-composition.md +9 -0
  323. package/lib/assets/docs/article/getting-start-tdd/clojure/11-persistent-data-and-pipeline.md +9 -0
  324. package/lib/assets/docs/article/getting-start-tdd/clojure/12-error-handling-and-spec.md +9 -0
  325. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter01.md +9 -0
  326. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter02.md +9 -0
  327. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter03.md +9 -0
  328. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter04.md +9 -0
  329. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter05.md +9 -0
  330. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter06.md +9 -0
  331. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter07.md +9 -0
  332. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter08.md +9 -0
  333. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter09.md +9 -0
  334. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter10.md +9 -0
  335. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter11.md +9 -0
  336. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter12.md +9 -0
  337. package/lib/assets/docs/article/getting-start-tdd/elixir/01-todo-list-and-first-test.md +9 -0
  338. package/lib/assets/docs/article/getting-start-tdd/elixir/02-fake-it-and-triangulation.md +9 -0
  339. package/lib/assets/docs/article/getting-start-tdd/elixir/03-obvious-implementation-and-refactoring.md +9 -0
  340. package/lib/assets/docs/article/getting-start-tdd/elixir/04-version-control-and-conventional-commits.md +9 -0
  341. package/lib/assets/docs/article/getting-start-tdd/elixir/05-package-management-and-static-analysis.md +9 -0
  342. package/lib/assets/docs/article/getting-start-tdd/elixir/06-task-runner-and-ci-cd.md +9 -0
  343. package/lib/assets/docs/article/getting-start-tdd/elixir/07-structs-and-protocols.md +9 -0
  344. package/lib/assets/docs/article/getting-start-tdd/elixir/08-pattern-matching-and-guards.md +9 -0
  345. package/lib/assets/docs/article/getting-start-tdd/elixir/09-module-design-and-behaviours.md +9 -0
  346. package/lib/assets/docs/article/getting-start-tdd/elixir/10-higher-order-functions-and-pipeline.md +9 -0
  347. package/lib/assets/docs/article/getting-start-tdd/elixir/11-stream-and-lazy-evaluation.md +9 -0
  348. package/lib/assets/docs/article/getting-start-tdd/elixir/12-error-handling-and-with.md +9 -0
  349. package/lib/assets/docs/article/getting-start-tdd/elixir/index.md +2 -2
  350. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter01.md +9 -0
  351. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter02.md +9 -0
  352. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter03.md +9 -0
  353. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter04.md +9 -0
  354. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter05.md +9 -0
  355. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter06.md +9 -0
  356. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter07.md +9 -0
  357. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter08.md +9 -0
  358. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter09.md +9 -0
  359. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter10.md +9 -0
  360. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter11.md +9 -0
  361. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter12.md +9 -0
  362. package/lib/assets/docs/article/getting-start-tdd/go/01-todo-list-and-first-test.md +9 -0
  363. package/lib/assets/docs/article/getting-start-tdd/go/02-fake-it-and-triangulation.md +9 -0
  364. package/lib/assets/docs/article/getting-start-tdd/go/03-obvious-implementation-and-refactoring.md +9 -0
  365. package/lib/assets/docs/article/getting-start-tdd/go/04-version-control-and-conventional-commits.md +9 -0
  366. package/lib/assets/docs/article/getting-start-tdd/go/05-package-management-and-static-analysis.md +9 -0
  367. package/lib/assets/docs/article/getting-start-tdd/go/06-task-runner-and-ci-cd.md +9 -0
  368. package/lib/assets/docs/article/getting-start-tdd/go/07-encapsulation-and-polymorphism.md +8 -0
  369. package/lib/assets/docs/article/getting-start-tdd/go/08-design-patterns.md +8 -0
  370. package/lib/assets/docs/article/getting-start-tdd/go/09-solid-principles-and-module-design.md +8 -0
  371. package/lib/assets/docs/article/getting-start-tdd/go/10-higher-order-functions-and-composition.md +8 -0
  372. package/lib/assets/docs/article/getting-start-tdd/go/11-immutable-data-and-pipeline.md +8 -0
  373. package/lib/assets/docs/article/getting-start-tdd/go/12-error-handling-and-type-safety.md +8 -0
  374. package/lib/assets/docs/article/getting-start-tdd/haskell/01-todo-list-and-first-test.md +9 -0
  375. package/lib/assets/docs/article/getting-start-tdd/haskell/02-fake-it-and-triangulation.md +9 -0
  376. package/lib/assets/docs/article/getting-start-tdd/haskell/03-obvious-implementation-and-refactoring.md +9 -0
  377. package/lib/assets/docs/article/getting-start-tdd/haskell/04-version-control-and-conventional-commits.md +9 -0
  378. package/lib/assets/docs/article/getting-start-tdd/haskell/05-package-management-and-static-analysis.md +9 -0
  379. package/lib/assets/docs/article/getting-start-tdd/haskell/06-task-runner-and-ci-cd.md +9 -0
  380. package/lib/assets/docs/article/getting-start-tdd/haskell/07-algebraic-data-types-and-type-classes.md +9 -0
  381. package/lib/assets/docs/article/getting-start-tdd/haskell/08-pattern-matching-and-guards.md +9 -0
  382. package/lib/assets/docs/article/getting-start-tdd/haskell/09-module-design-and-smart-constructors.md +9 -0
  383. package/lib/assets/docs/article/getting-start-tdd/haskell/10-higher-order-functions-and-currying.md +9 -0
  384. package/lib/assets/docs/article/getting-start-tdd/haskell/11-function-composition-and-point-free.md +9 -0
  385. package/lib/assets/docs/article/getting-start-tdd/haskell/12-monad-and-error-handling.md +9 -0
  386. package/lib/assets/docs/article/getting-start-tdd/integration/01-language-overview.md +9 -0
  387. package/lib/assets/docs/article/getting-start-tdd/integration/02-test-framework-comparison.md +9 -0
  388. package/lib/assets/docs/article/getting-start-tdd/integration/03-tdd-pattern-comparison.md +9 -0
  389. package/lib/assets/docs/article/getting-start-tdd/integration/04-type-system-comparison.md +9 -0
  390. package/lib/assets/docs/article/getting-start-tdd/integration/05-dev-environment-comparison.md +9 -0
  391. package/lib/assets/docs/article/getting-start-tdd/integration/06-learning-roadmap.md +9 -0
  392. package/lib/assets/docs/article/getting-start-tdd/java/01-todo-list-and-first-test.md +9 -0
  393. package/lib/assets/docs/article/getting-start-tdd/java/02-fake-it-and-triangulation.md +9 -0
  394. package/lib/assets/docs/article/getting-start-tdd/java/03-obvious-implementation-and-refactoring.md +9 -0
  395. package/lib/assets/docs/article/getting-start-tdd/java/04-version-control-and-conventional-commits.md +9 -0
  396. package/lib/assets/docs/article/getting-start-tdd/java/05-package-management-and-static-analysis.md +9 -0
  397. package/lib/assets/docs/article/getting-start-tdd/java/06-task-runner-and-ci-cd.md +9 -0
  398. package/lib/assets/docs/article/getting-start-tdd/java/07-encapsulation-and-polymorphism.md +9 -0
  399. package/lib/assets/docs/article/getting-start-tdd/java/08-design-patterns.md +9 -0
  400. package/lib/assets/docs/article/getting-start-tdd/java/09-solid-principles-and-module-design.md +9 -0
  401. package/lib/assets/docs/article/getting-start-tdd/java/10-higher-order-functions-and-composition.md +9 -0
  402. package/lib/assets/docs/article/getting-start-tdd/java/11-immutable-data-and-pipeline.md +9 -0
  403. package/lib/assets/docs/article/getting-start-tdd/java/12-error-handling-and-type-safety.md +9 -0
  404. package/lib/assets/docs/article/getting-start-tdd/node/01-todo-list-and-first-test.md +9 -0
  405. package/lib/assets/docs/article/getting-start-tdd/node/02-fake-it-and-triangulation.md +9 -0
  406. package/lib/assets/docs/article/getting-start-tdd/node/03-obvious-implementation-and-refactoring.md +9 -0
  407. package/lib/assets/docs/article/getting-start-tdd/node/04-version-control-and-conventional-commits.md +9 -0
  408. package/lib/assets/docs/article/getting-start-tdd/node/05-package-management-and-static-analysis.md +9 -0
  409. package/lib/assets/docs/article/getting-start-tdd/node/06-task-runner-and-ci-cd.md +9 -0
  410. package/lib/assets/docs/article/getting-start-tdd/node/07-encapsulation-and-polymorphism.md +9 -0
  411. package/lib/assets/docs/article/getting-start-tdd/node/08-design-patterns.md +9 -0
  412. package/lib/assets/docs/article/getting-start-tdd/node/09-solid-principles-and-module-design.md +9 -0
  413. package/lib/assets/docs/article/getting-start-tdd/node/10-higher-order-functions-and-composition.md +9 -0
  414. package/lib/assets/docs/article/getting-start-tdd/node/11-immutable-data-and-pipeline.md +9 -0
  415. package/lib/assets/docs/article/getting-start-tdd/node/12-error-handling-and-type-safety.md +9 -0
  416. package/lib/assets/docs/article/getting-start-tdd/php/01-todo-list-and-first-test.md +9 -0
  417. package/lib/assets/docs/article/getting-start-tdd/php/02-fake-it-and-triangulation.md +9 -0
  418. package/lib/assets/docs/article/getting-start-tdd/php/03-obvious-implementation-and-refactoring.md +9 -0
  419. package/lib/assets/docs/article/getting-start-tdd/php/04-version-control-and-conventional-commits.md +9 -0
  420. package/lib/assets/docs/article/getting-start-tdd/php/05-package-management-and-static-analysis.md +9 -0
  421. package/lib/assets/docs/article/getting-start-tdd/php/06-task-runner-and-ci-cd.md +9 -0
  422. package/lib/assets/docs/article/getting-start-tdd/php/07-encapsulation-and-polymorphism.md +8 -0
  423. package/lib/assets/docs/article/getting-start-tdd/php/08-design-patterns.md +8 -0
  424. package/lib/assets/docs/article/getting-start-tdd/php/09-solid-principles-and-module-design.md +8 -0
  425. package/lib/assets/docs/article/getting-start-tdd/php/10-higher-order-functions-and-composition.md +8 -0
  426. package/lib/assets/docs/article/getting-start-tdd/php/11-immutable-data-and-pipeline.md +8 -0
  427. package/lib/assets/docs/article/getting-start-tdd/php/12-error-handling-and-type-safety.md +8 -0
  428. package/lib/assets/docs/article/getting-start-tdd/python/01-todo-list-and-first-test.md +9 -0
  429. package/lib/assets/docs/article/getting-start-tdd/python/02-fake-it-and-triangulation.md +9 -0
  430. package/lib/assets/docs/article/getting-start-tdd/python/03-obvious-implementation-and-refactoring.md +9 -0
  431. package/lib/assets/docs/article/getting-start-tdd/python/04-version-control-and-conventional-commits.md +9 -0
  432. package/lib/assets/docs/article/getting-start-tdd/python/05-package-management-and-static-analysis.md +9 -0
  433. package/lib/assets/docs/article/getting-start-tdd/python/06-task-runner-and-ci-cd.md +9 -0
  434. package/lib/assets/docs/article/getting-start-tdd/python/07-encapsulation-and-polymorphism.md +9 -0
  435. package/lib/assets/docs/article/getting-start-tdd/python/08-design-patterns.md +9 -0
  436. package/lib/assets/docs/article/getting-start-tdd/python/09-solid-principles-and-module-design.md +9 -0
  437. package/lib/assets/docs/article/getting-start-tdd/python/10-higher-order-functions-and-composition.md +9 -0
  438. package/lib/assets/docs/article/getting-start-tdd/python/11-immutable-data-and-pipeline.md +9 -0
  439. package/lib/assets/docs/article/getting-start-tdd/python/12-error-handling-and-type-safety.md +9 -0
  440. package/lib/assets/docs/article/getting-start-tdd/ruby/01-todo-list-and-first-test.md +9 -0
  441. package/lib/assets/docs/article/getting-start-tdd/ruby/02-fake-it-and-triangulation.md +9 -0
  442. package/lib/assets/docs/article/getting-start-tdd/ruby/03-obvious-implementation-and-refactoring.md +9 -0
  443. package/lib/assets/docs/article/getting-start-tdd/ruby/04-version-control-and-conventional-commits.md +9 -0
  444. package/lib/assets/docs/article/getting-start-tdd/ruby/05-package-management-and-static-analysis.md +9 -0
  445. package/lib/assets/docs/article/getting-start-tdd/ruby/06-task-runner-and-ci-cd.md +9 -0
  446. package/lib/assets/docs/article/getting-start-tdd/ruby/07-encapsulation-and-polymorphism.md +9 -0
  447. package/lib/assets/docs/article/getting-start-tdd/ruby/08-design-patterns.md +9 -0
  448. package/lib/assets/docs/article/getting-start-tdd/ruby/09-solid-principles-and-module-design.md +9 -0
  449. package/lib/assets/docs/article/getting-start-tdd/ruby/10-higher-order-functions-and-composition.md +9 -0
  450. package/lib/assets/docs/article/getting-start-tdd/ruby/11-immutable-data-and-pipeline.md +9 -0
  451. package/lib/assets/docs/article/getting-start-tdd/ruby/12-error-handling-and-type-safety.md +9 -0
  452. package/lib/assets/docs/article/getting-start-tdd/rust/01-todo-list-and-first-test.md +9 -0
  453. package/lib/assets/docs/article/getting-start-tdd/rust/02-fake-it-and-triangulation.md +9 -0
  454. package/lib/assets/docs/article/getting-start-tdd/rust/03-obvious-implementation-and-refactoring.md +9 -0
  455. package/lib/assets/docs/article/getting-start-tdd/rust/04-version-control-and-conventional-commits.md +9 -0
  456. package/lib/assets/docs/article/getting-start-tdd/rust/05-package-management-and-static-analysis.md +9 -0
  457. package/lib/assets/docs/article/getting-start-tdd/rust/06-task-runner-and-ci-cd.md +9 -0
  458. package/lib/assets/docs/article/getting-start-tdd/rust/07-encapsulation-and-polymorphism.md +9 -0
  459. package/lib/assets/docs/article/getting-start-tdd/rust/08-design-patterns.md +9 -0
  460. package/lib/assets/docs/article/getting-start-tdd/rust/09-solid-principles-and-module-design.md +9 -0
  461. package/lib/assets/docs/article/getting-start-tdd/rust/10-higher-order-functions-and-composition.md +9 -0
  462. package/lib/assets/docs/article/getting-start-tdd/rust/11-immutable-data-and-pipeline.md +9 -0
  463. package/lib/assets/docs/article/getting-start-tdd/rust/12-error-handling-and-type-safety.md +9 -0
  464. package/lib/assets/docs/article/getting-start-tdd/scala/01-todo-list-and-first-test.md +9 -0
  465. package/lib/assets/docs/article/getting-start-tdd/scala/02-fake-it-and-triangulation.md +9 -0
  466. package/lib/assets/docs/article/getting-start-tdd/scala/03-obvious-implementation-and-refactoring.md +9 -0
  467. package/lib/assets/docs/article/getting-start-tdd/scala/04-version-control-and-conventional-commits.md +9 -0
  468. package/lib/assets/docs/article/getting-start-tdd/scala/05-package-management-and-static-analysis.md +9 -0
  469. package/lib/assets/docs/article/getting-start-tdd/scala/06-task-runner-and-ci-cd.md +9 -0
  470. package/lib/assets/docs/article/getting-start-tdd/scala/07-case-classes-and-traits.md +9 -0
  471. package/lib/assets/docs/article/getting-start-tdd/scala/08-pattern-matching-and-sealed-traits.md +9 -0
  472. package/lib/assets/docs/article/getting-start-tdd/scala/09-packages-and-module-design.md +9 -0
  473. package/lib/assets/docs/article/getting-start-tdd/scala/10-higher-order-functions-and-composition.md +9 -0
  474. package/lib/assets/docs/article/getting-start-tdd/scala/11-collections-and-lazy-evaluation.md +9 -0
  475. package/lib/assets/docs/article/getting-start-tdd/scala/12-error-handling-and-type-safety.md +9 -0
  476. package/lib/assets/docs/article/grokking-concurrency/all/index.md +0 -1
  477. package/lib/assets/docs/article/grokking-concurrency/all/part-1-ch02-sequential.md +9 -0
  478. package/lib/assets/docs/article/grokking-concurrency/all/part-2-ch04-05-threads.md +9 -0
  479. package/lib/assets/docs/article/grokking-concurrency/all/part-3-ch06-multitasking.md +9 -0
  480. package/lib/assets/docs/article/grokking-concurrency/all/part-4-ch07-parallel-patterns.md +9 -0
  481. package/lib/assets/docs/article/grokking-concurrency/all/part-5-ch08-09-synchronization.md +9 -0
  482. package/lib/assets/docs/article/grokking-concurrency/all/part-6-ch10-11-nonblocking-io.md +9 -0
  483. package/lib/assets/docs/article/grokking-concurrency/all/part-7-ch12-async.md +9 -0
  484. package/lib/assets/docs/article/grokking-concurrency/all/part-8-ch13-mapreduce.md +9 -0
  485. package/lib/assets/docs/article/grokking-concurrency/clojure/index.md +0 -10
  486. package/lib/assets/docs/article/grokking-concurrency/clojure/part-1.md +6 -7
  487. package/lib/assets/docs/article/grokking-concurrency/clojure/part-2.md +6 -7
  488. package/lib/assets/docs/article/grokking-concurrency/clojure/part-3.md +6 -7
  489. package/lib/assets/docs/article/grokking-concurrency/clojure/part-4.md +6 -7
  490. package/lib/assets/docs/article/grokking-concurrency/clojure/part-5.md +6 -7
  491. package/lib/assets/docs/article/grokking-concurrency/clojure/part-6.md +6 -7
  492. package/lib/assets/docs/article/grokking-concurrency/clojure/part-7.md +6 -7
  493. package/lib/assets/docs/article/grokking-concurrency/clojure/part-8.md +6 -7
  494. package/lib/assets/docs/article/grokking-concurrency/csharp/index.md +0 -10
  495. package/lib/assets/docs/article/grokking-concurrency/csharp/part-1.md +6 -7
  496. package/lib/assets/docs/article/grokking-concurrency/csharp/part-2.md +6 -7
  497. package/lib/assets/docs/article/grokking-concurrency/csharp/part-3.md +6 -7
  498. package/lib/assets/docs/article/grokking-concurrency/csharp/part-4.md +6 -7
  499. package/lib/assets/docs/article/grokking-concurrency/csharp/part-5.md +6 -7
  500. package/lib/assets/docs/article/grokking-concurrency/csharp/part-6.md +6 -7
  501. package/lib/assets/docs/article/grokking-concurrency/csharp/part-7.md +6 -7
  502. package/lib/assets/docs/article/grokking-concurrency/csharp/part-8.md +6 -7
  503. package/lib/assets/docs/article/grokking-concurrency/fsharp/index.md +0 -10
  504. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-1.md +6 -7
  505. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-2.md +6 -7
  506. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-3.md +6 -7
  507. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-4.md +6 -7
  508. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-5.md +6 -7
  509. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-6.md +6 -7
  510. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-7.md +6 -7
  511. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-8.md +6 -7
  512. package/lib/assets/docs/article/grokking-concurrency/haskell/index.md +0 -10
  513. package/lib/assets/docs/article/grokking-concurrency/haskell/part-1.md +6 -7
  514. package/lib/assets/docs/article/grokking-concurrency/haskell/part-2.md +6 -7
  515. package/lib/assets/docs/article/grokking-concurrency/haskell/part-3.md +6 -7
  516. package/lib/assets/docs/article/grokking-concurrency/haskell/part-4.md +6 -7
  517. package/lib/assets/docs/article/grokking-concurrency/haskell/part-5.md +6 -7
  518. package/lib/assets/docs/article/grokking-concurrency/haskell/part-6.md +6 -7
  519. package/lib/assets/docs/article/grokking-concurrency/haskell/part-7.md +6 -7
  520. package/lib/assets/docs/article/grokking-concurrency/haskell/part-8.md +6 -7
  521. package/lib/assets/docs/article/grokking-concurrency/java/index.md +0 -10
  522. package/lib/assets/docs/article/grokking-concurrency/java/part-1.md +8 -9
  523. package/lib/assets/docs/article/grokking-concurrency/java/part-2.md +8 -9
  524. package/lib/assets/docs/article/grokking-concurrency/java/part-3.md +7 -8
  525. package/lib/assets/docs/article/grokking-concurrency/java/part-4.md +8 -9
  526. package/lib/assets/docs/article/grokking-concurrency/java/part-5.md +7 -8
  527. package/lib/assets/docs/article/grokking-concurrency/java/part-6.md +6 -7
  528. package/lib/assets/docs/article/grokking-concurrency/java/part-7.md +6 -7
  529. package/lib/assets/docs/article/grokking-concurrency/java/part-8.md +6 -7
  530. package/lib/assets/docs/article/grokking-concurrency/python/index.md +0 -10
  531. package/lib/assets/docs/article/grokking-concurrency/python/part-1.md +7 -8
  532. package/lib/assets/docs/article/grokking-concurrency/python/part-2.md +10 -11
  533. package/lib/assets/docs/article/grokking-concurrency/python/part-3.md +8 -9
  534. package/lib/assets/docs/article/grokking-concurrency/python/part-4.md +8 -9
  535. package/lib/assets/docs/article/grokking-concurrency/python/part-5.md +9 -10
  536. package/lib/assets/docs/article/grokking-concurrency/python/part-6.md +9 -10
  537. package/lib/assets/docs/article/grokking-concurrency/python/part-7.md +9 -10
  538. package/lib/assets/docs/article/grokking-concurrency/python/part-8.md +8 -9
  539. package/lib/assets/docs/article/grokking-concurrency/rust/index.md +0 -10
  540. package/lib/assets/docs/article/grokking-concurrency/rust/part-1.md +6 -7
  541. package/lib/assets/docs/article/grokking-concurrency/rust/part-2.md +6 -7
  542. package/lib/assets/docs/article/grokking-concurrency/rust/part-3.md +6 -7
  543. package/lib/assets/docs/article/grokking-concurrency/rust/part-4.md +6 -7
  544. package/lib/assets/docs/article/grokking-concurrency/rust/part-5.md +6 -7
  545. package/lib/assets/docs/article/grokking-concurrency/rust/part-6.md +6 -7
  546. package/lib/assets/docs/article/grokking-concurrency/rust/part-7.md +6 -7
  547. package/lib/assets/docs/article/grokking-concurrency/rust/part-8.md +6 -7
  548. package/lib/assets/docs/article/grokking-concurrency/scala/index.md +0 -10
  549. package/lib/assets/docs/article/grokking-concurrency/scala/part-1.md +6 -7
  550. package/lib/assets/docs/article/grokking-concurrency/scala/part-2.md +6 -7
  551. package/lib/assets/docs/article/grokking-concurrency/scala/part-3.md +6 -7
  552. package/lib/assets/docs/article/grokking-concurrency/scala/part-4.md +6 -7
  553. package/lib/assets/docs/article/grokking-concurrency/scala/part-5.md +6 -7
  554. package/lib/assets/docs/article/grokking-concurrency/scala/part-6.md +6 -7
  555. package/lib/assets/docs/article/grokking-concurrency/scala/part-7.md +6 -7
  556. package/lib/assets/docs/article/grokking-concurrency/scala/part-8.md +6 -7
  557. package/lib/assets/docs/article/grokkingfp/all/part-1-ch01-fp-introduction.md +9 -0
  558. package/lib/assets/docs/article/grokkingfp/all/part-1-ch02-pure-functions.md +9 -0
  559. package/lib/assets/docs/article/grokkingfp/all/part-2-ch03-immutable-data.md +9 -0
  560. package/lib/assets/docs/article/grokkingfp/all/part-2-ch04-higher-order-functions.md +9 -0
  561. package/lib/assets/docs/article/grokkingfp/all/part-2-ch05-flatmap.md +9 -0
  562. package/lib/assets/docs/article/grokkingfp/all/part-3-ch06-option.md +9 -0
  563. package/lib/assets/docs/article/grokkingfp/all/part-3-ch07-either-adt.md +9 -0
  564. package/lib/assets/docs/article/grokkingfp/all/part-4-ch08-io-monad.md +9 -0
  565. package/lib/assets/docs/article/grokkingfp/all/part-4-ch09-streams.md +9 -0
  566. package/lib/assets/docs/article/grokkingfp/all/part-5-ch10-concurrency.md +9 -0
  567. package/lib/assets/docs/article/grokkingfp/all/part-6-ch11-application.md +9 -0
  568. package/lib/assets/docs/article/grokkingfp/all/part-6-ch12-testing.md +9 -0
  569. package/lib/assets/docs/article/grokkingfp/all/writing-plan.md +9 -0
  570. package/lib/assets/docs/article/grokkingfp/clojure/part-1.md +9 -0
  571. package/lib/assets/docs/article/grokkingfp/clojure/part-2.md +9 -0
  572. package/lib/assets/docs/article/grokkingfp/clojure/part-3.md +9 -0
  573. package/lib/assets/docs/article/grokkingfp/clojure/part-4.md +9 -0
  574. package/lib/assets/docs/article/grokkingfp/clojure/part-5.md +9 -0
  575. package/lib/assets/docs/article/grokkingfp/clojure/part-6.md +9 -0
  576. package/lib/assets/docs/article/grokkingfp/csharp/part-1.md +9 -0
  577. package/lib/assets/docs/article/grokkingfp/csharp/part-2.md +9 -0
  578. package/lib/assets/docs/article/grokkingfp/csharp/part-3.md +9 -0
  579. package/lib/assets/docs/article/grokkingfp/csharp/part-4.md +9 -0
  580. package/lib/assets/docs/article/grokkingfp/csharp/part-5.md +9 -0
  581. package/lib/assets/docs/article/grokkingfp/csharp/part-6.md +9 -0
  582. package/lib/assets/docs/article/grokkingfp/elixir/part-1.md +9 -0
  583. package/lib/assets/docs/article/grokkingfp/elixir/part-2.md +9 -0
  584. package/lib/assets/docs/article/grokkingfp/elixir/part-3.md +9 -0
  585. package/lib/assets/docs/article/grokkingfp/elixir/part-4.md +9 -0
  586. package/lib/assets/docs/article/grokkingfp/elixir/part-5.md +9 -0
  587. package/lib/assets/docs/article/grokkingfp/elixir/part-6.md +9 -0
  588. package/lib/assets/docs/article/grokkingfp/fsharp/part-1.md +9 -0
  589. package/lib/assets/docs/article/grokkingfp/fsharp/part-2.md +9 -0
  590. package/lib/assets/docs/article/grokkingfp/fsharp/part-3.md +9 -0
  591. package/lib/assets/docs/article/grokkingfp/fsharp/part-4.md +9 -0
  592. package/lib/assets/docs/article/grokkingfp/fsharp/part-5.md +9 -0
  593. package/lib/assets/docs/article/grokkingfp/fsharp/part-6.md +9 -0
  594. package/lib/assets/docs/article/grokkingfp/haskell/part-1.md +9 -0
  595. package/lib/assets/docs/article/grokkingfp/haskell/part-2.md +9 -0
  596. package/lib/assets/docs/article/grokkingfp/haskell/part-3.md +9 -0
  597. package/lib/assets/docs/article/grokkingfp/haskell/part-4.md +9 -0
  598. package/lib/assets/docs/article/grokkingfp/haskell/part-5.md +9 -0
  599. package/lib/assets/docs/article/grokkingfp/haskell/part-6.md +9 -0
  600. package/lib/assets/docs/article/grokkingfp/java/part-1.md +9 -0
  601. package/lib/assets/docs/article/grokkingfp/java/part-2.md +9 -0
  602. package/lib/assets/docs/article/grokkingfp/java/part-3.md +9 -0
  603. package/lib/assets/docs/article/grokkingfp/java/part-4.md +9 -0
  604. package/lib/assets/docs/article/grokkingfp/java/part-5.md +9 -0
  605. package/lib/assets/docs/article/grokkingfp/java/part-6.md +9 -0
  606. package/lib/assets/docs/article/grokkingfp/python/part-1.md +9 -0
  607. package/lib/assets/docs/article/grokkingfp/python/part-2.md +9 -0
  608. package/lib/assets/docs/article/grokkingfp/python/part-3.md +9 -0
  609. package/lib/assets/docs/article/grokkingfp/python/part-4.md +9 -0
  610. package/lib/assets/docs/article/grokkingfp/python/part-5.md +9 -0
  611. package/lib/assets/docs/article/grokkingfp/python/part-6.md +9 -0
  612. package/lib/assets/docs/article/grokkingfp/ruby/part-1.md +9 -0
  613. package/lib/assets/docs/article/grokkingfp/ruby/part-2.md +9 -0
  614. package/lib/assets/docs/article/grokkingfp/ruby/part-3.md +9 -0
  615. package/lib/assets/docs/article/grokkingfp/ruby/part-4.md +9 -0
  616. package/lib/assets/docs/article/grokkingfp/ruby/part-5.md +9 -0
  617. package/lib/assets/docs/article/grokkingfp/ruby/part-6.md +9 -0
  618. package/lib/assets/docs/article/grokkingfp/rust/part-1.md +9 -0
  619. package/lib/assets/docs/article/grokkingfp/rust/part-2.md +9 -0
  620. package/lib/assets/docs/article/grokkingfp/rust/part-3.md +9 -0
  621. package/lib/assets/docs/article/grokkingfp/rust/part-4.md +9 -0
  622. package/lib/assets/docs/article/grokkingfp/rust/part-5.md +9 -0
  623. package/lib/assets/docs/article/grokkingfp/rust/part-6.md +9 -0
  624. package/lib/assets/docs/article/grokkingfp/scala/part-1.md +9 -0
  625. package/lib/assets/docs/article/grokkingfp/scala/part-2.md +9 -0
  626. package/lib/assets/docs/article/grokkingfp/scala/part-3.md +9 -0
  627. package/lib/assets/docs/article/grokkingfp/scala/part-4.md +9 -0
  628. package/lib/assets/docs/article/grokkingfp/scala/part-5.md +9 -0
  629. package/lib/assets/docs/article/grokkingfp/scala/part-6.md +9 -0
  630. package/lib/assets/docs/article/grokkingfp/typescript/part-1.md +9 -0
  631. package/lib/assets/docs/article/grokkingfp/typescript/part-2.md +9 -0
  632. package/lib/assets/docs/article/grokkingfp/typescript/part-3.md +9 -0
  633. package/lib/assets/docs/article/grokkingfp/typescript/part-4.md +9 -0
  634. package/lib/assets/docs/article/grokkingfp/typescript/part-5.md +9 -0
  635. package/lib/assets/docs/article/grokkingfp/typescript/part-6.md +9 -0
  636. package/lib/assets/docs/article/practical-database-design/part1/chapter01.md +9 -0
  637. package/lib/assets/docs/article/practical-database-design/part1/chapter02.md +9 -0
  638. package/lib/assets/docs/article/practical-database-design/part1/chapter03.md +9 -0
  639. package/lib/assets/docs/article/practical-database-design/part2/chapter04.md +9 -0
  640. package/lib/assets/docs/article/practical-database-design/part2/chapter05.md +9 -0
  641. package/lib/assets/docs/article/practical-database-design/part2/chapter06.md +9 -0
  642. package/lib/assets/docs/article/practical-database-design/part2/chapter07.md +9 -0
  643. package/lib/assets/docs/article/practical-database-design/part2/chapter08.md +9 -0
  644. package/lib/assets/docs/article/practical-database-design/part2/chapter09.md +9 -0
  645. package/lib/assets/docs/article/practical-database-design/part2/chapter10.md +9 -0
  646. package/lib/assets/docs/article/practical-database-design/part2/chapter11.md +9 -0
  647. package/lib/assets/docs/article/practical-database-design/part2/chapter12.md +9 -0
  648. package/lib/assets/docs/article/practical-database-design/part2/chapter13.md +9 -0
  649. package/lib/assets/docs/article/practical-database-design/part3/chapter14.md +9 -0
  650. package/lib/assets/docs/article/practical-database-design/part3/chapter15.md +9 -0
  651. package/lib/assets/docs/article/practical-database-design/part3/chapter16.md +9 -0
  652. package/lib/assets/docs/article/practical-database-design/part3/chapter17.md +9 -0
  653. package/lib/assets/docs/article/practical-database-design/part3/chapter18.md +9 -0
  654. package/lib/assets/docs/article/practical-database-design/part3/chapter19.md +9 -0
  655. package/lib/assets/docs/article/practical-database-design/part3/chapter20.md +9 -0
  656. package/lib/assets/docs/article/practical-database-design/part3/chapter21.md +9 -0
  657. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter14-orm.md +9 -0
  658. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter15-orm.md +9 -0
  659. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter16-orm.md +9 -0
  660. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter17-orm.md +9 -0
  661. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter18-orm.md +9 -0
  662. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter19-orm.md +9 -0
  663. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter20-orm.md +9 -0
  664. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter21-orm.md +9 -0
  665. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter22-orm.md +9 -0
  666. package/lib/assets/docs/article/practical-database-design/part4/chapter22.md +9 -0
  667. package/lib/assets/docs/article/practical-database-design/part4/chapter23.md +9 -0
  668. package/lib/assets/docs/article/practical-database-design/part4/chapter24.md +9 -0
  669. package/lib/assets/docs/article/practical-database-design/part4/chapter25.md +9 -0
  670. package/lib/assets/docs/article/practical-database-design/part4/chapter26.md +9 -0
  671. package/lib/assets/docs/article/practical-database-design/part4/chapter27.md +9 -0
  672. package/lib/assets/docs/article/practical-database-design/part4/chapter28.md +9 -0
  673. package/lib/assets/docs/article/practical-database-design/part4/chapter29.md +8 -0
  674. package/lib/assets/docs/article/practical-database-design/part4/chapter30.md +8 -0
  675. package/lib/assets/docs/article/practical-database-design/part4/chapter31.md +8 -0
  676. package/lib/assets/docs/article/practical-database-design/part4/chapter32.md +8 -0
  677. package/lib/assets/docs/article/practical-database-design/part5/chapter33.md +9 -0
  678. package/lib/assets/docs/article/practical-database-design/part5/chapter34.md +9 -0
  679. package/lib/assets/docs/article/practical-database-design/part5/chapter35.md +9 -0
  680. package/lib/assets/docs/article/practical-database-design/part5/chapter36.md +9 -0
  681. package/lib/assets/docs/article/practical-database-design/part5/chapter37.md +9 -0
  682. package/lib/assets/docs/article/practical-database-design/part5/chapter38.md +9 -0
  683. package/lib/assets/docs/article/practical-database-design/part5/chapter39.md +9 -0
  684. package/lib/assets/docs/article/practical-database-design/study/study2-1.md +9 -0
  685. package/lib/assets/docs/article/practical-database-design/study/study2-2.md +9 -0
  686. package/lib/assets/docs/article/practical-database-design/study/study2-3.md +9 -0
  687. package/lib/assets/docs/article/practical-database-design/study/study2-4.md +9 -0
  688. package/lib/assets/docs/article/practical-database-design/study/study2-5.md +9 -0
  689. package/lib/assets/docs/article/practical-database-design/study/study3-1.md +9 -0
  690. package/lib/assets/docs/article/practical-database-design/study/study3-2.md +9 -0
  691. package/lib/assets/docs/article/practical-database-design/study/study3-3.md +9 -0
  692. package/lib/assets/docs/article/practical-database-design/study/study3-4.md +9 -0
  693. package/lib/assets/docs/article/practical-database-design/study/study3-5.md +9 -0
  694. package/lib/assets/docs/article/practical-database-design/study/study4-1.md +9 -0
  695. package/lib/assets/docs/article/practical-database-design/study/study4-2.md +9 -0
  696. package/lib/assets/docs/article/practical-database-design/study/study4-3.md +9 -0
  697. package/lib/assets/docs/article/practical-database-design/study/study4-4.md +9 -0
  698. package/lib/assets/docs/article/practical-database-design/study/study4-5.md +9 -0
  699. package/lib/assets/docs/index.md +4 -0
  700. package/lib/assets/docs/log.md +5 -0
  701. package/lib/assets/docs/operation/index.md +15 -1
  702. package/lib/assets/docs/reference/CodexCLIMCP/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/343/203/225/343/203/255/343/203/274.md +13 -4
  703. package/lib/assets/docs/reference/CodexCLIMCP/343/202/265/343/203/274/343/203/220/343/203/274/350/250/255/345/256/232/346/211/213/351/240/206.md +10 -0
  704. package/lib/assets/docs/reference/Java/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +11 -1
  705. package/lib/assets/docs/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -0
  706. package/lib/assets/docs/reference/SonarQube/343/203/255/343/203/274/343/202/253/343/203/253/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +10 -0
  707. package/lib/assets/docs/reference/TypeScript/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +11 -1
  708. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +10 -1
  709. package/lib/assets/docs/reference/Vim/346/223/215/344/275/234/343/203/236/343/203/213/343/203/245/343/202/242/343/203/253.md +177 -168
  710. package/lib/assets/docs/reference/index.md +54 -53
  711. package/lib/assets/docs/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +7 -8
  712. package/lib/assets/docs/reference//343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +10 -1
  713. package/lib/assets/docs/reference//343/202/244/343/203/263/343/203/225/343/203/251/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +10 -1
  714. package/lib/assets/docs/reference//343/202/250/343/202/257/343/202/271/343/203/210/343/203/252/343/203/274/343/203/240/343/203/227/343/203/255/343/202/260/343/203/251/343/203/237/343/203/263/343/202/260.md +6 -7
  715. package/lib/assets/docs/reference//343/202/263/343/203/274/343/203/207/343/202/243/343/203/263/343/202/260/343/201/250/343/203/206/343/202/271/343/203/210/343/202/254/343/202/244/343/203/211.md +10 -1
  716. package/lib/assets/docs/reference//343/203/206/343/202/271/343/203/210/346/210/246/347/225/245/343/202/254/343/202/244/343/203/211.md +10 -1
  717. package/lib/assets/docs/reference//343/203/207/343/203/274/343/202/277/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +10 -1
  718. package/lib/assets/docs/reference//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +10 -1
  719. package/lib/assets/docs/reference//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +9 -0
  720. package/lib/assets/docs/reference//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +10 -1
  721. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +9 -0
  722. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/203/273/343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273/343/202/254/343/202/244/343/203/211.md +7 -8
  723. package/lib/assets/docs/reference//343/203/255/343/202/270/343/202/253/343/203/253/343/202/267/343/203/263/343/202/255/343/203/263/343/202/260.md +9 -0
  724. package/lib/assets/docs/reference//344/274/201/346/245/255/347/265/214/345/226/266/350/253/226.md +10 -1
  725. package/lib/assets/docs/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +10 -0
  726. package/lib/assets/docs/reference//347/265/214/345/226/266/346/210/246/347/225/245/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +9 -0
  727. package/lib/assets/docs/reference//350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +10 -1
  728. package/lib/assets/docs/reference//350/250/200/350/252/236/345/210/245/351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +9 -0
  729. package/lib/assets/docs/reference//351/201/213/345/226/266/347/256/241/347/220/206.md +10 -1
  730. package/lib/assets/docs/reference//351/201/213/347/224/250/343/202/271/343/202/257/343/203/252/343/203/227/343/203/210/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +9 -0
  731. package/lib/assets/docs/reference//351/201/213/347/224/250/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +10 -1
  732. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +9 -0
  733. package/lib/assets/docs/reference//351/235/236/346/251/237/350/203/275/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +10 -1
  734. package/lib/assets/docs/template/ADR.md +9 -0
  735. package/lib/assets/docs/template/AWS/343/202/271/343/203/206/343/203/274/343/202/270/343/203/263/343/202/260/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +9 -0
  736. package/lib/assets/docs/template/AWS/343/203/227/343/203/255/343/203/200/343/202/257/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +9 -0
  737. package/lib/assets/docs/template/README.md +9 -0
  738. package/lib/assets/docs/template//343/201/276/343/201/232/343/201/223/343/202/214/343/202/222/350/252/255/343/202/202/343/201/206/343/203/252/343/202/271/343/203/210.md +9 -0
  739. package/lib/assets/docs/template//343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +9 -0
  740. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +10 -1
  741. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273.md +11 -2
  742. package/lib/assets/docs/template//343/202/244/343/203/263/343/202/273/343/203/227/343/202/267/343/203/247/343/203/263/343/203/207/343/203/203/343/202/255.md +9 -0
  743. package/lib/assets/docs/template//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243.md +9 -0
  744. package/lib/assets/docs/template//343/203/252/343/203/252/343/203/274/343/202/271/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +9 -0
  745. package/lib/assets/docs/template//343/203/252/343/203/252/343/203/274/343/202/271/350/250/210/347/224/273.md +289 -280
  746. package/lib/assets/docs/template//344/272/213/344/276/213/345/210/206/346/236/220.md +9 -0
  747. package/lib/assets/docs/template//344/274/201/346/245/255/345/210/206/346/236/220.md +9 -0
  748. package/lib/assets/docs/template//345/256/214/345/205/250/345/275/242/345/274/217/343/201/256/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271.md +7 -8
  749. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +7 -8
  750. package/lib/assets/docs/template//350/250/255/350/250/210.md +10 -1
  751. package/lib/assets/docs/template//351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +9 -0
  752. package/lib/assets/gulpfile.js +4 -2
  753. package/lib/assets/ops/scripts/okf.js +272 -0
  754. package/lib/assets/package.json +2 -0
  755. package/package.json +1 -1
@@ -1,265 +1,274 @@
1
- # 付録 A 開発ツールのセットアップ
2
-
3
- ## はじめに
4
-
5
- 本編で扱った Docker や Kubernetes を快適に学習・開発するには、いくつかの周辺ツールをそろえておくと便利です。この付録では、書籍『Docker/Kubernetes 実践コンテナ開発入門(第 2 版)』の付録に沿って、次の 4 つの開発ツールのセットアップ方法を解説します。
6
-
7
- - A.1 WSL2 — Windows 上で Linux 環境を動かす基盤
8
- - A.2 asdf — 複数言語・ツールのバージョンを統一管理する
9
- - A.3 kind — Docker の中に Kubernetes クラスタを立ち上げる
10
- - A.4 Rancher Desktop — Docker Desktop の代替となるローカル開発環境
11
-
12
- それぞれのツールは「何を解決するのか」という観点から整理します。ツールを導入する目的が明確であれば、自分の環境に合わせて取捨選択できるからです。
13
-
14
- なお、本付録には 2 種類の情報が含まれます。1 つは本リポジトリ(`getting-started-docker-kubernetes`)に実在する設定ファイルやスクリプトを引用した内容で、もう 1 つは各ツールの一般的な利用手順です。前者には出典を明示し、後者は「一般的な手順」と区別して記載します。コマンドの実行結果は環境やバージョンによって変わるため、確実でないものは「例」と明記するか省略しています。
15
-
16
- ---
17
-
18
- ## A.1 WSL2
19
-
20
- ### WSL2 は何を解決するか
21
-
22
- Docker や Kubernetes のツールチェーンは Linux を前提に作られているものが多く、Windows でそのまま動かそうとすると差異に悩まされがちです。WSL2(Windows Subsystem for Linux 2)は、Windows 上で本物の Linux カーネルを動かす仕組みで、この「Windows と Linux の隔たり」を解決します。
23
-
24
- WSL の初代(WSL1)が Linux システムコールを翻訳する方式だったのに対し、WSL2 は軽量な仮想マシン上で実際の Linux カーネルを動作させます。これにより、ファイルシステムの互換性やネットワーク、Docker のようなコンテナ技術との相性が大きく改善されました。
25
-
26
- ### WSL2 の導入
27
-
28
- 最近の Windows 10/11 では、管理者権限の PowerShell またはコマンドプロンプトから次のコマンド 1 つで WSL2 と既定のディストリビューション(通常は Ubuntu)をまとめて導入できます。
29
-
30
- ```bash
31
- wsl --install
32
- ```
33
-
34
- 実行後は再起動を求められることがあります。再起動後、初回起動時に Linux ユーザー名とパスワードの設定を求められます。
35
-
36
- インストール済みの状態を確認したい場合は、次のコマンドでバージョンや稼働状態を確認できます。
37
-
38
- ```bash
39
- # WSL のバージョンと状態を確認する
40
- wsl --status
41
-
42
- # インストール済みディストリビューションを一覧表示する
43
- wsl --list --verbose
44
- ```
45
-
46
- `wsl --list --verbose` の `VERSION` 列が `2` になっていれば WSL2 で動作しています。
47
-
48
- ### ディストリビューションの導入
49
-
50
- 既定以外のディストリビューションを使いたい場合は、導入可能な一覧を確認してから指定してインストールします。
51
-
52
- ```bash
53
- # インストール可能なディストリビューションの一覧を表示する
54
- wsl --list --online
55
-
56
- # ディストリビューションを指定してインストールする(例: Ubuntu-22.04)
57
- wsl --install -d Ubuntu-22.04
58
- ```
59
-
60
- 既存のディストリビューションを WSL2 に変換したい場合は、バージョンを明示的に設定します。
61
-
62
- ```bash
63
- # 既定のバージョンを WSL2 にする
64
- wsl --set-default-version 2
65
-
66
- # 個別のディストリビューションを WSL2 に変換する(例)
67
- wsl --set-version Ubuntu-22.04 2
68
- ```
69
-
70
- ### Docker との連携
71
-
72
- WSL2 は、コンテナ開発環境との連携において中心的な役割を果たします。代表的な連携方法は次の 2 つです。
73
-
74
- 1. Docker Desktop の WSL2 バックエンドを利用する方法。Docker Desktop の設定で WSL2 ベースのエンジンを有効化すると、Windows 側にインストールした Docker を WSL2 のディストリビューションから透過的に利用できます。
75
- 2. WSL2 のディストリビューション内に直接 Docker Engine をインストールする方法。Docker Desktop を使わず、Linux と同じ手順で Docker をセットアップします。後述の Rancher Desktop も WSL2 を基盤として利用します。
76
-
77
- 開発時のポイントとして、ソースコードは Windows 側(`/mnt/c/...`)ではなく WSL2 のファイルシステム上(例: `~/projects`)に置くと、ファイル I/O が高速になり、ファイル変更検知(ホットリロード)も安定します。
78
-
79
- > 注: 上記コマンドは Windows 環境で一般的に有効なものです。利用可能なディストリビューションや既定の挙動は Windows のバージョン・更新状況によって異なります。
80
-
81
- ---
82
-
83
- ## A.2 asdf
84
-
85
- ### asdf は何を解決するか
86
-
87
- 開発を進めると、Go や Node.js といった言語ランタイムに加えて、`kustomize`、`helm`、`tilt` などの CLI ツールを多数使うことになります。これらは「プロジェクトごとに必要なバージョンが違う」「チームメンバー間でバージョンがそろわず、手元では動くのに他の環境で動かない」といった問題を起こしがちです。
88
-
89
- asdf は、複数の言語・ツールのバージョンを 1 つの仕組みでまとめて管理するバージョンマネージャです。プロジェクトのルートに置いた `.tool-versions` ファイルでツールとバージョンを宣言しておくことで、チーム全体で同じバージョンを再現できます。
90
-
91
- ### `.tool-versions` でバージョンを固定する
92
-
93
- 本リポジトリのサンプルアプリ `taskapp` では、`apps/taskapp/.tool-versions`(出典: `getting-started-docker-kubernetes` リポジトリ)で次のようにツールとバージョンを固定しています。
94
-
95
- ```text
96
- golang 1.21.6
97
- tilt 0.33.10
98
- kustomize 5.3.0
99
- kubectx 0.9.5
100
- helm 3.13.3
101
- ```
102
-
103
- このファイルが示すとおり、`taskapp` の開発には Go 本体に加えて、Kubernetes 開発で頻出する次のツール群が必要です。
104
-
105
- - `golang` — アプリケーション本体の実装に使う言語ランタイム
106
- - `tilt` — Kubernetes 上での開発を高速化する開発ツール
107
- - `kustomize` — Kubernetes マニフェストを環境差分込みで管理するツール
108
- - `kubectx` — `kubectl` のコンテキスト・名前空間を素早く切り替えるツール
109
- - `helm` — Kubernetes アプリケーションのパッケージマネージャ
110
-
111
- 別のサンプルである `echo` アプリでは、`apps/echo/.tool-versions`(出典: 同リポジトリ)でより最小限の構成になっており、`kustomize` のみを固定しています。
112
-
113
- ```text
114
- kustomize 5.3.0
115
- ```
116
-
117
- このように、`.tool-versions` をプロジェクトごとに置くことで、「そのプロジェクトに必要なツールとバージョン」が明文化され、リポジトリをクローンした人は同じ環境を再現できます。
118
-
119
- ### asdf のインストールとプラグイン追加
120
-
121
- asdf は本体を導入したあと、ツールごとに「プラグイン」を追加して使います。一般的な利用の流れは次のとおりです。
122
-
123
- ```bash
124
- # プラグインを追加する(例: golang と kustomize)
125
- asdf plugin add golang
126
- asdf plugin add kustomize
127
-
128
- # .tool-versions に書かれたバージョンを一括インストールする
129
- asdf install
130
-
131
- # ツールのバージョンをグローバルに設定する(例)
132
- asdf global golang 1.21.6
133
- ```
134
-
135
- `asdf plugin add` で対象ツールのプラグインを登録し、`asdf install` で `.tool-versions` の内容に従ってバージョンをインストールします。`asdf global` は、カレントディレクトリに `.tool-versions` がない場面でのデフォルトバージョンを設定するためのコマンドです(プロジェクト単位で固定したい場合は `asdf local` を使い、`.tool-versions` を更新します)。
136
-
137
- ### `.tool-versions` から一括セットアップするスクリプト
138
-
139
- `taskapp` には、`.tool-versions` を読み取ってプラグイン追加とインストールをまとめて実行するセットアップスクリプトが用意されています。出典は `apps/taskapp/hack/install-tools.sh`(`getting-started-docker-kubernetes` リポジトリ)です。
140
-
141
- ```bash
142
- #!/usr/bin/env bash
143
-
144
- cat .tool-versions | while read line
145
- do
146
- echo $line | awk '{print $1}' | xargs -I{} asdf plugin add {}
147
- if [ $? -ne 0 ]; then
148
- continue
149
- fi
150
- done
151
-
152
- asdf install
153
- ```
154
-
155
- このスクリプトが行っていることは次のとおりです。
156
-
157
- 1. `.tool-versions` を 1 行ずつ読み込む。
158
- 2. 各行の先頭フィールド(ツール名)を `awk` で取り出し、`asdf plugin add` に渡してプラグインを追加する。
159
- 3. プラグイン追加に失敗した行(`$? -ne 0`)はスキップして次の行へ進む。
160
- 4. すべてのプラグイン追加が終わったら、最後に `asdf install` で `.tool-versions` に書かれたバージョンを一括インストールする。
161
-
162
- つまり、`.tool-versions` を更新してこのスクリプトを実行するだけで、必要なツール群を宣言どおりにそろえられます。バージョン管理の「単一の情報源(Single Source of Truth)」を `.tool-versions` に集約し、手作業のばらつきを排除する典型的なパターンです。
163
-
164
- > 注: `.tool-versions` の内容(ツール名・バージョン)は上記のとおり実ファイルからの引用ですが、`asdf plugin add` / `asdf install` / `asdf global` の使い方は asdf の一般的な利用手順です。
165
-
166
- ---
167
-
168
- ## A.3 kind
169
-
170
- ### kind は何を解決するか
171
-
172
- kind(Kubernetes IN Docker)は、その名のとおり Docker コンテナをノードに見立てて Kubernetes クラスタを立ち上げるツールです。本来 Kubernetes クラスタの構築には複数のマシンや仮想マシンが必要ですが、kind を使えば Docker さえあれば手元のマシン 1 台でクラスタを起動・破棄できます。
173
-
174
- これにより「Kubernetes を学習・検証したいが、本格的なクラスタを用意するのは大変」という問題を解決できます。起動も破棄も速く、CI 環境での Kubernetes テストにも広く使われています。
175
-
176
- ### クラスタの作成と削除
177
-
178
- 最も基本的な使い方は次のとおりです(一般的な手順)。
179
-
180
- ```bash
181
- # 既定設定でクラスタを作成する
182
- kind create cluster
183
-
184
- # 名前を付けてクラスタを作成する(例)
185
- kind create cluster --name dev
186
-
187
- # 作成済みクラスタの一覧を表示する
188
- kind get clusters
189
-
190
- # クラスタを削除する(名前を付けた場合は --name で指定)
191
- kind delete cluster --name dev
192
- ```
193
-
194
- `kind create cluster` を実行すると、kind が Docker コンテナとしてノードを起動し、`kubectl` の接続先(kubeconfig のコンテキスト)も自動的に設定します。作成後はそのまま `kubectl get nodes` などでクラスタを操作できます。
195
-
196
- ### kind-config.yaml によるマルチノード構成
197
-
198
- 既定では単一ノード(コントロールプレーン兼ワーカー)のクラスタになりますが、設定ファイルを渡すことで複数ノードのクラスタを構成できます。次は 1 つのコントロールプレーンと 2 つのワーカーノードを持つ構成の例です(一般的な例)。
199
-
200
- ```text
201
- # kind-config.yaml
202
- kind: Cluster
203
- apiVersion: kind.x-k8s.io/v1alpha4
204
- nodes:
205
- - role: control-plane
206
- - role: worker
207
- - role: worker
208
- ```
209
-
210
- この設定ファイルを指定してクラスタを作成します。
211
-
212
- ```bash
213
- # 設定ファイルを指定してマルチノードクラスタを作成する
214
- kind create cluster --name multi --config kind-config.yaml
215
- ```
216
-
217
- 複数ノード構成にすると、Pod のスケジューリングやノード間の挙動を、本番に近い形でローカル検証できます。Kubernetes の基本概念については本編の第 5 章も参照してください。
218
-
219
- > 注: 上記の kind-config.yaml と各コマンドは kind の一般的な使い方を示した例です。実際の `apiVersion` やノード設定は kind のバージョンによって異なる場合があります。
220
-
221
- ---
222
-
223
- ## A.4 Rancher Desktop
224
-
225
- ### Rancher Desktop は何を解決するか
226
-
227
- Rancher Desktop は、ローカルでコンテナと Kubernetes をまとめて動かせるデスクトップアプリケーションです。Docker Desktop の代替として利用でき、ライセンス面や軽量さを理由に選ばれることがあります。Windows・macOS・Linux に対応し、GUI からバージョンやランタイムを切り替えられます。
228
-
229
- 「Docker Desktop に依存せずに、ローカルでコンテナと Kubernetes の両方を手軽に扱いたい」というニーズを解決するのが Rancher Desktop です。
230
-
231
- ### コンテナランタイムの切り替え(containerd / dockerd)
232
-
233
- Rancher Desktop の特徴の 1 つは、コンテナランタイムを切り替えられる点です。設定画面から次の 2 種類を選択できます。
234
-
235
- - containerd — Kubernetes が標準的に利用するコンテナランタイム。Rancher Desktop では `nerdctl` という Docker 互換 CLI を通じてイメージのビルドやコンテナの実行を行います。
236
- - dockerd(Moby) — 従来の Docker と同じランタイム。`docker` コマンドや `docker-compose` をそのまま使いたい場合に選択します。
237
-
238
- 既存の `docker` コマンドや本編で扱った操作をそのまま使いたい場合は dockerd を、Kubernetes 寄りの運用に合わせたい場合は containerd を選ぶ、といった使い分けができます。
239
-
240
- ### 内蔵 Kubernetes(k3s)
241
-
242
- Rancher Desktop には軽量な Kubernetes ディストリビューションである k3s が内蔵されています。アプリの設定で Kubernetes を有効化すると、追加のインストールなしでローカル Kubernetes クラスタが起動し、`kubectl` で操作できるようになります。利用する Kubernetes のバージョンも GUI から選択できます。
243
-
244
- Windows では、Rancher Desktop は WSL2 を基盤として動作します(A.1 を参照)。そのため、WSL2 が有効になっていることが前提になります。kind がクラスタを都度作成・破棄するのに対し、Rancher Desktop の k3s は「常駐するローカルクラスタ」として使える点が異なります。用途に応じて、kind と Rancher Desktop を使い分けるとよいでしょう。
245
-
246
- > 注: ランタイムの切り替えや Kubernetes 有効化は Rancher Desktop の GUI から行う操作であり、画面構成はバージョンによって異なります。ここではコマンド出力の掲載は省略します。
247
-
248
- ---
249
-
250
- ## まとめ
251
-
252
- 本付録では、Docker / Kubernetes を学習・開発するための周辺ツールを 4 つ紹介しました。それぞれが解決する課題を整理すると次のとおりです。
253
-
254
- - WSL2 — Windows 上で Linux 環境を動かし、Linux 前提のツールチェーンや Docker をスムーズに利用できるようにする。
255
- - asdf — `.tool-versions` で言語・ツールのバージョンを宣言的に固定し、チーム全体で同じ環境を再現する。本リポジトリの `apps/taskapp/.tool-versions` と `apps/taskapp/hack/install-tools.sh` がその実例である。
256
- - kind — Docker さえあれば手元でマルチノードの Kubernetes クラスタを起動・破棄でき、学習や CI に適する。
257
- - Rancher Desktop — Docker Desktop の代替として、containerd/dockerd の切り替えと内蔵 k3s により、ローカルでコンテナと Kubernetes をまとめて扱える。
258
-
259
- これらのツールは排他的なものではなく、目的に応じて組み合わせて使えます。たとえば「Windows で WSL2 を基盤に Rancher Desktop を動かし、プロジェクトのツールは asdf で固定し、検証用クラスタは kind で立てる」といった構成も成り立ちます。自分の開発スタイルと、本編で学んだコンテナ・Kubernetes の知識に合わせて、必要なツールを選んでください。
260
-
261
- ### 関連リンク
262
-
263
- - [付録 B さまざまなコンテナオーケストレーション環境](appendix-b-orchestration-environments.md)
264
- - [第 1 章 コンテナと Docker の基礎](01-container-and-docker-basics.md)
265
- - [第 5 章 Kubernetes 入門](05-kubernetes-introduction.md)
1
+ ---
2
+ type: Article
3
+ title: "付録 A 開発ツールのセットアップ"
4
+ description: "本編で扱った Docker や Kubernetes を快適に学習・開発するには、いくつかの周辺ツールをそろえておくと便利です。"
5
+ tags: [article, getting-start-docker-kubernetes]
6
+ status: stable
7
+ generated: { by: human:kakimomokuri, at: 2026-06-26T00:29:42Z }
8
+ ---
9
+
10
+ # 付録 A 開発ツールのセットアップ
11
+
12
+ ## はじめに
13
+
14
+ 本編で扱った Docker や Kubernetes を快適に学習・開発するには、いくつかの周辺ツールをそろえておくと便利です。この付録では、書籍『Docker/Kubernetes 実践コンテナ開発入門(第 2 版)』の付録に沿って、次の 4 つの開発ツールのセットアップ方法を解説します。
15
+
16
+ - A.1 WSL2 — Windows 上で Linux 環境を動かす基盤
17
+ - A.2 asdf — 複数言語・ツールのバージョンを統一管理する
18
+ - A.3 kind — Docker の中に Kubernetes クラスタを立ち上げる
19
+ - A.4 Rancher Desktop — Docker Desktop の代替となるローカル開発環境
20
+
21
+ それぞれのツールは「何を解決するのか」という観点から整理します。ツールを導入する目的が明確であれば、自分の環境に合わせて取捨選択できるからです。
22
+
23
+ なお、本付録には 2 種類の情報が含まれます。1 つは本リポジトリ(`getting-started-docker-kubernetes`)に実在する設定ファイルやスクリプトを引用した内容で、もう 1 つは各ツールの一般的な利用手順です。前者には出典を明示し、後者は「一般的な手順」と区別して記載します。コマンドの実行結果は環境やバージョンによって変わるため、確実でないものは「例」と明記するか省略しています。
24
+
25
+ ---
26
+
27
+ ## A.1 WSL2
28
+
29
+ ### WSL2 は何を解決するか
30
+
31
+ Docker や Kubernetes のツールチェーンは Linux を前提に作られているものが多く、Windows でそのまま動かそうとすると差異に悩まされがちです。WSL2(Windows Subsystem for Linux 2)は、Windows 上で本物の Linux カーネルを動かす仕組みで、この「Windows と Linux の隔たり」を解決します。
32
+
33
+ WSL の初代(WSL1)が Linux システムコールを翻訳する方式だったのに対し、WSL2 は軽量な仮想マシン上で実際の Linux カーネルを動作させます。これにより、ファイルシステムの互換性やネットワーク、Docker のようなコンテナ技術との相性が大きく改善されました。
34
+
35
+ ### WSL2 の導入
36
+
37
+ 最近の Windows 10/11 では、管理者権限の PowerShell またはコマンドプロンプトから次のコマンド 1 つで WSL2 と既定のディストリビューション(通常は Ubuntu)をまとめて導入できます。
38
+
39
+ ```bash
40
+ wsl --install
41
+ ```
42
+
43
+ 実行後は再起動を求められることがあります。再起動後、初回起動時に Linux ユーザー名とパスワードの設定を求められます。
44
+
45
+ インストール済みの状態を確認したい場合は、次のコマンドでバージョンや稼働状態を確認できます。
46
+
47
+ ```bash
48
+ # WSL のバージョンと状態を確認する
49
+ wsl --status
50
+
51
+ # インストール済みディストリビューションを一覧表示する
52
+ wsl --list --verbose
53
+ ```
54
+
55
+ `wsl --list --verbose` の `VERSION` 列が `2` になっていれば WSL2 で動作しています。
56
+
57
+ ### ディストリビューションの導入
58
+
59
+ 既定以外のディストリビューションを使いたい場合は、導入可能な一覧を確認してから指定してインストールします。
60
+
61
+ ```bash
62
+ # インストール可能なディストリビューションの一覧を表示する
63
+ wsl --list --online
64
+
65
+ # ディストリビューションを指定してインストールする(例: Ubuntu-22.04)
66
+ wsl --install -d Ubuntu-22.04
67
+ ```
68
+
69
+ 既存のディストリビューションを WSL2 に変換したい場合は、バージョンを明示的に設定します。
70
+
71
+ ```bash
72
+ # 既定のバージョンを WSL2 にする
73
+ wsl --set-default-version 2
74
+
75
+ # 個別のディストリビューションを WSL2 に変換する(例)
76
+ wsl --set-version Ubuntu-22.04 2
77
+ ```
78
+
79
+ ### Docker との連携
80
+
81
+ WSL2 は、コンテナ開発環境との連携において中心的な役割を果たします。代表的な連携方法は次の 2 つです。
82
+
83
+ 1. Docker Desktop の WSL2 バックエンドを利用する方法。Docker Desktop の設定で WSL2 ベースのエンジンを有効化すると、Windows 側にインストールした Docker を WSL2 のディストリビューションから透過的に利用できます。
84
+ 2. WSL2 のディストリビューション内に直接 Docker Engine をインストールする方法。Docker Desktop を使わず、Linux と同じ手順で Docker をセットアップします。後述の Rancher Desktop も WSL2 を基盤として利用します。
85
+
86
+ 開発時のポイントとして、ソースコードは Windows 側(`/mnt/c/...`)ではなく WSL2 のファイルシステム上(例: `~/projects`)に置くと、ファイル I/O が高速になり、ファイル変更検知(ホットリロード)も安定します。
87
+
88
+ > 注: 上記コマンドは Windows 環境で一般的に有効なものです。利用可能なディストリビューションや既定の挙動は Windows のバージョン・更新状況によって異なります。
89
+
90
+ ---
91
+
92
+ ## A.2 asdf
93
+
94
+ ### asdf は何を解決するか
95
+
96
+ 開発を進めると、Go や Node.js といった言語ランタイムに加えて、`kustomize`、`helm`、`tilt` などの CLI ツールを多数使うことになります。これらは「プロジェクトごとに必要なバージョンが違う」「チームメンバー間でバージョンがそろわず、手元では動くのに他の環境で動かない」といった問題を起こしがちです。
97
+
98
+ asdf は、複数の言語・ツールのバージョンを 1 つの仕組みでまとめて管理するバージョンマネージャです。プロジェクトのルートに置いた `.tool-versions` ファイルでツールとバージョンを宣言しておくことで、チーム全体で同じバージョンを再現できます。
99
+
100
+ ### `.tool-versions` でバージョンを固定する
101
+
102
+ 本リポジトリのサンプルアプリ `taskapp` では、`apps/taskapp/.tool-versions`(出典: `getting-started-docker-kubernetes` リポジトリ)で次のようにツールとバージョンを固定しています。
103
+
104
+ ```text
105
+ golang 1.21.6
106
+ tilt 0.33.10
107
+ kustomize 5.3.0
108
+ kubectx 0.9.5
109
+ helm 3.13.3
110
+ ```
111
+
112
+ このファイルが示すとおり、`taskapp` の開発には Go 本体に加えて、Kubernetes 開発で頻出する次のツール群が必要です。
113
+
114
+ - `golang` — アプリケーション本体の実装に使う言語ランタイム
115
+ - `tilt` — Kubernetes 上での開発を高速化する開発ツール
116
+ - `kustomize` — Kubernetes マニフェストを環境差分込みで管理するツール
117
+ - `kubectx` — `kubectl` のコンテキスト・名前空間を素早く切り替えるツール
118
+ - `helm` — Kubernetes アプリケーションのパッケージマネージャ
119
+
120
+ 別のサンプルである `echo` アプリでは、`apps/echo/.tool-versions`(出典: 同リポジトリ)でより最小限の構成になっており、`kustomize` のみを固定しています。
121
+
122
+ ```text
123
+ kustomize 5.3.0
124
+ ```
125
+
126
+ このように、`.tool-versions` をプロジェクトごとに置くことで、「そのプロジェクトに必要なツールとバージョン」が明文化され、リポジトリをクローンした人は同じ環境を再現できます。
127
+
128
+ ### asdf のインストールとプラグイン追加
129
+
130
+ asdf は本体を導入したあと、ツールごとに「プラグイン」を追加して使います。一般的な利用の流れは次のとおりです。
131
+
132
+ ```bash
133
+ # プラグインを追加する(例: golang と kustomize)
134
+ asdf plugin add golang
135
+ asdf plugin add kustomize
136
+
137
+ # .tool-versions に書かれたバージョンを一括インストールする
138
+ asdf install
139
+
140
+ # ツールのバージョンをグローバルに設定する(例)
141
+ asdf global golang 1.21.6
142
+ ```
143
+
144
+ `asdf plugin add` で対象ツールのプラグインを登録し、`asdf install` で `.tool-versions` の内容に従ってバージョンをインストールします。`asdf global` は、カレントディレクトリに `.tool-versions` がない場面でのデフォルトバージョンを設定するためのコマンドです(プロジェクト単位で固定したい場合は `asdf local` を使い、`.tool-versions` を更新します)。
145
+
146
+ ### `.tool-versions` から一括セットアップするスクリプト
147
+
148
+ `taskapp` には、`.tool-versions` を読み取ってプラグイン追加とインストールをまとめて実行するセットアップスクリプトが用意されています。出典は `apps/taskapp/hack/install-tools.sh`(`getting-started-docker-kubernetes` リポジトリ)です。
149
+
150
+ ```bash
151
+ #!/usr/bin/env bash
152
+
153
+ cat .tool-versions | while read line
154
+ do
155
+ echo $line | awk '{print $1}' | xargs -I{} asdf plugin add {}
156
+ if [ $? -ne 0 ]; then
157
+ continue
158
+ fi
159
+ done
160
+
161
+ asdf install
162
+ ```
163
+
164
+ このスクリプトが行っていることは次のとおりです。
165
+
166
+ 1. `.tool-versions` を 1 行ずつ読み込む。
167
+ 2. 各行の先頭フィールド(ツール名)を `awk` で取り出し、`asdf plugin add` に渡してプラグインを追加する。
168
+ 3. プラグイン追加に失敗した行(`$? -ne 0`)はスキップして次の行へ進む。
169
+ 4. すべてのプラグイン追加が終わったら、最後に `asdf install` で `.tool-versions` に書かれたバージョンを一括インストールする。
170
+
171
+ つまり、`.tool-versions` を更新してこのスクリプトを実行するだけで、必要なツール群を宣言どおりにそろえられます。バージョン管理の「単一の情報源(Single Source of Truth)」を `.tool-versions` に集約し、手作業のばらつきを排除する典型的なパターンです。
172
+
173
+ > 注: `.tool-versions` の内容(ツール名・バージョン)は上記のとおり実ファイルからの引用ですが、`asdf plugin add` / `asdf install` / `asdf global` の使い方は asdf の一般的な利用手順です。
174
+
175
+ ---
176
+
177
+ ## A.3 kind
178
+
179
+ ### kind は何を解決するか
180
+
181
+ kind(Kubernetes IN Docker)は、その名のとおり Docker コンテナをノードに見立てて Kubernetes クラスタを立ち上げるツールです。本来 Kubernetes クラスタの構築には複数のマシンや仮想マシンが必要ですが、kind を使えば Docker さえあれば手元のマシン 1 台でクラスタを起動・破棄できます。
182
+
183
+ これにより「Kubernetes を学習・検証したいが、本格的なクラスタを用意するのは大変」という問題を解決できます。起動も破棄も速く、CI 環境での Kubernetes テストにも広く使われています。
184
+
185
+ ### クラスタの作成と削除
186
+
187
+ 最も基本的な使い方は次のとおりです(一般的な手順)。
188
+
189
+ ```bash
190
+ # 既定設定でクラスタを作成する
191
+ kind create cluster
192
+
193
+ # 名前を付けてクラスタを作成する(例)
194
+ kind create cluster --name dev
195
+
196
+ # 作成済みクラスタの一覧を表示する
197
+ kind get clusters
198
+
199
+ # クラスタを削除する(名前を付けた場合は --name で指定)
200
+ kind delete cluster --name dev
201
+ ```
202
+
203
+ `kind create cluster` を実行すると、kind が Docker コンテナとしてノードを起動し、`kubectl` の接続先(kubeconfig のコンテキスト)も自動的に設定します。作成後はそのまま `kubectl get nodes` などでクラスタを操作できます。
204
+
205
+ ### kind-config.yaml によるマルチノード構成
206
+
207
+ 既定では単一ノード(コントロールプレーン兼ワーカー)のクラスタになりますが、設定ファイルを渡すことで複数ノードのクラスタを構成できます。次は 1 つのコントロールプレーンと 2 つのワーカーノードを持つ構成の例です(一般的な例)。
208
+
209
+ ```text
210
+ # kind-config.yaml
211
+ kind: Cluster
212
+ apiVersion: kind.x-k8s.io/v1alpha4
213
+ nodes:
214
+ - role: control-plane
215
+ - role: worker
216
+ - role: worker
217
+ ```
218
+
219
+ この設定ファイルを指定してクラスタを作成します。
220
+
221
+ ```bash
222
+ # 設定ファイルを指定してマルチノードクラスタを作成する
223
+ kind create cluster --name multi --config kind-config.yaml
224
+ ```
225
+
226
+ 複数ノード構成にすると、Pod のスケジューリングやノード間の挙動を、本番に近い形でローカル検証できます。Kubernetes の基本概念については本編の第 5 章も参照してください。
227
+
228
+ > 注: 上記の kind-config.yaml と各コマンドは kind の一般的な使い方を示した例です。実際の `apiVersion` やノード設定は kind のバージョンによって異なる場合があります。
229
+
230
+ ---
231
+
232
+ ## A.4 Rancher Desktop
233
+
234
+ ### Rancher Desktop は何を解決するか
235
+
236
+ Rancher Desktop は、ローカルでコンテナと Kubernetes をまとめて動かせるデスクトップアプリケーションです。Docker Desktop の代替として利用でき、ライセンス面や軽量さを理由に選ばれることがあります。Windows・macOS・Linux に対応し、GUI からバージョンやランタイムを切り替えられます。
237
+
238
+ 「Docker Desktop に依存せずに、ローカルでコンテナと Kubernetes の両方を手軽に扱いたい」というニーズを解決するのが Rancher Desktop です。
239
+
240
+ ### コンテナランタイムの切り替え(containerd / dockerd)
241
+
242
+ Rancher Desktop の特徴の 1 つは、コンテナランタイムを切り替えられる点です。設定画面から次の 2 種類を選択できます。
243
+
244
+ - containerd — Kubernetes が標準的に利用するコンテナランタイム。Rancher Desktop では `nerdctl` という Docker 互換 CLI を通じてイメージのビルドやコンテナの実行を行います。
245
+ - dockerd(Moby) — 従来の Docker と同じランタイム。`docker` コマンドや `docker-compose` をそのまま使いたい場合に選択します。
246
+
247
+ 既存の `docker` コマンドや本編で扱った操作をそのまま使いたい場合は dockerd を、Kubernetes 寄りの運用に合わせたい場合は containerd を選ぶ、といった使い分けができます。
248
+
249
+ ### 内蔵 Kubernetes(k3s)
250
+
251
+ Rancher Desktop には軽量な Kubernetes ディストリビューションである k3s が内蔵されています。アプリの設定で Kubernetes を有効化すると、追加のインストールなしでローカル Kubernetes クラスタが起動し、`kubectl` で操作できるようになります。利用する Kubernetes のバージョンも GUI から選択できます。
252
+
253
+ Windows では、Rancher Desktop は WSL2 を基盤として動作します(A.1 を参照)。そのため、WSL2 が有効になっていることが前提になります。kind がクラスタを都度作成・破棄するのに対し、Rancher Desktop の k3s は「常駐するローカルクラスタ」として使える点が異なります。用途に応じて、kind と Rancher Desktop を使い分けるとよいでしょう。
254
+
255
+ > 注: ランタイムの切り替えや Kubernetes 有効化は Rancher Desktop の GUI から行う操作であり、画面構成はバージョンによって異なります。ここではコマンド出力の掲載は省略します。
256
+
257
+ ---
258
+
259
+ ## まとめ
260
+
261
+ 本付録では、Docker / Kubernetes を学習・開発するための周辺ツールを 4 つ紹介しました。それぞれが解決する課題を整理すると次のとおりです。
262
+
263
+ - WSL2 — Windows 上で Linux 環境を動かし、Linux 前提のツールチェーンや Docker をスムーズに利用できるようにする。
264
+ - asdf — `.tool-versions` で言語・ツールのバージョンを宣言的に固定し、チーム全体で同じ環境を再現する。本リポジトリの `apps/taskapp/.tool-versions` と `apps/taskapp/hack/install-tools.sh` がその実例である。
265
+ - kind — Docker さえあれば手元でマルチノードの Kubernetes クラスタを起動・破棄でき、学習や CI に適する。
266
+ - Rancher Desktop — Docker Desktop の代替として、containerd/dockerd の切り替えと内蔵 k3s により、ローカルでコンテナと Kubernetes をまとめて扱える。
267
+
268
+ これらのツールは排他的なものではなく、目的に応じて組み合わせて使えます。たとえば「Windows で WSL2 を基盤に Rancher Desktop を動かし、プロジェクトのツールは asdf で固定し、検証用クラスタは kind で立てる」といった構成も成り立ちます。自分の開発スタイルと、本編で学んだコンテナ・Kubernetes の知識に合わせて、必要なツールを選んでください。
269
+
270
+ ### 関連リンク
271
+
272
+ - [付録 B さまざまなコンテナオーケストレーション環境](appendix-b-orchestration-environments.md)
273
+ - [第 1 章 コンテナと Docker の基礎](01-container-and-docker-basics.md)
274
+ - [第 5 章 Kubernetes 入門](05-kubernetes-introduction.md)