create-specment 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/bin/commands/create.d.ts +0 -1
  2. package/bin/constants/languages.d.ts +0 -1
  3. package/bin/core/interactive-setup.d.ts +0 -1
  4. package/bin/core/interactive-setup.js +17 -10
  5. package/bin/core/interactive-setup.js.map +1 -1
  6. package/bin/core/interactive-setup.test.d.ts +0 -1
  7. package/bin/core/interactive-setup.test.js +7 -7
  8. package/bin/core/interactive-setup.test.js.map +1 -1
  9. package/bin/core/project-generator.d.ts +0 -1
  10. package/bin/core/project-generator.js +5 -8
  11. package/bin/core/project-generator.js.map +1 -1
  12. package/bin/features/index.d.ts +0 -1
  13. package/bin/features/index.js +15 -13
  14. package/bin/features/index.js.map +1 -1
  15. package/bin/generators/docusaurus-config.d.ts +0 -1
  16. package/bin/generators/docusaurus-config.js +211 -264
  17. package/bin/generators/docusaurus-config.js.map +1 -1
  18. package/bin/generators/package-json.d.ts +0 -1
  19. package/bin/generators/package-json.js +45 -91
  20. package/bin/generators/package-json.js.map +1 -1
  21. package/bin/generators/template-files.d.ts +0 -1
  22. package/bin/generators/template-files.js +625 -229
  23. package/bin/generators/template-files.js.map +1 -1
  24. package/bin/index.d.ts +0 -1
  25. package/bin/index.js.map +1 -1
  26. package/bin/templates/index.d.ts +0 -1
  27. package/bin/templates/index.js +36 -24
  28. package/bin/templates/index.js.map +1 -1
  29. package/bin/tests/integration.test.d.ts +0 -1
  30. package/bin/tests/integration.test.js +34 -34
  31. package/bin/tests/integration.test.js.map +1 -1
  32. package/bin/types/index.d.ts +1 -21
  33. package/bin/utils/config-merger.d.ts +0 -1
  34. package/bin/utils/config-merger.js +0 -1
  35. package/bin/utils/config-merger.js.map +1 -1
  36. package/bin/utils/errors.d.ts +0 -1
  37. package/bin/utils/install.d.ts +0 -1
  38. package/bin/utils/install.js +3 -3
  39. package/bin/utils/install.js.map +1 -1
  40. package/bin/utils/message-formatter.d.ts +0 -1
  41. package/bin/utils/template-processor.d.ts +0 -1
  42. package/bin/utils/template-processor.js +2 -3
  43. package/bin/utils/template-processor.js.map +1 -1
  44. package/bin/utils/template-processor.test.d.ts +0 -1
  45. package/bin/utils/template-processor.test.js +22 -22
  46. package/bin/utils/template-processor.test.js.map +1 -1
  47. package/bin/utils/version.d.ts +0 -1
  48. package/bin/utils/version.js +3 -3
  49. package/bin/utils/version.js.map +1 -1
  50. package/package.json +2 -7
  51. package/templates/docs/01-overview/_assumptions-constraints.mdx +19 -0
  52. package/templates/docs/01-overview/_business-context.mdx +18 -0
  53. package/templates/docs/01-overview/_firm-proposal.mdx +52 -0
  54. package/templates/docs/01-overview/_gap-analysis.mdx +18 -0
  55. package/templates/docs/01-overview/_project/342/200/221charter.mdx +23 -0
  56. package/templates/docs/01-overview/_requirements-specification.mdx +73 -0
  57. package/templates/docs/01-overview/_risks.mdx +16 -0
  58. package/templates/docs/01-overview/_scope.mdx +24 -0
  59. package/templates/docs/01-overview/_stakeholders.mdx +24 -0
  60. package/templates/docs/01-overview/as-is.mdx +64 -0
  61. package/templates/docs/01-overview/glossary.mdx +41 -0
  62. package/templates/docs/01-overview/index.mdx +41 -0
  63. package/templates/docs/01-overview/odsc.mdx +72 -0
  64. package/templates/docs/01-overview/roadmap.mdx +27 -0
  65. package/templates/docs/01-overview/system-context.mdx +22 -0
  66. package/templates/docs/01-overview/to-be.mdx +102 -0
  67. package/templates/docs/02-requirements/_category_.yaml +2 -0
  68. package/templates/docs/02-requirements/functional/_category_.json +8 -0
  69. package/templates/docs/02-requirements/functional/_req-template.mdx +46 -0
  70. package/templates/docs/02-requirements/functional/req-001.mdx +52 -0
  71. package/templates/docs/02-requirements/index.mdx +14 -0
  72. package/templates/docs/02-requirements/non-functional/_category_.json +8 -0
  73. package/templates/docs/02-requirements/non-functional/_nfr-template.mdx +42 -0
  74. package/templates/docs/02-requirements/non-functional/nfr-001.mdx +57 -0
  75. package/templates/docs/02-requirements/non-functional/nfr-002.mdx +57 -0
  76. package/templates/docs/03-external/business-model.mdx +14 -0
  77. package/templates/docs/03-external/img/business-model-by-claude.xml +107 -0
  78. package/templates/docs/03-external/img/business-model.xml +84 -0
  79. package/templates/docs/03-external/img/docsVersionDropdown.png +0 -0
  80. package/templates/docs/03-external/img/gantt.xml +1 -0
  81. package/templates/docs/03-external/img/localeDropdown.png +0 -0
  82. package/templates/docs/03-external/index.mdx +46 -0
  83. package/templates/docs/04-internal/batches/_category_.yaml +2 -0
  84. package/templates/docs/04-internal/batches/import-products.mdx +64 -0
  85. package/templates/docs/04-internal/batches/index.mdx +25 -0
  86. package/templates/docs/04-internal/index.mdx +32 -0
  87. package/templates/docs/04-internal/policies/_category_.yaml +2 -0
  88. package/templates/docs/04-internal/policies/branch-naming-rules.mdx +110 -0
  89. package/templates/docs/04-internal/policies/github.mdx +100 -0
  90. package/templates/docs/04-internal/policies/pull-request-operation-flow.mdx +118 -0
  91. package/templates/docs/04-internal/rules/_category_.yaml +2 -0
  92. package/templates/docs/04-internal/rules/database.mdx +139 -0
  93. package/templates/docs/04-internal/rules/document-creation-rules.mdx +39 -0
  94. package/templates/docs/04-internal/rules/index.mdx +10 -0
  95. package/templates/docs/04-internal/rules/markdown.mdx +148 -0
  96. package/templates/docs/04-internal/rules/review-process.mdx +32 -0
  97. package/templates/docs/04-internal/screens/_category_.yaml +2 -0
  98. package/templates/docs/04-internal/screens/dashboard.mdx +17 -0
  99. package/templates/docs/04-internal/screens/index.mdx +20 -0
  100. package/templates/docs/04-internal/screens/login.mdx +18 -0
  101. package/templates/docs/04-internal/screens/menu.mdx +17 -0
  102. package/templates/docs/04-internal/tables/_category_.yaml +2 -0
  103. package/templates/docs/04-internal/tables/customer_details.mdx +35 -0
  104. package/templates/docs/04-internal/tables/customers.mdx +35 -0
  105. package/templates/docs/04-internal/tables/index.mdx +11 -0
  106. package/templates/docs/index.module.css +96 -0
  107. package/templates/docs/index.tsx +48 -0
  108. package/templates/docs/intro.md +47 -0
  109. package/templates/docs/introduction/document-editing/_category_.yml +2 -0
  110. package/templates/docs/introduction/document-editing/how-to.mdx +31 -0
  111. package/templates/docs/introduction/index.mdx +35 -0
  112. package/templates/docs/introduction/operational-policies/_category_.yaml +2 -0
  113. package/templates/docs/introduction/operational-policies/github.mdx +33 -0
  114. package/templates/docs/introduction/operational-policies/img/branch-naming-rules.svg +73 -0
  115. package/templates/docs/introduction/operational-policies/sharepoint.mdx +28 -0
  116. package/templates/package.json.template +46 -0
  117. package/templates/src/components/Highlight/index.tsx +68 -0
  118. package/templates/src/components/PriorityMatrix/index.tsx +97 -0
  119. package/templates/src/components/TBD/index.tsx +16 -0
  120. package/templates/src/css/custom.css +81 -0
  121. package/templates/src/types/requirements.ts +19 -0
  122. package/templates/static/img/business-model.drawio.svg +4 -0
  123. package/templates/static/img/gantt.drawio.svg +1152 -0
  124. package/templates/static/img/logo.svg +21 -0
  125. package/bin/commands/create.d.ts.map +0 -1
  126. package/bin/constants/languages.d.ts.map +0 -1
  127. package/bin/core/interactive-setup.d.ts.map +0 -1
  128. package/bin/core/interactive-setup.test.d.ts.map +0 -1
  129. package/bin/core/project-generator.d.ts.map +0 -1
  130. package/bin/features/index.d.ts.map +0 -1
  131. package/bin/generators/docusaurus-config.d.ts.map +0 -1
  132. package/bin/generators/package-json.d.ts.map +0 -1
  133. package/bin/generators/template-files.d.ts.map +0 -1
  134. package/bin/index.d.ts.map +0 -1
  135. package/bin/plugins/i18n-integration.d.ts +0 -25
  136. package/bin/plugins/i18n-integration.d.ts.map +0 -1
  137. package/bin/plugins/i18n-integration.js +0 -310
  138. package/bin/plugins/i18n-integration.js.map +0 -1
  139. package/bin/plugins/plantuml-integration.d.ts +0 -17
  140. package/bin/plugins/plantuml-integration.d.ts.map +0 -1
  141. package/bin/plugins/plantuml-integration.js +0 -112
  142. package/bin/plugins/plantuml-integration.js.map +0 -1
  143. package/bin/plugins/redoc-integration.d.ts +0 -25
  144. package/bin/plugins/redoc-integration.d.ts.map +0 -1
  145. package/bin/plugins/redoc-integration.js +0 -373
  146. package/bin/plugins/redoc-integration.js.map +0 -1
  147. package/bin/plugins/search-integration.d.ts +0 -20
  148. package/bin/plugins/search-integration.d.ts.map +0 -1
  149. package/bin/plugins/search-integration.js +0 -169
  150. package/bin/plugins/search-integration.js.map +0 -1
  151. package/bin/templates/index.d.ts.map +0 -1
  152. package/bin/templates/template-definitions.d.ts +0 -10
  153. package/bin/templates/template-definitions.d.ts.map +0 -1
  154. package/bin/templates/template-definitions.js +0 -517
  155. package/bin/templates/template-definitions.js.map +0 -1
  156. package/bin/tests/integration.test.d.ts.map +0 -1
  157. package/bin/types/index.d.ts.map +0 -1
  158. package/bin/utils/config-merger.d.ts.map +0 -1
  159. package/bin/utils/errors.d.ts.map +0 -1
  160. package/bin/utils/install.d.ts.map +0 -1
  161. package/bin/utils/message-formatter.d.ts.map +0 -1
  162. package/bin/utils/template-processor.d.ts.map +0 -1
  163. package/bin/utils/template-processor.test.d.ts.map +0 -1
  164. package/bin/utils/version.d.ts.map +0 -1
  165. package/templates/classic-spec/docusaurus.config.js.template +0 -106
  166. package/templates/classic-spec/package.json.template +0 -36
  167. package/templates/external-design/docusaurus.config.js.template +0 -123
  168. package/templates/external-design/package.json.template +0 -36
  169. package/templates/internal-design/docusaurus.config.js.template +0 -123
  170. package/templates/internal-design/package.json.template +0 -36
  171. package/templates/project-analysis/docusaurus.config.js.template +0 -113
  172. package/templates/project-analysis/package.json.template +0 -36
  173. package/templates/requirements/docusaurus.config.js.template +0 -119
  174. package/templates/requirements/package.json.template +0 -36
@@ -0,0 +1,72 @@
1
+ ---
2
+ sidebar_position: 3
3
+ tags:
4
+ - ODSC
5
+ ---
6
+ import TBD from '@site/src/components/TBD';
7
+
8
+ # ODSC
9
+
10
+ <!--
11
+ TBDの使い方
12
+ <TBD/> コンポーネントは未確定項目を可視化するための占位マークです
13
+ 執筆完了後はimport文といっしょにこのコメントも必ず削除すること
14
+ -->
15
+
16
+ ## ODSCとは? {#what-is-odsc}
17
+ 1. 目的(O)、成果物(D)、成功基準(SC)のこと
18
+ 1. 目的と手段(システム)を分け、開発対象を明確化する
19
+ 1. プロジェクトを進めていく中で完了までに目標にブレをなくすのが目的
20
+
21
+ ## 目的 - Objectives {#objectives}
22
+
23
+ :::tip TIP
24
+ 1. このプロジェクトが完了した時に達成したい目標を定量的に記述する
25
+ 1. ビジネスとしての目標とシステムとしての目標を書く
26
+ 1. ビジネス目標
27
+ 1. システムを含む全体像としてお客様や解決したい問題・課題を明記する
28
+ 1. システムはこの目標を達成するための手段なので、明記することでブレをなくす
29
+ 1. システムの目標
30
+ 1. ソリューションの中でこのシステムが担う部分、システム化することで達成したい目標を明記する
31
+ 1. 記載できたらこのtipブロックを削除する
32
+ :::
33
+
34
+ 1. ビジネス目標
35
+ 1. <TBD/>
36
+ 1. システム目標
37
+ 1. <TBD/>
38
+
39
+ ### 非ゴール - Out of Scope {#out-of-scope}
40
+ 1. 例: モバイルネイティブアプリの UI 実装
41
+ 1. 例: 店舗在庫とのリアルタイム同期
42
+
43
+ ## 成果物 - Deliverables {#deliverables}
44
+
45
+ :::tip TIP
46
+ 1. 基本はシステムそのもの、そのマニュアルなど。プロジェクト完了後にお客様へ提供するもの
47
+ 1. 設計書を要求された場合、その意図を明確にする
48
+ 1. 他社開発ベンダーへの引き継ぎの場合 -> このドキュメント含めたrepositoryで済む
49
+ 1. Officeドキュメント、pdfを要求された場合の対応を考慮しておく
50
+ 1. 反対にシステム化しないことも明記する
51
+ 1. その理由も明記し、プロジェクト途中でタスク追加されるリスクを減らす
52
+ 1. 記載できたらこのtipブロックを削除する
53
+ :::
54
+
55
+ 1. <TBD/> 参照
56
+
57
+ ## 成功基準 - Success Criteria {#success-criteria}
58
+
59
+ :::tip TIP
60
+ 1. 定量目標。数値による結果で判定できるようにすることで評価できるようにする
61
+ 1. 例
62
+ 1. ピーク時のスケールサーバー数がx台以下、利用額がxxxドル以下、など
63
+ 1. リリース後1ヶ月以内にサーバーエラーによるシステム断時間がx時間以下
64
+ 1. プロジェクト中盤で達成が難しいと分かった場合はその時点で再定義し、お客様と合意を得る
65
+ 1. 記載できたらこのtipブロックを削除する
66
+ :::
67
+
68
+ | # | 指標 | 目標値 | 期限 | 測定方法 |
69
+ | - | ---- | ------ | ---- | -------- |
70
+ | SC-01 | 例: 決済成功率 | 95 %以上 | GA +1 か月 | Datadog APM |
71
+ | SC-02 | 例: 平均応答時間 | 200 ms 以下 | ベータ期間 | k6 & Grafana |
72
+ | SC-03 | 例: NPS | +15 | GA +3 か月 | アンケート |
@@ -0,0 +1,27 @@
1
+ ---
2
+ sidebar_position: 12
3
+ tags:
4
+ - Overview
5
+ - Roadmap
6
+ ---
7
+ # ロードマップ {#roadmap}
8
+
9
+ import Gantt from '@site/static/img/gantt.drawio.svg';
10
+
11
+ ## マスタースケジュール {#master-schedule}
12
+ <Gantt aria-label='マスタースケジュール' width='100%' height='auto' role='img' />
13
+
14
+ ## マイルストーン {#milestones}
15
+
16
+ | フェーズ | 期間 | 主な成果物 |
17
+ | ------- | ---- | ---------- |
18
+ | 準備 | 2025-05 | 要件定義完了 |
19
+ | 開発 | 2025-06 〜 2025-09 | Betaリリース |
20
+
21
+ ## リリース計画 {#release-plan}
22
+ 1. Alpha: 2025-07
23
+ 1. Beta: 2025-09
24
+ 1. GA: 2025-12
25
+
26
+ ## 依存関係 {#dependencies}
27
+ 1. 決済ゲートウェイv2公開
@@ -0,0 +1,22 @@
1
+ ---
2
+ sidebar_position: 13
3
+ tags:
4
+ - Overview
5
+ - Architecture
6
+ ---
7
+
8
+ # システムコンテキスト {#system-context}
9
+
10
+ ## コンテキスト図 {#context-diagram}
11
+ ```pumld
12
+ @startuml
13
+ !include <C4/C4_Container>
14
+ System_Boundary(ec, "EC System") {
15
+ Container(web, "Web Frontend")
16
+ Container(api, "API Server")
17
+ }
18
+ System(billing, "Payment Gateway")
19
+ Rel(web, api, "HTTPS/JSON")
20
+ Rel(api, billing, "REST")
21
+ @enduml
22
+ ```
@@ -0,0 +1,102 @@
1
+ ---
2
+ sidebar_position: 5
3
+ tags:
4
+ - To-Be
5
+ ---
6
+ import TBD from '@site/src/components/TBD';
7
+
8
+ # To‑Be - 目指すべき姿
9
+
10
+ <!--
11
+ TBDの使い方
12
+ <TBD/> コンポーネントは未確定項目を可視化するための占位マークです
13
+ 執筆完了後はimport文といっしょにこのコメントも必ず削除すること
14
+ -->
15
+
16
+ ## 概要 {#target-overview}
17
+ 1. 本章で示す「理想状態」と As‑Is との差分を概観する
18
+ 1. ビジネス価値・ユーザ価値・システム観点を 1‒2 文でまとめる
19
+
20
+ ## 改善後業務フロー {#business-flow}
21
+
22
+ :::tip
23
+ 1. BPMN やスイムレーン図で将来の業務プロセスを可視化
24
+ 1. PlantUML を直接埋め込むか、drawio・外部リンクでも可
25
+ :::
26
+
27
+ ```pumld
28
+ @startuml
29
+ skinparam ParticipantPadding 20
30
+ skinparam Shadowing false
31
+
32
+ |顧客|
33
+ start
34
+ :商品閲覧;
35
+ :ワンクリック購入;
36
+ |ECシステム|
37
+ :在庫自動確保;
38
+ :決済トークン発行;
39
+ |決済ゲートウェイ|
40
+ :即時決済承認;
41
+ |ECシステム|
42
+ :出荷指示;
43
+ |倉庫WMS|
44
+ :自動ピッキング;
45
+ |顧客|
46
+ stop
47
+ @enduml
48
+ ```
49
+
50
+ ## システム全体像 {#system-architecture}
51
+
52
+ ```pumld
53
+ @startuml
54
+ !include <C4/C4_Container>
55
+
56
+ System_Boundary(ec, "EC System") {
57
+ Container(web, "Next.js Frontend", "TypeScript/React")
58
+ Container(api, "API Server", "Go + gRPC")
59
+ ContainerDb(db, "PostgreSQL", "Cloud SQL", "商品・注文DB")
60
+ }
61
+ System_Ext(billing, "Payment Gateway")
62
+ System_Ext(cd, "CDN")
63
+
64
+ Rel(web, api, "gRPC+JSON")
65
+ Rel(api, db, "JDBC")
66
+ Rel(api, billing, "REST")
67
+ Rel(web, cd, "HTTPS (static assets)")
68
+ @enduml
69
+ ```
70
+
71
+ 1. <TBD/> (詳細なサブシステム図や構成表を追加)
72
+
73
+ ## 主要機能一覧 {#features}
74
+
75
+ | # | 機能 | 概要 | 優先度 |
76
+ | - | ---- | ---- | ------ |
77
+ | F‑01 | リアルタイム在庫同期 | ERP から Webhook で在庫更新 | High |
78
+ | F‑02 | ワンクリック購入 | 顧客の決済トークンを再利用 | High |
79
+ | F‑03 | レコメンド | 行動ログを用いた個別提案 | Medium |
80
+
81
+ ## 非機能要求サマリ {#non-functional-requirements}
82
+
83
+ | 項目 | 目標値 | 備考 |
84
+ | ---- | ------ | ---- |
85
+ | 可用性 | 99.9 %以上 | マルチ AZ |
86
+ | 性能 | 平均応答 200 ms 以下 | Peak 500 ms 以下 |
87
+ | セキュリティ | OWASP Top‑10 準拠 | WAF / CSP |
88
+
89
+ ## 移行方針・ロードマップ {#migration-strategy}
90
+
91
+ 1. **フェーズ1: MVP**
92
+ 1. カタログ閲覧 + 決済 (限定 SKU)
93
+ 1. **フェーズ2: Full Launch**
94
+ 1. 全 SKU 移行・レコメンド ON
95
+ 1. **フェーズ3: Continuous Improvement**
96
+ 1. A/B テスト・パフォーマンス最適化
97
+
98
+ ## 期待効果・成功要因 {#expected-effects}
99
+
100
+ 1. 売上 +20 %、離脱率 15 % → 8 %
101
+ 1. 運用工数 月 40 h 削減
102
+ 1. ユーザ満足度 (NPS) +15
@@ -0,0 +1,2 @@
1
+ label: '要件定義'
2
+ position: 1
@@ -0,0 +1,8 @@
1
+ {
2
+ "label": "要件定義一覧",
3
+ "position": 2,
4
+ "link": {
5
+ "type": "generated-index",
6
+ "description": "こんなことやあんなこと"
7
+ }
8
+ }
@@ -0,0 +1,46 @@
1
+ ---
2
+ id: req-001
3
+ title: 要求タイトル
4
+ sidebar_label: REQ-001:要求タイトル
5
+ description: 要求の簡単な説明
6
+ tags: [タグ1, タグ2]
7
+ urgency: 5
8
+ importance: 5
9
+ draft: true
10
+ ---
11
+ import { PriorityMatrix } from '@site/src/components/PriorityMatrix';
12
+
13
+ <!-- <div style={{ marginBottom: "1rem" }}>
14
+ {frontMatter.tags.map((tag) => (
15
+ <Tag key={tag} name={tag} />
16
+ ))}
17
+ </div> -->
18
+
19
+ ## 概要
20
+ <!-- 1-2文で要求の概要を記述 -->
21
+
22
+ ## 詳細要件
23
+ <!-- 箇条書きで具体的な要件を記述 -->
24
+ - 要件1
25
+ - 要件2
26
+ - 要件3
27
+
28
+ ## 受け入れ基準
29
+ <!-- この要求が満たされたと判断できる基準を記述 -->
30
+ - [ ] 基準1
31
+ - [ ] 基準2
32
+
33
+ ## 関連する非機能要件
34
+ <!-- 関連するNFRへのリンク -->
35
+ - [NFR-001:パフォーマンス要件](../non-functional/nfr-001.mdx)
36
+
37
+ ## 参考情報
38
+ <!-- 追加の情報、図表、リンクなど -->
39
+
40
+ export const changes = [
41
+ {
42
+ date: "2025-01-02",
43
+ author: "作成者名",
44
+ changes: "初版作成",
45
+ },
46
+ ]
@@ -0,0 +1,52 @@
1
+ ---
2
+ id: req-001
3
+ title: ユーザー認証機能
4
+ sidebar_label: REQ-001:ユーザー認証
5
+ description: システムへのアクセスを制御するための認証機能
6
+ tags: [認証, セキュリティ, ユーザー管理]
7
+ urgency: 7
8
+ importance: 8
9
+ ---
10
+ import { PriorityMatrix } from '@site/src/components/PriorityMatrix';
11
+
12
+ <PriorityMatrix urgency={frontMatter.urgency} importance={frontMatter.importance} />
13
+
14
+ <!-- <div style={{ marginBottom: "1rem" }}>
15
+ {frontMatter.tags.map((tag) => (
16
+ <Tag key={tag} name={tag} />
17
+ ))}
18
+ </div> -->
19
+
20
+ ## 概要
21
+ システムへのアクセスを制御するためのユーザー認証機能を提供する。
22
+
23
+ ## 詳細要件
24
+ 1. ユーザーはメールアドレスとパスワードでログインできること
25
+ 1. パスワードは8文字以上であること
26
+ 1. 2要素認証に対応すること
27
+ 1. パスワードリセット機能を提供すること
28
+
29
+ ## 受け入れ基準
30
+ - [ ] 正しい認証情報でログインできる
31
+ - [ ] 誤った認証情報ではログインできない
32
+ - [ ] パスワードリセットメールが送信される
33
+ - [ ] 2要素認証が正常に機能する
34
+
35
+ ## 関連する非機能要件
36
+ 1. [NFR-001:セキュリティ要件](../non-functional/nfr-001.mdx)
37
+ 1. [NFR-002:パフォーマンス要件](../non-functional/nfr-002.mdx)
38
+
39
+ ## 参考情報
40
+ - [OWASP認証のベストプラクティス](https://owasp.org/)
41
+
42
+ ## 更新履歴
43
+
44
+ export const changes = [
45
+ {
46
+ date: "2025-01-02",
47
+ author: "作成者名",
48
+ changes: "初版作成",
49
+ },
50
+ ]
51
+
52
+ {/* <ChangeHistoryComponent changes={changes} /> */}
@@ -0,0 +1,14 @@
1
+ ---
2
+ id: index
3
+ sidebar_position: 1
4
+ ---
5
+ # 要件定義
6
+
7
+ :::note Note
8
+ 1. 編集途中
9
+ :::
10
+
11
+ :::tip Tip
12
+ 1. 要件定義の目的はシステムが完成した時のイメージを共有すること
13
+ 1. 成果物の認識がブレてしまうと、時間のロス、果ては作り直しになってしまうこともある
14
+ :::
@@ -0,0 +1,8 @@
1
+ {
2
+ "label": "非機能要件一覧",
3
+ "position": 3,
4
+ "link": {
5
+ "type": "generated-index",
6
+ "description": "非機能のあれやこれ"
7
+ }
8
+ }
@@ -0,0 +1,42 @@
1
+ ---
2
+ id: nfr-template
3
+ title: 非機能要件テンプレート
4
+ sidebar_label: NFR-XXX:タイトル
5
+ description: 非機能要件の説明
6
+ tags: [タグ1, タグ2]
7
+ draft: true
8
+ ---
9
+
10
+ import { PriorityMatrix } from '@site/src/components/PriorityMatrix';
11
+ import { ChangeHistoryComponent } from '@site/src/components/ChangeHistory';
12
+
13
+ <PriorityMatrix urgency={frontMatter.urgency} importance={frontMatter.importance} />
14
+
15
+ ## 概要
16
+ <!-- 非機能要件の概要を記述 -->
17
+
18
+ ## 詳細要件
19
+ ### カテゴリ1
20
+ <!-- 要件の詳細を記述 -->
21
+
22
+ ### カテゴリ2
23
+ <!-- 要件の詳細を記述 -->
24
+
25
+ ## 測定方法
26
+ <!-- 要件の達成を測定する方法を記述 -->
27
+
28
+ ## 制約条件
29
+ <!-- 制約条件があれば記述 -->
30
+
31
+ ## 関連する機能要件
32
+ <!-- 関連する機能要件へのリンク -->
33
+
34
+ export const changes = [
35
+ {
36
+ date: "2025-01-02",
37
+ author: "作成者名",
38
+ changes: "初版作成",
39
+ },
40
+ ]
41
+
42
+ <ChangeHistoryComponent changes={changes} />
@@ -0,0 +1,57 @@
1
+ ---
2
+ id: nfr-001
3
+ title: セキュリティ要件
4
+ sidebar_label: NFR-001:セキュリティ要件
5
+ description: システム全体のセキュリティに関する非機能要件
6
+ tags: [セキュリティ, SLA]
7
+ urgency: 9
8
+ importance: 9
9
+ ---
10
+
11
+ import { PriorityMatrix } from '@site/src/components/PriorityMatrix';
12
+
13
+ <PriorityMatrix urgency={frontMatter.urgency} importance={frontMatter.importance} />
14
+
15
+ ## 概要
16
+ システム全体のセキュリティに関する要件を定義する。
17
+
18
+ ## 性能要件
19
+ ### レスポンス時間
20
+ 1. 画面表示:2秒以内
21
+ 1. API応答:1秒以内
22
+ 1. バッチ処理:指定された時間枠内で完了
23
+
24
+ ### スループット
25
+ 1. 同時接続ユーザー数:1000ユーザー
26
+ 1. トランザクション処理:100 TPS
27
+
28
+ ### リソース使用
29
+ 1. CPU使用率:平常時80%以下
30
+ 1. メモリ使用率:平常時70%以下
31
+ 1. ストレージ使用率:80%以下
32
+
33
+ ## 監視要件
34
+ 1. APMツールによる常時監視
35
+ 1. パフォーマンスメトリクスの収集
36
+ 1. アラート閾値の設定
37
+
38
+ ## 測定方法
39
+ 1. 負荷テストツール:JMeter
40
+ 1. 監視ツール:Datadog
41
+ 1. 測定間隔:5分
42
+
43
+ ## 関連する機能要件
44
+ 1. [REQ-001:ユーザー認証](../functional/req-001.mdx)
45
+
46
+ export const changes = [
47
+ {
48
+ date: "2024-01-15",
49
+ author: "鈴木次郎",
50
+ changes: "監視要件の追加",
51
+ },
52
+ {
53
+ date: "2024-01-01",
54
+ author: "山田太郎",
55
+ changes: "初版作成",
56
+ },
57
+ ]
@@ -0,0 +1,57 @@
1
+ ---
2
+ id: nfr-002
3
+ title: システムパフォーマンス要件
4
+ sidebar_label: NFR-002:パフォーマンス
5
+ description: システム全体のパフォーマンスに関する非機能要件
6
+ tags: [パフォーマンス, SLA]
7
+ urgency: 4
8
+ importance: 8
9
+ ---
10
+
11
+ import { PriorityMatrix } from '@site/src/components/PriorityMatrix';
12
+
13
+ <PriorityMatrix urgency={frontMatter.urgency} importance={frontMatter.importance} />
14
+
15
+ ## 概要
16
+ システム全体のパフォーマンスに関する要件を定義する。
17
+
18
+ ## 性能要件
19
+ ### レスポンス時間
20
+ 1. 画面表示:2秒以内
21
+ 1. API応答:1秒以内
22
+ 1. バッチ処理:指定された時間枠内で完了
23
+
24
+ ### スループット
25
+ 1. 同時接続ユーザー数:1000ユーザー
26
+ 1. トランザクション処理:100 TPS
27
+
28
+ ### リソース使用
29
+ 1. CPU使用率:平常時80%以下
30
+ 1. メモリ使用率:平常時70%以下
31
+ 1. ストレージ使用率:80%以下
32
+
33
+ ## 監視要件
34
+ 1. APMツールによる常時監視
35
+ 1. パフォーマンスメトリクスの収集
36
+ 1. アラート閾値の設定
37
+
38
+ ## 測定方法
39
+ 1. 負荷テストツール:JMeter
40
+ 1. 監視ツール:Datadog
41
+ 1. 測定間隔:5分
42
+
43
+ ## 関連する機能要件
44
+ 1. [REQ-001:ユーザー認証](../functional/req-001.mdx)
45
+
46
+ export const changes = [
47
+ {
48
+ date: "2024-01-15",
49
+ author: "鈴木次郎",
50
+ changes: "監視要件の追加",
51
+ },
52
+ {
53
+ date: "2024-01-01",
54
+ author: "山田太郎",
55
+ changes: "初版作成",
56
+ },
57
+ ]
@@ -0,0 +1,14 @@
1
+ ---
2
+ sidebar_position: 2
3
+ hide_table_of_contents: true
4
+ ---
5
+ # ビジネスモデル図
6
+
7
+ import BusinessModel from '@site/static/img/business-model.drawio.svg';
8
+
9
+ <BusinessModel aria-label='ビジネスモデル' width='100%' height='auto' role='img' />
10
+
11
+ 1. 参考
12
+ 1. https://drawio-app.com/blog/business-model-canvas/
13
+ 1. note: 『ビジネスの仕組みがわかる 図解のつくりかた』全文公開
14
+ 1. https://note.com/bizgram/n/n3dbed12f95ea
@@ -0,0 +1,107 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="700" height="600" viewBox="0 0 700 600" style="background-color: #ffecdb;">
4
+ <!-- 人物アイコン:販売者 -->
5
+ <circle cx="175" cy="80" r="30" fill="none" stroke="black" stroke-width="2" />
6
+ <path d="M 175 110 L 175 160 M 145 130 L 205 130" fill="none" stroke="black" stroke-width="2" />
7
+ <text x="175" y="190" text-anchor="middle" font-family="Arial" font-size="16" font-weight="bold">販売者</text>
8
+ <text x="175" y="215" text-anchor="middle" font-family="Arial" font-size="14">商品を売りたい</text>
9
+
10
+ <!-- 人物アイコン:購入者 -->
11
+ <circle cx="525" cy="80" r="30" fill="none" stroke="black" stroke-width="2" />
12
+ <path d="M 525 110 L 525 160 M 495 130 L 555 130" fill="none" stroke="black" stroke-width="2" />
13
+ <text x="525" y="190" text-anchor="middle" font-family="Arial" font-size="16" font-weight="bold">購入者</text>
14
+ <text x="525" y="215" text-anchor="middle" font-family="Arial" font-size="14">商品を買いたい</text>
15
+
16
+ <!-- Amazon -->
17
+ <rect x="300" y="250" width="100" height="100" rx="10" ry="10" fill="white" stroke="black" stroke-width="2" />
18
+ <text x="350" y="290" text-anchor="middle" font-family="Arial" font-size="16" font-weight="bold">Amazon</text>
19
+ <text x="350" y="310" text-anchor="middle" font-family="Arial" font-size="12">プラットフォーム</text>
20
+ <text x="350" y="330" text-anchor="middle" font-family="Arial" font-size="12">運営</text>
21
+
22
+ <!-- 倉庫アイコン -->
23
+ <rect x="100" y="400" width="80" height="60" fill="white" stroke="black" stroke-width="2" />
24
+ <polygon points="100,400 140,360 180,400" fill="white" stroke="black" stroke-width="2" />
25
+ <rect x="115" y="420" width="25" height="25" fill="none" stroke="black" stroke-width="1" />
26
+ <text x="140" y="490" text-anchor="middle" font-family="Arial" font-size="16" font-weight="bold">FBA倉庫</text>
27
+
28
+ <!-- 商品アイコン -->
29
+ <circle cx="525" cy="400" r="40" fill="#b7e1a1" stroke="black" stroke-width="2" />
30
+ <text x="525" y="405" text-anchor="middle" font-family="Arial" font-size="16" font-weight="bold">商品</text>
31
+
32
+ <!-- Amazon物流センター -->
33
+ <rect x="300" y="500" width="100" height="70" fill="white" stroke="black" stroke-width="2" />
34
+ <rect x="310" y="510" width="20" height="20" fill="none" stroke="black" stroke-width="1" />
35
+ <rect x="340" y="510" width="20" height="20" fill="none" stroke="black" stroke-width="1" />
36
+ <rect x="370" y="510" width="20" height="20" fill="none" stroke="black" stroke-width="1" />
37
+ <rect x="310" y="540" width="20" height="20" fill="none" stroke="black" stroke-width="1" />
38
+ <rect x="340" y="540" width="20" height="20" fill="none" stroke="black" stroke-width="1" />
39
+ <rect x="370" y="540" width="20" height="20" fill="none" stroke="black" stroke-width="1" />
40
+ <text x="350" y="590" text-anchor="middle" font-family="Arial" font-size="16" font-weight="bold">物流センター</text>
41
+
42
+ <!-- 矢印と説明 -->
43
+ <!-- 販売者 → Amazon -->
44
+ <path d="M 175 220 L 175 260 L 295 260" fill="none" stroke="black" stroke-width="2" marker-end="url(#arrow)" />
45
+ <text x="200" y="250" text-anchor="start" font-family="Arial" font-size="14">出品</text>
46
+ <circle cx="235" cy="260" r="15" fill="#b7e1a1" stroke="black" stroke-width="1" />
47
+ <!-- 販売者 → FBA倉庫 -->
48
+ <path d="M 140 220 L 140 400" fill="none" stroke="black" stroke-width="2" marker-end="url(#arrow)" />
49
+ <text x="100" y="300" text-anchor="middle" font-family="Arial" font-size="14">商品</text>
50
+ <text x="100" y="320" text-anchor="middle" font-family="Arial" font-size="14">発送</text>
51
+
52
+ <!-- Amazon → 購入者 -->
53
+ <path d="M 405 260 L 525 260 L 525 220" fill="none" stroke="black" stroke-width="2" marker-end="url(#arrow)" />
54
+ <text x="465" y="250" text-anchor="middle" font-family="Arial" font-size="14">販売</text>
55
+ <circle cx="465" cy="260" r="15" fill="#b7e1a1" stroke="black" stroke-width="1" />
56
+
57
+ <!-- Amazon → 商品 -->
58
+ <path d="M 400 300 L 525 300 L 525 355" fill="none" stroke="black" stroke-width="2" marker-end="url(#arrow)" />
59
+ <text x="465" y="320" text-anchor="middle" font-family="Arial" font-size="14">商品情報</text>
60
+
61
+ <!-- FBA倉庫 → 物流センター -->
62
+ <path d="M 140 460 L 140 535 L 295 535" fill="none" stroke="black" stroke-width="2" marker-end="url(#arrow)" />
63
+ <text x="200" y="525" text-anchor="middle" font-family="Arial" font-size="14">在庫移動</text>
64
+
65
+ <!-- 物流センター → 購入者 -->
66
+ <path d="M 405 535 L 580 535 L 580 220" fill="none" stroke="black" stroke-width="2" marker-end="url(#arrow)" />
67
+ <text x="500" y="555" text-anchor="middle" font-family="Arial" font-size="14">配送</text>
68
+
69
+ <!-- 購入者 → Amazon -->
70
+ <path d="M 490 190 L 350 190 L 350 245" fill="none" stroke="black" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrow)" />
71
+ <text x="400" y="180" text-anchor="middle" font-family="Arial" font-size="14">支払い</text>
72
+ <text x="400" y="200" text-anchor="middle" font-family="Arial" font-size="14">(¥)</text>
73
+
74
+ <!-- Amazon → 販売者 -->
75
+ <path d="M 350 155 L 350 130 L 210 130" fill="none" stroke="black" stroke-width="2" stroke-dasharray="5,5" marker-end="url(#arrow)" />
76
+ <text x="280" y="120" text-anchor="middle" font-family="Arial" font-size="14">売上金</text>
77
+ <text x="280" y="140" text-anchor="middle" font-family="Arial" font-size="14">(手数料差引後)</text>
78
+
79
+ <!-- マーケットプレイス手数料の説明 -->
80
+ <rect x="450" y="440" width="180" height="70" fill="#ffcccc" stroke="black" stroke-width="1" rx="5" ry="5" />
81
+ <text x="540" y="465" text-anchor="middle" font-family="Arial" font-size="14">販売手数料</text>
82
+ <text x="540" y="485" text-anchor="middle" font-family="Arial" font-size="14">販売価格の8-15%</text>
83
+
84
+ <!-- FBAの説明 -->
85
+ <rect x="50" y="520" width="180" height="60" fill="#ffcccc" stroke="black" stroke-width="1" rx="5" ry="5" />
86
+ <text x="140" y="545" text-anchor="middle" font-family="Arial" font-size="14">FBA(フルフィルメント)</text>
87
+ <text x="140" y="565" text-anchor="middle" font-family="Arial" font-size="14">保管・配送代行サービス</text>
88
+
89
+ <!-- 矢印マーカー -->
90
+ <defs>
91
+ <marker id="arrow" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">
92
+ <path d="M0,0 L0,6 L9,3 z" fill="black" />
93
+ </marker>
94
+ </defs>
95
+
96
+ <!-- Amazonのロゴ -->
97
+ <g transform="translate(320, 275) scale(0.03)">
98
+ <path d="M1858.7,806c-48,35.3-117.4,54-177.3,54c-84,0-159.6-31-216.8-82.7c-4.5-4-0.5-9.5,4.9-6.4 c62.3,36,139.2,57.7,218.6,57.7c53.7,0,112.7-11.1,167.1-34c8.2-3.5,15,5.3,7.1,11.4H1858.7z" fill="black"/>
99
+ <path d="M1900,758.2c-6.1-7.8-40.6-3.7-56.1-1.9c-4.7,0.6-5.4-3.5-1.2-6.5c27.5-19.3,72.6-13.7,77.8-7.3 c5.2,6.5-1.4,51.1-26.8,72.4c-3.9,3.3-7.6,1.5-5.9-2.8C1893.6,797.1,1906.1,766,1900,758.2L1900,758.2z" fill="black"/>
100
+ <path d="M1696.1,482.8v-58.5c0-8.9,6.7-14.8,14.8-14.8h263.1c8.4,0,15.1,6,15.1,14.8V467c0,8.4-7.2,19.4-19.7,36.8 l-136.2,194.6c50.6-1.2,104-6.3,149.8-31.5c10.3-5.7,13.1-14,13.9-22.2v-60.6c0-8.3,6.9-15.1,15.3-15.1h50.4 c8.6,0,15.7,6.7,15.7,15.1v101.4c0,8-5.5,17.7-15.1,24.3c-39.7,33.1-86.5,48.6-127.9,60.5c-9.7,2.7-15.7,5.4-22.7,9.9 c-15.1,10-38.6,15.7-56.3,15.7H1710c-8.3,0-15.1-6.7-15.1-15.1v-56.8c0-10.8,0.8-18.5,7.8-28.7L1855,537h-144.3 C1702.6,497.9,1695.9,491.2,1696.1,482.8z" fill="black"/>
101
+ <path d="M676.3,802.8h-54.3c-5.2-0.3-9.3-4.3-9.7-9.2V488.9c0-5.6,4.7-10,10.4-10h50.6c5.2,0.3,9.5,4.3,9.9,9.3v39.8h1 c13.2-35.2,38.1-51.6,71.6-51.6c34,0,55.3,16.4,70.6,51.6c13.2-35.2,43.1-51.6,75.1-51.6c22.8,0,47.6,9.4,62.8,30.4 c17.2,23.3,13.7,57.1,13.7,86.9v174.9c0,5.6-4.7,10-10.4,10h-54.1c-5.4-0.3-9.7-4.7-9.7-10V577.7c0-13,1.2-45.5-1.7-57.9 c-4.5-20.8-18-26.6-35.4-26.6c-14.6,0-29.8,9.7-36,25.3c-6.2,15.6-5.6,41.6-5.6,59.2v215.2c0,5.6-4.7,10-10.4,10h-54.1 c-5.5-0.3-9.7-4.7-9.7-10V577.7c0-34.4,5.7-85-36.9-85c-43.1,0-41.4,49.3-41.4,85v215.2C686.8,798.4,682,802.8,676.3,802.8z" fill="black"/>
102
+ <path d="M2139,469.3c80.3,0,123.7,68.9,123.7,156.6c0,84.7-48,152-123.7,152c-78.8,0-121.8-68.9-121.8-154.8 C2017.2,537.3,2060.9,469.3,2139,469.3z M2139,517.7c-39.9,0-42.4,54.4-42.4,88.3c0,33.9-0.5,106.4,42,106.4 c42,0,44.1-58.7,44.1-94.3c0-23.5-1-51.6-8.1-73.9C2167.1,526.6,2154.9,517.7,2139,517.7z" fill="black"/>
103
+ <path d="M2469.9,802.8h-53.9c-5.4-0.3-9.7-4.7-9.7-10V489.6c0.4-5,4.8-8.9,10-8.9h50.2c4.5,0.2,8.3,3.3,9.3,7.5v46.9h1 c15.1-38,36.3-56.3,73.6-56.3c24.2,0,47.8,8.7,62.9,32.7c14.1,22.2,14.1,59.6,14.1,86.4v173.3c-0.6,4.8-4.9,8.6-10,8.6h-54.3 c-4.8-0.3-8.8-3.9-9.5-8.6V611.7c0-33.9,3.9-83.7-37.9-83.7c-14.7,0-28.2,9.9-35,24.8c-8.5,19-9.7,37.9-9.7,58.9v181.2 C2480,798.4,2475.3,802.8,2469.9,802.8L2469.9,802.8z" fill="black"/>
104
+ <path d="M1082.1,651.2c0,21.2,0.5,38.9-10.2,57.7c-8.6,15.4-22.3,24.8-37.6,24.8c-20.8,0-33-15.9-33-39.4 c0-46.3,41.5-54.7,80.8-54.7V651.2z M1136.9,802.4c-3.6,3.2-8.7,3.4-12.7,1.3c-17.9-14.9-21.1-21.8-30.9-35.9 c-29.5,30.1-50.5,39.1-88.7,39.1c-45.3,0-80.5-28-80.5-83.8c0-43.6,23.6-73.4,57.4-87.8c29.2-12.8,70-15.1,101.2-18.6v-7 c0-12.8,1-28-6.5-39.1c-6.5-9.9-19.1-14-30.2-14c-20.5,0-38.8,10.5-43.3,32.3c-0.9,4.8-4.4,9.5-9.2,9.7l-52.5-5.7 c-4.4-1-9.3-4.6-8.1-11.4c12.1-63.9,69.8-83.1,121.3-83.1c26.4,0,60.9,7,81.7,27c26.4,24.6,23.9,57.4,23.9,93.1v84.4 c0,25.3,10.5,36.4,20.3,50.1c3.4,4.8,4.2,10.6-0.2,14.2C1168,775.9,1148.7,794.2,1136.9,802.4L1136.9,802.4z" fill="black"/>
105
+ <path d="M345.5,651.2c0,21.2,0.5,38.9-10.2,57.7c-8.6,15.4-22.2,24.8-37.6,24.8c-20.8,0-33-15.9-33-39.4 c0-46.3,41.5-54.7,80.8-54.7V651.2z M400.3,802.4c-3.6,3.2-8.7,3.4-12.7,1.3c-17.9-14.9-21.1-21.8-30.9-35.9 c-29.5,30.1-50.5,39.1-88.7,39.1c-45.3,0-80.5-28-80.5-83.8c0-43.6,23.6-73.4,57.4-87.8c29.2-12.8,70-15.1,101.2-18.6v-7 c0-12.8,1-28-6.5-39.1c-6.5-9.9-19.1-14-30.2-14c-20.5,0-38.8,10.5-43.3,32.3c-0.9,4.8-4.4,9.5-9.2,9.7l-52.5-5.7 c-4.4-1-9.3-4.6-8.1-11.4c12.1-63.9,69.8-83.1,121.3-83.1c26.4,0,60.9,7,81.7,27c26.4,24.6,23.9,57.4,23.9,93.1v84.4 c0,25.3,10.5,36.4,20.3,50.1c3.4,4.8,4.2,10.6-0.2,14.2C431.4,775.9,412.1,794.2,400.3,802.4L400.3,802.4z" fill="black"/>
106
+ </g>
107
+ </svg>