@k2works/claude-code-booster 6.3.0 → 6.4.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 (293) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +61 -61
  3. package/bin/claude-code-booster +113 -113
  4. package/lib/assets/.claude/README.md +287 -287
  5. package/lib/assets/.claude/agents/xp-architect.md +250 -250
  6. package/lib/assets/.claude/agents/xp-executive.md +207 -207
  7. package/lib/assets/.claude/agents/xp-interaction-designer.md +239 -239
  8. package/lib/assets/.claude/agents/xp-product-manager.md +245 -245
  9. package/lib/assets/.claude/agents/xp-programmer.md +268 -268
  10. package/lib/assets/.claude/agents/xp-project-manager.md +229 -229
  11. package/lib/assets/.claude/agents/xp-technical-writer.md +224 -224
  12. package/lib/assets/.claude/agents/xp-tester.md +265 -265
  13. package/lib/assets/.claude/agents/xp-user-representative.md +204 -204
  14. package/lib/assets/.claude/scripts/generate-inception-deck.mjs +911 -911
  15. package/lib/assets/.claude/settings.json +11 -11
  16. package/lib/assets/.claude/skills/ai-agent-guidelines/SKILL.md +111 -111
  17. package/lib/assets/.claude/skills/analyzing-architecture/SKILL.md +83 -83
  18. package/lib/assets/.claude/skills/analyzing-business-architecture/SKILL.md +122 -122
  19. package/lib/assets/.claude/skills/analyzing-business-case/SKILL.md +148 -148
  20. package/lib/assets/.claude/skills/analyzing-business-strategy/SKILL.md +277 -277
  21. package/lib/assets/.claude/skills/analyzing-data-model/SKILL.md +77 -77
  22. package/lib/assets/.claude/skills/analyzing-domain-model/SKILL.md +117 -117
  23. package/lib/assets/.claude/skills/analyzing-inception-deck/SKILL.md +84 -84
  24. package/lib/assets/.claude/skills/analyzing-non-functional/SKILL.md +95 -95
  25. package/lib/assets/.claude/skills/analyzing-operation/SKILL.md +95 -95
  26. package/lib/assets/.claude/skills/analyzing-requirements/SKILL.md +91 -91
  27. package/lib/assets/.claude/skills/analyzing-review/SKILL.md +174 -174
  28. package/lib/assets/.claude/skills/analyzing-tech-stack/SKILL.md +101 -101
  29. package/lib/assets/.claude/skills/analyzing-test-strategy/SKILL.md +89 -89
  30. package/lib/assets/.claude/skills/analyzing-ui-design/SKILL.md +80 -80
  31. package/lib/assets/.claude/skills/analyzing-usecases/SKILL.md +72 -72
  32. package/lib/assets/.claude/skills/closing-iteration/SKILL.md +176 -176
  33. package/lib/assets/.claude/skills/creating-adr/SKILL.md +117 -117
  34. package/lib/assets/.claude/skills/creating-development-strategy/SKILL.md +151 -127
  35. package/lib/assets/.claude/skills/creating-iteration-report/SKILL.md +210 -210
  36. package/lib/assets/.claude/skills/creating-journal/SKILL.md +140 -140
  37. package/lib/assets/.claude/skills/creating-manual/SKILL.md +199 -199
  38. package/lib/assets/.claude/skills/creating-release-report/SKILL.md +161 -161
  39. package/lib/assets/.claude/skills/creating-slides/SKILL.md +86 -86
  40. package/lib/assets/.claude/skills/creating-slides/agents/openai.yaml +4 -4
  41. package/lib/assets/.claude/skills/creating-slides/references/manga-css.md +45 -45
  42. package/lib/assets/.claude/skills/creating-slides/scripts/slide_tools.py +239 -239
  43. package/lib/assets/.claude/skills/developing-backend/SKILL.md +100 -100
  44. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +93 -93
  45. package/lib/assets/.claude/skills/developing-release/SKILL.md +120 -120
  46. package/lib/assets/.claude/skills/developing-review/SKILL.md +175 -175
  47. package/lib/assets/.claude/skills/developing-uiux-review/SKILL.md +207 -207
  48. package/lib/assets/.claude/skills/generating-bmc/SKILL.md +123 -123
  49. package/lib/assets/.claude/skills/generating-slides/SKILL.md +94 -94
  50. package/lib/assets/.claude/skills/git-commit/SKILL.md +81 -81
  51. package/lib/assets/.claude/skills/killing-processes/SKILL.md +44 -44
  52. package/lib/assets/.claude/skills/migrating-ai-dlc/evals/evals.json +59 -59
  53. package/lib/assets/.claude/skills/opening-iteration/SKILL.md +124 -124
  54. package/lib/assets/.claude/skills/operating-backup/SKILL.md +59 -59
  55. package/lib/assets/.claude/skills/operating-cicd/SKILL.md +54 -54
  56. package/lib/assets/.claude/skills/operating-deploy/SKILL.md +67 -67
  57. package/lib/assets/.claude/skills/operating-docs/SKILL.md +219 -219
  58. package/lib/assets/.claude/skills/operating-provision/SKILL.md +77 -77
  59. package/lib/assets/.claude/skills/operating-qt/SKILL.md +147 -147
  60. package/lib/assets/.claude/skills/operating-review/SKILL.md +171 -171
  61. package/lib/assets/.claude/skills/operating-script/SKILL.md +145 -145
  62. package/lib/assets/.claude/skills/operating-setup/SKILL.md +63 -63
  63. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +110 -110
  64. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +172 -172
  65. package/lib/assets/.claude/skills/orchestrating-operation/SKILL.md +161 -161
  66. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +149 -149
  67. package/lib/assets/.claude/skills/planning-releases/SKILL.md +121 -121
  68. package/lib/assets/.claude/skills/practicing-getting-start-tdd/SKILL.md +262 -262
  69. package/lib/assets/.claude/skills/syncing-github-project/SKILL.md +151 -151
  70. package/lib/assets/.claude/skills/tracking-progress/SKILL.md +91 -91
  71. package/lib/assets/.claude/skills/validating-design/SKILL.md +130 -130
  72. package/lib/assets/.claude/skills/validating-iteration-plan/SKILL.md +238 -238
  73. package/lib/assets/.claude/skills/validating-operating-setup/SKILL.md +118 -118
  74. package/lib/assets/.devcontainer/devcontainer.json +37 -37
  75. package/lib/assets/.env.example +32 -32
  76. package/lib/assets/.gitattributes +4 -4
  77. package/lib/assets/.github/workflows/docker-publish.yml +77 -77
  78. package/lib/assets/.github/workflows/mkdocs.yml +39 -39
  79. package/lib/assets/AGENTS.md +102 -102
  80. package/lib/assets/README.md +304 -304
  81. package/lib/assets/docker-compose.yml +33 -33
  82. package/lib/assets/docs/adr/index.md +10 -10
  83. package/lib/assets/docs/article/index.md +2 -1
  84. package/lib/assets/docs/assets/css/extra.css +29 -29
  85. package/lib/assets/docs/assets/js/extra.js +48 -48
  86. package/lib/assets/docs/assets/js/mathjax.js +27 -27
  87. package/lib/assets/docs/design/index.md +44 -44
  88. package/lib/assets/docs/development/index.md +39 -39
  89. package/lib/assets/docs/index.md +1 -1
  90. package/lib/assets/docs/log.md +3 -0
  91. package/lib/assets/docs/operation/index.md +41 -41
  92. package/lib/assets/docs/reference/BDD/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +766 -0
  93. package/lib/assets/docs/reference/CodexCLIMCP/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/343/203/225/343/203/255/343/203/274.md +555 -555
  94. package/lib/assets/docs/reference/CodexCLIMCP/343/202/265/343/203/274/343/203/220/343/203/274/350/250/255/345/256/232/346/211/213/351/240/206.md +351 -351
  95. package/lib/assets/docs/reference/Java/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +592 -592
  96. package/lib/assets/docs/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +965 -965
  97. package/lib/assets/docs/reference/SonarQube/343/203/255/343/203/274/343/202/253/343/203/253/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +652 -652
  98. package/lib/assets/docs/reference/TypeScript/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +476 -476
  99. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +460 -460
  100. package/lib/assets/docs/reference/Vim/346/223/215/344/275/234/343/203/236/343/203/213/343/203/245/343/202/242/343/203/253.md +177 -177
  101. package/lib/assets/docs/reference/images/Ansoff.drawio.svg +3 -3
  102. package/lib/assets/docs/reference/images/BMC.drawio.svg +3 -3
  103. package/lib/assets/docs/reference/images/BrandBasicStrategy.drawio.svg +3 -3
  104. package/lib/assets/docs/reference/images/BrandCategorization.drawio.svg +3 -3
  105. package/lib/assets/docs/reference/images/BrandRecurutementStrategy.drawio.svg +3 -3
  106. package/lib/assets/docs/reference/images/BrandValue.drawio.svg +3 -3
  107. package/lib/assets/docs/reference/images/BusinessActivitiy.svg +3 -3
  108. package/lib/assets/docs/reference/images/HRM.drawio.svg +3 -3
  109. package/lib/assets/docs/reference/images/MarketingStructure.drawio.svg +3 -3
  110. package/lib/assets/docs/reference/images/OrganizationElemnts.svg +3 -3
  111. package/lib/assets/docs/reference/images/PPM.drawio.svg +3 -3
  112. package/lib/assets/docs/reference/images/PositioningMap.drawio.svg +3 -3
  113. package/lib/assets/docs/reference/images/ProductLayer.drawio.svg +3 -3
  114. package/lib/assets/docs/reference/images/ProductMix.drawio.svg +3 -3
  115. package/lib/assets/docs/reference/images/SWOT.drawio.svg +3 -3
  116. package/lib/assets/docs/reference/images/TargetMarket.drawio.svg +3 -3
  117. package/lib/assets/docs/reference/images/ThreeGenericStrategies.drawio.svg +3 -3
  118. package/lib/assets/docs/reference/images/VRIO.drawio.svg +3 -3
  119. package/lib/assets/docs/reference/images/ValueChain.drawio.svg +3 -3
  120. package/lib/assets/docs/reference/index.md +1 -0
  121. 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
  122. package/lib/assets/docs/reference//343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +2226 -2226
  123. package/lib/assets/docs/reference//343/202/244/343/203/263/343/203/225/343/203/251/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +1888 -1888
  124. package/lib/assets/docs/reference//343/202/250/343/202/257/343/202/271/343/203/210/343/203/252/343/203/274/343/203/240/343/203/227/343/203/255/343/202/260/343/203/251/343/203/237/343/203/263/343/202/260.md +549 -549
  125. package/lib/assets/docs/reference//343/202/263/343/203/274/343/203/207/343/202/243/343/203/263/343/202/260/343/201/250/343/203/206/343/202/271/343/203/210/343/202/254/343/202/244/343/203/211.md +715 -715
  126. package/lib/assets/docs/reference//343/203/206/343/202/271/343/203/210/346/210/246/347/225/245/343/202/254/343/202/244/343/203/211.md +1323 -1323
  127. package/lib/assets/docs/reference//343/203/207/343/203/274/343/202/277/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +321 -321
  128. package/lib/assets/docs/reference//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +609 -609
  129. package/lib/assets/docs/reference//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +537 -537
  130. package/lib/assets/docs/reference//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +699 -699
  131. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +470 -470
  132. 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
  133. package/lib/assets/docs/reference//343/203/255/343/202/270/343/202/253/343/203/253/343/202/267/343/203/263/343/202/255/343/203/263/343/202/260.md +1376 -1376
  134. package/lib/assets/docs/reference//344/274/201/346/245/255/347/265/214/345/226/266/350/253/226.md +2647 -2647
  135. package/lib/assets/docs/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +675 -675
  136. package/lib/assets/docs/reference//347/265/214/345/226/266/346/210/246/347/225/245/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +575 -575
  137. package/lib/assets/docs/reference//350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1258 -1258
  138. package/lib/assets/docs/reference//350/250/200/350/252/236/345/210/245/351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +527 -527
  139. package/lib/assets/docs/reference//351/201/213/345/226/266/347/256/241/347/220/206.md +1492 -1492
  140. package/lib/assets/docs/reference//351/201/213/347/224/250/343/202/271/343/202/257/343/203/252/343/203/227/343/203/210/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +430 -430
  141. package/lib/assets/docs/reference//351/201/213/347/224/250/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +402 -402
  142. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +314 -314
  143. package/lib/assets/docs/reference//351/235/236/346/251/237/350/203/275/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1246 -1246
  144. package/lib/assets/docs/requirements/index.md +17 -17
  145. package/lib/assets/docs/review/index.md +5 -5
  146. package/lib/assets/docs/strategy/index.md +17 -17
  147. package/lib/assets/docs/template/ADR.md +39 -39
  148. package/lib/assets/docs/template/AWS/343/202/271/343/203/206/343/203/274/343/202/270/343/203/263/343/202/260/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +1375 -1375
  149. package/lib/assets/docs/template/AWS/343/203/227/343/203/255/343/203/200/343/202/257/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +643 -643
  150. package/lib/assets/docs/template/README.md +59 -59
  151. package/lib/assets/docs/template/index.md +24 -24
  152. package/lib/assets/docs/template//343/201/276/343/201/232/343/201/223/343/202/214/343/202/222/350/252/255/343/202/202/343/201/206/343/203/252/343/202/271/343/203/210.md +21 -21
  153. package/lib/assets/docs/template//343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +556 -556
  154. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +68 -68
  155. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273.md +336 -336
  156. package/lib/assets/docs/template//343/202/244/343/203/263/343/202/273/343/203/227/343/202/267/343/203/247/343/203/263/343/203/207/343/203/203/343/202/255.md +22 -22
  157. package/lib/assets/docs/template//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243.md +388 -388
  158. package/lib/assets/docs/template//343/203/252/343/203/252/343/203/274/343/202/271/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +284 -284
  159. package/lib/assets/docs/template//343/203/252/343/203/252/343/203/274/343/202/271/350/250/210/347/224/273.md +289 -289
  160. package/lib/assets/docs/template//344/272/213/344/276/213/345/210/206/346/236/220.md +522 -522
  161. package/lib/assets/docs/template//344/274/201/346/245/255/345/210/206/346/236/220.md +582 -582
  162. 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
  163. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +669 -669
  164. package/lib/assets/docs/template//350/250/255/350/250/210.md +183 -183
  165. package/lib/assets/docs/template//351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +697 -697
  166. package/lib/assets/gulpfile.js +29 -29
  167. package/lib/assets/mkdocs.yml +147 -138
  168. package/lib/assets/ops/docker/sonarqube-local/docker-compose.yml +57 -57
  169. package/lib/assets/ops/scripts/journal.js +180 -180
  170. package/lib/assets/ops/scripts/mkdocs.js +82 -82
  171. package/lib/assets/ops/scripts/release.js +431 -431
  172. package/lib/assets/ops/scripts/sonar_local.js +726 -726
  173. package/lib/assets/ops/scripts/ssh.js +190 -190
  174. package/lib/assets/ops/scripts/vault.js +299 -299
  175. package/lib/assets/package-lock.json +1673 -1673
  176. package/lib/assets/package.json +45 -45
  177. package/lib/gulpfile.js +37 -37
  178. package/package.json +41 -41
  179. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.json +0 -20
  180. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/benchmark.md +0 -13
  181. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/eval_metadata.json +0 -14
  182. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/grading.json +0 -39
  183. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/001-db.md +0 -12
  184. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -20
  185. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/adr/index.md +0 -4
  186. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/design/data-model.md +0 -12
  187. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/design/index.md +0 -3
  188. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/index.md +0 -10
  189. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/log.md +0 -7
  190. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/deploy-old.md +0 -12
  191. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/deploy.md +0 -12
  192. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/operation/index.md +0 -4
  193. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  194. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/with_skill/outputs/report.md +0 -76
  195. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/grading.json +0 -39
  196. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/001-db.md +0 -12
  197. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -20
  198. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/adr/index.md +0 -4
  199. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/design/data-model.md +0 -12
  200. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/design/index.md +0 -3
  201. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/index.md +0 -10
  202. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/log.md +0 -7
  203. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/deploy-old.md +0 -12
  204. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/deploy.md +0 -12
  205. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/operation/index.md +0 -4
  206. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  207. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-1-register-new-adr/without_skill/outputs/report.md +0 -22
  208. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/eval_metadata.json +0 -13
  209. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/grading.json +0 -34
  210. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/001-db.md +0 -12
  211. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -11
  212. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/adr/index.md +0 -3
  213. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/design/data-model.md +0 -14
  214. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/design/index.md +0 -3
  215. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/index.md +0 -10
  216. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/log.md +0 -7
  217. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/deploy-old.md +0 -12
  218. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/deploy.md +0 -12
  219. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/operation/index.md +0 -4
  220. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  221. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/with_skill/outputs/report.md +0 -61
  222. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/grading.json +0 -34
  223. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/001-db.md +0 -12
  224. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -11
  225. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/adr/index.md +0 -3
  226. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/design/data-model.md +0 -13
  227. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/design/index.md +0 -3
  228. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/index.md +0 -10
  229. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/log.md +0 -7
  230. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/deploy-old.md +0 -12
  231. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/deploy.md +0 -12
  232. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/operation/index.md +0 -4
  233. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  234. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-2-verify-reviewed-doc/without_skill/outputs/report.md +0 -18
  235. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/eval_metadata.json +0 -13
  236. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/grading.json +0 -34
  237. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/001-db.md +0 -12
  238. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -11
  239. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/adr/index.md +0 -3
  240. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/design/data-model.md +0 -12
  241. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/design/index.md +0 -3
  242. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/index.md +0 -10
  243. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/log.md +0 -7
  244. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/deploy-old.md +0 -13
  245. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/deploy.md +0 -12
  246. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/operation/index.md +0 -7
  247. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  248. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/with_skill/outputs/report.md +0 -83
  249. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/grading.json +0 -34
  250. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/001-db.md +0 -12
  251. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/002-cache-strategy.md +0 -11
  252. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/adr/index.md +0 -3
  253. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/design/data-model.md +0 -12
  254. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/design/index.md +0 -3
  255. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/index.md +0 -10
  256. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/log.md +0 -7
  257. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/deploy-old.md +0 -14
  258. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/deploy.md +0 -12
  259. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/operation/index.md +0 -4
  260. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -965
  261. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/eval-3-deprecate-replaced-doc/without_skill/outputs/report.md +0 -15
  262. package/lib/assets/.claude/skills/apply-okf-workspace/iteration-1/review.html +0 -1325
  263. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.json +0 -20
  264. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/benchmark.md +0 -13
  265. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/eval_metadata.json +0 -15
  266. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/grading.json +0 -44
  267. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/adr/index.md +0 -10
  268. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/index.md +0 -15
  269. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/log.md +0 -5
  270. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -966
  271. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference/index.md +0 -6
  272. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +0 -261
  273. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +0 -480
  274. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/docs_after/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +0 -681
  275. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/with_skill/outputs/report.md +0 -85
  276. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/grading.json +0 -44
  277. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/adr/index.md +0 -8
  278. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/index.md +0 -11
  279. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/log.md +0 -7
  280. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference/OKF/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211_V0.2.md +0 -964
  281. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference/index.md +0 -9
  282. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +0 -250
  283. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +0 -469
  284. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/docs_after/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +0 -677
  285. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-1-migrate-docs/without_skill/outputs/report.md +0 -49
  286. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/eval_metadata.json +0 -13
  287. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/grading.json +0 -34
  288. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/index.md +0 -7
  289. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/log.md +0 -7
  290. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/metrics/churn.md +0 -9
  291. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/knowledge_after/metrics/income-statement.md +0 -15
  292. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/eval-2-upgrade-v01-to-v02/with_skill/outputs/report.md +0 -147
  293. package/lib/assets/.claude/skills/migrating-okf-workspace/iteration-1/review.html +0 -1325
@@ -1,460 +1,460 @@
1
- ---
2
- type: Reference
3
- title: "UI設計ガイド"
4
- description: "オブジェクト指向 UI(OOUI)の考え方に基づく画面設計の指針と、画面遷移図・画面イメージの作成手順。"
5
- tags: [reference]
6
- status: stable
7
- generated: { by: human:kakimomokuri, at: 2026-03-27T04:43:33Z }
8
- ---
9
-
10
- # UI設計ガイド
11
-
12
- ## オブジェクト指向UI設計(OOUX)
13
-
14
- ### 基本理念
15
-
16
- オブジェクト指向UI設計は、ユーザーが操作する「オブジェクト」を中心にUIを設計することで、より直感的で理解しやすいユーザーエクスペリエンスを提供する設計手法です。
17
-
18
- ### 4つの主要原則
19
-
20
- #### 1. オブジェクトの特定
21
-
22
- - ユーザーがシステム内で操作する主要な「モノ」を特定
23
- - 名詞で表現できるもの(例:生徒、教員、部、イベント、文書、商品など)
24
- - ドメインモデルと密接に関連
25
-
26
- #### 2. オブジェクト間の関係の定義
27
- - 特定されたオブジェクトが互いにどのように関連しているかを明確化
28
- - 関係の種類:
29
- - 一対一(1:1)
30
- - 一対多(1:N)
31
- - 多対多(M:N)
32
- - 集約・コンポジション
33
-
34
- #### 3. オブジェクトのアクションの定義
35
- - 各オブジェクトに対してユーザーがどのような操作を実行できるかを定義
36
- - 基本的なCRUD操作:
37
- - Create(作成)
38
- - Read(読み取り)
39
- - Update(更新)
40
- - Delete(削除)
41
- - ドメイン固有のアクション
42
-
43
- #### 4. オブジェクトの属性の定義
44
- - 各オブジェクトがどのような情報(属性)を持っているかを定義
45
- - 表示すべき属性の優先順位
46
- - 編集可能な属性の範囲
47
-
48
- ## UI構造パターン
49
-
50
- ### コレクションビュー
51
- オブジェクトの一覧を表示するビューパターン
52
-
53
- ```plantuml
54
- @startuml
55
- package "コレクションビュー" {
56
- rectangle "検索・フィルタ" as search
57
- rectangle "新規作成ボタン" as create
58
- rectangle "アイテムリスト" as list {
59
- rectangle "アイテム1" as item1
60
- rectangle "アイテム2" as item2
61
- rectangle "アイテム3" as item3
62
- }
63
- }
64
-
65
- search --> list : フィルタリング
66
- create --> "シングルビュー" : 新規作成
67
- item1 --> "シングルビュー" : 詳細表示
68
- @enduml
69
- ```
70
-
71
- **特徴**:
72
-
73
- - 複数のオブジェクトを一覧表示
74
- - 検索・フィルタリング機能
75
- - 新規作成のエントリーポイント
76
- - 個別オブジェクトへの navigation
77
-
78
- ### シングルビュー
79
- 個別オブジェクトの詳細を表示するビューパターン
80
-
81
- ```plantuml
82
- @startuml
83
- package "シングルビュー" {
84
- rectangle "ヘッダー" as header {
85
- rectangle "タイトル" as title
86
- rectangle "アクションボタン" as actions
87
- }
88
- rectangle "メインコンテンツ" as main {
89
- rectangle "属性表示" as props
90
- rectangle "関連オブジェクト1" as related1
91
- rectangle "関連オブジェクト2" as related2
92
- }
93
- }
94
-
95
- actions --> "編集モード" : 編集
96
- actions --> "削除確認" : 削除
97
- related1 --> "関連オブジェクトビュー" : 詳細
98
- @enduml
99
- ```
100
-
101
- **特徴**:
102
-
103
- - 単一オブジェクトの詳細情報表示
104
- - 編集・削除などのアクション
105
- - 関連オブジェクトへのナビゲーション
106
- - モード切り替え(表示⇔編集)
107
-
108
- ## レイアウトパターン
109
-
110
- ### ナビゲーション配置
111
-
112
- #### 左サイドナビゲーション
113
- ```plantuml
114
- @startuml
115
- rectangle "アプリケーション" {
116
- rectangle "サイドナビ" as nav {
117
- rectangle "生徒"
118
- rectangle "教員"
119
- rectangle "組"
120
- rectangle "部"
121
- rectangle "イベント"
122
- }
123
- rectangle "メインコンテンツ" as content {
124
- rectangle "コレクション/シングルビュー"
125
- }
126
- }
127
-
128
- nav -right-> content : オブジェクト選択
129
- @enduml
130
- ```
131
-
132
- #### トップナビゲーション
133
- ```plantuml
134
- @startuml
135
- rectangle "アプリケーション" {
136
- rectangle "トップナビ" as nav {
137
- rectangle "生徒 | 教員 | 組 | 部 | イベント"
138
- }
139
- rectangle "メインコンテンツ" as content {
140
- rectangle "コレクション/シングルビュー"
141
- }
142
- }
143
-
144
- nav -down-> content : オブジェクト選択
145
- @enduml
146
- ```
147
-
148
- ### ビュー配置パターン
149
-
150
- #### 単一メインオブジェクト
151
- - 画面を2つのペインに分割
152
- - 左:コレクションビュー、右:シングルビュー
153
-
154
- #### タブ式切り替え
155
- - タブでコレクションビューとシングルビューを切り替え
156
-
157
- #### モーダル式
158
- - コレクションビューをベースに、シングルビューをモーダルで表示
159
-
160
- ## アクションパターン
161
-
162
- ### Create(作成)アクション
163
-
164
- #### ブランクパターン
165
- ```javascript
166
- // 空のフォームを表示して新規作成
167
- const createStudent = () => {
168
- return {
169
- id: null,
170
- name: '',
171
- class: '',
172
- clubs: [],
173
- relatedStudents: []
174
- };
175
- };
176
- ```
177
-
178
- #### テンプレートパターン
179
- ```javascript
180
- // デフォルト値を持つテンプレートから作成
181
- const createStudentFromTemplate = (template) => {
182
- return {
183
- ...template,
184
- id: generateNewId(),
185
- name: '',
186
- createdAt: new Date()
187
- };
188
- };
189
- ```
190
-
191
- ### Update(更新)アクション
192
-
193
- #### モードレスエディットパターン
194
- ```javascript
195
- // 同一画面で表示と編集を切り替え
196
- const toggleEditMode = (student, isEditing) => {
197
- if (isEditing) {
198
- return renderEditForm(student);
199
- } else {
200
- return renderDisplayView(student);
201
- }
202
- };
203
- ```
204
-
205
- #### インラインエディットパターン
206
- ```javascript
207
- // 項目ごとに直接編集可能
208
- const renderInlineEdit = (property, value) => {
209
- return `
210
- <div class="inline-edit" data-property="${property}">
211
- <span class="display">${value}</span>
212
- <input class="edit" value="${value}" style="display:none">
213
- </div>
214
- `;
215
- };
216
- ```
217
-
218
- ### Delete(削除)アクション
219
-
220
- #### モーダル確認パターン
221
- ```javascript
222
- const deleteWithConfirmation = (student) => {
223
- const confirmed = confirm(`${student.name}を削除しますか?`);
224
- if (confirmed) {
225
- deleteStudent(student.id);
226
- refreshView();
227
- }
228
- };
229
- ```
230
-
231
- #### ソフトデリートパターン
232
- ```javascript
233
- const softDelete = (student) => {
234
- student.deletedAt = new Date();
235
- student.isActive = false;
236
- updateStudent(student);
237
- };
238
- ```
239
-
240
- ## 実装ガイドライン
241
-
242
- ### コンポーネント設計
243
-
244
- #### 責任の分離
245
- ```javascript
246
- // ❌ 悪い例:すべてが混在
247
- const StudentComponent = () => {
248
- // データ取得、状態管理、UI描画がすべて混在
249
- };
250
-
251
- // ✅ 良い例:責任を分離
252
- const StudentContainer = () => {
253
- // データ取得と状態管理
254
- };
255
-
256
- const StudentView = ({ students, onAction }) => {
257
- // UI描画のみ
258
- };
259
- ```
260
-
261
- #### 状態管理パターン
262
- ```javascript
263
- // 状態の構造化
264
- const studentState = {
265
- collection: {
266
- items: [],
267
- loading: false,
268
- filter: '',
269
- sortBy: 'name'
270
- },
271
- selected: {
272
- item: null,
273
- mode: 'READ' // READ, EDIT, CREATE
274
- }
275
- };
276
- ```
277
-
278
- ### アクセシビリティ考慮事項
279
-
280
- #### キーボードナビゲーション
281
- ```javascript
282
- // フォーカス管理
283
- const handleKeyDown = (event) => {
284
- switch (event.key) {
285
- case 'Enter':
286
- selectItem();
287
- break;
288
- case 'Escape':
289
- cancelEdit();
290
- break;
291
- case 'ArrowDown':
292
- moveToNextItem();
293
- break;
294
- }
295
- };
296
- ```
297
-
298
- #### スクリーンリーダー対応
299
- ```html
300
- <!-- セマンティックなHTML構造 -->
301
- <main role="main">
302
- <section aria-label="学生一覧">
303
- <h1>学生</h1>
304
- <ul role="list">
305
- <li role="listitem" tabindex="0">
306
- <span aria-label="学生名">田中太郎</span>
307
- </li>
308
- </ul>
309
- </section>
310
- </main>
311
- ```
312
-
313
- ### パフォーマンス最適化
314
-
315
- #### 仮想化
316
- ```javascript
317
- // 大量データの表示最適化
318
- const VirtualizedList = ({ items, itemHeight = 50 }) => {
319
- const [scrollTop, setScrollTop] = useState(0);
320
- const containerHeight = 400;
321
-
322
- const visibleStart = Math.floor(scrollTop / itemHeight);
323
- const visibleEnd = Math.min(
324
- visibleStart + Math.ceil(containerHeight / itemHeight),
325
- items.length
326
- );
327
-
328
- return (
329
- <div style={{ height: containerHeight, overflow: 'auto' }}>
330
- {items.slice(visibleStart, visibleEnd).map(renderItem)}
331
- </div>
332
- );
333
- };
334
- ```
335
-
336
- #### 遅延読み込み
337
- ```javascript
338
- // 関連データの段階的読み込み
339
- const loadStudentDetails = async (studentId) => {
340
- const student = await fetchStudent(studentId);
341
- // 基本情報をまず表示
342
-
343
- const [clubs, relatedStudents] = await Promise.all([
344
- fetchStudentClubs(studentId),
345
- fetchRelatedStudents(studentId)
346
- ]);
347
- // 関連情報を後から追加
348
- };
349
- ```
350
-
351
- ## 品質保証
352
-
353
- ### テスト戦略
354
-
355
- #### ユニットテスト
356
- ```javascript
357
- describe('StudentComponent', () => {
358
- test('should display student list', () => {
359
- const students = [{ id: 1, name: '田中太郎' }];
360
- render(<StudentComponent students={students} />);
361
- expect(screen.getByText('田中太郎')).toBeInTheDocument();
362
- });
363
-
364
- test('should handle create action', () => {
365
- const onCreateMock = jest.fn();
366
- render(<StudentComponent onCreate={onCreateMock} />);
367
- fireEvent.click(screen.getByText('新規'));
368
- expect(onCreateMock).toHaveBeenCalled();
369
- });
370
- });
371
- ```
372
-
373
- #### 統合テスト
374
- ```javascript
375
- describe('Student CRUD flow', () => {
376
- test('should complete full CRUD cycle', async () => {
377
- // Create
378
- await createStudent({ name: '田中太郎' });
379
- expect(await findByText('田中太郎')).toBeInTheDocument();
380
-
381
- // Read
382
- fireEvent.click(await findByText('田中太郎'));
383
- expect(await findByText('詳細情報')).toBeInTheDocument();
384
-
385
- // Update
386
- fireEvent.click(await findByText('編集'));
387
- fireEvent.change(getByDisplayValue('田中太郎'), {
388
- target: { value: '田中次郎' }
389
- });
390
- fireEvent.click(await findByText('保存'));
391
- expect(await findByText('田中次郎')).toBeInTheDocument();
392
-
393
- // Delete
394
- fireEvent.click(await findByText('削除'));
395
- fireEvent.click(await findByText('確認'));
396
- expect(queryByText('田中次郎')).not.toBeInTheDocument();
397
- });
398
- });
399
- ```
400
-
401
- ### エラーハンドリング
402
-
403
- #### ユーザーフレンドリーなエラー表示
404
- ```javascript
405
- const ErrorBoundary = ({ children }) => {
406
- const [hasError, setHasError] = useState(false);
407
- const [error, setError] = useState(null);
408
-
409
- if (hasError) {
410
- return (
411
- <div className="error-container">
412
- <h2>申し訳ございません</h2>
413
- <p>予期しないエラーが発生しました。</p>
414
- <button onClick={() => window.location.reload()}>
415
- ページを再読み込み
416
- </button>
417
- </div>
418
- );
419
- }
420
-
421
- return children;
422
- };
423
- ```
424
-
425
- #### バリデーション
426
- ```javascript
427
- const validateStudent = (student) => {
428
- const errors = {};
429
-
430
- if (!student.name?.trim()) {
431
- errors.name = '名前は必須です';
432
- }
433
-
434
- if (student.name?.length > 100) {
435
- errors.name = '名前は100文字以内で入力してください';
436
- }
437
-
438
- if (!student.class) {
439
- errors.class = '組を選択してください';
440
- }
441
-
442
- return {
443
- isValid: Object.keys(errors).length === 0,
444
- errors
445
- };
446
- };
447
- ```
448
-
449
- ## まとめ
450
-
451
- オブジェクト指向UI設計は、ユーザーにとって直感的で理解しやすいインターフェースを構築するための強力な手法です。4つの主要原則に従って設計することで、一貫性があり、保守性の高いUIを実現できます。
452
-
453
- 重要なポイント:
454
-
455
-
456
- - オブジェクト中心の設計思考
457
- - コレクション・シングルビューの適切な使い分け
458
- - アクションパターンの統一
459
- - アクセシビリティとパフォーマンスの考慮
460
- - 包括的なテスト戦略
1
+ ---
2
+ type: Reference
3
+ title: "UI設計ガイド"
4
+ description: "オブジェクト指向 UI(OOUI)の考え方に基づく画面設計の指針と、画面遷移図・画面イメージの作成手順。"
5
+ tags: [reference]
6
+ status: stable
7
+ generated: { by: human:kakimomokuri, at: 2026-03-27T04:43:33Z }
8
+ ---
9
+
10
+ # UI設計ガイド
11
+
12
+ ## オブジェクト指向UI設計(OOUX)
13
+
14
+ ### 基本理念
15
+
16
+ オブジェクト指向UI設計は、ユーザーが操作する「オブジェクト」を中心にUIを設計することで、より直感的で理解しやすいユーザーエクスペリエンスを提供する設計手法です。
17
+
18
+ ### 4つの主要原則
19
+
20
+ #### 1. オブジェクトの特定
21
+
22
+ - ユーザーがシステム内で操作する主要な「モノ」を特定
23
+ - 名詞で表現できるもの(例:生徒、教員、部、イベント、文書、商品など)
24
+ - ドメインモデルと密接に関連
25
+
26
+ #### 2. オブジェクト間の関係の定義
27
+ - 特定されたオブジェクトが互いにどのように関連しているかを明確化
28
+ - 関係の種類:
29
+ - 一対一(1:1)
30
+ - 一対多(1:N)
31
+ - 多対多(M:N)
32
+ - 集約・コンポジション
33
+
34
+ #### 3. オブジェクトのアクションの定義
35
+ - 各オブジェクトに対してユーザーがどのような操作を実行できるかを定義
36
+ - 基本的なCRUD操作:
37
+ - Create(作成)
38
+ - Read(読み取り)
39
+ - Update(更新)
40
+ - Delete(削除)
41
+ - ドメイン固有のアクション
42
+
43
+ #### 4. オブジェクトの属性の定義
44
+ - 各オブジェクトがどのような情報(属性)を持っているかを定義
45
+ - 表示すべき属性の優先順位
46
+ - 編集可能な属性の範囲
47
+
48
+ ## UI構造パターン
49
+
50
+ ### コレクションビュー
51
+ オブジェクトの一覧を表示するビューパターン
52
+
53
+ ```plantuml
54
+ @startuml
55
+ package "コレクションビュー" {
56
+ rectangle "検索・フィルタ" as search
57
+ rectangle "新規作成ボタン" as create
58
+ rectangle "アイテムリスト" as list {
59
+ rectangle "アイテム1" as item1
60
+ rectangle "アイテム2" as item2
61
+ rectangle "アイテム3" as item3
62
+ }
63
+ }
64
+
65
+ search --> list : フィルタリング
66
+ create --> "シングルビュー" : 新規作成
67
+ item1 --> "シングルビュー" : 詳細表示
68
+ @enduml
69
+ ```
70
+
71
+ **特徴**:
72
+
73
+ - 複数のオブジェクトを一覧表示
74
+ - 検索・フィルタリング機能
75
+ - 新規作成のエントリーポイント
76
+ - 個別オブジェクトへの navigation
77
+
78
+ ### シングルビュー
79
+ 個別オブジェクトの詳細を表示するビューパターン
80
+
81
+ ```plantuml
82
+ @startuml
83
+ package "シングルビュー" {
84
+ rectangle "ヘッダー" as header {
85
+ rectangle "タイトル" as title
86
+ rectangle "アクションボタン" as actions
87
+ }
88
+ rectangle "メインコンテンツ" as main {
89
+ rectangle "属性表示" as props
90
+ rectangle "関連オブジェクト1" as related1
91
+ rectangle "関連オブジェクト2" as related2
92
+ }
93
+ }
94
+
95
+ actions --> "編集モード" : 編集
96
+ actions --> "削除確認" : 削除
97
+ related1 --> "関連オブジェクトビュー" : 詳細
98
+ @enduml
99
+ ```
100
+
101
+ **特徴**:
102
+
103
+ - 単一オブジェクトの詳細情報表示
104
+ - 編集・削除などのアクション
105
+ - 関連オブジェクトへのナビゲーション
106
+ - モード切り替え(表示⇔編集)
107
+
108
+ ## レイアウトパターン
109
+
110
+ ### ナビゲーション配置
111
+
112
+ #### 左サイドナビゲーション
113
+ ```plantuml
114
+ @startuml
115
+ rectangle "アプリケーション" {
116
+ rectangle "サイドナビ" as nav {
117
+ rectangle "生徒"
118
+ rectangle "教員"
119
+ rectangle "組"
120
+ rectangle "部"
121
+ rectangle "イベント"
122
+ }
123
+ rectangle "メインコンテンツ" as content {
124
+ rectangle "コレクション/シングルビュー"
125
+ }
126
+ }
127
+
128
+ nav -right-> content : オブジェクト選択
129
+ @enduml
130
+ ```
131
+
132
+ #### トップナビゲーション
133
+ ```plantuml
134
+ @startuml
135
+ rectangle "アプリケーション" {
136
+ rectangle "トップナビ" as nav {
137
+ rectangle "生徒 | 教員 | 組 | 部 | イベント"
138
+ }
139
+ rectangle "メインコンテンツ" as content {
140
+ rectangle "コレクション/シングルビュー"
141
+ }
142
+ }
143
+
144
+ nav -down-> content : オブジェクト選択
145
+ @enduml
146
+ ```
147
+
148
+ ### ビュー配置パターン
149
+
150
+ #### 単一メインオブジェクト
151
+ - 画面を2つのペインに分割
152
+ - 左:コレクションビュー、右:シングルビュー
153
+
154
+ #### タブ式切り替え
155
+ - タブでコレクションビューとシングルビューを切り替え
156
+
157
+ #### モーダル式
158
+ - コレクションビューをベースに、シングルビューをモーダルで表示
159
+
160
+ ## アクションパターン
161
+
162
+ ### Create(作成)アクション
163
+
164
+ #### ブランクパターン
165
+ ```javascript
166
+ // 空のフォームを表示して新規作成
167
+ const createStudent = () => {
168
+ return {
169
+ id: null,
170
+ name: '',
171
+ class: '',
172
+ clubs: [],
173
+ relatedStudents: []
174
+ };
175
+ };
176
+ ```
177
+
178
+ #### テンプレートパターン
179
+ ```javascript
180
+ // デフォルト値を持つテンプレートから作成
181
+ const createStudentFromTemplate = (template) => {
182
+ return {
183
+ ...template,
184
+ id: generateNewId(),
185
+ name: '',
186
+ createdAt: new Date()
187
+ };
188
+ };
189
+ ```
190
+
191
+ ### Update(更新)アクション
192
+
193
+ #### モードレスエディットパターン
194
+ ```javascript
195
+ // 同一画面で表示と編集を切り替え
196
+ const toggleEditMode = (student, isEditing) => {
197
+ if (isEditing) {
198
+ return renderEditForm(student);
199
+ } else {
200
+ return renderDisplayView(student);
201
+ }
202
+ };
203
+ ```
204
+
205
+ #### インラインエディットパターン
206
+ ```javascript
207
+ // 項目ごとに直接編集可能
208
+ const renderInlineEdit = (property, value) => {
209
+ return `
210
+ <div class="inline-edit" data-property="${property}">
211
+ <span class="display">${value}</span>
212
+ <input class="edit" value="${value}" style="display:none">
213
+ </div>
214
+ `;
215
+ };
216
+ ```
217
+
218
+ ### Delete(削除)アクション
219
+
220
+ #### モーダル確認パターン
221
+ ```javascript
222
+ const deleteWithConfirmation = (student) => {
223
+ const confirmed = confirm(`${student.name}を削除しますか?`);
224
+ if (confirmed) {
225
+ deleteStudent(student.id);
226
+ refreshView();
227
+ }
228
+ };
229
+ ```
230
+
231
+ #### ソフトデリートパターン
232
+ ```javascript
233
+ const softDelete = (student) => {
234
+ student.deletedAt = new Date();
235
+ student.isActive = false;
236
+ updateStudent(student);
237
+ };
238
+ ```
239
+
240
+ ## 実装ガイドライン
241
+
242
+ ### コンポーネント設計
243
+
244
+ #### 責任の分離
245
+ ```javascript
246
+ // ❌ 悪い例:すべてが混在
247
+ const StudentComponent = () => {
248
+ // データ取得、状態管理、UI描画がすべて混在
249
+ };
250
+
251
+ // ✅ 良い例:責任を分離
252
+ const StudentContainer = () => {
253
+ // データ取得と状態管理
254
+ };
255
+
256
+ const StudentView = ({ students, onAction }) => {
257
+ // UI描画のみ
258
+ };
259
+ ```
260
+
261
+ #### 状態管理パターン
262
+ ```javascript
263
+ // 状態の構造化
264
+ const studentState = {
265
+ collection: {
266
+ items: [],
267
+ loading: false,
268
+ filter: '',
269
+ sortBy: 'name'
270
+ },
271
+ selected: {
272
+ item: null,
273
+ mode: 'READ' // READ, EDIT, CREATE
274
+ }
275
+ };
276
+ ```
277
+
278
+ ### アクセシビリティ考慮事項
279
+
280
+ #### キーボードナビゲーション
281
+ ```javascript
282
+ // フォーカス管理
283
+ const handleKeyDown = (event) => {
284
+ switch (event.key) {
285
+ case 'Enter':
286
+ selectItem();
287
+ break;
288
+ case 'Escape':
289
+ cancelEdit();
290
+ break;
291
+ case 'ArrowDown':
292
+ moveToNextItem();
293
+ break;
294
+ }
295
+ };
296
+ ```
297
+
298
+ #### スクリーンリーダー対応
299
+ ```html
300
+ <!-- セマンティックなHTML構造 -->
301
+ <main role="main">
302
+ <section aria-label="学生一覧">
303
+ <h1>学生</h1>
304
+ <ul role="list">
305
+ <li role="listitem" tabindex="0">
306
+ <span aria-label="学生名">田中太郎</span>
307
+ </li>
308
+ </ul>
309
+ </section>
310
+ </main>
311
+ ```
312
+
313
+ ### パフォーマンス最適化
314
+
315
+ #### 仮想化
316
+ ```javascript
317
+ // 大量データの表示最適化
318
+ const VirtualizedList = ({ items, itemHeight = 50 }) => {
319
+ const [scrollTop, setScrollTop] = useState(0);
320
+ const containerHeight = 400;
321
+
322
+ const visibleStart = Math.floor(scrollTop / itemHeight);
323
+ const visibleEnd = Math.min(
324
+ visibleStart + Math.ceil(containerHeight / itemHeight),
325
+ items.length
326
+ );
327
+
328
+ return (
329
+ <div style={{ height: containerHeight, overflow: 'auto' }}>
330
+ {items.slice(visibleStart, visibleEnd).map(renderItem)}
331
+ </div>
332
+ );
333
+ };
334
+ ```
335
+
336
+ #### 遅延読み込み
337
+ ```javascript
338
+ // 関連データの段階的読み込み
339
+ const loadStudentDetails = async (studentId) => {
340
+ const student = await fetchStudent(studentId);
341
+ // 基本情報をまず表示
342
+
343
+ const [clubs, relatedStudents] = await Promise.all([
344
+ fetchStudentClubs(studentId),
345
+ fetchRelatedStudents(studentId)
346
+ ]);
347
+ // 関連情報を後から追加
348
+ };
349
+ ```
350
+
351
+ ## 品質保証
352
+
353
+ ### テスト戦略
354
+
355
+ #### ユニットテスト
356
+ ```javascript
357
+ describe('StudentComponent', () => {
358
+ test('should display student list', () => {
359
+ const students = [{ id: 1, name: '田中太郎' }];
360
+ render(<StudentComponent students={students} />);
361
+ expect(screen.getByText('田中太郎')).toBeInTheDocument();
362
+ });
363
+
364
+ test('should handle create action', () => {
365
+ const onCreateMock = jest.fn();
366
+ render(<StudentComponent onCreate={onCreateMock} />);
367
+ fireEvent.click(screen.getByText('新規'));
368
+ expect(onCreateMock).toHaveBeenCalled();
369
+ });
370
+ });
371
+ ```
372
+
373
+ #### 統合テスト
374
+ ```javascript
375
+ describe('Student CRUD flow', () => {
376
+ test('should complete full CRUD cycle', async () => {
377
+ // Create
378
+ await createStudent({ name: '田中太郎' });
379
+ expect(await findByText('田中太郎')).toBeInTheDocument();
380
+
381
+ // Read
382
+ fireEvent.click(await findByText('田中太郎'));
383
+ expect(await findByText('詳細情報')).toBeInTheDocument();
384
+
385
+ // Update
386
+ fireEvent.click(await findByText('編集'));
387
+ fireEvent.change(getByDisplayValue('田中太郎'), {
388
+ target: { value: '田中次郎' }
389
+ });
390
+ fireEvent.click(await findByText('保存'));
391
+ expect(await findByText('田中次郎')).toBeInTheDocument();
392
+
393
+ // Delete
394
+ fireEvent.click(await findByText('削除'));
395
+ fireEvent.click(await findByText('確認'));
396
+ expect(queryByText('田中次郎')).not.toBeInTheDocument();
397
+ });
398
+ });
399
+ ```
400
+
401
+ ### エラーハンドリング
402
+
403
+ #### ユーザーフレンドリーなエラー表示
404
+ ```javascript
405
+ const ErrorBoundary = ({ children }) => {
406
+ const [hasError, setHasError] = useState(false);
407
+ const [error, setError] = useState(null);
408
+
409
+ if (hasError) {
410
+ return (
411
+ <div className="error-container">
412
+ <h2>申し訳ございません</h2>
413
+ <p>予期しないエラーが発生しました。</p>
414
+ <button onClick={() => window.location.reload()}>
415
+ ページを再読み込み
416
+ </button>
417
+ </div>
418
+ );
419
+ }
420
+
421
+ return children;
422
+ };
423
+ ```
424
+
425
+ #### バリデーション
426
+ ```javascript
427
+ const validateStudent = (student) => {
428
+ const errors = {};
429
+
430
+ if (!student.name?.trim()) {
431
+ errors.name = '名前は必須です';
432
+ }
433
+
434
+ if (student.name?.length > 100) {
435
+ errors.name = '名前は100文字以内で入力してください';
436
+ }
437
+
438
+ if (!student.class) {
439
+ errors.class = '組を選択してください';
440
+ }
441
+
442
+ return {
443
+ isValid: Object.keys(errors).length === 0,
444
+ errors
445
+ };
446
+ };
447
+ ```
448
+
449
+ ## まとめ
450
+
451
+ オブジェクト指向UI設計は、ユーザーにとって直感的で理解しやすいインターフェースを構築するための強力な手法です。4つの主要原則に従って設計することで、一貫性があり、保守性の高いUIを実現できます。
452
+
453
+ 重要なポイント:
454
+
455
+
456
+ - オブジェクト中心の設計思考
457
+ - コレクション・シングルビューの適切な使い分け
458
+ - アクションパターンの統一
459
+ - アクセシビリティとパフォーマンスの考慮
460
+ - 包括的なテスト戦略