@k2works/claude-code-booster 6.4.0 → 6.6.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 (297) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +61 -61
  3. package/bin/claude-code-booster +113 -113
  4. package/lib/assets/.claude/README.md +287 -287
  5. package/lib/assets/.claude/agents/xp-architect.md +250 -250
  6. package/lib/assets/.claude/agents/xp-executive.md +207 -207
  7. package/lib/assets/.claude/agents/xp-interaction-designer.md +239 -239
  8. package/lib/assets/.claude/agents/xp-product-manager.md +245 -245
  9. package/lib/assets/.claude/agents/xp-programmer.md +268 -268
  10. package/lib/assets/.claude/agents/xp-project-manager.md +229 -229
  11. package/lib/assets/.claude/agents/xp-technical-writer.md +224 -224
  12. package/lib/assets/.claude/agents/xp-tester.md +265 -265
  13. package/lib/assets/.claude/agents/xp-user-representative.md +204 -204
  14. package/lib/assets/.claude/scripts/generate-inception-deck.mjs +911 -911
  15. package/lib/assets/.claude/settings.json +11 -11
  16. package/lib/assets/.claude/skills/ai-agent-guidelines/SKILL.md +111 -111
  17. package/lib/assets/.claude/skills/analyzing-architecture/SKILL.md +83 -83
  18. package/lib/assets/.claude/skills/analyzing-business-architecture/SKILL.md +122 -122
  19. package/lib/assets/.claude/skills/analyzing-business-case/SKILL.md +148 -148
  20. package/lib/assets/.claude/skills/analyzing-business-strategy/SKILL.md +277 -277
  21. package/lib/assets/.claude/skills/analyzing-data-model/SKILL.md +77 -77
  22. package/lib/assets/.claude/skills/analyzing-domain-model/SKILL.md +117 -117
  23. package/lib/assets/.claude/skills/analyzing-inception-deck/SKILL.md +84 -84
  24. package/lib/assets/.claude/skills/analyzing-non-functional/SKILL.md +95 -95
  25. package/lib/assets/.claude/skills/analyzing-operation/SKILL.md +95 -95
  26. package/lib/assets/.claude/skills/analyzing-requirements/SKILL.md +91 -91
  27. package/lib/assets/.claude/skills/analyzing-review/SKILL.md +174 -174
  28. package/lib/assets/.claude/skills/analyzing-tech-stack/SKILL.md +101 -101
  29. package/lib/assets/.claude/skills/analyzing-test-strategy/SKILL.md +89 -89
  30. package/lib/assets/.claude/skills/analyzing-ui-design/SKILL.md +80 -80
  31. package/lib/assets/.claude/skills/analyzing-usecases/SKILL.md +72 -72
  32. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.json +20 -0
  33. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.md +13 -0
  34. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/eval_metadata.json +14 -0
  35. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/grading.json +39 -0
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/index.md +10 -0
  42. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/log.md +7 -0
  43. 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
  44. 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
  45. 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
  46. 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
  47. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/report.md +76 -0
  48. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/grading.json +39 -0
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/index.md +10 -0
  55. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/log.md +7 -0
  56. 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
  57. 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
  58. 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
  59. 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
  60. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/report.md +22 -0
  61. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/eval_metadata.json +13 -0
  62. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/grading.json +34 -0
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/index.md +10 -0
  69. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/log.md +7 -0
  70. 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
  71. 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
  72. 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
  73. 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
  74. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/report.md +61 -0
  75. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/grading.json +34 -0
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/index.md +10 -0
  82. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/log.md +7 -0
  83. 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
  84. 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
  85. 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
  86. 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
  87. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/report.md +18 -0
  88. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/eval_metadata.json +13 -0
  89. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/grading.json +34 -0
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/index.md +10 -0
  96. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/log.md +7 -0
  97. 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
  98. 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
  99. 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
  100. 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
  101. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/report.md +83 -0
  102. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/grading.json +34 -0
  103. 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
  104. 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
  105. 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
  106. 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
  107. 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
  108. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/index.md +10 -0
  109. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/log.md +7 -0
  110. 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
  111. 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
  112. 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
  113. 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
  114. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/report.md +15 -0
  115. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/review.html +1325 -0
  116. package/lib/assets/.claude/skills/closing-iteration/SKILL.md +176 -176
  117. package/lib/assets/.claude/skills/creating-adr/SKILL.md +117 -117
  118. package/lib/assets/.claude/skills/creating-development-strategy/SKILL.md +187 -151
  119. package/lib/assets/.claude/skills/creating-iteration-report/SKILL.md +210 -210
  120. package/lib/assets/.claude/skills/creating-journal/SKILL.md +140 -140
  121. package/lib/assets/.claude/skills/creating-manual/SKILL.md +199 -199
  122. package/lib/assets/.claude/skills/creating-release-report/SKILL.md +161 -161
  123. package/lib/assets/.claude/skills/creating-slides/SKILL.md +86 -86
  124. package/lib/assets/.claude/skills/creating-slides/agents/openai.yaml +4 -4
  125. package/lib/assets/.claude/skills/creating-slides/references/manga-css.md +45 -45
  126. package/lib/assets/.claude/skills/creating-slides/scripts/slide_tools.py +239 -239
  127. package/lib/assets/.claude/skills/developing-backend/SKILL.md +138 -100
  128. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +131 -93
  129. package/lib/assets/.claude/skills/developing-release/SKILL.md +120 -120
  130. package/lib/assets/.claude/skills/developing-review/SKILL.md +175 -175
  131. package/lib/assets/.claude/skills/developing-uiux-review/SKILL.md +207 -207
  132. package/lib/assets/.claude/skills/generating-bmc/SKILL.md +123 -123
  133. package/lib/assets/.claude/skills/generating-slides/SKILL.md +94 -94
  134. package/lib/assets/.claude/skills/git-commit/SKILL.md +81 -81
  135. package/lib/assets/.claude/skills/killing-processes/SKILL.md +44 -44
  136. package/lib/assets/.claude/skills/migrating-ai-dlc/evals/evals.json +59 -59
  137. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.json +20 -0
  138. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.md +13 -0
  139. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/eval_metadata.json +15 -0
  140. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/grading.json +44 -0
  141. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/adr/index.md +10 -0
  142. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/index.md +15 -0
  143. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/log.md +5 -0
  144. 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
  145. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference/index.md +6 -0
  146. 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
  147. 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
  148. 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
  149. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/report.md +85 -0
  150. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/grading.json +44 -0
  151. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/adr/index.md +8 -0
  152. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/index.md +11 -0
  153. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/log.md +7 -0
  154. 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
  155. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference/index.md +9 -0
  156. 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
  157. 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
  158. 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
  159. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/report.md +49 -0
  160. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/eval_metadata.json +13 -0
  161. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/grading.json +34 -0
  162. 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
  163. 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
  164. 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
  165. 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
  166. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/report.md +147 -0
  167. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/review.html +1325 -0
  168. package/lib/assets/.claude/skills/opening-iteration/SKILL.md +124 -124
  169. package/lib/assets/.claude/skills/operating-backup/SKILL.md +59 -59
  170. package/lib/assets/.claude/skills/operating-cicd/SKILL.md +54 -54
  171. package/lib/assets/.claude/skills/operating-deploy/SKILL.md +67 -67
  172. package/lib/assets/.claude/skills/operating-docs/SKILL.md +219 -219
  173. package/lib/assets/.claude/skills/operating-provision/SKILL.md +77 -77
  174. package/lib/assets/.claude/skills/operating-qt/SKILL.md +147 -147
  175. package/lib/assets/.claude/skills/operating-review/SKILL.md +171 -171
  176. package/lib/assets/.claude/skills/operating-script/SKILL.md +145 -145
  177. package/lib/assets/.claude/skills/operating-setup/SKILL.md +63 -63
  178. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +110 -110
  179. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +208 -172
  180. package/lib/assets/.claude/skills/orchestrating-operation/SKILL.md +161 -161
  181. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +149 -149
  182. package/lib/assets/.claude/skills/planning-releases/SKILL.md +121 -121
  183. package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +262 -262
  184. package/lib/assets/.claude/skills/syncing-github-project/SKILL.md +151 -151
  185. package/lib/assets/.claude/skills/tracking-progress/SKILL.md +91 -91
  186. package/lib/assets/.claude/skills/validating-design/SKILL.md +130 -130
  187. package/lib/assets/.claude/skills/validating-iteration-plan/SKILL.md +238 -238
  188. package/lib/assets/.claude/skills/validating-operating-setup/SKILL.md +118 -118
  189. package/lib/assets/.devcontainer/devcontainer.json +37 -37
  190. package/lib/assets/.env.example +32 -32
  191. package/lib/assets/.gitattributes +4 -4
  192. package/lib/assets/.github/workflows/docker-publish.yml +77 -77
  193. package/lib/assets/.github/workflows/mkdocs.yml +39 -39
  194. package/lib/assets/AGENTS.md +102 -102
  195. package/lib/assets/README.md +304 -304
  196. package/lib/assets/docker-compose.yml +33 -33
  197. package/lib/assets/docs/adr/index.md +10 -10
  198. package/lib/assets/docs/article/index.md +8 -6
  199. package/lib/assets/docs/assets/css/extra.css +29 -29
  200. package/lib/assets/docs/assets/js/extra.js +48 -48
  201. package/lib/assets/docs/assets/js/mathjax.js +27 -27
  202. package/lib/assets/docs/design/index.md +44 -44
  203. package/lib/assets/docs/development/index.md +39 -39
  204. package/lib/assets/docs/index.md +37 -37
  205. package/lib/assets/docs/log.md +28 -28
  206. package/lib/assets/docs/operation/index.md +41 -41
  207. package/lib/assets/docs/reference/BDD/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +766 -766
  208. 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 +555 -555
  209. 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 +351 -351
  210. 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 +592 -592
  211. package/lib/assets/docs/reference/LivingDocumentation/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +400 -0
  212. 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 -965
  213. 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 +652 -652
  214. 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 +476 -476
  215. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +460 -460
  216. 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 -177
  217. package/lib/assets/docs/reference/images/Ansoff.drawio.svg +3 -3
  218. package/lib/assets/docs/reference/images/BMC.drawio.svg +3 -3
  219. package/lib/assets/docs/reference/images/BrandBasicStrategy.drawio.svg +3 -3
  220. package/lib/assets/docs/reference/images/BrandCategorization.drawio.svg +3 -3
  221. package/lib/assets/docs/reference/images/BrandRecurutementStrategy.drawio.svg +3 -3
  222. package/lib/assets/docs/reference/images/BrandValue.drawio.svg +3 -3
  223. package/lib/assets/docs/reference/images/BusinessActivitiy.svg +3 -3
  224. package/lib/assets/docs/reference/images/HRM.drawio.svg +3 -3
  225. package/lib/assets/docs/reference/images/MarketingStructure.drawio.svg +3 -3
  226. package/lib/assets/docs/reference/images/OrganizationElemnts.svg +3 -3
  227. package/lib/assets/docs/reference/images/PPM.drawio.svg +3 -3
  228. package/lib/assets/docs/reference/images/PositioningMap.drawio.svg +3 -3
  229. package/lib/assets/docs/reference/images/ProductLayer.drawio.svg +3 -3
  230. package/lib/assets/docs/reference/images/ProductMix.drawio.svg +3 -3
  231. package/lib/assets/docs/reference/images/SWOT.drawio.svg +3 -3
  232. package/lib/assets/docs/reference/images/TargetMarket.drawio.svg +3 -3
  233. package/lib/assets/docs/reference/images/ThreeGenericStrategies.drawio.svg +3 -3
  234. package/lib/assets/docs/reference/images/VRIO.drawio.svg +3 -3
  235. package/lib/assets/docs/reference/images/ValueChain.drawio.svg +3 -3
  236. package/lib/assets/docs/reference/index.md +66 -62
  237. 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 +250 -250
  238. package/lib/assets/docs/reference//343/202/242/343/203/216/343/203/206/343/203/274/343/202/267/343/203/247/343/203/263/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +268 -0
  239. 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 +2226 -2226
  240. 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 +1888 -1888
  241. 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 +549 -549
  242. package/lib/assets/docs/reference//343/202/254/343/202/244/343/203/211/343/203/204/343/202/242/343/203/274/343/203/273/343/202/265/343/202/244/343/203/210/343/202/267/343/203/274/343/202/244/343/203/263/343/202/260/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +192 -0
  243. 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 +715 -715
  244. package/lib/assets/docs/reference//343/203/200/343/202/244/343/203/212/343/203/237/343/203/203/343/202/257/343/202/255/343/203/245/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +191 -0
  245. 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 +1323 -1323
  246. 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 +321 -321
  247. 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 +609 -609
  248. 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 +537 -537
  249. 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 +699 -699
  250. 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 +470 -470
  251. 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 +580 -580
  252. 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 +1376 -1376
  253. package/lib/assets/docs/reference//344/274/201/346/245/255/347/265/214/345/226/266/350/253/226.md +2647 -2647
  254. 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 +675 -675
  255. 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 +575 -575
  256. 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 +1258 -1258
  257. 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 +527 -527
  258. package/lib/assets/docs/reference//351/201/213/345/226/266/347/256/241/347/220/206.md +1492 -1492
  259. 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 +430 -430
  260. 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 +402 -402
  261. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +314 -314
  262. 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 +1246 -1246
  263. package/lib/assets/docs/requirements/index.md +17 -17
  264. package/lib/assets/docs/review/index.md +5 -5
  265. package/lib/assets/docs/strategy/index.md +17 -17
  266. package/lib/assets/docs/template/ADR.md +39 -39
  267. 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 +1375 -1375
  268. 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 +643 -643
  269. package/lib/assets/docs/template/README.md +59 -59
  270. package/lib/assets/docs/template/index.md +24 -24
  271. 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 +21 -21
  272. 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 +556 -556
  273. 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 +68 -68
  274. 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 +336 -336
  275. 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 +22 -22
  276. 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 +388 -388
  277. 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 +284 -284
  278. 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 -289
  279. package/lib/assets/docs/template//344/272/213/344/276/213/345/210/206/346/236/220.md +522 -522
  280. package/lib/assets/docs/template//344/274/201/346/245/255/345/210/206/346/236/220.md +582 -582
  281. 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 +69 -69
  282. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +669 -669
  283. package/lib/assets/docs/template//350/250/255/350/250/210.md +183 -183
  284. 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 +697 -697
  285. package/lib/assets/gulpfile.js +29 -29
  286. package/lib/assets/mkdocs.yml +151 -147
  287. package/lib/assets/ops/docker/sonarqube-local/docker-compose.yml +57 -57
  288. package/lib/assets/ops/scripts/journal.js +180 -180
  289. package/lib/assets/ops/scripts/mkdocs.js +82 -82
  290. package/lib/assets/ops/scripts/release.js +431 -431
  291. package/lib/assets/ops/scripts/sonar_local.js +726 -726
  292. package/lib/assets/ops/scripts/ssh.js +190 -190
  293. package/lib/assets/ops/scripts/vault.js +299 -299
  294. package/lib/assets/package-lock.json +1673 -1673
  295. package/lib/assets/package.json +45 -45
  296. package/lib/gulpfile.js +37 -37
  297. package/package.json +41 -41
@@ -1,527 +1,527 @@
1
- ---
2
- type: Reference
3
- title: "言語別開発ガイド"
4
- description: "本プロジェクトでは、Nix を使用して各プログラミング言語の開発環境を個別に提供しています。"
5
- tags: [reference]
6
- status: stable
7
- generated: { by: human:kakimomokuri, at: 2026-04-06T03:31:33Z }
8
- ---
9
-
10
- # 言語別開発ガイド
11
-
12
- 本プロジェクトでは、Nix を使用して各プログラミング言語の開発環境を個別に提供しています。各環境は `nix develop .#<言語名>` コマンドで起動でき、必要なツールや LSP、Vim 設定が自動的に適用されます。
13
-
14
- ## ソフトウェア開発の三種の神器
15
-
16
- 開発を効率的に進めるために、以下の3つの要素を重視します。
17
-
18
- ### 1. バージョン管理 (Git)
19
- 全ての変更は Git で管理し、意味のある単位でコミットします。
20
-
21
- - **コミットメッセージ規約(Angular形式)**:
22
-
23
- `type(scope): subject` の形式で記述します。
24
-
25
- - `feat`:
26
-
27
- 新機能
28
-
29
- - `fix`:
30
-
31
- バグ修正
32
-
33
- - `test`:
34
-
35
- テストの追加・修正
36
-
37
- - `refactor`:
38
-
39
- リファクタリング
40
-
41
- - `chore`:
42
-
43
- 雑事(設定変更等)
44
-
45
- ### 2. テスティング (TDD)
46
- テスト駆動開発 (Test-Driven Development) を実践します。
47
-
48
- 1. **Red**:
49
-
50
- 失敗するテストを書く
51
-
52
- 2. **Green**:
53
-
54
- テストを通す最小限の実装を書く
55
-
56
- 3. **Refactor**:
57
-
58
- コードをきれいに整理する
59
-
60
- ### 3. 自動化
61
- コマンド一つでビルド、テスト、静的解析を実行できるようにします。また、ファイル変更を監視して自動的にテストを実行する「継続的テスト」を活用します。
62
-
63
- ---
64
-
65
- ## 共通の開発フロー
66
-
67
- 1. **環境の起動**:
68
-
69
- `nix develop .#<language>`
70
-
71
- 2. **プロジェクトの初期化**:
72
-
73
- 各言語のパッケージマネージャで初期化
74
-
75
- 3. **Git初期化**:
76
-
77
- `git init` (まだの場合)
78
-
79
- 4. **TDDサイクル**:
80
-
81
- 継続的テストを回しながら実装
82
-
83
- 5. **静的解析**:
84
-
85
- リンターやフォーマッタでコード品質をチェック
86
-
87
- 6. **コミット**:
88
-
89
- `git add .` -> `git commit -m '...'`
90
-
91
- ---
92
-
93
- ## 言語別ガイド
94
-
95
- ### 1. Node.js / TypeScript
96
-
97
- - **起動コマンド**:
98
-
99
- `nix develop .#node`
100
-
101
- - **主要ツール**:
102
-
103
- Node.js (v22), npm, TypeScript, ESLint, Prettier
104
-
105
- - **初期化**:
106
-
107
-
108
- ```bash
109
- npm init -y
110
- ```
111
- - **TDDチュートリアル**:
112
- 1. **Red**: `hello.test.js` を作成。
113
- ```javascript
114
- import assert from 'node:assert';
115
- import { test } from 'node:test';
116
- import { hello } from './hello.js';
117
-
118
- test('hello returns greeting', () => {
119
- assert.strictEqual(hello(), 'Hello,World!');
120
- });
121
- ```
122
- 実行(失敗): `node --test hello.test.js`
123
-
124
- 2. **Green**: `hello.js` を実装。
125
- ```javascript
126
- export function hello() {
127
- return "Hello, World!";
128
- }
129
- ```
130
- 3. **Refactor**: 必要に応じてコードを整理。
131
- - **自動化**:
132
- - `node --watch --test hello.test.js` で変更を監視。
133
-
134
- ### 2. Python
135
- - **起動コマンド**: `nix develop .#python`
136
- - **主要ツール**: Python 3.12, uv, pytest, ruff (Linter/Formatter)
137
- - **初期化**:
138
- ```bash
139
- uv init
140
- uv add --dev pytest ruff
141
- ```
142
- - **TDDチュートリアル**:
143
- 1. **Red**: `test_hello.py` を作成。
144
- ```python
145
- from hello import hello
146
- def test_hello():
147
- assert hello() == "Hello, World!"
148
- ```
149
- 実行(失敗): `uv run pytest`
150
-
151
- 2. **Green**: `hello.py` を実装。
152
- ```python
153
- def hello():
154
- return "Hello, World!"
155
- ```
156
- 3. **Refactor**: `uv run ruff check .` や `uv run ruff format .` で品質を整える。
157
- - **自動化**:
158
- - `uv run pytest` を使用。
159
-
160
- ### 3. Go
161
- - **起動コマンド**: `nix develop .#go`
162
- - **主要ツール**: Go, gopls, golangci-lint, delve
163
- - **初期化**:
164
- ```bash
165
- go mod init example.com/hello
166
- ```
167
- - **TDDチュートリアル**:
168
- 1. **Red**: `hello_test.go` を作成。
169
- ```go
170
- package hello
171
- import "testing"
172
- func TestHello(t *testing.T) {
173
- want := "Hello, World!"
174
- if got := Hello(); got != want {
175
- t.Errorf("Hello() = %q, want %q", got, want)
176
- }
177
- }
178
- ```
179
- 実行(失敗): `go test`
180
-
181
- 2. **Green**: `hello.go` を作成。
182
- ```go
183
- package hello
184
- func Hello() string { return "Hello, World!" }
185
- ```
186
- 3. **Refactor**: `go fmt ./...` や `golangci-lint run` を実行。
187
-
188
- ### 4. Rust
189
- - **起動コマンド**: `nix develop .#rust`
190
- - **主要ツール**: cargo, rust-analyzer, clippy, rustfmt
191
- - **初期化**:
192
- ```bash
193
- cargo init
194
- ```
195
- - **TDDチュートリアル**:
196
- 1. **Red**: `src/lib.rs` にテストを記述。
197
- ```rust
198
- pub fn hello() -> String { todo!() }
199
- #[cfg(test)]
200
- mod tests {
201
- use super::*;
202
- #[test]
203
- fn it_works() {
204
- assert_eq!(hello(), "Hello, World!");
205
- }
206
- }
207
- ```
208
- 実行(失敗): `cargo test`
209
-
210
- 2. **Green**: `hello` 関数を実装。
211
- ```rust
212
- pub fn hello() -> String { "Hello, World!".to_string() }
213
- ```
214
- 3. **Refactor**: `cargo clippy` で警告を確認し、`cargo fmt` で整形。
215
- - **自動化**:
216
- - `cargo watch -x test` で変更監視(要インストール)。
217
-
218
- ### 5. Java
219
- - **起動コマンド**: `nix develop .#java`
220
- - **主要ツール**: JDK, Gradle, Maven, Checkstyle, PMD
221
- - **初期化**:
222
- ```bash
223
- gradle init --type java-library --test-framework junit-jupiter
224
- ```
225
- - **TDDチュートリアル**:
226
- 1. **Red**: `src/test/java/LibraryTest.java` にテスト追加.
227
- ```java
228
- @Test
229
- void testGreeting() {
230
- Library classUnderTest = new Library();
231
- assertEquals("Hello, World!", classUnderTest.getGreeting());
232
- }
233
- ```
234
- 実行(失敗): `./gradlew test`
235
-
236
- 2. **Green**: `src/main/java/Library.java` を修正.
237
- ```java
238
- public String getGreeting() { return "Hello, World!"; }
239
- ```
240
- 3. **Refactor**: `./gradlew qualityCheck` (Checkstyle/PMD) を実行.
241
- - **自動化**:
242
- - `./gradlew test --continuous` で継続的テスト.
243
- - **詳細**: [Javaアプリケーション環境構築ガイド](Javaアプリケーション環境構築ガイド.md) を参照.
244
-
245
- ### 6. .NET (C#)
246
- - **起動コマンド**: `nix develop .#dotnet`
247
- - **主要ツール**: .NET SDK, OmniSharp
248
- - **初期化**:
249
- ```bash
250
- # ソリューションの作成
251
- dotnet new sln --name Hello
252
- # ライブラリプロジェクトの作成
253
- dotnet new classlib -o Hello
254
- # テストプロジェクトの作成
255
- dotnet new xunit -o Hello.Tests
256
- # プロジェクトをソリューションに追加
257
- dotnet sln Hello.sln add Hello/Hello.csproj Hello.Tests/Hello.Tests.csproj
258
- # テストプロジェクトからライブラリプロジェクトへの参照を追加
259
- dotnet add Hello.Tests/Hello.Tests.csproj reference Hello/Hello.csproj
260
- ```
261
- - **TDDチュートリアル**:
262
- 1. **Red**: `Hello.Tests/UnitTest1.cs` を修正。
263
- ```csharp
264
- namespace Hello.Tests;
265
- using Xunit;
266
-
267
- public class UnitTest1
268
- {
269
- [Fact]
270
- public void Test1()
271
- {
272
- Assert.Equal("Hello, World!", Hello.Lib.Greet());
273
- }
274
- }
275
- ```
276
- 実行(失敗): `dotnet test`
277
-
278
- 2. **Green**: `Hello/Lib.cs` を実装。
279
- ```csharp
280
- namespace Hello;
281
-
282
- public static class Lib
283
- {
284
- public static string Greet() => "Hello, World!";
285
- }
286
- ```
287
- 3. **Refactor**: `dotnet format` でコードを整形。
288
- - **自動化**:
289
- - `dotnet watch test` で変更を監視し自動テスト実行。
290
-
291
- ### 7. Ruby
292
- - **起動コマンド**: `nix develop .#ruby`
293
- - **主要ツール**: Ruby, Bundler, Minitest, RuboCop
294
- - **初期化**:
295
- ```bash
296
- bundle init
297
- echo 'gem "minitest"' >> Gemfile
298
- bundle install
299
- ```
300
- - **TDDチュートリアル**:
301
- 1. **Red**: `test_hello.rb` を作成.
302
- ```ruby
303
- require 'minitest/autorun'
304
- require_relative 'hello'
305
- class TestHello < Minitest::Test
306
- def test_hello
307
- assert_equal "Hello, World!", hello()
308
- end
309
- end
310
- ```
311
- 実行(失敗): `ruby test_hello.rb`
312
-
313
- 2. **Green**: `hello.rb` を実装.
314
- ```ruby
315
- def hello; "Hello, World!"; end
316
- ```
317
- 3. **Refactor**: `rubocop -a` でコードスタイルを自動修正.
318
-
319
- ### 8. PHP
320
- - **起動コマンド**: `nix develop .#php`
321
- - **主要ツール**: PHP, Composer, PHPUnit, PHP_CodeSniffer
322
- - **初期化**:
323
- ```bash
324
- composer init -n
325
- composer require --dev phpunit/phpunit
326
- ```
327
- - **TDDチュートリアル**:
328
- 1. **Red**: `tests/HelloTest.php` を作成.
329
- ```php
330
- use PHPUnit\Framework\TestCase;
331
- class HelloTest extends TestCase {
332
- public function testHello() {
333
- $this->assertEquals("Hello, World!", hello());
334
- }
335
- }
336
- ```
337
- 実行(失敗): `./vendor/bin/phpunit tests`
338
-
339
- 2. **Green**: `src/hello.php` を実装.
340
- ```php
341
- function hello() { return "Hello, World!"; }
342
- ```
343
- 3. **Refactor**: `./vendor/bin/phpcs src` で規約チェック.
344
-
345
- ### 9. Haskell
346
- - **起動コマンド**: `nix develop .#haskell`
347
- - **主要ツール**: GHC, Stack, Cabal, HLS, hlint, fourmolu
348
- - **初期化**:
349
- ```bash
350
- stack new hello
351
- cd hello
352
- # package.yaml の tests.hello-test.dependencies に hspec を追加
353
- stack test
354
- ```
355
- - **TDDチュートリアル**:
356
- 1. **Red**: `test/Spec.hs` を編集.
357
- ```haskell
358
- module Main (main) where
359
- import Test.Hspec
360
- import Lib (hello)
361
-
362
- main :: IO ()
363
- main = hspec $ do
364
- describe "hello" $ do
365
- it "returns greeting" $ do
366
- hello `shouldBe` "Hello, World!"
367
- ```
368
- 実行(失敗): `stack test`
369
-
370
- 2. **Green**: `src/Lib.hs` を実装.
371
- ```haskell
372
- module Lib (hello) where
373
- hello :: String
374
- hello = "Hello, World!"
375
- ```
376
- 3. **Refactor**:
377
-
378
- - `hlint .` でコードの改善案をチェック.
379
- - `fourmolu -i src/**/*.hs` でコードを整形.
380
- - **自動化**:
381
- - `stack test --file-watch` で変更を監視し自動テスト実行.
382
-
383
- ### 10. Clojure
384
- - **起動コマンド**: `nix develop .#clojure`
385
- - **主要ツール**: Clojure CLI, Leiningen, Babashka, Clojure LSP, clj-kondo (Linter), zprint (Formatter)
386
- - **初期化**:
387
- ```bash
388
- # Clojure CLI を使用する場合
389
- clj -T:build new :name my-app
390
- # または Leiningen を使用する場合
391
- lein new app my-app
392
- ```
393
- - **TDDチュートリアル**:
394
- 1. **Red**: `test/my_app/core_test.clj` を作成。
395
- ```clojure
396
- (ns my-app.core-test
397
- (:require [clojure.test :refer :all]
398
- [my-app.core :refer :all]))
399
-
400
- (deftest hello-test
401
- (testing "Greeting test"
402
- (is (= "Hello, World!" (hello)))))
403
- ```
404
- 実行(失敗): `clj -X:test` または `lein test`
405
-
406
- 2. **Green**: `src/my_app/core.clj` を実装。
407
- ```clojure
408
- (ns my-app.core)
409
-
410
- (defn hello []
411
- "Hello, World!")
412
- ```
413
- 3. **Refactor**:
414
-
415
- - `clj-kondo --lint src` で静的解析を実行。
416
- - `bb -cp $(clojure -Spath) -m zprint.main src` (zprintが利用可能な場合) でコード整形。
417
- - **自動化**:
418
- - `lein test-refresh` で変更を監視し自動テスト実行(要プラグイン設定)。
419
- - Babashka (`bb`) を使用して軽量なタスクランナーを構築可能。
420
-
421
- ### 11. Elixir
422
- - **起動コマンド**: `nix develop .#elixir`
423
- - **主要ツール**: Elixir, Erlang, Mix, Elixir LS
424
- - **初期化**:
425
- ```bash
426
- mix new my_app
427
- cd my_app
428
- ```
429
- - **TDDチュートリアル**:
430
- 1. **Red**: `test/my_app_test.exs` にテストを記述。
431
- ```elixir
432
- defmodule MyAppTest do
433
- use ExUnit.Case
434
- test "greets the world" do
435
- assert MyApp.hello() == "Hello, World!"
436
- end
437
- end
438
- ```
439
- 実行(失敗): `mix test`
440
-
441
- 2. **Green**: `lib/my_app.ex` を実装。
442
- ```elixir
443
- defmodule MyApp do
444
- def hello do
445
- "Hello, World!"
446
- end
447
- end
448
- ```
449
- 3. **Refactor**: `mix format` でコードを整形。
450
- - **自動化**:
451
- - `mix test --watch` (要 `mix_test_watch` パッケージ) で変更を監視。
452
-
453
- ### 12. Scala
454
- - **起動コマンド**: `nix develop .#scala`
455
- - **主要ツール**: Scala 3, sbt, Metals, Scala CLI
456
- - **初期化**:
457
- ```bash
458
- # Scala CLI を使用してプロジェクト構造を作成する場合
459
- mkdir my-app && cd my-app
460
- # または sbt を使用する場合
461
- sbt new scala/scala-seed.g8
462
- ```
463
- - **TDDチュートリアル**:
464
- 1. **Red**: `Hello.test.scala` を作成(Scala CLI + MUnit の例).
465
- ```scala
466
- //> using lib "org.scalameta::munit::0.7.29"
467
- class HelloTest extends munit.FunSuite {
468
- test("hello returns greeting") {
469
- assert(Hello.greeting == "Hello, World!")
470
- }
471
- }
472
- ```
473
- 実行(失敗): `scala-cli test .`
474
-
475
- 2. **Green**: `Hello.scala` を実装.
476
- ```scala
477
- object Hello {
478
- def greeting: String = "Hello, World!"
479
- }
480
- ```
481
- 3. **Refactor**: `scala-cli fmt .` でコードを整形.
482
- - **自動化**:
483
- - `scala-cli test . --watch` で変更を監視し自動テスト実行.
484
-
485
- ### 13. F#
486
- - **起動コマンド**: `nix develop .#dotnet`
487
- - **主要ツール**: .NET SDK, Ionide (LSP), Fantomas (Formatter)
488
- - **初期化**:
489
- ```bash
490
- # ソリューションの作成
491
- dotnet new sln --name Hello
492
- # ライブラリプロジェクトの作成
493
- dotnet new classlib -lang "F#" -o Hello
494
- # テストプロジェクトの作成
495
- dotnet new xunit -lang "F#" -o Hello.Tests
496
- # プロジェクトをソリューションに追加
497
- dotnet sln Hello.sln add Hello/Hello.fsproj Hello.Tests/Hello.Tests.fsproj
498
- # テストプロジェクトからライブラリプロジェクトへの参照を追加
499
- dotnet add Hello.Tests/Hello.Tests.fsproj reference Hello/Hello.fsproj
500
- ```
501
- - **TDDチュートリアル**:
502
- 1. **Red**: `Hello.Tests/Tests.fs` を修正。
503
- ```fsharp
504
- namespace Hello.Tests
505
- open Xunit
506
- module Tests =
507
- [<Fact>]
508
- let ``Hello returns greeting`` () =
509
- Assert.Equal("Hello, World!", Hello.Lib.greet())
510
- ```
511
- 実行(失敗): `dotnet test`
512
-
513
- 2. **Green**: `Hello/Library.fs` を実装。
514
- ```fsharp
515
- namespace Hello
516
- module Lib =
517
- let greet () = "Hello, World!"
518
- ```
519
- 3. **Refactor**: `dotnet fantomas .` (インストール済みの場合) でコードを整形。
520
- - **自動化**:
521
- - `dotnet watch test` で変更を監視し自動テスト実行。
522
-
523
- ---
524
-
525
- ## 環境の切り替え
526
- 別の環境に切り替える場合は、現在のシェルを終了 (`exit`) してから、新しい環境の起動コマンドを実行してください。
527
- 複数の環境を同時に使用したい場合は、新しいターミナルタブを開くか、tmux 等のターミナルマルチプレクサの利用を推奨します。
1
+ ---
2
+ type: Reference
3
+ title: "言語別開発ガイド"
4
+ description: "本プロジェクトでは、Nix を使用して各プログラミング言語の開発環境を個別に提供しています。"
5
+ tags: [reference]
6
+ status: stable
7
+ generated: { by: human:kakimomokuri, at: 2026-04-06T03:31:33Z }
8
+ ---
9
+
10
+ # 言語別開発ガイド
11
+
12
+ 本プロジェクトでは、Nix を使用して各プログラミング言語の開発環境を個別に提供しています。各環境は `nix develop .#<言語名>` コマンドで起動でき、必要なツールや LSP、Vim 設定が自動的に適用されます。
13
+
14
+ ## ソフトウェア開発の三種の神器
15
+
16
+ 開発を効率的に進めるために、以下の3つの要素を重視します。
17
+
18
+ ### 1. バージョン管理 (Git)
19
+ 全ての変更は Git で管理し、意味のある単位でコミットします。
20
+
21
+ - **コミットメッセージ規約(Angular形式)**:
22
+
23
+ `type(scope): subject` の形式で記述します。
24
+
25
+ - `feat`:
26
+
27
+ 新機能
28
+
29
+ - `fix`:
30
+
31
+ バグ修正
32
+
33
+ - `test`:
34
+
35
+ テストの追加・修正
36
+
37
+ - `refactor`:
38
+
39
+ リファクタリング
40
+
41
+ - `chore`:
42
+
43
+ 雑事(設定変更等)
44
+
45
+ ### 2. テスティング (TDD)
46
+ テスト駆動開発 (Test-Driven Development) を実践します。
47
+
48
+ 1. **Red**:
49
+
50
+ 失敗するテストを書く
51
+
52
+ 2. **Green**:
53
+
54
+ テストを通す最小限の実装を書く
55
+
56
+ 3. **Refactor**:
57
+
58
+ コードをきれいに整理する
59
+
60
+ ### 3. 自動化
61
+ コマンド一つでビルド、テスト、静的解析を実行できるようにします。また、ファイル変更を監視して自動的にテストを実行する「継続的テスト」を活用します。
62
+
63
+ ---
64
+
65
+ ## 共通の開発フロー
66
+
67
+ 1. **環境の起動**:
68
+
69
+ `nix develop .#<language>`
70
+
71
+ 2. **プロジェクトの初期化**:
72
+
73
+ 各言語のパッケージマネージャで初期化
74
+
75
+ 3. **Git初期化**:
76
+
77
+ `git init` (まだの場合)
78
+
79
+ 4. **TDDサイクル**:
80
+
81
+ 継続的テストを回しながら実装
82
+
83
+ 5. **静的解析**:
84
+
85
+ リンターやフォーマッタでコード品質をチェック
86
+
87
+ 6. **コミット**:
88
+
89
+ `git add .` -> `git commit -m '...'`
90
+
91
+ ---
92
+
93
+ ## 言語別ガイド
94
+
95
+ ### 1. Node.js / TypeScript
96
+
97
+ - **起動コマンド**:
98
+
99
+ `nix develop .#node`
100
+
101
+ - **主要ツール**:
102
+
103
+ Node.js (v22), npm, TypeScript, ESLint, Prettier
104
+
105
+ - **初期化**:
106
+
107
+
108
+ ```bash
109
+ npm init -y
110
+ ```
111
+ - **TDDチュートリアル**:
112
+ 1. **Red**: `hello.test.js` を作成。
113
+ ```javascript
114
+ import assert from 'node:assert';
115
+ import { test } from 'node:test';
116
+ import { hello } from './hello.js';
117
+
118
+ test('hello returns greeting', () => {
119
+ assert.strictEqual(hello(), 'Hello,World!');
120
+ });
121
+ ```
122
+ 実行(失敗): `node --test hello.test.js`
123
+
124
+ 2. **Green**: `hello.js` を実装。
125
+ ```javascript
126
+ export function hello() {
127
+ return "Hello, World!";
128
+ }
129
+ ```
130
+ 3. **Refactor**: 必要に応じてコードを整理。
131
+ - **自動化**:
132
+ - `node --watch --test hello.test.js` で変更を監視。
133
+
134
+ ### 2. Python
135
+ - **起動コマンド**: `nix develop .#python`
136
+ - **主要ツール**: Python 3.12, uv, pytest, ruff (Linter/Formatter)
137
+ - **初期化**:
138
+ ```bash
139
+ uv init
140
+ uv add --dev pytest ruff
141
+ ```
142
+ - **TDDチュートリアル**:
143
+ 1. **Red**: `test_hello.py` を作成。
144
+ ```python
145
+ from hello import hello
146
+ def test_hello():
147
+ assert hello() == "Hello, World!"
148
+ ```
149
+ 実行(失敗): `uv run pytest`
150
+
151
+ 2. **Green**: `hello.py` を実装。
152
+ ```python
153
+ def hello():
154
+ return "Hello, World!"
155
+ ```
156
+ 3. **Refactor**: `uv run ruff check .` や `uv run ruff format .` で品質を整える。
157
+ - **自動化**:
158
+ - `uv run pytest` を使用。
159
+
160
+ ### 3. Go
161
+ - **起動コマンド**: `nix develop .#go`
162
+ - **主要ツール**: Go, gopls, golangci-lint, delve
163
+ - **初期化**:
164
+ ```bash
165
+ go mod init example.com/hello
166
+ ```
167
+ - **TDDチュートリアル**:
168
+ 1. **Red**: `hello_test.go` を作成。
169
+ ```go
170
+ package hello
171
+ import "testing"
172
+ func TestHello(t *testing.T) {
173
+ want := "Hello, World!"
174
+ if got := Hello(); got != want {
175
+ t.Errorf("Hello() = %q, want %q", got, want)
176
+ }
177
+ }
178
+ ```
179
+ 実行(失敗): `go test`
180
+
181
+ 2. **Green**: `hello.go` を作成。
182
+ ```go
183
+ package hello
184
+ func Hello() string { return "Hello, World!" }
185
+ ```
186
+ 3. **Refactor**: `go fmt ./...` や `golangci-lint run` を実行。
187
+
188
+ ### 4. Rust
189
+ - **起動コマンド**: `nix develop .#rust`
190
+ - **主要ツール**: cargo, rust-analyzer, clippy, rustfmt
191
+ - **初期化**:
192
+ ```bash
193
+ cargo init
194
+ ```
195
+ - **TDDチュートリアル**:
196
+ 1. **Red**: `src/lib.rs` にテストを記述。
197
+ ```rust
198
+ pub fn hello() -> String { todo!() }
199
+ #[cfg(test)]
200
+ mod tests {
201
+ use super::*;
202
+ #[test]
203
+ fn it_works() {
204
+ assert_eq!(hello(), "Hello, World!");
205
+ }
206
+ }
207
+ ```
208
+ 実行(失敗): `cargo test`
209
+
210
+ 2. **Green**: `hello` 関数を実装。
211
+ ```rust
212
+ pub fn hello() -> String { "Hello, World!".to_string() }
213
+ ```
214
+ 3. **Refactor**: `cargo clippy` で警告を確認し、`cargo fmt` で整形。
215
+ - **自動化**:
216
+ - `cargo watch -x test` で変更監視(要インストール)。
217
+
218
+ ### 5. Java
219
+ - **起動コマンド**: `nix develop .#java`
220
+ - **主要ツール**: JDK, Gradle, Maven, Checkstyle, PMD
221
+ - **初期化**:
222
+ ```bash
223
+ gradle init --type java-library --test-framework junit-jupiter
224
+ ```
225
+ - **TDDチュートリアル**:
226
+ 1. **Red**: `src/test/java/LibraryTest.java` にテスト追加.
227
+ ```java
228
+ @Test
229
+ void testGreeting() {
230
+ Library classUnderTest = new Library();
231
+ assertEquals("Hello, World!", classUnderTest.getGreeting());
232
+ }
233
+ ```
234
+ 実行(失敗): `./gradlew test`
235
+
236
+ 2. **Green**: `src/main/java/Library.java` を修正.
237
+ ```java
238
+ public String getGreeting() { return "Hello, World!"; }
239
+ ```
240
+ 3. **Refactor**: `./gradlew qualityCheck` (Checkstyle/PMD) を実行.
241
+ - **自動化**:
242
+ - `./gradlew test --continuous` で継続的テスト.
243
+ - **詳細**: [Javaアプリケーション環境構築ガイド](Javaアプリケーション環境構築ガイド.md) を参照.
244
+
245
+ ### 6. .NET (C#)
246
+ - **起動コマンド**: `nix develop .#dotnet`
247
+ - **主要ツール**: .NET SDK, OmniSharp
248
+ - **初期化**:
249
+ ```bash
250
+ # ソリューションの作成
251
+ dotnet new sln --name Hello
252
+ # ライブラリプロジェクトの作成
253
+ dotnet new classlib -o Hello
254
+ # テストプロジェクトの作成
255
+ dotnet new xunit -o Hello.Tests
256
+ # プロジェクトをソリューションに追加
257
+ dotnet sln Hello.sln add Hello/Hello.csproj Hello.Tests/Hello.Tests.csproj
258
+ # テストプロジェクトからライブラリプロジェクトへの参照を追加
259
+ dotnet add Hello.Tests/Hello.Tests.csproj reference Hello/Hello.csproj
260
+ ```
261
+ - **TDDチュートリアル**:
262
+ 1. **Red**: `Hello.Tests/UnitTest1.cs` を修正。
263
+ ```csharp
264
+ namespace Hello.Tests;
265
+ using Xunit;
266
+
267
+ public class UnitTest1
268
+ {
269
+ [Fact]
270
+ public void Test1()
271
+ {
272
+ Assert.Equal("Hello, World!", Hello.Lib.Greet());
273
+ }
274
+ }
275
+ ```
276
+ 実行(失敗): `dotnet test`
277
+
278
+ 2. **Green**: `Hello/Lib.cs` を実装。
279
+ ```csharp
280
+ namespace Hello;
281
+
282
+ public static class Lib
283
+ {
284
+ public static string Greet() => "Hello, World!";
285
+ }
286
+ ```
287
+ 3. **Refactor**: `dotnet format` でコードを整形。
288
+ - **自動化**:
289
+ - `dotnet watch test` で変更を監視し自動テスト実行。
290
+
291
+ ### 7. Ruby
292
+ - **起動コマンド**: `nix develop .#ruby`
293
+ - **主要ツール**: Ruby, Bundler, Minitest, RuboCop
294
+ - **初期化**:
295
+ ```bash
296
+ bundle init
297
+ echo 'gem "minitest"' >> Gemfile
298
+ bundle install
299
+ ```
300
+ - **TDDチュートリアル**:
301
+ 1. **Red**: `test_hello.rb` を作成.
302
+ ```ruby
303
+ require 'minitest/autorun'
304
+ require_relative 'hello'
305
+ class TestHello < Minitest::Test
306
+ def test_hello
307
+ assert_equal "Hello, World!", hello()
308
+ end
309
+ end
310
+ ```
311
+ 実行(失敗): `ruby test_hello.rb`
312
+
313
+ 2. **Green**: `hello.rb` を実装.
314
+ ```ruby
315
+ def hello; "Hello, World!"; end
316
+ ```
317
+ 3. **Refactor**: `rubocop -a` でコードスタイルを自動修正.
318
+
319
+ ### 8. PHP
320
+ - **起動コマンド**: `nix develop .#php`
321
+ - **主要ツール**: PHP, Composer, PHPUnit, PHP_CodeSniffer
322
+ - **初期化**:
323
+ ```bash
324
+ composer init -n
325
+ composer require --dev phpunit/phpunit
326
+ ```
327
+ - **TDDチュートリアル**:
328
+ 1. **Red**: `tests/HelloTest.php` を作成.
329
+ ```php
330
+ use PHPUnit\Framework\TestCase;
331
+ class HelloTest extends TestCase {
332
+ public function testHello() {
333
+ $this->assertEquals("Hello, World!", hello());
334
+ }
335
+ }
336
+ ```
337
+ 実行(失敗): `./vendor/bin/phpunit tests`
338
+
339
+ 2. **Green**: `src/hello.php` を実装.
340
+ ```php
341
+ function hello() { return "Hello, World!"; }
342
+ ```
343
+ 3. **Refactor**: `./vendor/bin/phpcs src` で規約チェック.
344
+
345
+ ### 9. Haskell
346
+ - **起動コマンド**: `nix develop .#haskell`
347
+ - **主要ツール**: GHC, Stack, Cabal, HLS, hlint, fourmolu
348
+ - **初期化**:
349
+ ```bash
350
+ stack new hello
351
+ cd hello
352
+ # package.yaml の tests.hello-test.dependencies に hspec を追加
353
+ stack test
354
+ ```
355
+ - **TDDチュートリアル**:
356
+ 1. **Red**: `test/Spec.hs` を編集.
357
+ ```haskell
358
+ module Main (main) where
359
+ import Test.Hspec
360
+ import Lib (hello)
361
+
362
+ main :: IO ()
363
+ main = hspec $ do
364
+ describe "hello" $ do
365
+ it "returns greeting" $ do
366
+ hello `shouldBe` "Hello, World!"
367
+ ```
368
+ 実行(失敗): `stack test`
369
+
370
+ 2. **Green**: `src/Lib.hs` を実装.
371
+ ```haskell
372
+ module Lib (hello) where
373
+ hello :: String
374
+ hello = "Hello, World!"
375
+ ```
376
+ 3. **Refactor**:
377
+
378
+ - `hlint .` でコードの改善案をチェック.
379
+ - `fourmolu -i src/**/*.hs` でコードを整形.
380
+ - **自動化**:
381
+ - `stack test --file-watch` で変更を監視し自動テスト実行.
382
+
383
+ ### 10. Clojure
384
+ - **起動コマンド**: `nix develop .#clojure`
385
+ - **主要ツール**: Clojure CLI, Leiningen, Babashka, Clojure LSP, clj-kondo (Linter), zprint (Formatter)
386
+ - **初期化**:
387
+ ```bash
388
+ # Clojure CLI を使用する場合
389
+ clj -T:build new :name my-app
390
+ # または Leiningen を使用する場合
391
+ lein new app my-app
392
+ ```
393
+ - **TDDチュートリアル**:
394
+ 1. **Red**: `test/my_app/core_test.clj` を作成。
395
+ ```clojure
396
+ (ns my-app.core-test
397
+ (:require [clojure.test :refer :all]
398
+ [my-app.core :refer :all]))
399
+
400
+ (deftest hello-test
401
+ (testing "Greeting test"
402
+ (is (= "Hello, World!" (hello)))))
403
+ ```
404
+ 実行(失敗): `clj -X:test` または `lein test`
405
+
406
+ 2. **Green**: `src/my_app/core.clj` を実装。
407
+ ```clojure
408
+ (ns my-app.core)
409
+
410
+ (defn hello []
411
+ "Hello, World!")
412
+ ```
413
+ 3. **Refactor**:
414
+
415
+ - `clj-kondo --lint src` で静的解析を実行。
416
+ - `bb -cp $(clojure -Spath) -m zprint.main src` (zprintが利用可能な場合) でコード整形。
417
+ - **自動化**:
418
+ - `lein test-refresh` で変更を監視し自動テスト実行(要プラグイン設定)。
419
+ - Babashka (`bb`) を使用して軽量なタスクランナーを構築可能。
420
+
421
+ ### 11. Elixir
422
+ - **起動コマンド**: `nix develop .#elixir`
423
+ - **主要ツール**: Elixir, Erlang, Mix, Elixir LS
424
+ - **初期化**:
425
+ ```bash
426
+ mix new my_app
427
+ cd my_app
428
+ ```
429
+ - **TDDチュートリアル**:
430
+ 1. **Red**: `test/my_app_test.exs` にテストを記述。
431
+ ```elixir
432
+ defmodule MyAppTest do
433
+ use ExUnit.Case
434
+ test "greets the world" do
435
+ assert MyApp.hello() == "Hello, World!"
436
+ end
437
+ end
438
+ ```
439
+ 実行(失敗): `mix test`
440
+
441
+ 2. **Green**: `lib/my_app.ex` を実装。
442
+ ```elixir
443
+ defmodule MyApp do
444
+ def hello do
445
+ "Hello, World!"
446
+ end
447
+ end
448
+ ```
449
+ 3. **Refactor**: `mix format` でコードを整形。
450
+ - **自動化**:
451
+ - `mix test --watch` (要 `mix_test_watch` パッケージ) で変更を監視。
452
+
453
+ ### 12. Scala
454
+ - **起動コマンド**: `nix develop .#scala`
455
+ - **主要ツール**: Scala 3, sbt, Metals, Scala CLI
456
+ - **初期化**:
457
+ ```bash
458
+ # Scala CLI を使用してプロジェクト構造を作成する場合
459
+ mkdir my-app && cd my-app
460
+ # または sbt を使用する場合
461
+ sbt new scala/scala-seed.g8
462
+ ```
463
+ - **TDDチュートリアル**:
464
+ 1. **Red**: `Hello.test.scala` を作成(Scala CLI + MUnit の例).
465
+ ```scala
466
+ //> using lib "org.scalameta::munit::0.7.29"
467
+ class HelloTest extends munit.FunSuite {
468
+ test("hello returns greeting") {
469
+ assert(Hello.greeting == "Hello, World!")
470
+ }
471
+ }
472
+ ```
473
+ 実行(失敗): `scala-cli test .`
474
+
475
+ 2. **Green**: `Hello.scala` を実装.
476
+ ```scala
477
+ object Hello {
478
+ def greeting: String = "Hello, World!"
479
+ }
480
+ ```
481
+ 3. **Refactor**: `scala-cli fmt .` でコードを整形.
482
+ - **自動化**:
483
+ - `scala-cli test . --watch` で変更を監視し自動テスト実行.
484
+
485
+ ### 13. F#
486
+ - **起動コマンド**: `nix develop .#dotnet`
487
+ - **主要ツール**: .NET SDK, Ionide (LSP), Fantomas (Formatter)
488
+ - **初期化**:
489
+ ```bash
490
+ # ソリューションの作成
491
+ dotnet new sln --name Hello
492
+ # ライブラリプロジェクトの作成
493
+ dotnet new classlib -lang "F#" -o Hello
494
+ # テストプロジェクトの作成
495
+ dotnet new xunit -lang "F#" -o Hello.Tests
496
+ # プロジェクトをソリューションに追加
497
+ dotnet sln Hello.sln add Hello/Hello.fsproj Hello.Tests/Hello.Tests.fsproj
498
+ # テストプロジェクトからライブラリプロジェクトへの参照を追加
499
+ dotnet add Hello.Tests/Hello.Tests.fsproj reference Hello/Hello.fsproj
500
+ ```
501
+ - **TDDチュートリアル**:
502
+ 1. **Red**: `Hello.Tests/Tests.fs` を修正。
503
+ ```fsharp
504
+ namespace Hello.Tests
505
+ open Xunit
506
+ module Tests =
507
+ [<Fact>]
508
+ let ``Hello returns greeting`` () =
509
+ Assert.Equal("Hello, World!", Hello.Lib.greet())
510
+ ```
511
+ 実行(失敗): `dotnet test`
512
+
513
+ 2. **Green**: `Hello/Library.fs` を実装。
514
+ ```fsharp
515
+ namespace Hello
516
+ module Lib =
517
+ let greet () = "Hello, World!"
518
+ ```
519
+ 3. **Refactor**: `dotnet fantomas .` (インストール済みの場合) でコードを整形。
520
+ - **自動化**:
521
+ - `dotnet watch test` で変更を監視し自動テスト実行。
522
+
523
+ ---
524
+
525
+ ## 環境の切り替え
526
+ 別の環境に切り替える場合は、現在のシェルを終了 (`exit`) してから、新しい環境の起動コマンドを実行してください。
527
+ 複数の環境を同時に使用したい場合は、新しいターミナルタブを開くか、tmux 等のターミナルマルチプレクサの利用を推奨します。