@k2works/claude-code-booster 4.7.0 → 4.9.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 (745) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +42 -42
  3. package/bin/claude-code-booster +90 -90
  4. package/lib/assets/.claude/README.md +275 -269
  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/creating-adr/SKILL.md +113 -113
  33. package/lib/assets/.claude/skills/creating-iteration-report/SKILL.md +210 -210
  34. package/lib/assets/.claude/skills/creating-journal/SKILL.md +129 -0
  35. package/lib/assets/.claude/skills/creating-release-report/SKILL.md +161 -161
  36. package/lib/assets/.claude/skills/creating-slides/SKILL.md +86 -86
  37. package/lib/assets/.claude/skills/creating-slides/agents/openai.yaml +4 -4
  38. package/lib/assets/.claude/skills/creating-slides/references/manga-css.md +45 -45
  39. package/lib/assets/.claude/skills/creating-slides/scripts/slide_tools.py +239 -239
  40. package/lib/assets/.claude/skills/developing-backend/SKILL.md +100 -100
  41. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +93 -93
  42. package/lib/assets/.claude/skills/developing-release/SKILL.md +120 -120
  43. package/lib/assets/.claude/skills/developing-review/SKILL.md +175 -175
  44. package/lib/assets/.claude/skills/developing-uiux-review/SKILL.md +207 -207
  45. package/lib/assets/.claude/skills/generating-bmc/SKILL.md +123 -123
  46. package/lib/assets/.claude/skills/generating-slides/SKILL.md +94 -94
  47. package/lib/assets/.claude/skills/git-commit/SKILL.md +81 -81
  48. package/lib/assets/.claude/skills/killing-processes/SKILL.md +44 -44
  49. package/lib/assets/.claude/skills/operating-backup/SKILL.md +59 -59
  50. package/lib/assets/.claude/skills/operating-cicd/SKILL.md +54 -54
  51. package/lib/assets/.claude/skills/operating-deploy/SKILL.md +67 -67
  52. package/lib/assets/.claude/skills/operating-docs/SKILL.md +219 -219
  53. package/lib/assets/.claude/skills/operating-provision/SKILL.md +77 -77
  54. package/lib/assets/.claude/skills/operating-qt/SKILL.md +147 -147
  55. package/lib/assets/.claude/skills/operating-review/SKILL.md +171 -171
  56. package/lib/assets/.claude/skills/operating-script/SKILL.md +145 -145
  57. package/lib/assets/.claude/skills/operating-setup/SKILL.md +63 -63
  58. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +104 -104
  59. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +168 -168
  60. package/lib/assets/.claude/skills/orchestrating-operation/SKILL.md +158 -158
  61. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +144 -144
  62. package/lib/assets/.claude/skills/planning-releases/SKILL.md +119 -119
  63. package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +266 -266
  64. package/lib/assets/.claude/skills/syncing-github-project/SKILL.md +151 -151
  65. package/lib/assets/.claude/skills/tracking-progress/SKILL.md +91 -91
  66. package/lib/assets/.claude/skills/validating-iteration-plan/SKILL.md +238 -238
  67. package/lib/assets/.claude/skills/validating-operating-setup/SKILL.md +118 -0
  68. package/lib/assets/.devcontainer/devcontainer.json +37 -37
  69. package/lib/assets/.env.example +17 -17
  70. package/lib/assets/.gitattributes +4 -4
  71. package/lib/assets/.github/workflows/docker-publish.yml +77 -77
  72. package/lib/assets/.github/workflows/mkdocs.yml +39 -39
  73. package/lib/assets/AGENTS.md +94 -94
  74. package/lib/assets/CLAUDE.md +193 -193
  75. package/lib/assets/README.md +291 -291
  76. package/lib/assets/docker-compose.yml +33 -33
  77. package/lib/assets/docs/adr/index.md +10 -10
  78. package/lib/assets/docs/article/functional-desgin-ppp/all/01-immutability-and-data-transformation.md +475 -475
  79. package/lib/assets/docs/article/functional-desgin-ppp/all/02-function-composition.md +519 -519
  80. package/lib/assets/docs/article/functional-desgin-ppp/all/03-polymorphism.md +537 -537
  81. package/lib/assets/docs/article/functional-desgin-ppp/all/04-data-validation.md +300 -300
  82. package/lib/assets/docs/article/functional-desgin-ppp/all/05-property-based-testing.md +320 -320
  83. package/lib/assets/docs/article/functional-desgin-ppp/all/06-tdd-and-functional.md +498 -498
  84. package/lib/assets/docs/article/functional-desgin-ppp/all/07-composite-pattern.md +298 -298
  85. package/lib/assets/docs/article/functional-desgin-ppp/all/08-decorator-pattern.md +291 -291
  86. package/lib/assets/docs/article/functional-desgin-ppp/all/09-adapter-pattern.md +336 -336
  87. package/lib/assets/docs/article/functional-desgin-ppp/all/10-strategy-pattern.md +303 -303
  88. package/lib/assets/docs/article/functional-desgin-ppp/all/11-command-pattern.md +286 -286
  89. package/lib/assets/docs/article/functional-desgin-ppp/all/12-visitor-pattern.md +322 -322
  90. package/lib/assets/docs/article/functional-desgin-ppp/all/13-abstract-factory-pattern.md +319 -319
  91. package/lib/assets/docs/article/functional-desgin-ppp/all/14-abstract-server-pattern.md +365 -365
  92. package/lib/assets/docs/article/functional-desgin-ppp/all/15-gossiping-bus-drivers.md +156 -156
  93. package/lib/assets/docs/article/functional-desgin-ppp/all/16-payroll-system.md +178 -178
  94. package/lib/assets/docs/article/functional-desgin-ppp/all/17-video-rental-system.md +312 -312
  95. package/lib/assets/docs/article/functional-desgin-ppp/all/18-concurrency-system.md +287 -287
  96. package/lib/assets/docs/article/functional-desgin-ppp/all/19-wa-tor-simulation.md +286 -286
  97. package/lib/assets/docs/article/functional-desgin-ppp/all/20-pattern-interactions.md +274 -274
  98. package/lib/assets/docs/article/functional-desgin-ppp/all/21-best-practices.md +294 -294
  99. package/lib/assets/docs/article/functional-desgin-ppp/all/22-oo-to-fp-migration.md +337 -337
  100. package/lib/assets/docs/article/functional-desgin-ppp/all/index.md +388 -388
  101. package/lib/assets/docs/article/functional-desgin-ppp/clojure/01-immutability-and-data-transformation.md +273 -273
  102. package/lib/assets/docs/article/functional-desgin-ppp/clojure/02-function-composition.md +380 -380
  103. package/lib/assets/docs/article/functional-desgin-ppp/clojure/03-polymorphism.md +384 -384
  104. package/lib/assets/docs/article/functional-desgin-ppp/clojure/04-clojure-spec.md +350 -350
  105. package/lib/assets/docs/article/functional-desgin-ppp/clojure/05-property-based-testing.md +352 -352
  106. package/lib/assets/docs/article/functional-desgin-ppp/clojure/06-tdd-in-functional.md +383 -383
  107. package/lib/assets/docs/article/functional-desgin-ppp/clojure/07-composite-pattern.md +529 -529
  108. package/lib/assets/docs/article/functional-desgin-ppp/clojure/08-decorator-pattern.md +395 -395
  109. package/lib/assets/docs/article/functional-desgin-ppp/clojure/09-adapter-pattern.md +399 -399
  110. package/lib/assets/docs/article/functional-desgin-ppp/clojure/10-strategy-pattern.md +485 -485
  111. package/lib/assets/docs/article/functional-desgin-ppp/clojure/11-command-pattern.md +566 -566
  112. package/lib/assets/docs/article/functional-desgin-ppp/clojure/12-visitor-pattern.md +567 -567
  113. package/lib/assets/docs/article/functional-desgin-ppp/clojure/13-abstract-factory-pattern.md +475 -475
  114. package/lib/assets/docs/article/functional-desgin-ppp/clojure/14-abstract-server-pattern.md +462 -462
  115. package/lib/assets/docs/article/functional-desgin-ppp/clojure/15-gossiping-bus-drivers.md +325 -325
  116. package/lib/assets/docs/article/functional-desgin-ppp/clojure/16-payroll-system.md +401 -401
  117. package/lib/assets/docs/article/functional-desgin-ppp/clojure/17-video-rental-system.md +450 -450
  118. package/lib/assets/docs/article/functional-desgin-ppp/clojure/18-concurrency-system.md +475 -475
  119. package/lib/assets/docs/article/functional-desgin-ppp/clojure/19-wator-simulation.md +739 -739
  120. package/lib/assets/docs/article/functional-desgin-ppp/clojure/20-pattern-interactions.md +567 -567
  121. package/lib/assets/docs/article/functional-desgin-ppp/clojure/21-best-practices.md +518 -518
  122. package/lib/assets/docs/article/functional-desgin-ppp/clojure/22-oo-to-fp-migration.md +532 -532
  123. package/lib/assets/docs/article/functional-desgin-ppp/clojure/index.md +241 -241
  124. package/lib/assets/docs/article/functional-desgin-ppp/elixir/01-immutability-and-data-transformation.md +383 -383
  125. package/lib/assets/docs/article/functional-desgin-ppp/elixir/02-function-composition.md +374 -374
  126. package/lib/assets/docs/article/functional-desgin-ppp/elixir/03-polymorphism.md +375 -375
  127. package/lib/assets/docs/article/functional-desgin-ppp/elixir/04-data-validation.md +195 -195
  128. package/lib/assets/docs/article/functional-desgin-ppp/elixir/05-property-based-testing.md +268 -268
  129. package/lib/assets/docs/article/functional-desgin-ppp/elixir/06-tdd-and-fp.md +294 -294
  130. package/lib/assets/docs/article/functional-desgin-ppp/elixir/07-effects-and-pure-functions.md +164 -164
  131. package/lib/assets/docs/article/functional-desgin-ppp/elixir/08-error-handling-strategies.md +168 -168
  132. package/lib/assets/docs/article/functional-desgin-ppp/elixir/09-io-and-external-systems.md +254 -254
  133. package/lib/assets/docs/article/functional-desgin-ppp/elixir/10-concurrency-patterns.md +269 -269
  134. package/lib/assets/docs/article/functional-desgin-ppp/elixir/11-command-pattern.md +148 -148
  135. package/lib/assets/docs/article/functional-desgin-ppp/elixir/12-visitor-pattern.md +176 -176
  136. package/lib/assets/docs/article/functional-desgin-ppp/elixir/13-abstract-factory-pattern.md +604 -604
  137. package/lib/assets/docs/article/functional-desgin-ppp/elixir/14-abstract-server-pattern.md +729 -729
  138. package/lib/assets/docs/article/functional-desgin-ppp/elixir/15-gossiping-bus-drivers.md +291 -291
  139. package/lib/assets/docs/article/functional-desgin-ppp/elixir/16-payroll-system.md +420 -420
  140. package/lib/assets/docs/article/functional-desgin-ppp/elixir/17-video-rental-system.md +319 -319
  141. package/lib/assets/docs/article/functional-desgin-ppp/elixir/18-concurrency-system.md +466 -466
  142. package/lib/assets/docs/article/functional-desgin-ppp/elixir/19-wator-simulation.md +523 -523
  143. package/lib/assets/docs/article/functional-desgin-ppp/elixir/20-pattern-interactions.md +287 -287
  144. package/lib/assets/docs/article/functional-desgin-ppp/elixir/21-best-practices.md +340 -340
  145. package/lib/assets/docs/article/functional-desgin-ppp/elixir/22-oo-to-fp-migration.md +395 -395
  146. package/lib/assets/docs/article/functional-desgin-ppp/elixir/index.md +248 -248
  147. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/01-immutability-and-data-transformation.md +384 -384
  148. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/02-function-composition.md +452 -452
  149. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/03-polymorphism.md +495 -495
  150. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/04-data-validation.md +416 -416
  151. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/05-property-based-testing.md +382 -382
  152. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/06-tdd-functional.md +687 -687
  153. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/07-composite-pattern.md +442 -442
  154. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/08-decorator-pattern.md +479 -479
  155. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/09-adapter-pattern.md +479 -479
  156. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/10-strategy-pattern.md +427 -427
  157. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/11-command-pattern.md +428 -428
  158. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/12-visitor-pattern.md +339 -339
  159. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/13-abstract-factory-pattern.md +309 -309
  160. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/14-abstract-server-pattern.md +596 -596
  161. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/15-gossiping-bus-drivers.md +355 -355
  162. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/16-payroll-system.md +350 -350
  163. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/17-video-rental-system.md +414 -414
  164. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/18-concurrency-system.md +367 -367
  165. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/19-wator-simulation.md +403 -403
  166. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/20-pattern-interactions.md +291 -291
  167. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/21-best-practices.md +324 -324
  168. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/22-oo-to-fp-migration.md +332 -332
  169. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/index.md +274 -274
  170. package/lib/assets/docs/article/functional-desgin-ppp/haskell/01-immutability-and-data-transformation.md +298 -298
  171. package/lib/assets/docs/article/functional-desgin-ppp/haskell/02-function-composition.md +304 -304
  172. package/lib/assets/docs/article/functional-desgin-ppp/haskell/03-polymorphism.md +362 -362
  173. package/lib/assets/docs/article/functional-desgin-ppp/haskell/04-data-validation.md +257 -257
  174. package/lib/assets/docs/article/functional-desgin-ppp/haskell/05-property-based-testing.md +254 -254
  175. package/lib/assets/docs/article/functional-desgin-ppp/haskell/06-tdd-functional.md +283 -283
  176. package/lib/assets/docs/article/functional-desgin-ppp/haskell/07-composite-pattern.md +395 -395
  177. package/lib/assets/docs/article/functional-desgin-ppp/haskell/08-decorator-pattern.md +319 -319
  178. package/lib/assets/docs/article/functional-desgin-ppp/haskell/09-adapter-pattern.md +382 -382
  179. package/lib/assets/docs/article/functional-desgin-ppp/haskell/10-strategy-pattern.md +287 -287
  180. package/lib/assets/docs/article/functional-desgin-ppp/haskell/11-command-pattern.md +303 -303
  181. package/lib/assets/docs/article/functional-desgin-ppp/haskell/12-visitor-pattern.md +326 -326
  182. package/lib/assets/docs/article/functional-desgin-ppp/haskell/13-abstract-factory-pattern.md +332 -332
  183. package/lib/assets/docs/article/functional-desgin-ppp/haskell/14-abstract-server-pattern.md +379 -379
  184. package/lib/assets/docs/article/functional-desgin-ppp/haskell/15-gossiping-bus-drivers.md +177 -177
  185. package/lib/assets/docs/article/functional-desgin-ppp/haskell/16-payroll-system.md +219 -219
  186. package/lib/assets/docs/article/functional-desgin-ppp/haskell/17-video-rental-system.md +244 -244
  187. package/lib/assets/docs/article/functional-desgin-ppp/haskell/18-concurrency-system.md +363 -363
  188. package/lib/assets/docs/article/functional-desgin-ppp/haskell/19-wator-simulation.md +438 -438
  189. package/lib/assets/docs/article/functional-desgin-ppp/haskell/20-pattern-interactions.md +325 -325
  190. package/lib/assets/docs/article/functional-desgin-ppp/haskell/21-best-practices.md +403 -403
  191. package/lib/assets/docs/article/functional-desgin-ppp/haskell/22-oo-to-fp-migration.md +469 -469
  192. package/lib/assets/docs/article/functional-desgin-ppp/haskell/index.md +174 -174
  193. package/lib/assets/docs/article/functional-desgin-ppp/index.md +90 -90
  194. package/lib/assets/docs/article/functional-desgin-ppp/rust/01-immutability-and-data-transformation.md +450 -450
  195. package/lib/assets/docs/article/functional-desgin-ppp/rust/02-function-composition.md +463 -463
  196. package/lib/assets/docs/article/functional-desgin-ppp/rust/03-polymorphism.md +425 -425
  197. package/lib/assets/docs/article/functional-desgin-ppp/rust/04-data-validation.md +273 -273
  198. package/lib/assets/docs/article/functional-desgin-ppp/rust/05-property-based-testing.md +247 -247
  199. package/lib/assets/docs/article/functional-desgin-ppp/rust/06-tdd-and-functional.md +841 -841
  200. package/lib/assets/docs/article/functional-desgin-ppp/rust/07-composite-pattern.md +384 -384
  201. package/lib/assets/docs/article/functional-desgin-ppp/rust/08-decorator-pattern.md +383 -383
  202. package/lib/assets/docs/article/functional-desgin-ppp/rust/09-adapter-pattern.md +339 -339
  203. package/lib/assets/docs/article/functional-desgin-ppp/rust/10-strategy-pattern.md +331 -331
  204. package/lib/assets/docs/article/functional-desgin-ppp/rust/11-command-pattern.md +356 -356
  205. package/lib/assets/docs/article/functional-desgin-ppp/rust/12-visitor-pattern.md +379 -379
  206. package/lib/assets/docs/article/functional-desgin-ppp/rust/13-abstract-factory-pattern.md +361 -361
  207. package/lib/assets/docs/article/functional-desgin-ppp/rust/14-abstract-server-pattern.md +392 -392
  208. package/lib/assets/docs/article/functional-desgin-ppp/rust/15-gossiping-bus-drivers.md +300 -300
  209. package/lib/assets/docs/article/functional-desgin-ppp/rust/16-payroll-system.md +297 -297
  210. package/lib/assets/docs/article/functional-desgin-ppp/rust/17-video-rental-system.md +304 -304
  211. package/lib/assets/docs/article/functional-desgin-ppp/rust/18-concurrency-system.md +315 -315
  212. package/lib/assets/docs/article/functional-desgin-ppp/rust/19-wator-simulation.md +311 -311
  213. package/lib/assets/docs/article/functional-desgin-ppp/rust/20-pattern-interactions.md +304 -304
  214. package/lib/assets/docs/article/functional-desgin-ppp/rust/21-best-practices.md +336 -336
  215. package/lib/assets/docs/article/functional-desgin-ppp/rust/22-oo-to-fp-migration.md +349 -349
  216. package/lib/assets/docs/article/functional-desgin-ppp/rust/index.md +243 -243
  217. package/lib/assets/docs/article/functional-desgin-ppp/scala/01-immutability-and-data-transformation.md +328 -328
  218. package/lib/assets/docs/article/functional-desgin-ppp/scala/02-function-composition.md +348 -348
  219. package/lib/assets/docs/article/functional-desgin-ppp/scala/03-polymorphism.md +357 -357
  220. package/lib/assets/docs/article/functional-desgin-ppp/scala/04-data-validation.md +364 -364
  221. package/lib/assets/docs/article/functional-desgin-ppp/scala/05-property-based-testing.md +515 -515
  222. package/lib/assets/docs/article/functional-desgin-ppp/scala/06-tdd-functional.md +557 -557
  223. package/lib/assets/docs/article/functional-desgin-ppp/scala/07-composite-pattern.md +363 -363
  224. package/lib/assets/docs/article/functional-desgin-ppp/scala/08-decorator-pattern.md +327 -327
  225. package/lib/assets/docs/article/functional-desgin-ppp/scala/09-adapter-pattern.md +517 -517
  226. package/lib/assets/docs/article/functional-desgin-ppp/scala/10-strategy-pattern.md +441 -441
  227. package/lib/assets/docs/article/functional-desgin-ppp/scala/11-command-pattern.md +407 -407
  228. package/lib/assets/docs/article/functional-desgin-ppp/scala/12-visitor-pattern.md +379 -379
  229. package/lib/assets/docs/article/functional-desgin-ppp/scala/13-abstract-factory-pattern.md +398 -398
  230. package/lib/assets/docs/article/functional-desgin-ppp/scala/14-abstract-server-pattern.md +476 -476
  231. package/lib/assets/docs/article/functional-desgin-ppp/scala/15-gossiping-bus-drivers.md +391 -391
  232. package/lib/assets/docs/article/functional-desgin-ppp/scala/16-payroll-system.md +342 -342
  233. package/lib/assets/docs/article/functional-desgin-ppp/scala/17-video-rental-system.md +324 -324
  234. package/lib/assets/docs/article/functional-desgin-ppp/scala/18-concurrency-system.md +730 -730
  235. package/lib/assets/docs/article/functional-desgin-ppp/scala/19-wator-simulation.md +624 -624
  236. package/lib/assets/docs/article/functional-desgin-ppp/scala/20-pattern-interactions.md +512 -512
  237. package/lib/assets/docs/article/functional-desgin-ppp/scala/21-best-practices.md +433 -433
  238. package/lib/assets/docs/article/functional-desgin-ppp/scala/22-oo-to-fp-migration.md +688 -688
  239. package/lib/assets/docs/article/functional-desgin-ppp/scala/index.md +243 -243
  240. package/lib/assets/docs/article/getting-start-tdd/clojure/01-todo-list-and-first-test.md +166 -166
  241. package/lib/assets/docs/article/getting-start-tdd/clojure/02-fake-it-and-triangulation.md +162 -162
  242. package/lib/assets/docs/article/getting-start-tdd/clojure/03-obvious-implementation-and-refactoring.md +135 -135
  243. package/lib/assets/docs/article/getting-start-tdd/clojure/04-version-control-and-conventional-commits.md +88 -88
  244. package/lib/assets/docs/article/getting-start-tdd/clojure/05-package-management-and-static-analysis.md +299 -299
  245. package/lib/assets/docs/article/getting-start-tdd/clojure/06-task-runner-and-ci-cd.md +241 -241
  246. package/lib/assets/docs/article/getting-start-tdd/clojure/07-protocols-and-records.md +131 -131
  247. package/lib/assets/docs/article/getting-start-tdd/clojure/08-multimethods-and-design-patterns.md +130 -130
  248. package/lib/assets/docs/article/getting-start-tdd/clojure/09-namespaces-and-module-design.md +127 -127
  249. package/lib/assets/docs/article/getting-start-tdd/clojure/10-higher-order-functions-and-composition.md +114 -114
  250. package/lib/assets/docs/article/getting-start-tdd/clojure/11-persistent-data-and-pipeline.md +138 -138
  251. package/lib/assets/docs/article/getting-start-tdd/clojure/12-error-handling-and-spec.md +161 -161
  252. package/lib/assets/docs/article/getting-start-tdd/clojure/index.md +65 -65
  253. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter01.md +232 -232
  254. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter02.md +244 -244
  255. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter03.md +202 -202
  256. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter04.md +92 -92
  257. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter05.md +256 -256
  258. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter06.md +195 -195
  259. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter07.md +214 -214
  260. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter08.md +249 -249
  261. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter09.md +174 -174
  262. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter10.md +166 -166
  263. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter11.md +192 -192
  264. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter12.md +211 -211
  265. package/lib/assets/docs/article/getting-start-tdd/csharp/index.md +83 -83
  266. package/lib/assets/docs/article/getting-start-tdd/elixir/01-todo-list-and-first-test.md +87 -87
  267. package/lib/assets/docs/article/getting-start-tdd/elixir/02-fake-it-and-triangulation.md +95 -95
  268. package/lib/assets/docs/article/getting-start-tdd/elixir/03-obvious-implementation-and-refactoring.md +109 -109
  269. package/lib/assets/docs/article/getting-start-tdd/elixir/04-version-control-and-conventional-commits.md +96 -96
  270. package/lib/assets/docs/article/getting-start-tdd/elixir/05-package-management-and-static-analysis.md +88 -88
  271. package/lib/assets/docs/article/getting-start-tdd/elixir/06-task-runner-and-ci-cd.md +71 -71
  272. package/lib/assets/docs/article/getting-start-tdd/elixir/07-structs-and-protocols.md +110 -110
  273. package/lib/assets/docs/article/getting-start-tdd/elixir/08-pattern-matching-and-guards.md +108 -108
  274. package/lib/assets/docs/article/getting-start-tdd/elixir/09-module-design-and-behaviours.md +104 -104
  275. package/lib/assets/docs/article/getting-start-tdd/elixir/10-higher-order-functions-and-pipeline.md +178 -178
  276. package/lib/assets/docs/article/getting-start-tdd/elixir/11-stream-and-lazy-evaluation.md +142 -142
  277. package/lib/assets/docs/article/getting-start-tdd/elixir/12-error-handling-and-with.md +145 -145
  278. package/lib/assets/docs/article/getting-start-tdd/elixir/index.md +35 -35
  279. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter01.md +202 -202
  280. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter02.md +246 -246
  281. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter03.md +218 -218
  282. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter04.md +179 -179
  283. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter05.md +267 -267
  284. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter06.md +190 -190
  285. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter07.md +161 -161
  286. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter08.md +175 -175
  287. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter09.md +222 -222
  288. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter10.md +189 -189
  289. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter11.md +212 -212
  290. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter12.md +215 -215
  291. package/lib/assets/docs/article/getting-start-tdd/fsharp/index.md +71 -71
  292. package/lib/assets/docs/article/getting-start-tdd/go/01-todo-list-and-first-test.md +213 -213
  293. package/lib/assets/docs/article/getting-start-tdd/go/02-fake-it-and-triangulation.md +302 -302
  294. package/lib/assets/docs/article/getting-start-tdd/go/03-obvious-implementation-and-refactoring.md +339 -339
  295. package/lib/assets/docs/article/getting-start-tdd/go/04-version-control-and-conventional-commits.md +112 -112
  296. package/lib/assets/docs/article/getting-start-tdd/go/05-package-management-and-static-analysis.md +272 -272
  297. package/lib/assets/docs/article/getting-start-tdd/go/06-task-runner-and-ci-cd.md +233 -233
  298. package/lib/assets/docs/article/getting-start-tdd/go/07-encapsulation-and-polymorphism.md +394 -394
  299. package/lib/assets/docs/article/getting-start-tdd/go/08-design-patterns.md +422 -422
  300. package/lib/assets/docs/article/getting-start-tdd/go/09-solid-principles-and-module-design.md +400 -400
  301. package/lib/assets/docs/article/getting-start-tdd/go/10-higher-order-functions-and-composition.md +226 -226
  302. package/lib/assets/docs/article/getting-start-tdd/go/11-immutable-data-and-pipeline.md +296 -296
  303. package/lib/assets/docs/article/getting-start-tdd/go/12-error-handling-and-type-safety.md +411 -411
  304. package/lib/assets/docs/article/getting-start-tdd/go/index.md +83 -83
  305. package/lib/assets/docs/article/getting-start-tdd/haskell/01-todo-list-and-first-test.md +279 -279
  306. package/lib/assets/docs/article/getting-start-tdd/haskell/02-fake-it-and-triangulation.md +337 -337
  307. package/lib/assets/docs/article/getting-start-tdd/haskell/03-obvious-implementation-and-refactoring.md +257 -257
  308. package/lib/assets/docs/article/getting-start-tdd/haskell/04-version-control-and-conventional-commits.md +182 -182
  309. package/lib/assets/docs/article/getting-start-tdd/haskell/05-package-management-and-static-analysis.md +313 -313
  310. package/lib/assets/docs/article/getting-start-tdd/haskell/06-task-runner-and-ci-cd.md +309 -309
  311. package/lib/assets/docs/article/getting-start-tdd/haskell/07-algebraic-data-types-and-type-classes.md +412 -412
  312. package/lib/assets/docs/article/getting-start-tdd/haskell/08-pattern-matching-and-guards.md +390 -390
  313. package/lib/assets/docs/article/getting-start-tdd/haskell/09-module-design-and-smart-constructors.md +461 -461
  314. package/lib/assets/docs/article/getting-start-tdd/haskell/10-higher-order-functions-and-currying.md +434 -434
  315. package/lib/assets/docs/article/getting-start-tdd/haskell/11-function-composition-and-point-free.md +392 -392
  316. package/lib/assets/docs/article/getting-start-tdd/haskell/12-monad-and-error-handling.md +631 -631
  317. package/lib/assets/docs/article/getting-start-tdd/haskell/index.md +49 -49
  318. package/lib/assets/docs/article/getting-start-tdd/index.md +93 -93
  319. package/lib/assets/docs/article/getting-start-tdd/integration/01-language-overview.md +375 -375
  320. package/lib/assets/docs/article/getting-start-tdd/integration/02-test-framework-comparison.md +349 -349
  321. package/lib/assets/docs/article/getting-start-tdd/integration/03-tdd-pattern-comparison.md +445 -445
  322. package/lib/assets/docs/article/getting-start-tdd/integration/04-type-system-comparison.md +409 -409
  323. package/lib/assets/docs/article/getting-start-tdd/integration/05-dev-environment-comparison.md +330 -330
  324. package/lib/assets/docs/article/getting-start-tdd/integration/06-learning-roadmap.md +290 -290
  325. package/lib/assets/docs/article/getting-start-tdd/integration/index.md +69 -69
  326. package/lib/assets/docs/article/getting-start-tdd/java/01-todo-list-and-first-test.md +234 -234
  327. package/lib/assets/docs/article/getting-start-tdd/java/02-fake-it-and-triangulation.md +261 -261
  328. package/lib/assets/docs/article/getting-start-tdd/java/03-obvious-implementation-and-refactoring.md +185 -185
  329. package/lib/assets/docs/article/getting-start-tdd/java/04-version-control-and-conventional-commits.md +115 -115
  330. package/lib/assets/docs/article/getting-start-tdd/java/05-package-management-and-static-analysis.md +382 -382
  331. package/lib/assets/docs/article/getting-start-tdd/java/06-task-runner-and-ci-cd.md +272 -272
  332. package/lib/assets/docs/article/getting-start-tdd/java/07-encapsulation-and-polymorphism.md +626 -626
  333. package/lib/assets/docs/article/getting-start-tdd/java/08-design-patterns.md +393 -393
  334. package/lib/assets/docs/article/getting-start-tdd/java/09-solid-principles-and-module-design.md +310 -310
  335. package/lib/assets/docs/article/getting-start-tdd/java/10-higher-order-functions-and-composition.md +188 -188
  336. package/lib/assets/docs/article/getting-start-tdd/java/11-immutable-data-and-pipeline.md +167 -167
  337. package/lib/assets/docs/article/getting-start-tdd/java/12-error-handling-and-type-safety.md +205 -205
  338. package/lib/assets/docs/article/getting-start-tdd/java/index.md +61 -61
  339. package/lib/assets/docs/article/getting-start-tdd/node/01-todo-list-and-first-test.md +244 -244
  340. package/lib/assets/docs/article/getting-start-tdd/node/02-fake-it-and-triangulation.md +262 -262
  341. package/lib/assets/docs/article/getting-start-tdd/node/03-obvious-implementation-and-refactoring.md +169 -169
  342. package/lib/assets/docs/article/getting-start-tdd/node/04-version-control-and-conventional-commits.md +112 -112
  343. package/lib/assets/docs/article/getting-start-tdd/node/05-package-management-and-static-analysis.md +314 -314
  344. package/lib/assets/docs/article/getting-start-tdd/node/06-task-runner-and-ci-cd.md +235 -235
  345. package/lib/assets/docs/article/getting-start-tdd/node/07-encapsulation-and-polymorphism.md +327 -327
  346. package/lib/assets/docs/article/getting-start-tdd/node/08-design-patterns.md +322 -322
  347. package/lib/assets/docs/article/getting-start-tdd/node/09-solid-principles-and-module-design.md +285 -285
  348. package/lib/assets/docs/article/getting-start-tdd/node/10-higher-order-functions-and-composition.md +199 -199
  349. package/lib/assets/docs/article/getting-start-tdd/node/11-immutable-data-and-pipeline.md +207 -207
  350. package/lib/assets/docs/article/getting-start-tdd/node/12-error-handling-and-type-safety.md +295 -295
  351. package/lib/assets/docs/article/getting-start-tdd/node/index.md +56 -56
  352. package/lib/assets/docs/article/getting-start-tdd/php/01-todo-list-and-first-test.md +259 -259
  353. package/lib/assets/docs/article/getting-start-tdd/php/02-fake-it-and-triangulation.md +200 -200
  354. package/lib/assets/docs/article/getting-start-tdd/php/03-obvious-implementation-and-refactoring.md +248 -248
  355. package/lib/assets/docs/article/getting-start-tdd/php/04-version-control-and-conventional-commits.md +141 -141
  356. package/lib/assets/docs/article/getting-start-tdd/php/05-package-management-and-static-analysis.md +410 -410
  357. package/lib/assets/docs/article/getting-start-tdd/php/06-task-runner-and-ci-cd.md +321 -321
  358. package/lib/assets/docs/article/getting-start-tdd/php/07-encapsulation-and-polymorphism.md +372 -372
  359. package/lib/assets/docs/article/getting-start-tdd/php/08-design-patterns.md +453 -453
  360. package/lib/assets/docs/article/getting-start-tdd/php/09-solid-principles-and-module-design.md +460 -460
  361. package/lib/assets/docs/article/getting-start-tdd/php/10-higher-order-functions-and-composition.md +182 -182
  362. package/lib/assets/docs/article/getting-start-tdd/php/11-immutable-data-and-pipeline.md +266 -266
  363. package/lib/assets/docs/article/getting-start-tdd/php/12-error-handling-and-type-safety.md +308 -308
  364. package/lib/assets/docs/article/getting-start-tdd/php/index.md +84 -84
  365. package/lib/assets/docs/article/getting-start-tdd/python/01-todo-list-and-first-test.md +201 -201
  366. package/lib/assets/docs/article/getting-start-tdd/python/02-fake-it-and-triangulation.md +247 -247
  367. package/lib/assets/docs/article/getting-start-tdd/python/03-obvious-implementation-and-refactoring.md +199 -199
  368. package/lib/assets/docs/article/getting-start-tdd/python/04-version-control-and-conventional-commits.md +87 -87
  369. package/lib/assets/docs/article/getting-start-tdd/python/05-package-management-and-static-analysis.md +274 -274
  370. package/lib/assets/docs/article/getting-start-tdd/python/06-task-runner-and-ci-cd.md +190 -190
  371. package/lib/assets/docs/article/getting-start-tdd/python/07-encapsulation-and-polymorphism.md +208 -208
  372. package/lib/assets/docs/article/getting-start-tdd/python/08-design-patterns.md +172 -172
  373. package/lib/assets/docs/article/getting-start-tdd/python/09-solid-principles-and-module-design.md +130 -130
  374. package/lib/assets/docs/article/getting-start-tdd/python/10-higher-order-functions-and-composition.md +122 -122
  375. package/lib/assets/docs/article/getting-start-tdd/python/11-immutable-data-and-pipeline.md +116 -116
  376. package/lib/assets/docs/article/getting-start-tdd/python/12-error-handling-and-type-safety.md +126 -126
  377. package/lib/assets/docs/article/getting-start-tdd/python/index.md +55 -55
  378. package/lib/assets/docs/article/getting-start-tdd/ruby/01-todo-list-and-first-test.md +231 -231
  379. package/lib/assets/docs/article/getting-start-tdd/ruby/02-fake-it-and-triangulation.md +238 -238
  380. package/lib/assets/docs/article/getting-start-tdd/ruby/03-obvious-implementation-and-refactoring.md +228 -228
  381. package/lib/assets/docs/article/getting-start-tdd/ruby/04-version-control-and-conventional-commits.md +112 -112
  382. package/lib/assets/docs/article/getting-start-tdd/ruby/05-package-management-and-static-analysis.md +287 -287
  383. package/lib/assets/docs/article/getting-start-tdd/ruby/06-task-runner-and-ci-cd.md +248 -248
  384. package/lib/assets/docs/article/getting-start-tdd/ruby/07-encapsulation-and-polymorphism.md +279 -279
  385. package/lib/assets/docs/article/getting-start-tdd/ruby/08-design-patterns.md +329 -329
  386. package/lib/assets/docs/article/getting-start-tdd/ruby/09-solid-principles-and-module-design.md +196 -196
  387. package/lib/assets/docs/article/getting-start-tdd/ruby/10-higher-order-functions-and-composition.md +175 -175
  388. package/lib/assets/docs/article/getting-start-tdd/ruby/11-immutable-data-and-pipeline.md +237 -237
  389. package/lib/assets/docs/article/getting-start-tdd/ruby/12-error-handling-and-type-safety.md +398 -398
  390. package/lib/assets/docs/article/getting-start-tdd/ruby/index.md +83 -83
  391. package/lib/assets/docs/article/getting-start-tdd/rust/01-todo-list-and-first-test.md +211 -211
  392. package/lib/assets/docs/article/getting-start-tdd/rust/02-fake-it-and-triangulation.md +264 -264
  393. package/lib/assets/docs/article/getting-start-tdd/rust/03-obvious-implementation-and-refactoring.md +233 -233
  394. package/lib/assets/docs/article/getting-start-tdd/rust/04-version-control-and-conventional-commits.md +92 -92
  395. package/lib/assets/docs/article/getting-start-tdd/rust/05-package-management-and-static-analysis.md +212 -212
  396. package/lib/assets/docs/article/getting-start-tdd/rust/06-task-runner-and-ci-cd.md +164 -164
  397. package/lib/assets/docs/article/getting-start-tdd/rust/07-encapsulation-and-polymorphism.md +142 -142
  398. package/lib/assets/docs/article/getting-start-tdd/rust/08-design-patterns.md +145 -145
  399. package/lib/assets/docs/article/getting-start-tdd/rust/09-solid-principles-and-module-design.md +110 -110
  400. package/lib/assets/docs/article/getting-start-tdd/rust/10-higher-order-functions-and-composition.md +94 -94
  401. package/lib/assets/docs/article/getting-start-tdd/rust/11-immutable-data-and-pipeline.md +105 -105
  402. package/lib/assets/docs/article/getting-start-tdd/rust/12-error-handling-and-type-safety.md +112 -112
  403. package/lib/assets/docs/article/getting-start-tdd/rust/index.md +83 -83
  404. package/lib/assets/docs/article/getting-start-tdd/scala/01-todo-list-and-first-test.md +111 -111
  405. package/lib/assets/docs/article/getting-start-tdd/scala/02-fake-it-and-triangulation.md +107 -107
  406. package/lib/assets/docs/article/getting-start-tdd/scala/03-obvious-implementation-and-refactoring.md +99 -99
  407. package/lib/assets/docs/article/getting-start-tdd/scala/04-version-control-and-conventional-commits.md +123 -123
  408. package/lib/assets/docs/article/getting-start-tdd/scala/05-package-management-and-static-analysis.md +196 -196
  409. package/lib/assets/docs/article/getting-start-tdd/scala/06-task-runner-and-ci-cd.md +186 -186
  410. package/lib/assets/docs/article/getting-start-tdd/scala/07-case-classes-and-traits.md +139 -139
  411. package/lib/assets/docs/article/getting-start-tdd/scala/08-pattern-matching-and-sealed-traits.md +106 -106
  412. package/lib/assets/docs/article/getting-start-tdd/scala/09-packages-and-module-design.md +75 -75
  413. package/lib/assets/docs/article/getting-start-tdd/scala/10-higher-order-functions-and-composition.md +104 -104
  414. package/lib/assets/docs/article/getting-start-tdd/scala/11-collections-and-lazy-evaluation.md +94 -94
  415. package/lib/assets/docs/article/getting-start-tdd/scala/12-error-handling-and-type-safety.md +92 -92
  416. package/lib/assets/docs/article/getting-start-tdd/scala/index.md +65 -65
  417. package/lib/assets/docs/article/grokking-concurrency/all/index.md +404 -404
  418. package/lib/assets/docs/article/grokking-concurrency/all/part-1-ch02-sequential.md +554 -554
  419. package/lib/assets/docs/article/grokking-concurrency/all/part-2-ch04-05-threads.md +469 -469
  420. package/lib/assets/docs/article/grokking-concurrency/all/part-3-ch06-multitasking.md +520 -520
  421. package/lib/assets/docs/article/grokking-concurrency/all/part-4-ch07-parallel-patterns.md +420 -420
  422. package/lib/assets/docs/article/grokking-concurrency/all/part-5-ch08-09-synchronization.md +510 -510
  423. package/lib/assets/docs/article/grokking-concurrency/all/part-6-ch10-11-nonblocking-io.md +435 -435
  424. package/lib/assets/docs/article/grokking-concurrency/all/part-7-ch12-async.md +465 -465
  425. package/lib/assets/docs/article/grokking-concurrency/all/part-8-ch13-mapreduce.md +377 -377
  426. package/lib/assets/docs/article/grokking-concurrency/clojure/index.md +116 -116
  427. package/lib/assets/docs/article/grokking-concurrency/clojure/part-1.md +108 -108
  428. package/lib/assets/docs/article/grokking-concurrency/clojure/part-2.md +101 -101
  429. package/lib/assets/docs/article/grokking-concurrency/clojure/part-3.md +122 -122
  430. package/lib/assets/docs/article/grokking-concurrency/clojure/part-4.md +123 -123
  431. package/lib/assets/docs/article/grokking-concurrency/clojure/part-5.md +118 -118
  432. package/lib/assets/docs/article/grokking-concurrency/clojure/part-6.md +89 -89
  433. package/lib/assets/docs/article/grokking-concurrency/clojure/part-7.md +100 -100
  434. package/lib/assets/docs/article/grokking-concurrency/clojure/part-8.md +120 -120
  435. package/lib/assets/docs/article/grokking-concurrency/csharp/index.md +101 -101
  436. package/lib/assets/docs/article/grokking-concurrency/csharp/part-1.md +97 -97
  437. package/lib/assets/docs/article/grokking-concurrency/csharp/part-2.md +123 -123
  438. package/lib/assets/docs/article/grokking-concurrency/csharp/part-3.md +101 -101
  439. package/lib/assets/docs/article/grokking-concurrency/csharp/part-4.md +112 -112
  440. package/lib/assets/docs/article/grokking-concurrency/csharp/part-5.md +99 -99
  441. package/lib/assets/docs/article/grokking-concurrency/csharp/part-6.md +61 -61
  442. package/lib/assets/docs/article/grokking-concurrency/csharp/part-7.md +84 -84
  443. package/lib/assets/docs/article/grokking-concurrency/csharp/part-8.md +92 -92
  444. package/lib/assets/docs/article/grokking-concurrency/fsharp/index.md +65 -65
  445. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-1.md +80 -80
  446. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-2.md +103 -103
  447. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-3.md +94 -94
  448. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-4.md +110 -110
  449. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-5.md +104 -104
  450. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-6.md +93 -93
  451. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-7.md +121 -121
  452. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-8.md +107 -107
  453. package/lib/assets/docs/article/grokking-concurrency/haskell/index.md +248 -248
  454. package/lib/assets/docs/article/grokking-concurrency/haskell/part-1.md +96 -96
  455. package/lib/assets/docs/article/grokking-concurrency/haskell/part-2.md +96 -96
  456. package/lib/assets/docs/article/grokking-concurrency/haskell/part-3.md +91 -91
  457. package/lib/assets/docs/article/grokking-concurrency/haskell/part-4.md +106 -106
  458. package/lib/assets/docs/article/grokking-concurrency/haskell/part-5.md +99 -99
  459. package/lib/assets/docs/article/grokking-concurrency/haskell/part-6.md +95 -95
  460. package/lib/assets/docs/article/grokking-concurrency/haskell/part-7.md +111 -111
  461. package/lib/assets/docs/article/grokking-concurrency/haskell/part-8.md +118 -118
  462. package/lib/assets/docs/article/grokking-concurrency/index.md +66 -66
  463. package/lib/assets/docs/article/grokking-concurrency/java/index.md +102 -102
  464. package/lib/assets/docs/article/grokking-concurrency/java/part-1.md +308 -308
  465. package/lib/assets/docs/article/grokking-concurrency/java/part-2.md +334 -334
  466. package/lib/assets/docs/article/grokking-concurrency/java/part-3.md +221 -221
  467. package/lib/assets/docs/article/grokking-concurrency/java/part-4.md +213 -213
  468. package/lib/assets/docs/article/grokking-concurrency/java/part-5.md +112 -112
  469. package/lib/assets/docs/article/grokking-concurrency/java/part-6.md +69 -69
  470. package/lib/assets/docs/article/grokking-concurrency/java/part-7.md +101 -101
  471. package/lib/assets/docs/article/grokking-concurrency/java/part-8.md +101 -101
  472. package/lib/assets/docs/article/grokking-concurrency/python/index.md +313 -313
  473. package/lib/assets/docs/article/grokking-concurrency/python/part-1.md +239 -239
  474. package/lib/assets/docs/article/grokking-concurrency/python/part-2.md +418 -418
  475. package/lib/assets/docs/article/grokking-concurrency/python/part-3.md +227 -227
  476. package/lib/assets/docs/article/grokking-concurrency/python/part-4.md +299 -299
  477. package/lib/assets/docs/article/grokking-concurrency/python/part-5.md +315 -315
  478. package/lib/assets/docs/article/grokking-concurrency/python/part-6.md +297 -297
  479. package/lib/assets/docs/article/grokking-concurrency/python/part-7.md +314 -314
  480. package/lib/assets/docs/article/grokking-concurrency/python/part-8.md +360 -360
  481. package/lib/assets/docs/article/grokking-concurrency/rust/index.md +270 -270
  482. package/lib/assets/docs/article/grokking-concurrency/rust/part-1.md +108 -108
  483. package/lib/assets/docs/article/grokking-concurrency/rust/part-2.md +120 -120
  484. package/lib/assets/docs/article/grokking-concurrency/rust/part-3.md +126 -126
  485. package/lib/assets/docs/article/grokking-concurrency/rust/part-4.md +175 -175
  486. package/lib/assets/docs/article/grokking-concurrency/rust/part-5.md +158 -158
  487. package/lib/assets/docs/article/grokking-concurrency/rust/part-6.md +94 -94
  488. package/lib/assets/docs/article/grokking-concurrency/rust/part-7.md +133 -133
  489. package/lib/assets/docs/article/grokking-concurrency/rust/part-8.md +155 -155
  490. package/lib/assets/docs/article/grokking-concurrency/scala/index.md +69 -69
  491. package/lib/assets/docs/article/grokking-concurrency/scala/part-1.md +78 -78
  492. package/lib/assets/docs/article/grokking-concurrency/scala/part-2.md +112 -112
  493. package/lib/assets/docs/article/grokking-concurrency/scala/part-3.md +93 -93
  494. package/lib/assets/docs/article/grokking-concurrency/scala/part-4.md +110 -110
  495. package/lib/assets/docs/article/grokking-concurrency/scala/part-5.md +119 -119
  496. package/lib/assets/docs/article/grokking-concurrency/scala/part-6.md +83 -83
  497. package/lib/assets/docs/article/grokking-concurrency/scala/part-7.md +131 -131
  498. package/lib/assets/docs/article/grokking-concurrency/scala/part-8.md +129 -129
  499. package/lib/assets/docs/article/grokkingfp/all/index.md +368 -368
  500. package/lib/assets/docs/article/grokkingfp/all/part-1-ch01-fp-introduction.md +530 -530
  501. package/lib/assets/docs/article/grokkingfp/all/part-1-ch02-pure-functions.md +923 -923
  502. package/lib/assets/docs/article/grokkingfp/all/part-2-ch03-immutable-data.md +1128 -1128
  503. package/lib/assets/docs/article/grokkingfp/all/part-2-ch04-higher-order-functions.md +1104 -1104
  504. package/lib/assets/docs/article/grokkingfp/all/part-2-ch05-flatmap.md +1026 -1026
  505. package/lib/assets/docs/article/grokkingfp/all/part-3-ch06-option.md +785 -785
  506. package/lib/assets/docs/article/grokkingfp/all/part-3-ch07-either-adt.md +871 -871
  507. package/lib/assets/docs/article/grokkingfp/all/part-4-ch08-io-monad.md +972 -972
  508. package/lib/assets/docs/article/grokkingfp/all/part-4-ch09-streams.md +926 -926
  509. package/lib/assets/docs/article/grokkingfp/all/part-5-ch10-concurrency.md +870 -870
  510. package/lib/assets/docs/article/grokkingfp/all/part-6-ch11-application.md +715 -715
  511. package/lib/assets/docs/article/grokkingfp/all/part-6-ch12-testing.md +626 -626
  512. package/lib/assets/docs/article/grokkingfp/all/writing-plan.md +712 -712
  513. package/lib/assets/docs/article/grokkingfp/clojure/index.md +276 -276
  514. package/lib/assets/docs/article/grokkingfp/clojure/part-1.md +667 -667
  515. package/lib/assets/docs/article/grokkingfp/clojure/part-2.md +643 -643
  516. package/lib/assets/docs/article/grokkingfp/clojure/part-3.md +620 -620
  517. package/lib/assets/docs/article/grokkingfp/clojure/part-4.md +697 -697
  518. package/lib/assets/docs/article/grokkingfp/clojure/part-5.md +751 -751
  519. package/lib/assets/docs/article/grokkingfp/clojure/part-6.md +721 -721
  520. package/lib/assets/docs/article/grokkingfp/csharp/index.md +246 -246
  521. package/lib/assets/docs/article/grokkingfp/csharp/part-1.md +811 -811
  522. package/lib/assets/docs/article/grokkingfp/csharp/part-2.md +971 -971
  523. package/lib/assets/docs/article/grokkingfp/csharp/part-3.md +981 -981
  524. package/lib/assets/docs/article/grokkingfp/csharp/part-4.md +949 -949
  525. package/lib/assets/docs/article/grokkingfp/csharp/part-5.md +947 -947
  526. package/lib/assets/docs/article/grokkingfp/csharp/part-6.md +739 -739
  527. package/lib/assets/docs/article/grokkingfp/elixir/index.md +203 -203
  528. package/lib/assets/docs/article/grokkingfp/elixir/part-1.md +712 -712
  529. package/lib/assets/docs/article/grokkingfp/elixir/part-2.md +838 -838
  530. package/lib/assets/docs/article/grokkingfp/elixir/part-3.md +985 -985
  531. package/lib/assets/docs/article/grokkingfp/elixir/part-4.md +974 -974
  532. package/lib/assets/docs/article/grokkingfp/elixir/part-5.md +1286 -1286
  533. package/lib/assets/docs/article/grokkingfp/elixir/part-6.md +1049 -1049
  534. package/lib/assets/docs/article/grokkingfp/fsharp/index.md +210 -210
  535. package/lib/assets/docs/article/grokkingfp/fsharp/part-1.md +714 -714
  536. package/lib/assets/docs/article/grokkingfp/fsharp/part-2.md +961 -961
  537. package/lib/assets/docs/article/grokkingfp/fsharp/part-3.md +972 -972
  538. package/lib/assets/docs/article/grokkingfp/fsharp/part-4.md +832 -832
  539. package/lib/assets/docs/article/grokkingfp/fsharp/part-5.md +911 -911
  540. package/lib/assets/docs/article/grokkingfp/fsharp/part-6.md +922 -922
  541. package/lib/assets/docs/article/grokkingfp/haskell/index.md +234 -234
  542. package/lib/assets/docs/article/grokkingfp/haskell/part-1.md +591 -591
  543. package/lib/assets/docs/article/grokkingfp/haskell/part-2.md +866 -866
  544. package/lib/assets/docs/article/grokkingfp/haskell/part-3.md +915 -915
  545. package/lib/assets/docs/article/grokkingfp/haskell/part-4.md +878 -878
  546. package/lib/assets/docs/article/grokkingfp/haskell/part-5.md +845 -845
  547. package/lib/assets/docs/article/grokkingfp/haskell/part-6.md +844 -844
  548. package/lib/assets/docs/article/grokkingfp/index.md +143 -143
  549. package/lib/assets/docs/article/grokkingfp/java/index.md +211 -211
  550. package/lib/assets/docs/article/grokkingfp/java/part-1.md +648 -648
  551. package/lib/assets/docs/article/grokkingfp/java/part-2.md +675 -675
  552. package/lib/assets/docs/article/grokkingfp/java/part-3.md +672 -672
  553. package/lib/assets/docs/article/grokkingfp/java/part-4.md +771 -771
  554. package/lib/assets/docs/article/grokkingfp/java/part-5.md +959 -959
  555. package/lib/assets/docs/article/grokkingfp/java/part-6.md +1328 -1328
  556. package/lib/assets/docs/article/grokkingfp/python/index.md +258 -258
  557. package/lib/assets/docs/article/grokkingfp/python/part-1.md +443 -443
  558. package/lib/assets/docs/article/grokkingfp/python/part-2.md +958 -958
  559. package/lib/assets/docs/article/grokkingfp/python/part-3.md +1004 -1004
  560. package/lib/assets/docs/article/grokkingfp/python/part-4.md +765 -765
  561. package/lib/assets/docs/article/grokkingfp/python/part-5.md +747 -747
  562. package/lib/assets/docs/article/grokkingfp/python/part-6.md +861 -861
  563. package/lib/assets/docs/article/grokkingfp/ruby/index.md +330 -330
  564. package/lib/assets/docs/article/grokkingfp/ruby/part-1.md +755 -755
  565. package/lib/assets/docs/article/grokkingfp/ruby/part-2.md +938 -938
  566. package/lib/assets/docs/article/grokkingfp/ruby/part-3.md +946 -946
  567. package/lib/assets/docs/article/grokkingfp/ruby/part-4.md +921 -921
  568. package/lib/assets/docs/article/grokkingfp/ruby/part-5.md +908 -908
  569. package/lib/assets/docs/article/grokkingfp/ruby/part-6.md +1412 -1412
  570. package/lib/assets/docs/article/grokkingfp/rust/index.md +242 -242
  571. package/lib/assets/docs/article/grokkingfp/rust/part-1.md +634 -634
  572. package/lib/assets/docs/article/grokkingfp/rust/part-2.md +1060 -1060
  573. package/lib/assets/docs/article/grokkingfp/rust/part-3.md +994 -994
  574. package/lib/assets/docs/article/grokkingfp/rust/part-4.md +573 -573
  575. package/lib/assets/docs/article/grokkingfp/rust/part-5.md +705 -705
  576. package/lib/assets/docs/article/grokkingfp/rust/part-6.md +508 -508
  577. package/lib/assets/docs/article/grokkingfp/scala/index.md +171 -171
  578. package/lib/assets/docs/article/grokkingfp/scala/part-1.md +543 -543
  579. package/lib/assets/docs/article/grokkingfp/scala/part-2.md +946 -946
  580. package/lib/assets/docs/article/grokkingfp/scala/part-3.md +919 -919
  581. package/lib/assets/docs/article/grokkingfp/scala/part-4.md +742 -742
  582. package/lib/assets/docs/article/grokkingfp/scala/part-5.md +722 -722
  583. package/lib/assets/docs/article/grokkingfp/scala/part-6.md +867 -867
  584. package/lib/assets/docs/article/grokkingfp/typescript/index.md +273 -273
  585. package/lib/assets/docs/article/grokkingfp/typescript/part-1.md +561 -561
  586. package/lib/assets/docs/article/grokkingfp/typescript/part-2.md +1129 -1129
  587. package/lib/assets/docs/article/grokkingfp/typescript/part-3.md +842 -842
  588. package/lib/assets/docs/article/grokkingfp/typescript/part-4.md +1087 -1087
  589. package/lib/assets/docs/article/grokkingfp/typescript/part-5.md +717 -717
  590. package/lib/assets/docs/article/grokkingfp/typescript/part-6.md +982 -982
  591. package/lib/assets/docs/article/index.md +41 -41
  592. package/lib/assets/docs/article/practical-database-design/index.md +121 -121
  593. package/lib/assets/docs/article/practical-database-design/part1/chapter01.md +288 -288
  594. package/lib/assets/docs/article/practical-database-design/part1/chapter02.md +518 -518
  595. package/lib/assets/docs/article/practical-database-design/part1/chapter03.md +557 -557
  596. package/lib/assets/docs/article/practical-database-design/part2/chapter04.md +924 -924
  597. package/lib/assets/docs/article/practical-database-design/part2/chapter05.md +1627 -1627
  598. package/lib/assets/docs/article/practical-database-design/part2/chapter06.md +2716 -2716
  599. package/lib/assets/docs/article/practical-database-design/part2/chapter07.md +2082 -2082
  600. package/lib/assets/docs/article/practical-database-design/part2/chapter08.md +2105 -2105
  601. package/lib/assets/docs/article/practical-database-design/part2/chapter09.md +2031 -2031
  602. package/lib/assets/docs/article/practical-database-design/part2/chapter10.md +1387 -1387
  603. package/lib/assets/docs/article/practical-database-design/part2/chapter11.md +1677 -1677
  604. package/lib/assets/docs/article/practical-database-design/part2/chapter12.md +1417 -1417
  605. package/lib/assets/docs/article/practical-database-design/part2/chapter13.md +1434 -1434
  606. package/lib/assets/docs/article/practical-database-design/part3/chapter14.md +667 -667
  607. package/lib/assets/docs/article/practical-database-design/part3/chapter15.md +1625 -1625
  608. package/lib/assets/docs/article/practical-database-design/part3/chapter16.md +1915 -1915
  609. package/lib/assets/docs/article/practical-database-design/part3/chapter17.md +1708 -1708
  610. package/lib/assets/docs/article/practical-database-design/part3/chapter18.md +2095 -2095
  611. package/lib/assets/docs/article/practical-database-design/part3/chapter19.md +1123 -1123
  612. package/lib/assets/docs/article/practical-database-design/part3/chapter20.md +1031 -1031
  613. package/lib/assets/docs/article/practical-database-design/part3/chapter21.md +1382 -1382
  614. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter14-orm.md +991 -991
  615. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter15-orm.md +1300 -1300
  616. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter16-orm.md +1166 -1166
  617. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter17-orm.md +1584 -1584
  618. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter18-orm.md +1183 -1183
  619. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter19-orm.md +1016 -1016
  620. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter20-orm.md +1753 -1753
  621. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter21-orm.md +1447 -1447
  622. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter22-orm.md +1878 -1878
  623. package/lib/assets/docs/article/practical-database-design/part4/chapter22.md +965 -965
  624. package/lib/assets/docs/article/practical-database-design/part4/chapter23.md +2069 -2069
  625. package/lib/assets/docs/article/practical-database-design/part4/chapter24.md +2439 -2439
  626. package/lib/assets/docs/article/practical-database-design/part4/chapter25.md +3661 -3661
  627. package/lib/assets/docs/article/practical-database-design/part4/chapter26.md +2916 -2916
  628. package/lib/assets/docs/article/practical-database-design/part4/chapter27.md +3105 -3105
  629. package/lib/assets/docs/article/practical-database-design/part4/chapter28.md +2697 -2697
  630. package/lib/assets/docs/article/practical-database-design/part4/chapter29.md +2544 -2544
  631. package/lib/assets/docs/article/practical-database-design/part4/chapter30.md +2180 -2180
  632. package/lib/assets/docs/article/practical-database-design/part4/chapter31.md +1192 -1192
  633. package/lib/assets/docs/article/practical-database-design/part4/chapter32.md +2101 -2101
  634. package/lib/assets/docs/article/practical-database-design/part5/chapter33.md +1032 -1032
  635. package/lib/assets/docs/article/practical-database-design/part5/chapter34.md +1609 -1609
  636. package/lib/assets/docs/article/practical-database-design/part5/chapter35.md +1453 -1453
  637. package/lib/assets/docs/article/practical-database-design/part5/chapter36.md +1292 -1292
  638. package/lib/assets/docs/article/practical-database-design/part5/chapter37.md +1470 -1470
  639. package/lib/assets/docs/article/practical-database-design/part5/chapter38.md +1698 -1698
  640. package/lib/assets/docs/article/practical-database-design/part5/chapter39.md +2334 -2334
  641. package/lib/assets/docs/article/practical-database-design/study/study2-1.md +1693 -1693
  642. package/lib/assets/docs/article/practical-database-design/study/study2-2.md +1347 -1347
  643. package/lib/assets/docs/article/practical-database-design/study/study2-3.md +2044 -2044
  644. package/lib/assets/docs/article/practical-database-design/study/study2-4.md +2229 -2229
  645. package/lib/assets/docs/article/practical-database-design/study/study2-5.md +2418 -2418
  646. package/lib/assets/docs/article/practical-database-design/study/study3-1.md +2205 -2205
  647. package/lib/assets/docs/article/practical-database-design/study/study3-2.md +2221 -2221
  648. package/lib/assets/docs/article/practical-database-design/study/study3-3.md +2253 -2253
  649. package/lib/assets/docs/article/practical-database-design/study/study3-4.md +2106 -2106
  650. package/lib/assets/docs/article/practical-database-design/study/study3-5.md +2507 -2507
  651. package/lib/assets/docs/article/practical-database-design/study/study4-1.md +2587 -2587
  652. package/lib/assets/docs/article/practical-database-design/study/study4-2.md +2075 -2075
  653. package/lib/assets/docs/article/practical-database-design/study/study4-3.md +1805 -1805
  654. package/lib/assets/docs/article/practical-database-design/study/study4-4.md +1895 -1895
  655. package/lib/assets/docs/article/practical-database-design/study/study4-5.md +2878 -2878
  656. package/lib/assets/docs/assets/css/extra.css +29 -29
  657. package/lib/assets/docs/assets/js/extra.js +44 -44
  658. package/lib/assets/docs/design/index.md +44 -44
  659. package/lib/assets/docs/development/index.md +39 -39
  660. package/lib/assets/docs/index.md +33 -33
  661. package/lib/assets/docs/operation/index.md +27 -27
  662. 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 +546 -546
  663. 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 +341 -341
  664. 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 +581 -581
  665. 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 +642 -642
  666. 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 +465 -465
  667. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +450 -450
  668. package/lib/assets/docs/reference/images/Ansoff.drawio.svg +3 -3
  669. package/lib/assets/docs/reference/images/BMC.drawio.svg +3 -3
  670. package/lib/assets/docs/reference/images/BrandBasicStrategy.drawio.svg +3 -3
  671. package/lib/assets/docs/reference/images/BrandCategorization.drawio.svg +3 -3
  672. package/lib/assets/docs/reference/images/BrandRecurutementStrategy.drawio.svg +3 -3
  673. package/lib/assets/docs/reference/images/BrandValue.drawio.svg +3 -3
  674. package/lib/assets/docs/reference/images/BusinessActivitiy.svg +3 -3
  675. package/lib/assets/docs/reference/images/HRM.drawio.svg +3 -3
  676. package/lib/assets/docs/reference/images/MarketingStructure.drawio.svg +3 -3
  677. package/lib/assets/docs/reference/images/OrganizationElemnts.svg +3 -3
  678. package/lib/assets/docs/reference/images/PPM.drawio.svg +3 -3
  679. package/lib/assets/docs/reference/images/PositioningMap.drawio.svg +3 -3
  680. package/lib/assets/docs/reference/images/ProductLayer.drawio.svg +3 -3
  681. package/lib/assets/docs/reference/images/ProductMix.drawio.svg +3 -3
  682. package/lib/assets/docs/reference/images/SWOT.drawio.svg +3 -3
  683. package/lib/assets/docs/reference/images/TargetMarket.drawio.svg +3 -3
  684. package/lib/assets/docs/reference/images/ThreeGenericStrategies.drawio.svg +3 -3
  685. package/lib/assets/docs/reference/images/VRIO.drawio.svg +3 -3
  686. package/lib/assets/docs/reference/images/ValueChain.drawio.svg +3 -3
  687. package/lib/assets/docs/reference/index.md +53 -53
  688. 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
  689. 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 +2216 -2216
  690. 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 +1878 -1878
  691. 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 +550 -550
  692. 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 +705 -705
  693. 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 +1313 -1313
  694. 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 +311 -311
  695. 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 +599 -599
  696. 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 +528 -528
  697. 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 +689 -689
  698. 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 +461 -461
  699. 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
  700. 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 +1367 -1367
  701. package/lib/assets/docs/reference//344/274/201/346/245/255/347/265/214/345/226/266/350/253/226.md +2637 -2637
  702. 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 +665 -665
  703. 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 +566 -566
  704. 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 +1248 -1248
  705. 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 +518 -518
  706. package/lib/assets/docs/reference//351/201/213/345/226/266/347/256/241/347/220/206.md +1482 -1482
  707. 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 +421 -421
  708. 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 +392 -392
  709. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +305 -305
  710. 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 +1236 -1236
  711. package/lib/assets/docs/requirements/index.md +17 -17
  712. package/lib/assets/docs/review/index.md +5 -5
  713. package/lib/assets/docs/strategy/index.md +17 -17
  714. package/lib/assets/docs/template/ADR.md +30 -30
  715. 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 +1366 -1366
  716. 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 +634 -634
  717. package/lib/assets/docs/template/README.md +50 -50
  718. package/lib/assets/docs/template/index.md +24 -24
  719. 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 +12 -12
  720. 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 +547 -547
  721. 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 +58 -58
  722. 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 +327 -327
  723. 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 +13 -13
  724. 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 +379 -379
  725. 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 +275 -275
  726. package/lib/assets/docs/template//344/272/213/344/276/213/345/210/206/346/236/220.md +513 -513
  727. package/lib/assets/docs/template//344/274/201/346/245/255/345/210/206/346/236/220.md +573 -573
  728. 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
  729. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +669 -669
  730. package/lib/assets/docs/template//350/250/255/350/250/210.md +173 -173
  731. 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 +688 -688
  732. package/lib/assets/gulpfile.js +25 -25
  733. package/lib/assets/mkdocs.yml +139 -139
  734. package/lib/assets/ops/docker/mkdoc/Dockerfile +19 -19
  735. package/lib/assets/ops/docker/sonarqube-local/docker-compose.yml +57 -57
  736. package/lib/assets/ops/scripts/journal.js +180 -180
  737. package/lib/assets/ops/scripts/mkdocs.js +82 -82
  738. package/lib/assets/ops/scripts/release.js +431 -431
  739. package/lib/assets/ops/scripts/sonar_local.js +726 -726
  740. package/lib/assets/ops/scripts/ssh.js +190 -190
  741. package/lib/assets/ops/scripts/vault.js +299 -299
  742. package/lib/assets/package-lock.json +1653 -1653
  743. package/lib/assets/package.json +40 -40
  744. package/lib/gulpfile.js +37 -37
  745. package/package.json +41 -41
@@ -1,550 +1,550 @@
1
- ---
2
- title: エクストリームプログラミング
3
- description:
4
- published: true
5
- date: 2025-03-28T08:18:25.366Z
6
- tags:
7
- editor: markdown
8
- dateCreated: 2025-03-28T08:18:25.366Z
9
- ---
10
-
11
- ```plantuml
12
- @startmindmap
13
- * XP
14
- left side
15
- ** XPとは何か
16
- ** 価値
17
- *** コミュニケーション
18
- *** シンプリシティ
19
- *** フィードバック
20
- *** 勇気
21
- *** リスペクト
22
- *** その他の価値
23
- ** 原則
24
- *** 人間性
25
- *** 経済性
26
- *** 相互利益
27
- *** 自己相似性
28
- *** 改善
29
- *** 多様性
30
- *** ふりかえり
31
- *** 流れ
32
- *** 機会
33
- *** 冗長性
34
- *** 失敗
35
- *** 品質
36
- *** ベイビーステップ
37
- *** 責任の引き受け
38
- right side
39
- ** プラクティス
40
- *** 主要プラクティス
41
- **** いきいきとした仕事
42
- **** 計画
43
- ***** 週次サイクル
44
- ***** 四半期サイクル
45
- ***** ストーリー
46
- ***** ゆとり
47
- **** プログラミング
48
- ***** テストファーストプログラミング
49
- ***** インクリメンタルな設計
50
- ***** ペアプログラミング
51
- **** 全員同席
52
- ***** チーム全体
53
- ***** 情報満載のワークスペース
54
- **** インテグレーション
55
- ***** 10分ビルド
56
- ***** 継続的インテグレーション
57
- *** 導出プラクティス
58
- **** ビジネス
59
- ***** 交渉によるスコープ契約
60
- ***** 利用都度課金
61
- ***** デイリーデプロイ
62
- **** インクリメンタルなデプロイ
63
- **** チーム
64
- ***** 根本原因分析
65
- ***** 本物の顧客参加
66
- ***** チームの継続
67
- ***** チームの縮小
68
- **** プログラミング
69
- ***** コードの共有
70
- ***** コードとテスト
71
- ***** 単一のコードベース
72
- ** XPチーム全体
73
- *** テスター
74
- *** インタクラクションデザイナー
75
- *** アーキテクト
76
- *** プロジェクトマネージャー
77
- *** プロダクトマネージャー
78
- *** 経営幹部
79
- *** テクニカルライター
80
- *** ユーザー
81
- *** プログラマー
82
- *** 人事
83
- *** 役割
84
- @endmindmap
85
- ```
86
-
87
- ## 1. XPとは何か
88
- > XPとは、以前はうまくいっていたかもしれないが、今では最高の仕事の邪魔になっている習慣やパターンを手放すことだ。
89
-
90
- - **効果のある習慣を選び取ること**
91
- 効果のない技術的・社会的な古い習慣を捨て、効果的な新しい習慣を採用する。
92
-
93
- - **今日やるべきことを理解すること**
94
- チームや個人がやるべきことを正確に把握し、目標達成につなげる。
95
-
96
- - **自己評価**
97
- チームの目標に貢献した自分の成果を評価し、自己成長につなげる。
98
-
99
- - **人間としての欲求を満たすこと**
100
- 開発を通じて達成感や協調など、人間的欲求を満たす。
101
-
102
- ---
103
-
104
- ## 2. 価値(Values)
105
-
106
- ```plantuml
107
- @startmindmap
108
- * XP
109
- ** 価値
110
- *** コミュニケーション
111
- *** シンプリシティ
112
- *** フィードバック
113
- *** 勇気
114
- *** リスペクト
115
- *** その他の価値
116
- @endmindmap
117
- ```
118
-
119
- **価値**とは、ある状況における好き嫌いの根源にあるものだ。
120
-
121
- - **コミュニケーション**
122
- コミュニケーションは、チーム感覚や効果的な協力関係を生み出すために重要なものである。だが、効果的なソフトウェア開発に必要なのは、コミュニケーションだけではない。
123
-
124
- - **シンプリシティ(単純さ)**
125
- 価値は、お互いにバランスを取り合ったり、サポートしあったりするものである。
126
- たとえばコミュニケーションによって、現状の観点からは必要がない、あるいは時間的猶予がある要件を削除すれば、それがシンプリシティの達成につながる。
127
-  **シンプリシティ**を達成すれば、必要な**コミュニケーション**も少なくなる。
128
-
129
- - **フィードバック**
130
- フィードバックはコミュニケーションに欠かせない。「パフォーマンスは問題になるかな?」「わからないね。パフォーマンス測定用のプロトタイプを作って確認してみよう」。
131
-  フィードバックはシンプリシティにも影響する。3つの解決策の中で、どれが最もシンプルになるだろうか?そんなときは、3つすべてを試して確認してみよう。
132
-  同じものを3回実装するのはムダに思えるかもしれない。だが、シンプリシティが備わった納得できる解決差にたどり着くには、こうするのが最も効率的な方法だろう。
133
-  それと同時に、システムがシンプルになれば、その分だけ**フィードバック**を受け取ることも簡単になる。
134
-
135
- - **勇気**
136
- **勇気**のみでは危険だが、他の価値と合わせれば強力だ。**勇気**を持って真実を語れば(たとえそれが不愉快なことであっても)、**コミュニケーション**や信頼が強化されていく。
137
- うまくいかない可決策を捨てて、**勇気**を持って新しい解決策を見つければ、**シンプリシティ**が促進される。
138
- **勇気**を持って現実の具体的な答えを求めれば、そこから**フィードバック**が生まれる。
139
-
140
- - **リスペクト**
141
- チームメンバーがお互いに関心がなく、何をしているかを気にもとめないようであれば、XPはうまくいかない。
142
-  チームメンバーがプロジェクトを大切にしたいのであれば、何をしたところで救えるはずもない。
143
-
144
- - **その他の価値**
145
- 最も重要なのは、チームの振る舞いをチームの価値に合わせることである。そうすれば、複数の価値を同時に維持する無駄を最小化することができる。
146
-
147
- ---
148
-
149
- ## 3. 原則(Principles)
150
-
151
- ```plantuml
152
- @startmindmap
153
- * XP
154
- ** 原則
155
- *** 人間性
156
- *** 経済性
157
- *** 相互利益
158
- *** 自己相似性
159
- *** 改善
160
- *** 多様性
161
- *** ふりかえり
162
- *** 流れ
163
- *** 機会
164
- *** 冗長性
165
- *** 失敗
166
- *** 品質
167
- *** ベイビーステップ
168
- *** 責任の引き受け
169
- @endmindmap
170
- ```
171
-
172
- **原則は**、その分野に特化した活動の指針である。
173
-
174
- - **人間性**
175
- XPのプラクティスには、ビジネスニーズと個人の欲求の両方を満たすものを選んでいる。
176
-
177
- - **経済性**
178
- ソフトウェア開発に影響を与える経済性には2つの側面がある。貨幣のタイムバリューと、システムやチームのオプションバリューだ。
179
- ソフトウェア開発の場合は、早めにお金を稼ぎ、あとでお金を使うほうがバリューが高い。
180
- ソフトウェア開発の経済性のもうひとつの源泉は、将来のオプションバリューである。たとえば、メディアのスケジューリングプログラムを開発したとしよう。
181
- それを他のスケジューリングのタスクにも再利用できたとすれば、本来の目的だけに使うよりもバリューが高い。
182
-
183
- - **相互利益**
184
- あらゆる活動は、関係者全員の利益にならなければいけない。相互利益とは、最も重要であり、最も実行が難しいXPの原則である。
185
-
186
- - **自己相似性**
187
- ソフトウェア開発にも同じ原則が当てはまる。規模が違っていても、解決策の構造を新しい文脈にコピーしようとするからだ。
188
- たとえば、先に失敗するテストを書いてから、それを動かすという開発の基本的なリズムがある。このリズムはあらゆる規模作用する。
189
- 四半期単位では、扱いたいテーマをテーマを一覧にして、ストーリーを使って取り組んでいく。週単位では、扱いたいストーリーを一覧にして、ストーリーを表すテストをを書いて、それを動かすようにする。
190
- 数時間単位では、書かなければいけないテストを一覧にして、テストを書いて、動かして、別のテストを書いて、その両方を動かして、これをテストの一覧が終わるまで繰り返す。
191
-
192
- - **改善**
193
- XPのポイントは、改善によってソフトウェア開発の高みを目指すことだ。改善のライフサイクルでは、明日をよりよくするために必要な気づきや理解を追い求めながら、今日できる最高のことをやる。
194
- 完璧になるのを待ってから始めるわけではない。
195
-
196
- - **多様性**
197
- 多様性は**チーム全体**のプラクティスで表現されている。このプラクティスは、多種多様なスキルや視点を持った人たちをチームにまとめるというものだ。
198
-  異なる視点を持った人たちが、さまざまな計画サイクルを使い、時間内に最もバリューの高いソフトウェアを作り出すという目的を達成するのである。
199
-
200
- - **ふりかえり**
201
- 優れたチームは単に仕事をしているだけではない。**どうやって**仕事をしているのか、**なぜ**仕事をしているのかを考えている。なぜ成功したのか、なぜ失敗したのかを分析している。
202
-  自分たちのミスを隠そうとしない。それを明らかにして、そこから学ぼうとするのである。偶然に優秀になれる人などいないのだ。
203
-
204
- - **流れ**
205
- 流れの原則では、改善のために小さなバリューを何度もデプロイすることを提唱している。
206
-
207
- - **機会**
208
- XPの実践を始めると、必ず問題に直面する。エクストリームになるというのは、それぞれの問題を個人の成長、人間関係の深化、ソフトウェアの改善などの機会に意識的に変換することである。
209
-
210
- - **冗長性**
211
- ソフトウェア開発の重要で困難な問題は、複数の方法で解決すべきである。ひとつの解決策が完全に失敗しても、その他の解決策で惨事を食い止めることができるからだ。
212
-  冗長にコストがかかるとしても、惨事から救われるならそのコストは支払うに値する。
213
-
214
- - **失敗**
215
- うまく成功できなければ、失敗しよう。何をすべきかわからないときには、失敗のリスクを受け入れることが成功につながる最短で確実な道である。
216
-
217
- - **品質**
218
- 品質が心配だからといって、何もしないことの言い訳にしてはいけない。きれいに実装する方法がわからなければ、できる限りのことをすればいい。きれいだが時間のかかる方法を知っていれば、今の時間でできるかぎりのことをすればいい。
219
- そして、あとからきれいな方法で完成させるのだ。こうしたやり方は、アーキテクチャを進化させるときにもよく使う。
220
-
221
- - **ベイビーステップ**
222
- 大きな変更が失敗してチームがムダに後退するよりも、小さなステップのオーバヘッドのほうが小さい。
223
- ベイビーステップは**テストファーストプログラミング**や**継続的インテグレーション**などのプラクティスで表現されている。
224
-
225
- - **責任の引き受け**
226
- 責任は割り当てるものではなく、引き受けることしかできない。誰かがあなたに責任を担わせようとしても、責任を持つかどうかを選ぶのはあなたである。
227
-
228
- ---
229
-
230
- ## 4. プラクティス(Practices)
231
-
232
- ```plantuml
233
- @startmindmap
234
- * XP
235
- ** プラクティス
236
- *** 主要プラクティス
237
- **** いきいきとした仕事
238
- **** 計画
239
- ***** 週次サイクル
240
- ***** 四半期サイクル
241
- ***** ストーリー
242
- ***** ゆとり
243
- **** プログラミング
244
- ***** テストファーストプログラミング
245
- ***** インクリメンタルな設計
246
- ***** ペアプログラミング
247
- **** 全員同席
248
- ***** チーム全体
249
- ***** 情報満載のワークスペース
250
- **** インテグレーション
251
- ***** 10分ビルド
252
- ***** 継続的インテグレーション
253
- *** 導出プラクティス
254
- **** ビジネス
255
- ***** 交渉によるスコープ契約
256
- ***** 利用都度課金
257
- ***** デイリーデプロイ
258
- **** インクリメンタルなデプロイ
259
- **** チーム
260
- ***** 根本原因分析
261
- ***** 本物の顧客参加
262
- ***** チームの継続
263
- ***** チームの縮小
264
- **** プログラミング
265
- ***** コードの共有
266
- ***** コードとテスト
267
- ***** 単一のコードベース
268
- @endmindmap
269
- ```
270
- **プラクティス**は、日常的な取り組みである。
271
-
272
- ### 4.1 主要プラクティス(Primary Practices)
273
- あなたが他にやっているものとは無関係に役に立つものである。
274
- すぐに改善につながり、どれからでも安全に始められる。
275
-
276
- - **全員同席**
277
- **チーム全体**が入れる十分な広さのオープンスペースで開発すること。近くに小さなプライベート空間を用意するか、別の場所でプライバシーを確保できるように労働時間を制限するなどして、チームメンバーのプライバシーや「自分だけの」スペースといった欲求を満たせるようにすること。
278
-
279
- - **チーム全体**
280
- チームの全体感。つまり、成功に必要なすべての資源の準備を整えることが、このプラクティスの目的である。プロジェクトの健全性のために綿密なやりとりが必要なところでは、機能単位ではなく、チーム単位でやり取りすべきだ。
281
-
282
- - **情報満載のワークスペース**
283
- 仕事の内容がわかるようなワークスペースをつくること。プロジェクトに関心のある人がチームのスペースを見たときに、15秒で状況を把握できるようにすべきである。
284
- さらに近づいて見たときには、抱えている問題や潜在的な問題に関する詳しい情報を入手できるようにしておこう。
285
-
286
- - **いきいきとした仕事**
287
- 生産的になれる時間だけ働くこと。無理なく続けられる時間だけ働くこと。意味もなく燃えてきてしまい、次の2日間の作業が台無しになれば、あなたにとってもチームにとってもよろしくない。
288
-
289
- - **ペアプログラミング**
290
- ペアプログラミングとは、2人でプログラミング(および分析、設計、テスト)とプログラムの改良を同時に行うやりとりのことである。ペアプログラミングでは、以下のようなことをする。
291
-
292
- - お互いにタスクに集中する。
293
- - システムの改良について意見を出し合う。
294
- - アイデアを明確にする。
295
- - パートナーがハマったら主導権を握り、相手の失望感を軽減させる。
296
- - お互いにチームのプラクティスの説明責任を果たせるようにする。
297
-
298
- - **ストーリー**
299
- 顧客に見える機能の単位を使って計画すること。たとえば、「これまでのレスポンスタイムで5倍のトラフィックを処理する」「よく使う番号に2クリックの短縮を提供する」などだ。
300
-  ストーリーが書けたら、必要な開発工程をすぐに見積もること。XPスタイルの計画づくりの特徴は、ストーリーを書いたらすぐに見積もることだ。こうすることで、最小の投資で最大のリターンを得る方法を考えられる。
301
-
302
- - **週次サイクル**
303
- 1週間分の仕事の計画をまとめて立てること。そして、週のはじめにミーティングを入れること。ミーティングでは、以下のことを行う。
304
-
305
- - 先週の進捗が期待していた進捗と合致しているかなど、これまでの進捗状況をレビューする。
306
- - 今週実装する1週間分のストーリーを顧客に選んでもらう。
307
- - ストーリーをタスクに分解する。チームメンバーはタスクにサインアップして、それぞれのタスクを見積もる。
308
-
309
- - **四半期サイクル**
310
- 四半期分の計画をまとめて立てること。四半期に一度は、チーム、プロジェクト、進捗、大きなゴールの調整について、ふりかえること。四半期の計画では、以下のことを行う。
311
-
312
- - ボトルネックを特定する(特にチームの外側で制御されているもの)。
313
- - 修正作業に着手する。
314
- - 四半期のテーマを計画する。
315
- - テーマに取り組むための四半期分のストーリーを選択する。
316
- - プロジェクトを組織に適合させる全体像に集中する。
317
-
318
- - **ゆとり**
319
- どのような計画にも、遅れたときに外せるような重要度の低いタスクを含めること。あとからストーリーを追加したり、約束より多くのストーリーをデリバリーしたりするのは、いつでもできる。
320
- 不信感を抱かれたり、約束を破ったりしたときは、やるべきことをきちんと果たすことが重要だ。少しでもやるべきことを果たせば、人間関係の再構築につながるはずである。
321
-
322
- - **10分ビルド**
323
- 自動的にシステム全体をビルドして、すべてのテストを10分以内に実行させること。ビルドに10分以上かかるようだと使用頻度が減り、フィードバックの機会が失われてしまう。
324
-
325
- - **継続的インテグレーション**
326
- 数時間以内に変更箇所のインテグレーションとテストをすること。チームプログラミングとは、分割統治の問題ではない。分割、統治、結合(インテグレーション)の問題である。
327
-
328
- - **テストファーストプログラミング**
329
- コードを変更する前に、失敗する自動テストを書くこと。テストファーストプログラミングは、以下のような多くの問題を一度に解決する。
330
-
331
- - スコープクリープ - プログラミングに夢中になって我を忘れてしまうと、「念のため」に余計なコードを追加しがちである。プログラムのあるべき姿を明確に客観的に記述すれば、本来のコーディングに集中できる。どうしてもコードを追加したいなら、手元の作業を終えたあとに別のテストを書くようにしよう。
332
- - 結合度と凝集度 - テストを書くのが難しければ、テストの問題ではなく、設計に問題があるのだろう。疎結合で凝集度の高いコードは、テストしやすい。
333
- - 信頼 - 動かないコードの作者を信頼するのは難しい。動くきれいなコードを書いて、自動テストで意図を示せば、チームメイトから信頼を得られるはずだ。
334
- - リズム - コーディングをすると何時間もさまよいがちである。テストファーストでプログラミングすれば、次に何をすべきか(別のテストを書けばいいのか、それとも失敗したテストを修正すればいいのか)が明確になる。そして、それは自然で効率的な開発のリズム(テスト、コード、リファクタ、テスト、コード、リファクタ)なっていく。
335
-
336
- - **インクリメンタルな設計**
337
- システムの設計に毎日手を入れること。システムの設計は、その日のシステムのニーズにうまく合致させること。最適だと思われる設計が理解できなくなってきたら、少しだが着実に、自分の理解できる設計に戻していくこと。
338
- 小さくて安全なステップで稼働中のシステムを変更する経験を踏み重ねていくと、設計にかける労力を遅延させることができるようになる。そうすれば、システムはシンプルになり、進捗は早くなり、テストが書きやすくなる。システムが小さくなるので、チームのコミュニケーションも軽減できる。
339
-
340
- ### 4.2 導出プラクティス(Corollary Practices)
341
- 先に主要プラクティスを習得しておかなければ難しいだろう
342
-
343
- - **本物の顧客参加**
344
- あなたのシステムによって生活やビジネスに影響を受ける人をチームの一員にすること。明確なビジョンを持った顧客であれば、四半期や週単位の計画づくりに参加できる。
345
- そうした顧客は自由に使える予算を持っていることもある。予算は開発で利用可能なキャパシティーの一部だ。競合他社より半年も早く問題に気づくような顧客であれば、その顧客が必要とするシステムを構築することによって、あなたの競合他社に対する優位性にもつながる可能性がある。
346
-
347
- - **インクリメンタルなデプロイ**
348
- レガシーシステムをリプレースするときは、プロジェクトの初期段階から少しずつ引継ぎをすること。
349
-
350
- - **チームの継続**
351
- 優秀なチームは継続させること。大きな組織は、ヒトをモノに抽象化する傾向がある。互換性のあるプログラミングユニットだと考えているのだ。ソフトウェアのバリューは、みんなが知っていることや行っていることだけでなく、人間関係やみんなで一緒に成し遂げることによっても生み出される。
352
- 要員計画の問題を単純化するためだけに、人間関係や信頼の大切さを無視するのは経済的ではない。
353
-
354
- - **チームの縮小**
355
- チームの能力が高まったら、仕事量を維持しながら少しづつチームの規模を縮小すること。
356
-
357
- - **根本原因分析**
358
- 開発後に欠陥が見つかるたびに、欠陥とその原因を取り除くこと。欠陥の再発防止だけではなく、同じ種類の過ちをチームが二度と犯さないようにすることが目的だ。
359
- 以下は、欠陥に対処するためのXPのプロセスである。
360
-
361
- - 欠陥を実証するシステムレベルの自動テストを書く。そこには期待する挙動も含めておく。これは、顧客、顧客サポート、開発者が行える。
362
- - 結果を再現する最小限のスコープでユニットテストを書く。
363
- - ユニットテストが動くようにシステムを修正する。これにより、システムテストもパスするはずだ。パスしなければ、2へ戻る。
364
- - 欠陥を修正出来たら、なぜ欠陥が生み出されたのか、なぜ発見できなかったのかを見極める。今後は同様の欠陥が再発しないように、必要な変更を加える。
365
-
366
- - **コードの共有**
367
- チームの誰もが、システムのあらゆる部分をいつでも改善できる。システムに問題があり、その修正が現在作業中のスコープの範囲内なのであれば、遠慮せずに修正すべきである。
368
-
369
- - **コードとテスト**
370
- コードとテストだけを永続的な作成物として保守すること。その他のドキュメントについては、コードとテストから生成すること。プロジェクトの重要な履歴の維持については、社会的な仕組みに任せること。
371
-
372
- - **単一のコードベース**
373
- コードの流れは一つだけである。一時的なブランチで開発することもできるが、数時間以上も維持してはいけない。
374
-
375
- - **デイリーデプロイ**
376
- 新しいソフトウェアを毎晩プロダクションに反映すること。プログラマーの手元にあるものとプロダクションにあるものが違うのはリスクだ。プログラマーの意思決定につながる正確なフィードバックが得られない危険性がある。
377
-
378
- - **交渉によるスコープ契約**
379
- ソフトウェア開発の契約では、期間、費用、品質を固定すること。システムの明確なスコープについては、継続的に交渉を求めること。長期的なひとつの契約ではなく、短期多岐な契約をいくつも結ぶようにして、リスクを減らすこと。
380
-
381
- - **利用都度課金**
382
- 利用都度課金システムがあれば、システムが利用されるたびにお金を請求することができる。お金は究極のフィードバックだ。お金には実体があり、これから自分で使うこともできる。お金の流れをソフトウェア開発に直接接続すれば、改善を推進するための正確でタイムリーな情報を得られるはずだ。
383
-
384
- ---
385
-
386
- ## 5. XPチーム全体
387
-
388
- ```plantuml
389
- @startuml
390
- title XPチーム全体
391
-
392
- rectangle "XPチーム全体" as team {
393
- actor "経営幹部" as G
394
- actor "プロジェクトマネージャー" as E
395
- actor "プロダクトマネージャー" as F
396
- actor "アーキテクト" as D
397
- actor "プログラマー" as J
398
- actor "テスター" as B
399
- actor "インタラクションデザイナー" as C
400
- actor "テクニカルライター" as H
401
- actor "ユーザー" as I
402
- }
403
-
404
- G --> E
405
- G --> F
406
- G --> I
407
- E --> D
408
- E --> J
409
- E --> C
410
- E --> B
411
- E --> H
412
- E --> I
413
- D --> J
414
- F --> I
415
- B --> J
416
- B --> I
417
- C --> I
418
- J --> I
419
- H --> I
420
- @enduml
421
- ```
422
-
423
- - **テスター**
424
- XPチームのテスターは、システムレベルの自動テストの選択や記述について開発前に顧客を支援したり、プログラマーにテスト技法をコーチしたりする。
425
-
426
- - **インタラクションデザイナー**
427
- XPチームのインタラクションデザイナーは、システム全体のメタファーを選んだり、**ストーリー**を書いたり、デプロイされたシステムの利用状況を評価して、新しいストーリーの機会を見つけたりする。
428
- XPチームでは、インタクラクションデザイナーは顧客と一緒に働いて、ストーリーの記述や明確化を支援する。
429
-
430
- - **アーキテクト**
431
- XPチームのアーキテクトは、大規模リファクタリングの調査や実施をしたり、アーキテクチャにストレスを与えるシステムレベルのテストを書いたり、**ストーリー**を実装したりする。
432
- XPチームのアーキテクトのもうひとつの仕事は、システムの分割だ。分割は事前に行う一度きりのタスクではない。XPチームは統治分割を行う。分割統治ではない。つまり、小さなチームで小さなシステムを作ってから、自然な切れ目を見つけ、比較的独立した単位に分割して、システムを拡張するのである。
433
-
434
- - **プロジェクトマネージャー**
435
- XPチームのプロジェクトマネージャーは、チーム内のコミュニケーションを円滑にしたり、顧客、サプライヤー、その他のチーム外の組織とのコミュニケーションを調整したりする。
436
-
437
- - **プロダクトマネージャー**
438
- XPのプロダクトマネージャーは、**ストーリー**を書いたり、**四半期サイクル**のテーマやストーリーを選択したり、**週次サイクル**のストーリーを選択したり、実装によって明らかになったストーリーのあいまいな部分の質問に答えたりする。
439
-
440
- - **経営幹部**
441
- 経営幹部は、XPチームに勇気、自信、説明責任を提供する。
442
-
443
- - **テクニカルライター**
444
- XPチームにおけるテクニカルパブリケーションの役割は、フィーチャーのフィードバックを早期に提供したり、ユーザーとの密接な関係を築いたりすることである。
445
-
446
- - **ユーザー**
447
- XPチームのユーザーは、開発中にストーリーの記述や選択の支援をしたり、専門領域の意思決定をしたりする。構築中のシステムと類似したシステムに関する幅広い知識や経験をもっていたり、システムを実際に利用するユーザーコミュニティとの強い関係性を持っていたりすれば、そのユーザーは非常に大切な存在だ。
448
-
449
- - **プログラマー**
450
- XPチームのプログラマーは、**ストーリー**やタスクを見積もったり、ストーリーをタスクに分解したり、テストを書いたり、フィーチャーを実装するコードを書いたり、退屈な開発プロセスを自動化したり、システムの設計を少しづつ改善したりする。
451
-
452
- - **人事**
453
- XPチームのメンバーを個人として評価するといっても、XP適用前の評価の仕方を大きく変える必要はない。以下は、XPにおける重要性の高い従業員だ。
454
-
455
- - リスペクトを持って行動できる。
456
- - 他人とうまくやれる。
457
- - イニシアチブをとれる。
458
- - 約束したものデリバリーできる。
459
-
460
- - **その他の役割**
461
- 必要に応じた追加役割。
462
-
463
- ---
464
-
465
- ## 6. チェックリスト
466
-
467
- ### 主要プラクティス
468
-
469
- - [ ] **いきいきとした仕事**
470
- - 生産的になれる時間だけ働いていますか?
471
-
472
- #### **計画**
473
- - [ ] **週次サイクル**
474
- - 1週間分の計画を作成し、進捗をレビューしていますか?
475
- - ストーリーをタスクに分解していますか?
476
-
477
- - [ ] **四半期サイクル**
478
- - チームの進捗やボトルネックをレビューしていますか?
479
- - 四半期ごとの計画テーマを設定していますか?
480
-
481
- - [ ] **ストーリー**
482
- - ストーリー単位で顧客に機能を提案していますか?
483
-
484
- - [ ] **ゆとり**
485
- - 計画に重要度の低いタスクを含め、余裕を持っていますか?
486
-
487
- #### **プログラミング**
488
- - [ ] **テストファーストプログラミング**
489
- - コードを書く前に失敗するテストを書く習慣がありますか?
490
-
491
- - [ ] **インクリメンタルな設計**
492
- - 小さい手順でシステムの設計・改善を行っていますか?
493
-
494
- - [ ] **ペアプログラミング**
495
- - 2人でアイデアを共有しながらコードを書いていますか?
496
-
497
- #### **全員同席**
498
- - [ ] **チーム全体**
499
- - 必要なスキルやリソースをチーム全体で共有していますか?
500
-
501
- - [ ] **情報満載のワークスペース**
502
- - 外部の訪問者が15秒で状況を把握できるように情報を可視化していますか?
503
-
504
- #### **インテグレーション**
505
- - [ ] **10分ビルド**
506
- - すべてのテストを含むビルドが10分以内に完了しますか?
507
-
508
- - [ ] **継続的インテグレーション**
509
- - 数時間おきに変更をマージしてテストを実行していますか?
510
-
511
- ---
512
-
513
- ### 導出プラクティス
514
-
515
- #### **ビジネス**
516
- - [ ] **交渉によるスコープ契約**
517
- - スコープを柔軟に交渉しながら契約内容を進めていますか?
518
-
519
- - [ ] **利用都度課金**
520
- - ソフトウェアが使用されるたびに課金モデルを取り入れていますか?
521
-
522
- - [ ] **デイリーデプロイ**
523
- - 毎日ソフトウェアをプロダクションにデプロイしていますか?
524
-
525
- #### **インクリメンタルなデプロイ**
526
- - [ ] 徐々にレガシーシステムのリプレースを進めていますか?
527
-
528
- #### **チーム**
529
- - [ ] **根本原因分析**
530
- - バグの原因を調査し、再発防止策を講じていますか?
531
-
532
- - [ ] **本物の顧客参加**
533
- - 顧客が計画作成や改善に参加していますか?
534
-
535
- - [ ] **チームの継続**
536
- - チームメンバーが一貫性を持って協力していますか?
537
-
538
- - [ ] **チームの縮小**
539
- - チームが成長した段階で規模を縮小して効率化していますか?
540
-
541
- #### **プログラミング**
542
- - [ ] **コードの共有**
543
- - メンバー全員がシステムの任意の部分を改善できますか?
544
-
545
- - [ ] **コードとテスト**
546
- - 永続する作成物としてコードとテストのみを保守していますか?
547
-
548
- - [ ] **単一のコードベース**
549
- - ブランチを短期間で管理し、コードの中心ラインを保っていますか?
550
-
1
+ ---
2
+ title: エクストリームプログラミング
3
+ description:
4
+ published: true
5
+ date: 2025-03-28T08:18:25.366Z
6
+ tags:
7
+ editor: markdown
8
+ dateCreated: 2025-03-28T08:18:25.366Z
9
+ ---
10
+
11
+ ```plantuml
12
+ @startmindmap
13
+ * XP
14
+ left side
15
+ ** XPとは何か
16
+ ** 価値
17
+ *** コミュニケーション
18
+ *** シンプリシティ
19
+ *** フィードバック
20
+ *** 勇気
21
+ *** リスペクト
22
+ *** その他の価値
23
+ ** 原則
24
+ *** 人間性
25
+ *** 経済性
26
+ *** 相互利益
27
+ *** 自己相似性
28
+ *** 改善
29
+ *** 多様性
30
+ *** ふりかえり
31
+ *** 流れ
32
+ *** 機会
33
+ *** 冗長性
34
+ *** 失敗
35
+ *** 品質
36
+ *** ベイビーステップ
37
+ *** 責任の引き受け
38
+ right side
39
+ ** プラクティス
40
+ *** 主要プラクティス
41
+ **** いきいきとした仕事
42
+ **** 計画
43
+ ***** 週次サイクル
44
+ ***** 四半期サイクル
45
+ ***** ストーリー
46
+ ***** ゆとり
47
+ **** プログラミング
48
+ ***** テストファーストプログラミング
49
+ ***** インクリメンタルな設計
50
+ ***** ペアプログラミング
51
+ **** 全員同席
52
+ ***** チーム全体
53
+ ***** 情報満載のワークスペース
54
+ **** インテグレーション
55
+ ***** 10分ビルド
56
+ ***** 継続的インテグレーション
57
+ *** 導出プラクティス
58
+ **** ビジネス
59
+ ***** 交渉によるスコープ契約
60
+ ***** 利用都度課金
61
+ ***** デイリーデプロイ
62
+ **** インクリメンタルなデプロイ
63
+ **** チーム
64
+ ***** 根本原因分析
65
+ ***** 本物の顧客参加
66
+ ***** チームの継続
67
+ ***** チームの縮小
68
+ **** プログラミング
69
+ ***** コードの共有
70
+ ***** コードとテスト
71
+ ***** 単一のコードベース
72
+ ** XPチーム全体
73
+ *** テスター
74
+ *** インタクラクションデザイナー
75
+ *** アーキテクト
76
+ *** プロジェクトマネージャー
77
+ *** プロダクトマネージャー
78
+ *** 経営幹部
79
+ *** テクニカルライター
80
+ *** ユーザー
81
+ *** プログラマー
82
+ *** 人事
83
+ *** 役割
84
+ @endmindmap
85
+ ```
86
+
87
+ ## 1. XPとは何か
88
+ > XPとは、以前はうまくいっていたかもしれないが、今では最高の仕事の邪魔になっている習慣やパターンを手放すことだ。
89
+
90
+ - **効果のある習慣を選び取ること**
91
+ 効果のない技術的・社会的な古い習慣を捨て、効果的な新しい習慣を採用する。
92
+
93
+ - **今日やるべきことを理解すること**
94
+ チームや個人がやるべきことを正確に把握し、目標達成につなげる。
95
+
96
+ - **自己評価**
97
+ チームの目標に貢献した自分の成果を評価し、自己成長につなげる。
98
+
99
+ - **人間としての欲求を満たすこと**
100
+ 開発を通じて達成感や協調など、人間的欲求を満たす。
101
+
102
+ ---
103
+
104
+ ## 2. 価値(Values)
105
+
106
+ ```plantuml
107
+ @startmindmap
108
+ * XP
109
+ ** 価値
110
+ *** コミュニケーション
111
+ *** シンプリシティ
112
+ *** フィードバック
113
+ *** 勇気
114
+ *** リスペクト
115
+ *** その他の価値
116
+ @endmindmap
117
+ ```
118
+
119
+ **価値**とは、ある状況における好き嫌いの根源にあるものだ。
120
+
121
+ - **コミュニケーション**
122
+ コミュニケーションは、チーム感覚や効果的な協力関係を生み出すために重要なものである。だが、効果的なソフトウェア開発に必要なのは、コミュニケーションだけではない。
123
+
124
+ - **シンプリシティ(単純さ)**
125
+ 価値は、お互いにバランスを取り合ったり、サポートしあったりするものである。
126
+ たとえばコミュニケーションによって、現状の観点からは必要がない、あるいは時間的猶予がある要件を削除すれば、それがシンプリシティの達成につながる。
127
+  **シンプリシティ**を達成すれば、必要な**コミュニケーション**も少なくなる。
128
+
129
+ - **フィードバック**
130
+ フィードバックはコミュニケーションに欠かせない。「パフォーマンスは問題になるかな?」「わからないね。パフォーマンス測定用のプロトタイプを作って確認してみよう」。
131
+  フィードバックはシンプリシティにも影響する。3つの解決策の中で、どれが最もシンプルになるだろうか?そんなときは、3つすべてを試して確認してみよう。
132
+  同じものを3回実装するのはムダに思えるかもしれない。だが、シンプリシティが備わった納得できる解決差にたどり着くには、こうするのが最も効率的な方法だろう。
133
+  それと同時に、システムがシンプルになれば、その分だけ**フィードバック**を受け取ることも簡単になる。
134
+
135
+ - **勇気**
136
+ **勇気**のみでは危険だが、他の価値と合わせれば強力だ。**勇気**を持って真実を語れば(たとえそれが不愉快なことであっても)、**コミュニケーション**や信頼が強化されていく。
137
+ うまくいかない可決策を捨てて、**勇気**を持って新しい解決策を見つければ、**シンプリシティ**が促進される。
138
+ **勇気**を持って現実の具体的な答えを求めれば、そこから**フィードバック**が生まれる。
139
+
140
+ - **リスペクト**
141
+ チームメンバーがお互いに関心がなく、何をしているかを気にもとめないようであれば、XPはうまくいかない。
142
+  チームメンバーがプロジェクトを大切にしたいのであれば、何をしたところで救えるはずもない。
143
+
144
+ - **その他の価値**
145
+ 最も重要なのは、チームの振る舞いをチームの価値に合わせることである。そうすれば、複数の価値を同時に維持する無駄を最小化することができる。
146
+
147
+ ---
148
+
149
+ ## 3. 原則(Principles)
150
+
151
+ ```plantuml
152
+ @startmindmap
153
+ * XP
154
+ ** 原則
155
+ *** 人間性
156
+ *** 経済性
157
+ *** 相互利益
158
+ *** 自己相似性
159
+ *** 改善
160
+ *** 多様性
161
+ *** ふりかえり
162
+ *** 流れ
163
+ *** 機会
164
+ *** 冗長性
165
+ *** 失敗
166
+ *** 品質
167
+ *** ベイビーステップ
168
+ *** 責任の引き受け
169
+ @endmindmap
170
+ ```
171
+
172
+ **原則は**、その分野に特化した活動の指針である。
173
+
174
+ - **人間性**
175
+ XPのプラクティスには、ビジネスニーズと個人の欲求の両方を満たすものを選んでいる。
176
+
177
+ - **経済性**
178
+ ソフトウェア開発に影響を与える経済性には2つの側面がある。貨幣のタイムバリューと、システムやチームのオプションバリューだ。
179
+ ソフトウェア開発の場合は、早めにお金を稼ぎ、あとでお金を使うほうがバリューが高い。
180
+ ソフトウェア開発の経済性のもうひとつの源泉は、将来のオプションバリューである。たとえば、メディアのスケジューリングプログラムを開発したとしよう。
181
+ それを他のスケジューリングのタスクにも再利用できたとすれば、本来の目的だけに使うよりもバリューが高い。
182
+
183
+ - **相互利益**
184
+ あらゆる活動は、関係者全員の利益にならなければいけない。相互利益とは、最も重要であり、最も実行が難しいXPの原則である。
185
+
186
+ - **自己相似性**
187
+ ソフトウェア開発にも同じ原則が当てはまる。規模が違っていても、解決策の構造を新しい文脈にコピーしようとするからだ。
188
+ たとえば、先に失敗するテストを書いてから、それを動かすという開発の基本的なリズムがある。このリズムはあらゆる規模作用する。
189
+ 四半期単位では、扱いたいテーマをテーマを一覧にして、ストーリーを使って取り組んでいく。週単位では、扱いたいストーリーを一覧にして、ストーリーを表すテストをを書いて、それを動かすようにする。
190
+ 数時間単位では、書かなければいけないテストを一覧にして、テストを書いて、動かして、別のテストを書いて、その両方を動かして、これをテストの一覧が終わるまで繰り返す。
191
+
192
+ - **改善**
193
+ XPのポイントは、改善によってソフトウェア開発の高みを目指すことだ。改善のライフサイクルでは、明日をよりよくするために必要な気づきや理解を追い求めながら、今日できる最高のことをやる。
194
+ 完璧になるのを待ってから始めるわけではない。
195
+
196
+ - **多様性**
197
+ 多様性は**チーム全体**のプラクティスで表現されている。このプラクティスは、多種多様なスキルや視点を持った人たちをチームにまとめるというものだ。
198
+  異なる視点を持った人たちが、さまざまな計画サイクルを使い、時間内に最もバリューの高いソフトウェアを作り出すという目的を達成するのである。
199
+
200
+ - **ふりかえり**
201
+ 優れたチームは単に仕事をしているだけではない。**どうやって**仕事をしているのか、**なぜ**仕事をしているのかを考えている。なぜ成功したのか、なぜ失敗したのかを分析している。
202
+  自分たちのミスを隠そうとしない。それを明らかにして、そこから学ぼうとするのである。偶然に優秀になれる人などいないのだ。
203
+
204
+ - **流れ**
205
+ 流れの原則では、改善のために小さなバリューを何度もデプロイすることを提唱している。
206
+
207
+ - **機会**
208
+ XPの実践を始めると、必ず問題に直面する。エクストリームになるというのは、それぞれの問題を個人の成長、人間関係の深化、ソフトウェアの改善などの機会に意識的に変換することである。
209
+
210
+ - **冗長性**
211
+ ソフトウェア開発の重要で困難な問題は、複数の方法で解決すべきである。ひとつの解決策が完全に失敗しても、その他の解決策で惨事を食い止めることができるからだ。
212
+  冗長にコストがかかるとしても、惨事から救われるならそのコストは支払うに値する。
213
+
214
+ - **失敗**
215
+ うまく成功できなければ、失敗しよう。何をすべきかわからないときには、失敗のリスクを受け入れることが成功につながる最短で確実な道である。
216
+
217
+ - **品質**
218
+ 品質が心配だからといって、何もしないことの言い訳にしてはいけない。きれいに実装する方法がわからなければ、できる限りのことをすればいい。きれいだが時間のかかる方法を知っていれば、今の時間でできるかぎりのことをすればいい。
219
+ そして、あとからきれいな方法で完成させるのだ。こうしたやり方は、アーキテクチャを進化させるときにもよく使う。
220
+
221
+ - **ベイビーステップ**
222
+ 大きな変更が失敗してチームがムダに後退するよりも、小さなステップのオーバヘッドのほうが小さい。
223
+ ベイビーステップは**テストファーストプログラミング**や**継続的インテグレーション**などのプラクティスで表現されている。
224
+
225
+ - **責任の引き受け**
226
+ 責任は割り当てるものではなく、引き受けることしかできない。誰かがあなたに責任を担わせようとしても、責任を持つかどうかを選ぶのはあなたである。
227
+
228
+ ---
229
+
230
+ ## 4. プラクティス(Practices)
231
+
232
+ ```plantuml
233
+ @startmindmap
234
+ * XP
235
+ ** プラクティス
236
+ *** 主要プラクティス
237
+ **** いきいきとした仕事
238
+ **** 計画
239
+ ***** 週次サイクル
240
+ ***** 四半期サイクル
241
+ ***** ストーリー
242
+ ***** ゆとり
243
+ **** プログラミング
244
+ ***** テストファーストプログラミング
245
+ ***** インクリメンタルな設計
246
+ ***** ペアプログラミング
247
+ **** 全員同席
248
+ ***** チーム全体
249
+ ***** 情報満載のワークスペース
250
+ **** インテグレーション
251
+ ***** 10分ビルド
252
+ ***** 継続的インテグレーション
253
+ *** 導出プラクティス
254
+ **** ビジネス
255
+ ***** 交渉によるスコープ契約
256
+ ***** 利用都度課金
257
+ ***** デイリーデプロイ
258
+ **** インクリメンタルなデプロイ
259
+ **** チーム
260
+ ***** 根本原因分析
261
+ ***** 本物の顧客参加
262
+ ***** チームの継続
263
+ ***** チームの縮小
264
+ **** プログラミング
265
+ ***** コードの共有
266
+ ***** コードとテスト
267
+ ***** 単一のコードベース
268
+ @endmindmap
269
+ ```
270
+ **プラクティス**は、日常的な取り組みである。
271
+
272
+ ### 4.1 主要プラクティス(Primary Practices)
273
+ あなたが他にやっているものとは無関係に役に立つものである。
274
+ すぐに改善につながり、どれからでも安全に始められる。
275
+
276
+ - **全員同席**
277
+ **チーム全体**が入れる十分な広さのオープンスペースで開発すること。近くに小さなプライベート空間を用意するか、別の場所でプライバシーを確保できるように労働時間を制限するなどして、チームメンバーのプライバシーや「自分だけの」スペースといった欲求を満たせるようにすること。
278
+
279
+ - **チーム全体**
280
+ チームの全体感。つまり、成功に必要なすべての資源の準備を整えることが、このプラクティスの目的である。プロジェクトの健全性のために綿密なやりとりが必要なところでは、機能単位ではなく、チーム単位でやり取りすべきだ。
281
+
282
+ - **情報満載のワークスペース**
283
+ 仕事の内容がわかるようなワークスペースをつくること。プロジェクトに関心のある人がチームのスペースを見たときに、15秒で状況を把握できるようにすべきである。
284
+ さらに近づいて見たときには、抱えている問題や潜在的な問題に関する詳しい情報を入手できるようにしておこう。
285
+
286
+ - **いきいきとした仕事**
287
+ 生産的になれる時間だけ働くこと。無理なく続けられる時間だけ働くこと。意味もなく燃えてきてしまい、次の2日間の作業が台無しになれば、あなたにとってもチームにとってもよろしくない。
288
+
289
+ - **ペアプログラミング**
290
+ ペアプログラミングとは、2人でプログラミング(および分析、設計、テスト)とプログラムの改良を同時に行うやりとりのことである。ペアプログラミングでは、以下のようなことをする。
291
+
292
+ - お互いにタスクに集中する。
293
+ - システムの改良について意見を出し合う。
294
+ - アイデアを明確にする。
295
+ - パートナーがハマったら主導権を握り、相手の失望感を軽減させる。
296
+ - お互いにチームのプラクティスの説明責任を果たせるようにする。
297
+
298
+ - **ストーリー**
299
+ 顧客に見える機能の単位を使って計画すること。たとえば、「これまでのレスポンスタイムで5倍のトラフィックを処理する」「よく使う番号に2クリックの短縮を提供する」などだ。
300
+  ストーリーが書けたら、必要な開発工程をすぐに見積もること。XPスタイルの計画づくりの特徴は、ストーリーを書いたらすぐに見積もることだ。こうすることで、最小の投資で最大のリターンを得る方法を考えられる。
301
+
302
+ - **週次サイクル**
303
+ 1週間分の仕事の計画をまとめて立てること。そして、週のはじめにミーティングを入れること。ミーティングでは、以下のことを行う。
304
+
305
+ - 先週の進捗が期待していた進捗と合致しているかなど、これまでの進捗状況をレビューする。
306
+ - 今週実装する1週間分のストーリーを顧客に選んでもらう。
307
+ - ストーリーをタスクに分解する。チームメンバーはタスクにサインアップして、それぞれのタスクを見積もる。
308
+
309
+ - **四半期サイクル**
310
+ 四半期分の計画をまとめて立てること。四半期に一度は、チーム、プロジェクト、進捗、大きなゴールの調整について、ふりかえること。四半期の計画では、以下のことを行う。
311
+
312
+ - ボトルネックを特定する(特にチームの外側で制御されているもの)。
313
+ - 修正作業に着手する。
314
+ - 四半期のテーマを計画する。
315
+ - テーマに取り組むための四半期分のストーリーを選択する。
316
+ - プロジェクトを組織に適合させる全体像に集中する。
317
+
318
+ - **ゆとり**
319
+ どのような計画にも、遅れたときに外せるような重要度の低いタスクを含めること。あとからストーリーを追加したり、約束より多くのストーリーをデリバリーしたりするのは、いつでもできる。
320
+ 不信感を抱かれたり、約束を破ったりしたときは、やるべきことをきちんと果たすことが重要だ。少しでもやるべきことを果たせば、人間関係の再構築につながるはずである。
321
+
322
+ - **10分ビルド**
323
+ 自動的にシステム全体をビルドして、すべてのテストを10分以内に実行させること。ビルドに10分以上かかるようだと使用頻度が減り、フィードバックの機会が失われてしまう。
324
+
325
+ - **継続的インテグレーション**
326
+ 数時間以内に変更箇所のインテグレーションとテストをすること。チームプログラミングとは、分割統治の問題ではない。分割、統治、結合(インテグレーション)の問題である。
327
+
328
+ - **テストファーストプログラミング**
329
+ コードを変更する前に、失敗する自動テストを書くこと。テストファーストプログラミングは、以下のような多くの問題を一度に解決する。
330
+
331
+ - スコープクリープ - プログラミングに夢中になって我を忘れてしまうと、「念のため」に余計なコードを追加しがちである。プログラムのあるべき姿を明確に客観的に記述すれば、本来のコーディングに集中できる。どうしてもコードを追加したいなら、手元の作業を終えたあとに別のテストを書くようにしよう。
332
+ - 結合度と凝集度 - テストを書くのが難しければ、テストの問題ではなく、設計に問題があるのだろう。疎結合で凝集度の高いコードは、テストしやすい。
333
+ - 信頼 - 動かないコードの作者を信頼するのは難しい。動くきれいなコードを書いて、自動テストで意図を示せば、チームメイトから信頼を得られるはずだ。
334
+ - リズム - コーディングをすると何時間もさまよいがちである。テストファーストでプログラミングすれば、次に何をすべきか(別のテストを書けばいいのか、それとも失敗したテストを修正すればいいのか)が明確になる。そして、それは自然で効率的な開発のリズム(テスト、コード、リファクタ、テスト、コード、リファクタ)なっていく。
335
+
336
+ - **インクリメンタルな設計**
337
+ システムの設計に毎日手を入れること。システムの設計は、その日のシステムのニーズにうまく合致させること。最適だと思われる設計が理解できなくなってきたら、少しだが着実に、自分の理解できる設計に戻していくこと。
338
+ 小さくて安全なステップで稼働中のシステムを変更する経験を踏み重ねていくと、設計にかける労力を遅延させることができるようになる。そうすれば、システムはシンプルになり、進捗は早くなり、テストが書きやすくなる。システムが小さくなるので、チームのコミュニケーションも軽減できる。
339
+
340
+ ### 4.2 導出プラクティス(Corollary Practices)
341
+ 先に主要プラクティスを習得しておかなければ難しいだろう
342
+
343
+ - **本物の顧客参加**
344
+ あなたのシステムによって生活やビジネスに影響を受ける人をチームの一員にすること。明確なビジョンを持った顧客であれば、四半期や週単位の計画づくりに参加できる。
345
+ そうした顧客は自由に使える予算を持っていることもある。予算は開発で利用可能なキャパシティーの一部だ。競合他社より半年も早く問題に気づくような顧客であれば、その顧客が必要とするシステムを構築することによって、あなたの競合他社に対する優位性にもつながる可能性がある。
346
+
347
+ - **インクリメンタルなデプロイ**
348
+ レガシーシステムをリプレースするときは、プロジェクトの初期段階から少しずつ引継ぎをすること。
349
+
350
+ - **チームの継続**
351
+ 優秀なチームは継続させること。大きな組織は、ヒトをモノに抽象化する傾向がある。互換性のあるプログラミングユニットだと考えているのだ。ソフトウェアのバリューは、みんなが知っていることや行っていることだけでなく、人間関係やみんなで一緒に成し遂げることによっても生み出される。
352
+ 要員計画の問題を単純化するためだけに、人間関係や信頼の大切さを無視するのは経済的ではない。
353
+
354
+ - **チームの縮小**
355
+ チームの能力が高まったら、仕事量を維持しながら少しづつチームの規模を縮小すること。
356
+
357
+ - **根本原因分析**
358
+ 開発後に欠陥が見つかるたびに、欠陥とその原因を取り除くこと。欠陥の再発防止だけではなく、同じ種類の過ちをチームが二度と犯さないようにすることが目的だ。
359
+ 以下は、欠陥に対処するためのXPのプロセスである。
360
+
361
+ - 欠陥を実証するシステムレベルの自動テストを書く。そこには期待する挙動も含めておく。これは、顧客、顧客サポート、開発者が行える。
362
+ - 結果を再現する最小限のスコープでユニットテストを書く。
363
+ - ユニットテストが動くようにシステムを修正する。これにより、システムテストもパスするはずだ。パスしなければ、2へ戻る。
364
+ - 欠陥を修正出来たら、なぜ欠陥が生み出されたのか、なぜ発見できなかったのかを見極める。今後は同様の欠陥が再発しないように、必要な変更を加える。
365
+
366
+ - **コードの共有**
367
+ チームの誰もが、システムのあらゆる部分をいつでも改善できる。システムに問題があり、その修正が現在作業中のスコープの範囲内なのであれば、遠慮せずに修正すべきである。
368
+
369
+ - **コードとテスト**
370
+ コードとテストだけを永続的な作成物として保守すること。その他のドキュメントについては、コードとテストから生成すること。プロジェクトの重要な履歴の維持については、社会的な仕組みに任せること。
371
+
372
+ - **単一のコードベース**
373
+ コードの流れは一つだけである。一時的なブランチで開発することもできるが、数時間以上も維持してはいけない。
374
+
375
+ - **デイリーデプロイ**
376
+ 新しいソフトウェアを毎晩プロダクションに反映すること。プログラマーの手元にあるものとプロダクションにあるものが違うのはリスクだ。プログラマーの意思決定につながる正確なフィードバックが得られない危険性がある。
377
+
378
+ - **交渉によるスコープ契約**
379
+ ソフトウェア開発の契約では、期間、費用、品質を固定すること。システムの明確なスコープについては、継続的に交渉を求めること。長期的なひとつの契約ではなく、短期多岐な契約をいくつも結ぶようにして、リスクを減らすこと。
380
+
381
+ - **利用都度課金**
382
+ 利用都度課金システムがあれば、システムが利用されるたびにお金を請求することができる。お金は究極のフィードバックだ。お金には実体があり、これから自分で使うこともできる。お金の流れをソフトウェア開発に直接接続すれば、改善を推進するための正確でタイムリーな情報を得られるはずだ。
383
+
384
+ ---
385
+
386
+ ## 5. XPチーム全体
387
+
388
+ ```plantuml
389
+ @startuml
390
+ title XPチーム全体
391
+
392
+ rectangle "XPチーム全体" as team {
393
+ actor "経営幹部" as G
394
+ actor "プロジェクトマネージャー" as E
395
+ actor "プロダクトマネージャー" as F
396
+ actor "アーキテクト" as D
397
+ actor "プログラマー" as J
398
+ actor "テスター" as B
399
+ actor "インタラクションデザイナー" as C
400
+ actor "テクニカルライター" as H
401
+ actor "ユーザー" as I
402
+ }
403
+
404
+ G --> E
405
+ G --> F
406
+ G --> I
407
+ E --> D
408
+ E --> J
409
+ E --> C
410
+ E --> B
411
+ E --> H
412
+ E --> I
413
+ D --> J
414
+ F --> I
415
+ B --> J
416
+ B --> I
417
+ C --> I
418
+ J --> I
419
+ H --> I
420
+ @enduml
421
+ ```
422
+
423
+ - **テスター**
424
+ XPチームのテスターは、システムレベルの自動テストの選択や記述について開発前に顧客を支援したり、プログラマーにテスト技法をコーチしたりする。
425
+
426
+ - **インタラクションデザイナー**
427
+ XPチームのインタラクションデザイナーは、システム全体のメタファーを選んだり、**ストーリー**を書いたり、デプロイされたシステムの利用状況を評価して、新しいストーリーの機会を見つけたりする。
428
+ XPチームでは、インタクラクションデザイナーは顧客と一緒に働いて、ストーリーの記述や明確化を支援する。
429
+
430
+ - **アーキテクト**
431
+ XPチームのアーキテクトは、大規模リファクタリングの調査や実施をしたり、アーキテクチャにストレスを与えるシステムレベルのテストを書いたり、**ストーリー**を実装したりする。
432
+ XPチームのアーキテクトのもうひとつの仕事は、システムの分割だ。分割は事前に行う一度きりのタスクではない。XPチームは統治分割を行う。分割統治ではない。つまり、小さなチームで小さなシステムを作ってから、自然な切れ目を見つけ、比較的独立した単位に分割して、システムを拡張するのである。
433
+
434
+ - **プロジェクトマネージャー**
435
+ XPチームのプロジェクトマネージャーは、チーム内のコミュニケーションを円滑にしたり、顧客、サプライヤー、その他のチーム外の組織とのコミュニケーションを調整したりする。
436
+
437
+ - **プロダクトマネージャー**
438
+ XPのプロダクトマネージャーは、**ストーリー**を書いたり、**四半期サイクル**のテーマやストーリーを選択したり、**週次サイクル**のストーリーを選択したり、実装によって明らかになったストーリーのあいまいな部分の質問に答えたりする。
439
+
440
+ - **経営幹部**
441
+ 経営幹部は、XPチームに勇気、自信、説明責任を提供する。
442
+
443
+ - **テクニカルライター**
444
+ XPチームにおけるテクニカルパブリケーションの役割は、フィーチャーのフィードバックを早期に提供したり、ユーザーとの密接な関係を築いたりすることである。
445
+
446
+ - **ユーザー**
447
+ XPチームのユーザーは、開発中にストーリーの記述や選択の支援をしたり、専門領域の意思決定をしたりする。構築中のシステムと類似したシステムに関する幅広い知識や経験をもっていたり、システムを実際に利用するユーザーコミュニティとの強い関係性を持っていたりすれば、そのユーザーは非常に大切な存在だ。
448
+
449
+ - **プログラマー**
450
+ XPチームのプログラマーは、**ストーリー**やタスクを見積もったり、ストーリーをタスクに分解したり、テストを書いたり、フィーチャーを実装するコードを書いたり、退屈な開発プロセスを自動化したり、システムの設計を少しづつ改善したりする。
451
+
452
+ - **人事**
453
+ XPチームのメンバーを個人として評価するといっても、XP適用前の評価の仕方を大きく変える必要はない。以下は、XPにおける重要性の高い従業員だ。
454
+
455
+ - リスペクトを持って行動できる。
456
+ - 他人とうまくやれる。
457
+ - イニシアチブをとれる。
458
+ - 約束したものデリバリーできる。
459
+
460
+ - **その他の役割**
461
+ 必要に応じた追加役割。
462
+
463
+ ---
464
+
465
+ ## 6. チェックリスト
466
+
467
+ ### 主要プラクティス
468
+
469
+ - [ ] **いきいきとした仕事**
470
+ - 生産的になれる時間だけ働いていますか?
471
+
472
+ #### **計画**
473
+ - [ ] **週次サイクル**
474
+ - 1週間分の計画を作成し、進捗をレビューしていますか?
475
+ - ストーリーをタスクに分解していますか?
476
+
477
+ - [ ] **四半期サイクル**
478
+ - チームの進捗やボトルネックをレビューしていますか?
479
+ - 四半期ごとの計画テーマを設定していますか?
480
+
481
+ - [ ] **ストーリー**
482
+ - ストーリー単位で顧客に機能を提案していますか?
483
+
484
+ - [ ] **ゆとり**
485
+ - 計画に重要度の低いタスクを含め、余裕を持っていますか?
486
+
487
+ #### **プログラミング**
488
+ - [ ] **テストファーストプログラミング**
489
+ - コードを書く前に失敗するテストを書く習慣がありますか?
490
+
491
+ - [ ] **インクリメンタルな設計**
492
+ - 小さい手順でシステムの設計・改善を行っていますか?
493
+
494
+ - [ ] **ペアプログラミング**
495
+ - 2人でアイデアを共有しながらコードを書いていますか?
496
+
497
+ #### **全員同席**
498
+ - [ ] **チーム全体**
499
+ - 必要なスキルやリソースをチーム全体で共有していますか?
500
+
501
+ - [ ] **情報満載のワークスペース**
502
+ - 外部の訪問者が15秒で状況を把握できるように情報を可視化していますか?
503
+
504
+ #### **インテグレーション**
505
+ - [ ] **10分ビルド**
506
+ - すべてのテストを含むビルドが10分以内に完了しますか?
507
+
508
+ - [ ] **継続的インテグレーション**
509
+ - 数時間おきに変更をマージしてテストを実行していますか?
510
+
511
+ ---
512
+
513
+ ### 導出プラクティス
514
+
515
+ #### **ビジネス**
516
+ - [ ] **交渉によるスコープ契約**
517
+ - スコープを柔軟に交渉しながら契約内容を進めていますか?
518
+
519
+ - [ ] **利用都度課金**
520
+ - ソフトウェアが使用されるたびに課金モデルを取り入れていますか?
521
+
522
+ - [ ] **デイリーデプロイ**
523
+ - 毎日ソフトウェアをプロダクションにデプロイしていますか?
524
+
525
+ #### **インクリメンタルなデプロイ**
526
+ - [ ] 徐々にレガシーシステムのリプレースを進めていますか?
527
+
528
+ #### **チーム**
529
+ - [ ] **根本原因分析**
530
+ - バグの原因を調査し、再発防止策を講じていますか?
531
+
532
+ - [ ] **本物の顧客参加**
533
+ - 顧客が計画作成や改善に参加していますか?
534
+
535
+ - [ ] **チームの継続**
536
+ - チームメンバーが一貫性を持って協力していますか?
537
+
538
+ - [ ] **チームの縮小**
539
+ - チームが成長した段階で規模を縮小して効率化していますか?
540
+
541
+ #### **プログラミング**
542
+ - [ ] **コードの共有**
543
+ - メンバー全員がシステムの任意の部分を改善できますか?
544
+
545
+ - [ ] **コードとテスト**
546
+ - 永続する作成物としてコードとテストのみを保守していますか?
547
+
548
+ - [ ] **単一のコードベース**
549
+ - ブランチを短期間で管理し、コードの中心ラインを保っていますか?
550
+