@k2works/claude-code-booster 3.2.1 → 3.3.1

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 (70) hide show
  1. package/lib/assets/.claude/skills/analyzing-business/SKILL.md +2 -2
  2. package/lib/assets/.claude/skills/analyzing-inception-deck/SKILL.md +5 -5
  3. package/lib/assets/.claude/skills/analyzing-requirements/SKILL.md +2 -2
  4. package/lib/assets/.claude/skills/generating-slides/SKILL.md +7 -7
  5. package/lib/assets/docs/article/index.md +4 -1
  6. package/lib/assets/docs/article/practical-database-design/index.md +121 -0
  7. package/lib/assets/docs/article/practical-database-design/part1/chapter01.md +288 -0
  8. package/lib/assets/docs/article/practical-database-design/part1/chapter02.md +518 -0
  9. package/lib/assets/docs/article/practical-database-design/part1/chapter03.md +557 -0
  10. package/lib/assets/docs/article/practical-database-design/part2/chapter04.md +924 -0
  11. package/lib/assets/docs/article/practical-database-design/part2/chapter05.md +1627 -0
  12. package/lib/assets/docs/article/practical-database-design/part2/chapter06.md +2716 -0
  13. package/lib/assets/docs/article/practical-database-design/part2/chapter07.md +2082 -0
  14. package/lib/assets/docs/article/practical-database-design/part2/chapter08.md +2105 -0
  15. package/lib/assets/docs/article/practical-database-design/part2/chapter09.md +2031 -0
  16. package/lib/assets/docs/article/practical-database-design/part2/chapter10.md +1387 -0
  17. package/lib/assets/docs/article/practical-database-design/part2/chapter11.md +1677 -0
  18. package/lib/assets/docs/article/practical-database-design/part2/chapter12.md +1417 -0
  19. package/lib/assets/docs/article/practical-database-design/part2/chapter13.md +1434 -0
  20. package/lib/assets/docs/article/practical-database-design/part3/chapter14.md +667 -0
  21. package/lib/assets/docs/article/practical-database-design/part3/chapter15.md +1625 -0
  22. package/lib/assets/docs/article/practical-database-design/part3/chapter16.md +1915 -0
  23. package/lib/assets/docs/article/practical-database-design/part3/chapter17.md +1708 -0
  24. package/lib/assets/docs/article/practical-database-design/part3/chapter18.md +2095 -0
  25. package/lib/assets/docs/article/practical-database-design/part3/chapter19.md +1123 -0
  26. package/lib/assets/docs/article/practical-database-design/part3/chapter20.md +1031 -0
  27. package/lib/assets/docs/article/practical-database-design/part3/chapter21.md +1382 -0
  28. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter14-orm.md +991 -0
  29. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter15-orm.md +1300 -0
  30. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter16-orm.md +1166 -0
  31. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter17-orm.md +1584 -0
  32. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter18-orm.md +1183 -0
  33. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter19-orm.md +1016 -0
  34. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter20-orm.md +1753 -0
  35. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter21-orm.md +1447 -0
  36. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter22-orm.md +1878 -0
  37. package/lib/assets/docs/article/practical-database-design/part4/chapter22.md +965 -0
  38. package/lib/assets/docs/article/practical-database-design/part4/chapter23.md +2069 -0
  39. package/lib/assets/docs/article/practical-database-design/part4/chapter24.md +2439 -0
  40. package/lib/assets/docs/article/practical-database-design/part4/chapter25.md +3661 -0
  41. package/lib/assets/docs/article/practical-database-design/part4/chapter26.md +2916 -0
  42. package/lib/assets/docs/article/practical-database-design/part4/chapter27.md +3105 -0
  43. package/lib/assets/docs/article/practical-database-design/part4/chapter28.md +2697 -0
  44. package/lib/assets/docs/article/practical-database-design/part4/chapter29.md +2544 -0
  45. package/lib/assets/docs/article/practical-database-design/part4/chapter30.md +2180 -0
  46. package/lib/assets/docs/article/practical-database-design/part4/chapter31.md +1192 -0
  47. package/lib/assets/docs/article/practical-database-design/part4/chapter32.md +2101 -0
  48. package/lib/assets/docs/article/practical-database-design/part5/chapter33.md +1032 -0
  49. package/lib/assets/docs/article/practical-database-design/part5/chapter34.md +1609 -0
  50. package/lib/assets/docs/article/practical-database-design/part5/chapter35.md +1453 -0
  51. package/lib/assets/docs/article/practical-database-design/part5/chapter36.md +1292 -0
  52. package/lib/assets/docs/article/practical-database-design/part5/chapter37.md +1470 -0
  53. package/lib/assets/docs/article/practical-database-design/part5/chapter38.md +1698 -0
  54. package/lib/assets/docs/article/practical-database-design/part5/chapter39.md +2334 -0
  55. package/lib/assets/docs/article/practical-database-design/study/study2-1.md +1693 -0
  56. package/lib/assets/docs/article/practical-database-design/study/study2-2.md +1347 -0
  57. package/lib/assets/docs/article/practical-database-design/study/study2-3.md +2044 -0
  58. package/lib/assets/docs/article/practical-database-design/study/study2-4.md +2229 -0
  59. package/lib/assets/docs/article/practical-database-design/study/study2-5.md +2418 -0
  60. package/lib/assets/docs/article/practical-database-design/study/study3-1.md +2205 -0
  61. package/lib/assets/docs/article/practical-database-design/study/study3-2.md +2221 -0
  62. package/lib/assets/docs/article/practical-database-design/study/study3-3.md +2253 -0
  63. package/lib/assets/docs/article/practical-database-design/study/study3-4.md +2106 -0
  64. package/lib/assets/docs/article/practical-database-design/study/study3-5.md +2507 -0
  65. package/lib/assets/docs/article/practical-database-design/study/study4-1.md +2587 -0
  66. package/lib/assets/docs/article/practical-database-design/study/study4-2.md +2075 -0
  67. package/lib/assets/docs/article/practical-database-design/study/study4-3.md +1805 -0
  68. package/lib/assets/docs/article/practical-database-design/study/study4-4.md +1895 -0
  69. package/lib/assets/docs/article/practical-database-design/study/study4-5.md +2878 -0
  70. package/package.json +1 -1
@@ -18,7 +18,7 @@ description: ビジネスアーキテクチャ分析を支援。要件定義の
18
18
  | 種類 | パス | 備考 |
19
19
  |------|------|------|
20
20
  | テンプレート | @docs/template/ビジネスアーキテクチャ.md | 編集禁止。コピーして使用する |
21
- | 成果物 | `docs/analysis/business_architecture.md` | テンプレートを基に作成 |
21
+ | 成果物 | `docs/strategy/business_architecture.md` | テンプレートを基に作成 |
22
22
 
23
23
  ## 分析の進め方
24
24
 
@@ -70,7 +70,7 @@ description: ビジネスアーキテクチャ分析を支援。要件定義の
70
70
 
71
71
  ## 途中から再開する場合
72
72
 
73
- 既存の `docs/analysis/business_architecture.md` がある場合は、まずその内容を確認する。完了済みのセクションはスキップし、未着手または更新が必要なセクションから再開する。
73
+ 既存の `docs/strategy/business_architecture.md` がある場合は、まずその内容を確認する。完了済みのセクションはスキップし、未着手または更新が必要なセクションから再開する。
74
74
 
75
75
  **Example:**
76
76
 
@@ -15,8 +15,8 @@ description: インセプションデッキの作成を支援。プロジェク
15
15
  |------|------|------|
16
16
  | ガイド | @docs/reference/開発ガイド.md | 開発ライフサイクルにおける位置づけ |
17
17
  | テンプレート | @docs/template/インセプションデッキ.md | 編集禁止。コピーして使用する |
18
- | 入力 | @docs/analysis/business_architecture.md | ビジネスアーキテクチャ分析書 |
19
- | 成果物 | `docs/analysis/inception-deck.md` | テンプレートを基に作成 |
18
+ | 入力 | @docs/strategy/business_architecture.md | ビジネスアーキテクチャ分析書 |
19
+ | 成果物 | `docs/strategy/inception-deck.md` | テンプレートを基に作成 |
20
20
 
21
21
  ## 10 の問いと情報源
22
22
 
@@ -39,16 +39,16 @@ description: インセプションデッキの作成を支援。プロジェク
39
39
 
40
40
  ### 新規作成
41
41
 
42
- 1. `docs/analysis/business_architecture.md` が存在するか確認する。存在しない場合は `analyzing-business` スキルを先に実行するか、基本情報をヒアリングする
42
+ 1. `docs/strategy/business_architecture.md` が存在するか確認する。存在しない場合は `analyzing-business` スキルを先に実行するか、基本情報をヒアリングする
43
43
  2. テンプレート(@docs/template/インセプションデッキ.md)を読み込む
44
44
  3. 10 の問いに順番に回答する。各問いの回答にはビジネスアーキテクチャ分析書からの根拠を示す
45
45
  4. 概念アーキテクチャ図を PlantUML で作成する(問い 6)
46
46
  5. マイルストーンの Gantt チャートを PlantUML で作成する(問い 10)
47
- 6. `docs/analysis/inception-deck.md` として出力する
47
+ 6. `docs/strategy/inception-deck.md` として出力する
48
48
 
49
49
  ### 途中から再開・更新
50
50
 
51
- 既存の `docs/analysis/inception-deck.md` がある場合は、まずその内容を確認する。更新が必要な問いのみを修正する。
51
+ 既存の `docs/strategy/inception-deck.md` がある場合は、まずその内容を確認する。更新が必要な問いのみを修正する。
52
52
 
53
53
  **Example:**
54
54
 
@@ -15,8 +15,8 @@ RDRA の価値は、要件を「何となくの要望リスト」ではなく「
15
15
  |------|------|------|
16
16
  | ガイド | @docs/reference/要件定義ガイド.md | RDRA 2.0 の進め方詳細 |
17
17
  | テンプレート | @docs/template/要件定義.md | 編集禁止。コピーして使用する |
18
- | 入力 | @docs/analysis/business_architecture.md | ビジネスアーキテクチャ分析書 |
19
- | 入力 | @docs/analysis/inception-deck.md | インセプションデッキ |
18
+ | 入力 | @docs/strategy/business_architecture.md | ビジネスアーキテクチャ分析書 |
19
+ | 入力 | @docs/strategy/inception-deck.md | インセプションデッキ |
20
20
  | 成果物 | `docs/requirements/requirements_definition.md` | テンプレートを基に作成 |
21
21
 
22
22
  ## RDRA の 4 層構造
@@ -13,9 +13,9 @@ description: インセプションデッキの Markdown から PowerPoint スラ
13
13
  |------|------|------|
14
14
  | テンプレート | @docs/template/インセプションデッキ.pptx | スライド構成のリファレンス(15 枚、4:3) |
15
15
  | 生成スクリプト | @.claude/scripts/generate-inception-deck.mjs | 内容の編集は可能 |
16
- | 入力 | @docs/analysis/inception-deck.md | `analyzing-inception-deck` の成果物 |
17
- | 入力(補足) | @docs/analysis/business_architecture.md | ビジネスアーキテクチャ分析書 |
18
- | 成果物 | `docs/analysis/slide/xxxxx_v0.1.0.pptx` | 生成された PowerPoint スライド |
16
+ | 入力 | @docs/strategy/inception-deck.md | `analyzing-inception-deck` の成果物 |
17
+ | 入力(補足) | @docs/strategy/business_architecture.md | ビジネスアーキテクチャ分析書 |
18
+ | 成果物 | `docs/strategy/slide/xxxxx_v0.1.0.pptx` | 生成された PowerPoint スライド |
19
19
 
20
20
  ## スライド構成(12 枚)
21
21
 
@@ -47,14 +47,14 @@ description: インセプションデッキの Markdown から PowerPoint スラ
47
47
  ### 新規生成
48
48
 
49
49
  1. `npm install pptxgenjs`(初回のみ)
50
- 2. `docs/analysis/inception-deck.md` の内容を確認する
50
+ 2. `docs/strategy/inception-deck.md` の内容を確認する
51
51
  3. `.claude/scripts/generate-inception-deck.mjs` の `SLIDE_DATA` をプロジェクト固有の内容に書き換える
52
52
  4. `node .claude/scripts/generate-inception-deck.mjs` を実行する
53
- 5. `docs/analysis/slide/` に .pptx が生成されたことを確認する
53
+ 5. `docs/strategy/slide/` に .pptx が生成されたことを確認する
54
54
 
55
55
  ### 更新時の再生成
56
56
 
57
- 1. `docs/analysis/inception-deck.md` の更新内容を確認する
57
+ 1. `docs/strategy/inception-deck.md` の更新内容を確認する
58
58
  2. `.claude/scripts/generate-inception-deck.mjs` の `SLIDE_DATA` を更新する
59
59
  3. `node .claude/scripts/generate-inception-deck.mjs` を実行する
60
60
 
@@ -82,7 +82,7 @@ description: インセプションデッキの Markdown から PowerPoint スラ
82
82
 
83
83
  ## 注意事項
84
84
 
85
- - `docs/analysis/inception-deck.md` が作成済みであること(`analyzing-inception-deck` を先に実行する)
85
+ - `docs/strategy/inception-deck.md` が作成済みであること(`analyzing-inception-deck` を先に実行する)
86
86
  - テンプレート `docs/template/インセプションデッキ.pptx` は編集しない
87
87
  - 日本語フォントは Yu Gothic を使用する(Gill Sans 等の欧文フォントは文字化けする)
88
88
  - 出力ファイル名は `SLIDE_DATA.meta.outputFileName` で指定する。`meta.title` と同時に更新する
@@ -2,7 +2,7 @@
2
2
 
3
3
  学習用の記事シリーズ一覧です。
4
4
 
5
- 複数言語を横断して比較しながら、TDD、関数型プログラミング、並行処理、設計パターンを段階的に学べます。
5
+ 複数言語を横断して比較しながら、TDD、関数型プログラミング、並行処理、設計パターン、データベース設計を段階的に学べます。
6
6
 
7
7
  ## 記事シリーズ
8
8
 
@@ -12,6 +12,7 @@
12
12
  | [Grokking Functional Programming](grokkingfp/index.md) | 関数型プログラミング | 11 | 純粋関数、イミュータブルデータ、Option/Either、IO、並行処理まで体系的に学べます。 |
13
13
  | [Grokking Concurrency](grokking-concurrency/index.md) | 並行処理プログラミング | 8 | スレッド、同期、非同期、ノンブロッキング I/O、分散並列処理を多言語で比較できます。 |
14
14
  | [関数型デザイン - 原則、パターン、実践](functional-desgin-ppp/index.md) | 関数型デザインパターン | 6 | OOP のデザインパターンを関数型パラダイムでどう表現するかを実践的に学べます。 |
15
+ | [実践データベース設計:基幹業務システム編](practical-database-design/index.md) | データベース設計 | - | 販売管理・財務会計・生産管理の基幹業務システムを題材に、業務フローとデータモデルを体系的に学べます。 |
15
16
 
16
17
  ## 学び方のガイド
17
18
 
@@ -19,6 +20,7 @@
19
20
  - 関数型プログラミングを体系的に学ぶ場合は、[Grokking Functional Programming](grokkingfp/index.md) を参照してください。
20
21
  - 並行処理を重点的に学ぶ場合は、[Grokking Concurrency](grokking-concurrency/index.md) を参照してください。
21
22
  - 設計原則やパターンを深く学ぶ場合は、[関数型デザイン - 原則、パターン、実践](functional-desgin-ppp/index.md) を参照してください。
23
+ - データベース設計を実践的に学ぶ場合は、[実践データベース設計:基幹業務システム編](practical-database-design/index.md) を参照してください。
22
24
 
23
25
  ## 多言語統合解説
24
26
 
@@ -34,3 +36,4 @@
34
36
  - [functional-desgin-ppp](https://github.com/k2works/functional-desgin-ppp)
35
37
  - [grokking-concurrency-exercise](https://github.com/k2works/grokking-concurrency-exercise)
36
38
  - [grokkingfp-excersice](https://github.com/k2works/grokkingfp-excersice)
39
+ - [practical-database-design](https://github.com/k2works/practical-database-design)
@@ -0,0 +1,121 @@
1
+ # 実践データベース設計:基幹業務システム編
2
+
3
+ ## 概要
4
+
5
+ 本記事では、基幹業務システム(販売管理・財務会計・生産管理)のデータベース設計を、業務フローとデータモデルの観点から体系的に解説します。
6
+
7
+ ## 対象読者
8
+
9
+ - データベース設計の基礎を学びたいエンジニア
10
+ - 基幹業務システムの全体像を理解したい開発者
11
+ - 販売管理・財務会計・生産管理の業務知識を習得したい方
12
+
13
+ ## 記事構成
14
+
15
+ ### 第1部:基幹業務システムの全体像
16
+
17
+ 基幹業務システムを構成するサブシステムと、それぞれの業務領域について概観します。
18
+
19
+ - [第1章:基幹業務システムとは](part1/chapter01.md)
20
+ - [第2章:基幹業務システムの業務領域](part1/chapter02.md)
21
+ - [第3章:業務フローの全体像](part1/chapter03.md)
22
+
23
+ ### 第2部:販売管理システム
24
+
25
+ 受注から売上、債権管理までの販売業務のデータベース設計を解説します。
26
+
27
+ - [第4章:販売管理システムの全体像](part2/chapter04.md)
28
+ - [第5章:マスタ情報の設計](part2/chapter05.md)
29
+ - [第6章:受注・出荷・売上の設計](part2/chapter06.md)
30
+ - [第7章:債権管理の設計](part2/chapter07.md)
31
+ - [第8章:調達管理の設計](part2/chapter08.md)
32
+ - [第9章:在庫管理の設計](part2/chapter09.md)
33
+ - [第10章:債務管理の設計](part2/chapter10.md)
34
+ - [第11章:共通処理の設計](part2/chapter11.md)
35
+ - [第12章:販売管理データ設計(B 社事例)](part2/chapter12.md)
36
+ - [第13章:API サービスの実装](part2/chapter13.md)
37
+
38
+ ### 第3部:財務会計システム
39
+
40
+ 勘定科目、仕訳、自動仕訳など会計システムの核心部分を解説します。
41
+
42
+ - [第14章:財務会計システムの全体像](part3/chapter14.md)
43
+ - [第15章:勘定科目の設計](part3/chapter15.md)
44
+ - [第16章:仕訳の設計](part3/chapter16.md)
45
+ - [第17章:自動仕訳の設計](part3/chapter17.md)
46
+ - [第18章:勘定科目残高の設計](part3/chapter18.md)
47
+ - [第19章:赤黒とログの設計](part3/chapter19.md)
48
+ - [第20章:財務会計データ設計(D 社事例)](part3/chapter20.md)
49
+ - [第21章:API サービスの実装](part3/chapter21.md)
50
+
51
+ ### 第4部:生産管理システム
52
+
53
+ BOM、MRP、工程管理など製造業の基幹となるデータベース設計を解説します。
54
+
55
+ - [第22章:生産管理システムの全体像](part4/chapter22.md)
56
+ - [第23章:マスタ情報の設計](part4/chapter23.md)
57
+ - [第24章:生産計画の設計](part4/chapter24.md)
58
+ - [第25章:購買管理の設計](part4/chapter25.md)
59
+ - [第26章:外注委託管理の設計](part4/chapter26.md)
60
+ - [第27章:工程管理の設計](part4/chapter27.md)
61
+ - [第28章:在庫管理の設計](part4/chapter28.md)
62
+ - [第29章:品質管理の設計](part4/chapter29.md)
63
+ - [第30章:製造原価管理の設計](part4/chapter30.md)
64
+ - [第31章:生産管理データ設計(E 社事例)](part4/chapter31.md)
65
+ - [第32章:API サービスの実装](part4/chapter32.md)
66
+
67
+ ### 第5部:エンタープライズインテグレーション
68
+
69
+ 各システムを統合するためのパターンとアーキテクチャを解説します。
70
+
71
+ - [第33章:システム統合の概要](part5/chapter33.md)
72
+ - [第34章:メッセージングパターン](part5/chapter34.md)
73
+ - [第35章:システム間連携パターン](part5/chapter35.md)
74
+ - [第36章:マスタデータ管理(MDM)](part5/chapter36.md)
75
+ - [第37章:イベント駆動アーキテクチャ](part5/chapter37.md)
76
+ - [第38章:API 設計とサービス連携](part5/chapter38.md)
77
+ - [第39章:データ連携の実装パターン](part5/chapter39.md)
78
+
79
+ ### 研究:販売管理システム実装編
80
+
81
+ 販売管理システムの各種プレゼンテーション層実装パターンを研究します。
82
+
83
+ - [研究 1:モノリスサービスの実装](study/study2-1.md)
84
+ - [研究 2:JavaFX デスクトップアプリケーションの実装](study/study2-2.md)
85
+ - [研究 3:gRPC サービスの実装](study/study2-3.md)
86
+ - [研究 4:GraphQL サービスの実装](study/study2-4.md)
87
+ - [研究 5:Axon CQRS/ES の実装](study/study2-5.md)
88
+
89
+ ### 研究:財務会計システム実装編
90
+
91
+ 財務会計システムの各種プレゼンテーション層実装パターンを研究します。
92
+
93
+ - [研究 1:モノリスサービスの実装](study/study3-1.md)
94
+ - [研究 2:JavaFX デスクトップアプリケーションの実装](study/study3-2.md)
95
+ - [研究 3:gRPC サービスの実装](study/study3-3.md)
96
+ - [研究 4:GraphQL サービスの実装](study/study3-4.md)
97
+ - [研究 5:Axon CQRS/ES の実装](study/study3-5.md)
98
+
99
+ ### 研究:生産管理システム実装編
100
+
101
+ 生産管理システムの各種プレゼンテーション層実装パターンを研究します。
102
+
103
+ - [研究 1:モノリスサービスの実装](study/study4-1.md)
104
+ - [研究 2:JavaFX デスクトップアプリケーションの実装](study/study4-2.md)
105
+ - [研究 3:gRPC サービスの実装](study/study4-3.md)
106
+ - [研究 4:GraphQL サービスの実装](study/study4-4.md)
107
+ - [研究 5:Axon CQRS/ES の実装](study/study4-5.md)
108
+
109
+ ### 研究:財務会計システム ORM 実装編
110
+
111
+ 財務会計システムの ORM(JPA/Spring Data JPA)実装パターンを研究します。
112
+
113
+ - [第 14 章:財務会計システムの全体像【ORM 版】](part3-orm/chapter14-orm.md)
114
+ - [第 15 章:勘定科目の設計【ORM 版】](part3-orm/chapter15-orm.md)
115
+ - [第 16 章:仕訳の設計【ORM 版】](part3-orm/chapter16-orm.md)
116
+ - [第 17 章:自動仕訳の設計【ORM 版】](part3-orm/chapter17-orm.md)
117
+ - [第 18 章:勘定科目残高の設計【ORM 版】](part3-orm/chapter18-orm.md)
118
+ - [第 19 章:赤黒とログの設計【ORM 版】](part3-orm/chapter19-orm.md)
119
+ - [第 20 章:財務会計データ設計(D 社事例)【ORM 版】](part3-orm/chapter20-orm.md)
120
+ - [第 21 章:API サービスの実装【ORM 版】](part3-orm/chapter21-orm.md)
121
+ - [第 22 章:Axon CQRS/ES の実装【ORM 版】](part3-orm/chapter22-orm.md)
@@ -0,0 +1,288 @@
1
+ # 第1章:基幹業務システムとは
2
+
3
+ 本章では、基幹業務システムの概要と、ドメイン駆動設計(DDD)との関係について解説します。
4
+
5
+ ## 1.1 ドメイン駆動設計と基幹業務システム
6
+
7
+ ドメイン駆動設計(Domain-Driven Design、以下 DDD)は、複雑なビジネスドメインを扱うソフトウェア開発において有効なアプローチです。基幹業務システムは、まさにこの複雑なビジネスドメインの典型例といえます。
8
+
9
+ ```plantuml
10
+ @startmindmap
11
+
12
+ * ドメイン駆動設計
13
+ ** 戦略的設計
14
+ *** ドメイン分析
15
+ *** 境界付けられたコンテキスト
16
+ *** コンテキストマップ
17
+ *** ユビキタス言語
18
+ ** 戦術的設計
19
+ *** エンティティ
20
+ *** 値オブジェクト
21
+ *** 集約
22
+ *** リポジトリ
23
+ *** ドメインサービス
24
+ left side
25
+ ** 基幹業務システム
26
+ *** 販売管理システム
27
+ *** 財務会計システム
28
+ *** 生産管理システム
29
+ *** 人事システム
30
+
31
+ @endmindmap
32
+ ```
33
+
34
+ ### 戦略的設計と戦術的設計
35
+
36
+ DDD は大きく「戦略的設計」と「戦術的設計」の2つのレベルに分けられます。
37
+
38
+ #### 戦略的設計
39
+
40
+ 戦略的設計は、ビジネスドメイン全体を俯瞰し、システムの境界を定義するための手法です。
41
+
42
+ | 概念 | 説明 |
43
+ |---|---|
44
+ | ドメイン | ビジネスの問題領域全体 |
45
+ | サブドメイン | ドメインを分割した個々の領域(コア・サポート・汎用) |
46
+ | 境界付けられたコンテキスト | 特定のモデルが適用される明確な境界 |
47
+ | コンテキストマップ | コンテキスト間の関係を可視化したもの |
48
+ | ユビキタス言語 | チーム全体で共有する共通言語 |
49
+
50
+ #### 戦術的設計
51
+
52
+ 戦術的設計は、境界付けられたコンテキスト内部のモデルを実装するためのパターン群です。
53
+
54
+ | パターン | 説明 |
55
+ |---|---|
56
+ | エンティティ | 識別子を持つオブジェクト |
57
+ | 値オブジェクト | 識別子を持たない不変オブジェクト |
58
+ | 集約 | 整合性を保つオブジェクトの集まり |
59
+ | リポジトリ | 集約の永続化を担当 |
60
+ | ドメインサービス | エンティティに属さない業務ロジック |
61
+
62
+ ### 基幹業務システムへの適用
63
+
64
+ 基幹業務システムを DDD の観点から分析すると、各サブシステムは「境界付けられたコンテキスト」として捉えることができます。
65
+
66
+ ```plantuml
67
+ @startuml
68
+ !define RECTANGLE class
69
+
70
+ skinparam rectangle {
71
+ BackgroundColor<<core>> LightBlue
72
+ BackgroundColor<<support>> LightGreen
73
+ BackgroundColor<<generic>> LightGray
74
+ }
75
+
76
+ rectangle "基幹業務システム" {
77
+ rectangle "販売管理\nコンテキスト" <<core>> as sales
78
+ rectangle "財務会計\nコンテキスト" <<core>> as accounting
79
+ rectangle "生産管理\nコンテキスト" <<core>> as production
80
+ rectangle "人事\nコンテキスト" <<support>> as hr
81
+ rectangle "在庫管理\nコンテキスト" <<support>> as inventory
82
+ rectangle "認証・認可\nコンテキスト" <<generic>> as auth
83
+ }
84
+
85
+ sales --> accounting : 売上仕訳
86
+ sales --> inventory : 在庫引当
87
+ production --> accounting : 製造原価仕訳
88
+ production --> inventory : 入出庫
89
+ hr --> accounting : 給与仕訳
90
+
91
+ @enduml
92
+ ```
93
+
94
+ 各コンテキストは以下のように分類できます。
95
+
96
+ | 分類 | コンテキスト | 説明 |
97
+ |---|---|---|
98
+ | コアドメイン | 販売管理、財務会計、生産管理 | 事業の競争優位性を生む中核領域 |
99
+ | サポートドメイン | 人事、在庫管理 | コアドメインを支援する領域 |
100
+ | 汎用ドメイン | 認証・認可 | 汎用的に利用可能な領域 |
101
+
102
+ ---
103
+
104
+ ## 1.2 基幹業務システムを構成するサブシステム
105
+
106
+ 基幹業務システムは、企業の基幹となる業務を支えるシステムの総称です。一般的に以下の4つのサブシステムで構成されます。
107
+
108
+ ```plantuml
109
+ @startuml
110
+
111
+ skinparam state {
112
+ BackgroundColor LightBlue
113
+ BorderColor DarkBlue
114
+ }
115
+
116
+ state "基幹業務システム" as ERP {
117
+ state "販売管理システム" as Sales {
118
+ Sales : 見積・受注・出荷・売上
119
+ Sales : 請求・入金
120
+ }
121
+
122
+ state "財務会計システム" as Accounting {
123
+ Accounting : 仕訳・決算
124
+ Accounting : 債権・債務管理
125
+ }
126
+
127
+ state "生産管理システム" as Production {
128
+ Production : 生産計画・MRP
129
+ Production : 工程管理・品質管理
130
+ }
131
+
132
+ state "人事システム" as HR {
133
+ HR : 給与計算
134
+ HR : 人事管理
135
+ }
136
+ }
137
+
138
+ Sales --> Accounting : 売上・入金データ
139
+ Production --> Accounting : 製造原価データ
140
+ HR --> Accounting : 給与データ
141
+ Sales --> Production : 需要予測・製造指示
142
+
143
+ @enduml
144
+ ```
145
+
146
+ ### 販売管理システム
147
+
148
+ 販売管理システムは、企業の販売活動を管理するシステムです。得意先からの受注を起点に、出荷・売上・請求・入金までの一連の業務フローを管理します。
149
+
150
+ **主要機能**
151
+
152
+ - **見積管理**:得意先への見積書作成・管理
153
+ - **受注管理**:受注情報の登録・管理
154
+ - **出荷管理**:出荷指示・出荷実績の管理
155
+ - **売上管理**:売上計上・売上分析
156
+ - **債権管理**:請求書発行・入金消込・残高管理
157
+
158
+ ```plantuml
159
+ @startuml
160
+
161
+ [*] --> 得意先
162
+ 得意先 --> 営業部門
163
+ 営業部門 -> 販売管理
164
+ 販売管理 : 見積 \n受注 \n出荷 \n売上
165
+ 販売管理 -> 調達管理
166
+ 販売管理 --> 債権管理
167
+ 債権管理 : 締請求 \n入金
168
+ 調達管理 : 発注 \n入荷 \n仕入
169
+ 調達管理 -> 仕入先
170
+ 仕入先 -> 調達管理
171
+ 販売管理 --> 在庫管理
172
+ 在庫管理 --> 販売管理
173
+ 在庫管理 : 在庫 \n受払 \n棚卸
174
+ 調達管理 --> 在庫管理
175
+ 調達管理 --> 債務管理
176
+ 債務管理 : 支払締 \n支払
177
+
178
+ 得意先 -> [*]
179
+
180
+ @enduml
181
+ ```
182
+
183
+ ### 財務会計システム
184
+
185
+ 財務会計システムは、企業の財務状況を管理・報告するシステムです。日々の取引を仕訳として記録し、決算処理を通じて財務諸表を作成します。
186
+
187
+ **主要機能**
188
+
189
+ - **仕訳管理**:日々の取引を仕訳として記録
190
+ - **決算処理**:月次・年次決算、財務諸表作成
191
+ - **債権管理**:売掛金・受取手形の管理
192
+ - **債務管理**:買掛金・支払手形の管理
193
+ - **資産管理**:固定資産の管理・減価償却
194
+
195
+ ```plantuml
196
+ @startuml
197
+
198
+ [*] -> 会計部門
199
+
200
+ 会計部門 --> 財務会計
201
+ 財務会計 : 債権 \n債務 \n手形 \n資産 \n経理
202
+ 会計部門 --> 管理会計
203
+ 管理会計 : 経営分析 \n損益分岐点分析 \n限界利益と貢献利益 \n投資の経済性計算 \nキャッシュフロー計算
204
+
205
+ 会計部門 -> [*]
206
+
207
+ @enduml
208
+ ```
209
+
210
+ ### 生産管理システム
211
+
212
+ 生産管理システムは、製造業における生産活動を管理するシステムです。需要予測に基づく生産計画の立案から、資材調達、製造実行、品質管理までを一貫して管理します。
213
+
214
+ **主要機能**
215
+
216
+ - **生産計画**:MPS(基準生産計画)・MRP(資材所要量計画)
217
+ - **購買管理**:発注・入荷・検収
218
+ - **工程管理**:製造指示・製造実績・工数管理
219
+ - **在庫管理**:資材在庫・製品在庫・受払管理
220
+ - **品質管理**:受入検査・出荷検査・トレーサビリティ
221
+ - **製造原価管理**:標準原価・実際原価・原価差異分析
222
+
223
+ ```plantuml
224
+ @startuml
225
+
226
+ [*] -> 得意先
227
+ 得意先 --> 営業部門
228
+ 営業部門 -> 生産計画
229
+ 生産計画 : 生産計画立案 \n - 販売計画 \n - 基準生産計画(MPS) \n MRP/スケジューラ \n - 所要量展開(MRP) \n - オーダー作成
230
+ 生産計画 -> 購買管理
231
+ 購買管理 : 資材調達 \n - 発注 \n - 入荷、受入、検収 \n 外注委託 \n - 有償/無償支給
232
+ 購買管理 -> 仕入先
233
+ 仕入先 -> 購買管理
234
+ 購買管理 --> 委託先
235
+ 委託先 --> 購買管理
236
+ 購買管理 --> 在庫管理
237
+ 生産計画 --> 工程管理
238
+ 工程管理 : 製造指示 \n 製造実績 \n - 完成実績報告 \n - 工数実績報告
239
+ 工程管理 --> 在庫管理
240
+ 在庫管理 : 受払管理 \n - 製品在庫 \n - 資材在庫 \n 在庫状態管理
241
+ 工程管理 --> 製造原価管理
242
+ 製造原価管理 : 標準/実際原価 \n 製造原価配賦
243
+ 製造原価管理 -> 工程管理
244
+ 工程管理 -> 品質管理
245
+ 品質管理 : 受入検査 \n 出荷検査 \n トレーサビリティ
246
+ 品質管理 -> 工程管理
247
+
248
+ state 基準情報 {
249
+ 基準情報 : BOM \n品目 \n工程 \n取引先 \n部門 \nカレンダー
250
+ }
251
+
252
+ ' 双方向の矢印は2行に分けて記述します
253
+ 生産計画 -> 基準情報
254
+ 基準情報 -> 生産計画
255
+
256
+ 購買管理 -> 基準情報
257
+ 基準情報 -> 購買管理
258
+
259
+ 工程管理 -> 基準情報
260
+ 基準情報 -> 工程管理
261
+
262
+ 得意先 -> [*]
263
+
264
+ @enduml
265
+ ```
266
+
267
+ ### 人事システム
268
+
269
+ 人事システムは、企業の人事・労務管理を行うシステムです。従業員情報の管理から給与計算、勤怠管理までを担当します。
270
+
271
+ **主要機能**
272
+
273
+ - **人事管理**:従業員情報・組織情報の管理
274
+ - **給与計算**:給与・賞与計算、年末調整
275
+ - **勤怠管理**:出退勤・休暇の管理
276
+ - **採用管理**:採用プロセスの管理
277
+
278
+ ---
279
+
280
+ ## まとめ
281
+
282
+ 本章では、基幹業務システムの全体像と DDD との関係について解説しました。
283
+
284
+ - **DDD の戦略的設計**を適用することで、基幹業務システムを複数の境界付けられたコンテキストとして整理できる
285
+ - 基幹業務システムは主に**販売管理・財務会計・生産管理・人事**の4つのサブシステムで構成される
286
+ - 各サブシステムは相互に連携し、企業の基幹業務を支える
287
+
288
+ 次章では、これらのサブシステムが担う業務領域について、より詳細に解説します。