実践データベース設計:基幹業務システム編¶
記事の目的¶
基幹業務システム(販売管理・財務会計・生産管理)のデータベース設計を、業務フローとデータモデルの観点から体系的に解説する。
対象読者¶
- データベース設計の基礎を学びたいエンジニア
- 基幹業務システムの全体像を理解したい開発者
- 販売管理・財務会計・生産管理の業務知識を習得したい方
執筆方針¶
- ダイアグラムには PlantUML を使用
- 業務フローと ER 図を中心に解説
- 日本語テーブル・日本語カラムでデータベースを定義
- 実装はコード部分は
<details>タグを使って表示を切り替えられるようにする - タスク項目などは一行開けて記述する
- NG
**受入条件**: - [ ] ログアウトボタンをクリックするとログアウトできる - [ ] ログアウト後、ログイン画面に遷移する - [ ] JWT トークンが無効化される - OK
**受入条件**: - [ ] ログアウトボタンをクリックするとログアウトできる - [ ] ログアウト後、ログイン画面に遷移する - [ ] JWT トークンが無効化される
第1部:基幹業務システムの全体像¶
第1章:基幹業務システムとは¶
1.1 ドメイン駆動設計と基幹業務システム¶
- 戦略的設計と戦術的設計
- 基幹業務システムへの適用
1.2 基幹業務システムを構成するサブシステム¶
- 販売管理システム
- 財務会計システム
- 生産管理システム
- 人事システム
第2章:基幹業務システムの業務領域¶
2.1 販売管理領域¶
- 受注・出荷・売上
- 得意先との関係
2.2 購買管理領域¶
- 発注・入荷/受入・仕入(検収)
- 仕入先・委託先との関係
2.3 在庫管理領域¶
- 在庫の受払
- 販売管理・購買管理・生産管理との連携
2.4 生産管理領域¶
- 生産計画・品質管理・工程管理・製造原価管理
- 購買管理・在庫管理との連携
2.5 債権管理領域¶
- 請求・入金
- 販売管理との連携
2.6 債務管理領域¶
- 支払・出金
- 購買管理との連携
2.7 会計領域¶
- 仕訳・決算
- 債権・債務・生産管理からの仕訳連携
2.8 人事領域¶
- 給与計算・人事管理
- 会計との連携
第3章:業務フローの全体像¶
3.1 販売管理システムの業務フロー¶
- 得意先 → 営業部門 → 販売管理
- 販売管理 → 調達管理 / 在庫管理 / 債権管理
- 調達管理 → 仕入先 / 在庫管理 / 債務管理
3.2 財務会計システムの業務フロー¶
- 会計部門 → 財務会計 / 管理会計
- 財務会計:債権・債務・手形・資産・経理
- 管理会計:経営分析・損益分岐点分析・投資の経済性計算・キャッシュフロー計算
3.3 生産管理システムの業務フロー¶
- 得意先 → 営業部門 → 生産計画
- 生産計画 → 購買管理 / 工程管理
- 購買管理 → 仕入先 / 委託先 / 在庫管理
- 工程管理 → 在庫管理 / 製造原価管理 / 品質管理
- 基準情報との連携
第2部:販売管理システム¶
第4章:販売管理システムの全体像¶
4.1 販売管理システムのスコープ¶
- 見積
- 受注
- 出荷
- 売上
4.2 販売組織の役割分担¶
- 営業部門・調達部門・倉庫部門・経理部門・財務部門
- 業務フローと各部門の責務
4.3 販売管理システムのアーキテクチャ¶
- プロジェクト構成
- Domain層(ドメイン層)
- model(ドメインモデル)
- type(基本型:通貨、単位、数量等)
- exception(ドメイン例外)
- Application層(アプリケーション層)
- port/in(Input Port)
- port/out(Output Port)
- service(Application Service)
- Infrastructure層(インフラストラクチャ層)
- in/rest(Input Adapter - REST API)
- out/persistence(Output Adapter - 永続化)
- config(設定)
- ヘキサゴナルアーキテクチャ(ポート&アダプター)
- ドメイン(中心)
- ポート(入力ポート・出力ポート)
- アダプター(プライマリ・セカンダリ)
- 依存性の方向と依存性逆転の原則
- ドメイン駆動設計の適用
- 集約とリポジトリ
- ドメインサービス
- アプリケーションサービス
- API 設計
- RESTful API の基本方針
- エンドポイント設計
第5章:マスタ情報の設計¶
5.1 部門マスタの設計¶
- 組織階層と部門パス
- 最下層区分の管理
- 組織改正に強いマスタ設計(履歴管理)
- 複数組織図と所在地の対応
5.2 社員マスタの設計¶
- 部門との関連付け
- 適用期間を持つ履歴管理
5.3 商品マスタの設計¶
- 商品コード・商品名・単価
- 商品区分と税区分
- 商品分類の階層構造(商品分類パス)
- 顧客別販売単価の管理
5.4 原価管理の設計¶
- 8種類の原価法の理解
- 個別原価法
- 先入先出法
- 後入先出法
- 総平均法
- 移動平均法
- 単純平均法
- 最終仕入原価法
- 売価還元法
5.5 消費税の設計¶
- 外税・内税・非課税の区分
- 消費税計算の考え方
5.6 顧客マスタの設計¶
- 取引先コードと顧客枝番
- 請求先・回収先の概念
- 出荷先マスタとの連携
- 地域マスタによる分類
5.7 取引条件の設計¶
- 締日・支払月・支払日の管理
- 都度請求と締め請求の違い
- 与信管理(与信限度額・一時増加枠)
第6章:受注・出荷・売上の設計¶
6.1 受注業務の DB 設計¶
- 受注業務フローの理解
- 受注データ・受注明細データの構造
- 顧客マスタ・商品マスタとの連携
6.2 出荷業務の DB 設計¶
- 出荷業務の流れ
- 出荷指示データ・出荷明細データ
- 在庫との連携
6.3 売上業務の DB 設計¶
- 売上データ・売上明細データの構造
- 出荷完了から売上計上への流れ
- 返品処理の設計
- 赤黒処理の考え方
6.4 リレーションと楽観ロックの設計¶
- MyBatis ネストした ResultMap によるリレーション設定
- ヘッダ・明細の一括取得(JOIN クエリ)
- 楽観ロック(Optimistic Locking)の実装
- バージョンカラムによる同時更新制御
第7章:債権管理の設計¶
7.1 請求業務の DB 設計¶
- 都度請求と締め請求
- 請求データ・請求明細の構造
- 締処理の設計
7.2 回収業務の DB 設計¶
- 入金方法の種類(現金・振込・手形等)
- 入金データ・入金明細の構造
- 入金消込の処理
- 債権残高管理
7.3 リレーションと楽観ロックの設計¶
- MyBatis ネストした ResultMap によるリレーション設定
- ヘッダ・明細の一括取得(JOIN クエリ)
- 楽観ロック(Optimistic Locking)の実装
- バージョンカラムによる同時更新制御
第8章:調達管理の設計¶
8.1 発注業務の DB 設計¶
- 調達の4つのパターン
- 発注データ・発注明細データの構造
- 仕入先マスタとの連携
8.2 入荷・検収業務の DB 設計¶
- 入荷データの構造
- 検収(仕入計上)処理
- 諸口品目の扱い
8.3 リレーションと楽観ロックの設計¶
- MyBatis ネストした ResultMap によるリレーション設定
- ヘッダ・明細の一括取得(JOIN クエリ)
- 楽観ロック(Optimistic Locking)の実装
- バージョンカラムによる同時更新制御
第9章:在庫管理の設計¶
9.1 在庫情報の DB 設計¶
- 倉庫コード × 商品コードの在庫管理
- 在庫数量・引当数量の管理
- 倉庫マスタの設計
9.2 在庫移動・棚卸の DB 設計¶
- 入出庫履歴の管理
- 棚卸業務の設計
- 在庫調整処理
9.3 リレーションと楽観ロックの設計¶
- MyBatis ネストした ResultMap によるリレーション設定
- ヘッダ・明細の一括取得(JOIN クエリ)
- 楽観ロック(Optimistic Locking)の実装
- バージョンカラムによる同時更新制御
第10章:債務管理の設計¶
10.1 支払業務の DB 設計¶
- 支払締処理
- 支払方法の種類
- 支払データ・支払明細の構造
- 買掛金残高管理
10.2 リレーションと楽観ロックの設計¶
- MyBatis ネストした ResultMap によるリレーション設定
- ヘッダ・明細の一括取得(JOIN クエリ)
- 楽観ロック(Optimistic Locking)の実装
- バージョンカラムによる同時更新制御
第11章:共通処理の設計¶
11.1 赤黒処理の設計¶
- 赤黒処理とは(確定済み伝票の訂正方法)
- 赤伝票(マイナス計上)と黒伝票(プラス計上)
- 赤黒処理履歴テーブルのスキーマ設計
- 赤黒処理サービスの実装
11.2 自動採番の設計¶
- 採番の要件(一意性・連番性・可読性・拡張性)
- 採番パターン(年次・月次・日次・連番)
- 採番マスタと採番履歴テーブルの設計
- 採番サービスの実装
11.3 監査カラムの設計¶
- 監査カラムとは(作成日時・作成者・更新日時・更新者)
- 論理削除(削除フラグ・削除日時・削除者)
- 監査カラム用エンティティ基底クラス
- MyBatis インターセプターによる自動設定
11.4 履歴テーブルの設計¶
- 履歴管理の種類(変更履歴・スナップショット・イベントソーシング)
- 変更履歴テーブル(JSONB による変更前後保存)
- マスタ履歴テーブル(適用期間による履歴管理)
- 履歴サービスの実装
第12章:販売管理データ設計(B 社事例)¶
12.1 B 社の概要¶
- 会社プロファイル(食肉・食肉加工品の製造・販売業)
- 沿革と事業環境
- 事業の特徴(高品質商品・対面販売・多様な販路・自社製造・OEM 対応)
12.2 組織構成¶
- 組織図(食肉製造・販売事業、食肉加工品事業、コンサルティング事業)
- 部門マスタの階層構造
- 社員の配置(正社員 24 名、パート 21 名)
12.3 ビジネスモデル¶
- ビジネスモデルキャンバス
- 得意先の分類(百貨店・スーパー・ホテル・飲食店・観光施設)
- 仕入先の分類(食肉卸・畜産業者)
- 商品構成(牛肉・豚肉・鶏肉・加工品)
12.4 データ構造の設計¶
- マスタデータの構成
- 商品コード体系(BEEF-/PORK-/CHKN-/PROC-)
- 取引先コード体系(CUS-/SUP-)
- Enum の日本語・英語マッピング
12.5 Seed データの実装¶
- 実装方針(外部キー制約・複合キー・日本語テーブル名)
- MasterDataSeeder の実装
- TransactionDataSeeder の実装
- データの検証と活用
第13章:API サービスの実装¶
13.1 ヘキサゴナルアーキテクチャの復習¶
- Ports and Adapters パターンの概要
- ドメイン中心設計
- 依存性の逆転
- テスト容易性
13.2 アーキテクチャ構造¶
- Domain 層(ビジネスルールとドメインモデル)
- Application 層(ユースケースの実装)
- Infrastructure 層(外部技術との接続)
- Input Port / Output Port の分離
- 各レイヤーの責務
13.3 マスタ API の実装¶
- 商品マスタ API(CRUD エンドポイント)
- TDD による実装(Red-Green-Refactor)
- Controller・Service・Repository の実装
- 顧客マスタ API(請求先・回収先の管理)
13.4 トランザクション API の実装¶
- 受注 API(受注登録・受注照会・受注明細照会)
- 出荷 API(出荷指示・出荷確定)
- 売上 API(売上計上・売上照会)
- 請求・入金 API(請求締め・入金消込)
13.5 エラーハンドリング¶
- グローバル例外ハンドラー(@RestControllerAdvice)
- ドメイン例外の定義と変換
- ProblemDetail によるエラーレスポンス
- バリデーションエラーの処理
13.6 API ドキュメント¶
- OpenAPI / Swagger の設定
- エンドポイントの文書化
- リクエスト・レスポンスのスキーマ定義
13.7 API インテグレーションテスト¶
- テストコンテナによる統合テスト環境
- REST API エンドポイントのテスト
- データベース状態の検証
- テストデータのセットアップとクリーンアップ
第3部:財務会計システム¶
第14章:財務会計システムの全体像¶
14.1 財務会計システムのスコープ¶
- 債権管理(請求・入金)
- 債務管理(支払・出金)
- 経理(仕訳・決算)
14.2 財務会計と管理会計の違い¶
- 財務会計:外部報告目的
- 管理会計:内部意思決定目的
14.3 財務会計システムのアーキテクチャ¶
- プロジェクト構成
- Domain層(ドメイン層)
- model(ドメインモデル)
- type(基本型:通貨、単位、数量等)
- exception(ドメイン例外)
- Application層(アプリケーション層)
- port/in(Input Port)
- port/out(Output Port)
- service(Application Service)
- Infrastructure層(インフラストラクチャ層)
- in/rest(Input Adapter - REST API)
- out/persistence(Output Adapter - 永続化)
- config(設定)
- ヘキサゴナルアーキテクチャ(ポート&アダプター)
- ドメイン(中心)
- ポート(入力ポート・出力ポート)
- アダプター(プライマリ・セカンダリ)
- 依存性の方向と依存性逆転の原則
- ドメイン駆動設計の適用
- 集約とリポジトリ
- ドメインサービス
- アプリケーションサービス
- API 設計
- RESTful API の基本方針
- エンドポイント設計
第15章:勘定科目の設計¶
15.1 勘定科目マスタの設計¶
- 勘定科目コード・勘定科目名
- BSPL 区分(貸借対照表 / 損益計算書)
- 貸借区分(借方 / 貸方)
- 取引要素区分(資産・負債・資本・収益・費用)
- 集計区分(見出科目・集計科目・明細科目)
- 管理会計区分・費用区分
- 補助科目種別
- 消費税計算区分・課税取引コード
- 期日管理区分
15.2 勘定科目構成マスタの設計¶
- チルダ連結方式による階層構造
- 貸借対照表の科目ツリー構造
- 科目残高集計の考え方
15.3 課税取引マスタの設計¶
- 課税取引コード・税率の管理
第16章:仕訳の設計¶
16.1 仕訳テーブルの設計¶
- 仕訳伝票番号・起票日・入力日
- 決算仕訳フラグ・単複フラグ
- 仕訳伝票区分
- 部門コード・社員コード
- 赤伝フラグ・赤黒伝票番号
16.2 仕訳明細の設計¶
- 仕訳行番号・行摘要
16.3 仕訳貸借明細の設計¶
- 貸借区分(借方 / 貸方)
- 勘定科目コード・補助科目コード
- 仕訳金額・基軸換算仕訳金額
- 通貨コード・為替レート
- 部門コード・プロジェクトコード・セグメントコード
- 消費税区分・消費税率・消費税計算区分
- 期日・資金繰フラグ
- 相手勘定科目・相手補助科目
- 付箋コード・付箋内容
第17章:自動仕訳の設計¶
17.1 自動仕訳の概要¶
- 販売管理システムと会計システムの連携
- 手入力による非連携(アナログ連携)の課題
- 自動仕訳処理のデータフロー
17.2 自動仕訳パターンマスタの設計¶
- 商品グループ × 顧客グループによる条件分岐
- 借方科目・貸方科目の自動判定
- 売上返品時の科目設定
17.3 自動仕訳処理の設計¶
- フラグ管理方式と日付管理方式
- セット中心のアプリケーション設計
- ループ処理との比較
17.4 売上伝票から仕訳伝票への転記ロジック¶
- 明細行の分解と集約
- 借方(売掛金)と貸方(売上)の展開
- 消費税の按分計算
- 貸借一致の原則
第18章:勘定科目残高の設計¶
18.1 日次勘定科目残高の設計¶
- 起票日 × 勘定科目 × 補助科目 × 部門 × プロジェクト
- 借方金額・貸方金額
- 日計表の出力
18.2 月次勘定科目残高の設計¶
- 決算期 × 月度による管理
- 月初残高・月末残高
- 合計残高試算表の出力
18.3 残高更新のタイミング¶
- 仕訳入力時の即時更新
- バッチ処理による集計
第19章:赤黒とログの設計¶
19.1 3つのアプローチ¶
- データ自体にログ情報を持つ方式
- 赤黒処理・論理削除方式
- ログテーブルにログ情報を保存する方式
19.2 業務システムでの使い分け¶
- 会計絡みは赤黒処理
- マスタ関連はログテーブル
- それ以外はデータ自体にログ
第20章:財務会計データ設計(D 社事例)¶
20.1 D 社の概要¶
- 会社プロファイル(化粧品製造販売)
- 企業概要(資本金 5 億円、従業員 300 名、年間売上高 80 億円)
- 決算期(3 月期)
- 経理体制(経理部 10 名、財務課 3 名)
20.2 組織構成¶
- 組織図(営業本部・製造本部・管理本部・研究開発本部)
- 部門マスタの階層構造
- 部門コード体系
20.3 勘定科目体系¶
- 勘定科目の構成(資産・負債・純資産・収益・費用)
- 勘定科目コード体系
- 補助科目の設計
20.4 Seed データの実装¶
- マスタデータの構成(勘定科目・部門・社員)
- 仕訳サンプルデータの作成
- データの検証と活用
第21章:API サービスの実装¶
21.1 ヘキサゴナルアーキテクチャの復習¶
- Ports and Adapters パターンの概要
- ドメイン中心設計
- 依存性の逆転
- テスト容易性
21.2 アーキテクチャ構造¶
- Domain 層(ビジネスルールとドメインモデル)
- Application 層(ユースケースの実装)
- Infrastructure 層(外部技術との接続)
- Input Port / Output Port の分離
- 各レイヤーの責務
21.3 マスタ API の実装¶
- 勘定科目マスタ API(CRUD エンドポイント)
- TDD による実装(Red-Green-Refactor)
- Controller・Service・Repository の実装
- 補助科目マスタ API(勘定科目との関連)
21.4 トランザクション API の実装¶
- 仕訳 API(仕訳登録・照会・貸借一致バリデーション)
- 残高照会 API(日次残高・月次残高)
- 試算表 API(合計残高試算表の出力)
- 部門別・プロジェクト別の残高照会
21.5 エラーハンドリング¶
- グローバル例外ハンドラー(@RestControllerAdvice)
- ドメイン例外の定義と変換
- ProblemDetail によるエラーレスポンス
- バリデーションエラーの処理
21.6 API ドキュメント¶
- OpenAPI / Swagger の設定
- エンドポイントの文書化
- リクエスト・レスポンスのスキーマ定義
21.7 API インテグレーションテスト¶
- テストコンテナによる統合テスト環境
- REST API エンドポイントのテスト
- データベース状態の検証
- テストデータのセットアップとクリーンアップ
第4部:生産管理システム¶
第22章:生産管理システムの全体像¶
22.1 生産管理システムのスコープ¶
- 生産計画(MPS・MRP)
- 購買管理(発注・入荷・検収)
- 工程管理(製造指示・製造実績)
- 在庫管理(受払・在庫状態)
- 品質管理(受入検査・出荷検査・トレーサビリティ)
- 製造原価管理(標準原価・実際原価・配賦)
22.2 生産組織の役割分担¶
- 営業部・生産管理部・製造部・購買部・外注部
- 資材倉庫・製品倉庫
- 業務フローと各部門の責務
22.3 生産管理システムのアーキテクチャ¶
- プロジェクト構成
- Domain層(ドメイン層)
- model(ドメインモデル)
- type(基本型:通貨、単位、数量等)
- exception(ドメイン例外)
- Application層(アプリケーション層)
- port/in(Input Port)
- port/out(Output Port)
- service(Application Service)
- Infrastructure層(インフラストラクチャ層)
- in/rest(Input Adapter - REST API)
- out/persistence(Output Adapter - 永続化)
- config(設定)
- ヘキサゴナルアーキテクチャ(ポート&アダプター)
- ドメイン(中心)
- ポート(入力ポート・出力ポート)
- アダプター(プライマリ・セカンダリ)
- 依存性の方向と依存性逆転の原則
- ドメイン駆動設計の適用
- 集約とリポジトリ
- ドメインサービス
- アプリケーションサービス
- API 設計
- RESTful API の基本方針
- エンドポイント設計
第23章:マスタ情報の設計¶
23.1 品目マスタの設計¶
- 品目コード・品名
- 品目区分(製品・半製品・中間品・部品・材料・原料・資材)
- 品目グループコード
- 単位コード・場所コード
- リードタイム・安全リードタイム・安全在庫数
- 歩留率・最小ロット数・刻みロット数・最大ロット数
- 有効期間(世代管理)
23.2 BOM(部品構成表)の設計¶
- 親品目コード × 子品目コード
- 基準量・必要量・不良率
- 工順
- 適用期間(開始日・停止日)
- 再帰 CTE による BOM 展開
23.3 補助マスタの設計¶
- カレンダマスタ(就業日・就業時間・シフト)
- 場所マスタ(場所コード・場所種類)
- 倉庫マスタ(倉庫コード・倉庫区分)
- 部門マスタ(部門コード・部門階層)
- 担当者マスタ(担当者コード・部門・適用期間)
- 資源マスタ(資源コード・資源名・部門との関連)
- 取引先マスタ(取引先コード・連絡先・就業日パターン)
- 工程マスタ(工程コード・工程名)
- 工程表(品目コード × 工順 × 工程コード)
- 単価マスタ(品目 × 取引先 × ロット単位数 × 適用期間)
第24章:生産計画の設計¶
24.1 生産計画の特徴¶
- 計画系と実績系の分離
- バリエーションの豊富さ
- 計画系の流れ(ビジネスプラン → 販売計画 → 生産計画 → MPS → MRP)
24.2 MRP(所要量展開)¶
- 総所要量・正味所要量の計算
- ロットまとめ(最小ロット・刻みロット・最大ロット)
- オーダ情報の構造
- 所要情報の構造
- 引当情報の構造
- 在庫推移・発注残・製造残との連携
第25章:購買管理の設計¶
25.1 発注業務の DB 設計¶
- 発注データ・発注明細データの構造
- オーダ情報・場所マスタ・単価マスタとの連携
- 諸口品目の扱い
- 納期管理・分納対応
25.2 入荷・検収業務の DB 設計¶
- 入荷受入データの構造
- 発注明細との紐付け
- 入荷受入区分(入荷 / 受入返品)
- 受入検査データの構造
- 受入検査結果データ(欠点コード・数量)
- 欠点マスタの設計
- 検収データの構造
- 検収単価・検収金額・消費税
- 検収返品データの構造
- 在庫計上処理
第26章:外注委託管理の設計¶
26.1 外注委託業務の理解¶
- 外注委託とは(専門加工・生産能力補完・コスト最適化)
- 有償支給と無償支給
- 外注委託の業務フロー
26.2 外注委託の DB 設計¶
- 外注オーダの構造
- 支給データ・支給明細データの構造
- 発注データとの紐付け
- 支給金額の計算(有償支給の場合)
26.3 消費業務の設計¶
- 消費データ・消費明細データの構造
- 入荷受入データとの紐付け
- 消費率の計算
26.4 外注委託ワークフロー¶
- 発注作成 → 支給品出荷 → 加工 → 入荷 → 検収 → 消費記録
- 有償支給と無償支給の会計処理の違い
第27章:工程管理の設計¶
27.1 製造指示の DB 設計¶
- 工程管理業務の流れ
- 作業指示データの構造
- 作業指示明細データ(工順・工程コード)
- オーダ情報・工程表との連携
- 作業指示書とピッキングリスト
27.2 製造実績の DB 設計¶
- 完成実績データの構造
- 完成数量・良品数・不良品数
- 完成検査結果データ(欠点コード)
- 消費実績データ・消費明細データ
- 場所コードとの紐付け
- 工数実績データの構造
- 作業指示明細との紐付け
- 担当者・部門・工数の記録
27.3 進捗管理¶
- 工程別進捗の管理
- 遅延アラートの設計
- 進捗状況の可視化
第28章:在庫管理の設計¶
28.1 在庫情報の DB 設計¶
- 場所コード × 品目コード
- 在庫数・合格数・不良数・未検査数
- ロケーション管理
28.2 払出業務の DB 設計¶
- 払出指示データ・払出指示明細データ
- オーダ情報・BOM との連携
- 払出データ・払出明細データの構造
- 支給データとの統合
- 払出区分(自社 / 外注)
- 計画区分(計画 / 計画外)
28.3 棚卸業務の DB 設計¶
- 棚卸表発行・実棚入力
- 帳簿在庫と実棚在庫の差異分析
- 在庫調整データの構造
第29章:品質管理の設計¶
29.1 品質管理の概要¶
- 品質管理の目的と重要性
- 検査の種類と位置づけ
29.2 受入検査・工程検査・出荷検査¶
- 受入検査の設計(購買品の品質確認)
- 工程検査の設計(製造中の品質確認)
- 出荷検査の設計(出荷前の品質確認)
- トレーサビリティ(ロット追跡・履歴管理)
第30章:製造原価管理の設計¶
30.1 原価計算の概要¶
- 標準原価と実際原価
- 原価差異分析
30.2 材料費・労務費・製造間接費¶
- 材料費の計算(直接材料費・間接材料費)
- 労務費の計算(直接労務費・間接労務費)
- 製造間接費の配賦
- 製品原価の集計
第31章:生産管理データ設計(E 社事例)¶
31.1 E 社の概要¶
- 会社プロファイル(精密機械部品製造業)
- 企業概要(従業員約 50 名)
- 生産の特徴(多品種少量・受注生産型)
- 外注活用(メッキ処理・熱処理)
31.2 組織構成¶
- 組織図(営業部・生産管理部・製造部・品質管理部・購買部・倉庫部・外注管理部)
- 部門マスタの階層構造
- 担当者の配置
31.3 データ構造の設計¶
- 品目コード体系(PROD-/SEMI-/PART-/MAT-)
- 取引先コード体系(SUP-/OUT-/CUS-)
- 工程コード体系(LATHE/MILL/GRIND/DRILL/HEAT/PLAT/ASSY/INSP)
- BOM 階層(製品→半製品→部品→材料)
- Enum の日本語・英語マッピング
31.4 Seed データの実装¶
- 実装方針(外部キー制約・複合キー・日本語テーブル名)
- SeedDataService の設計
- MasterDataSeeder の実装(部門・担当者・品目・BOM・工程・取引先・単価)
- TransactionDataSeeder の実装(発注・入荷・作業指示・完成実績・在庫)
31.5 データの検証と活用¶
- データの整合性確認(BOM 展開・在庫残高・発注残)
- サンプルデータの活用方法
- テストシナリオへの応用
第32章:API サービスの実装¶
32.1 ヘキサゴナルアーキテクチャの復習¶
- Ports and Adapters パターンの概要
- ドメイン中心設計
- 依存性の逆転
- テスト容易性
32.2 アーキテクチャ構造¶
- Domain 層(ビジネスルールとドメインモデル)
- Application 層(ユースケースの実装)
- Infrastructure 層(外部技術との接続)
- Input Port / Output Port の分離
- 各レイヤーの責務
32.3 マスタ API の実装¶
- 品目マスタ API(CRUD エンドポイント)
- TDD による実装(Red-Green-Refactor)
- Controller・Service・Repository の実装
- BOM マスタ API(部品展開・使用先照会)
32.4 トランザクション API の実装¶
- 発注 API(発注登録・発注照会・発注明細照会)
- 在庫照会 API(在庫残高照会・在庫推移照会)
- 作業指示 API(作業指示登録・進捗更新)
- MRP 実行 API(所要量計算・発注提案生成)
32.5 エラーハンドリング¶
- グローバル例外ハンドラー(@RestControllerAdvice)
- ドメイン例外の定義と変換
- ProblemDetail によるエラーレスポンス
- バリデーションエラーの処理
32.6 API ドキュメント¶
- OpenAPI / Swagger の設定
- エンドポイントの文書化
- リクエスト・レスポンスのスキーマ定義
32.7 API インテグレーションテスト¶
- テストコンテナによる統合テスト環境
- REST API エンドポイントのテスト
- データベース状態の検証
- テストデータのセットアップとクリーンアップ
第5部:エンタープライズインテグレーション¶
第33章:システム統合の概要¶
33.1 なぜシステム統合が必要か¶
- サイロ化した基幹業務システムの課題
- データの一貫性と整合性の確保
- リアルタイム連携とバッチ連携
33.2 境界付けられたコンテキスト¶
- 境界付けられたコンテキスト(Bounded Context)とは
- 基幹業務システムにおけるコンテキストの識別
- 販売コンテキスト
- 会計コンテキスト
- 生産コンテキスト
- コンテキストマップの作成
- コンテキスト間の関係パターン
- 共有カーネル(Shared Kernel)
- 顧客/供給者(Customer/Supplier)
- 適合者(Conformist)
- 腐敗防止層(Anti-Corruption Layer)
- 公開ホストサービス(Open Host Service)
- 公表された言語(Published Language)
33.3 統合パターンの選択基準¶
- 同期 vs 非同期
- ポイントツーポイント vs ハブ&スポーク
- データ統合 vs プロセス統合
第34章:メッセージングパターン¶
34.1 メッセージングの基礎¶
- メッセージチャネル(Message Channel)
- メッセージ(Message)の構造
- パイプとフィルター(Pipes and Filters)
34.2 メッセージルーティング¶
- Content-Based Router(内容ベースルーター)
- Message Filter(メッセージフィルター)
- Splitter / Aggregator(分割 / 集約)
- Resequencer(再順序付け)
34.3 メッセージ変換¶
- Message Translator(メッセージ変換)
- Envelope Wrapper(エンベロープラッパー)
- Content Enricher(コンテンツエンリッチャー)
- Canonical Data Model(標準データモデル)
第35章:システム間連携パターン¶
35.1 販売管理と財務会計の連携¶
- 売上データから仕訳データへの変換
- 自動仕訳パターンの適用
- イベント駆動による仕訳生成
35.2 販売管理と生産管理の連携¶
- 受注情報から生産計画への連携
- 需要予測データの共有
- 在庫情報の同期
35.3 生産管理と財務会計の連携¶
- 製造原価から仕訳への変換
- 検収データの会計連携
- 棚卸差異の会計処理
第36章:マスタデータ管理(MDM)¶
36.1 マスタデータ統合の課題¶
- 各システムでのマスタ重複
- コード体系の不一致
- 更新タイミングの同期
36.2 MDM パターン¶
- Registry Style(参照型)
- Consolidation Style(統合型)
- Coexistence Style(共存型)
- Transaction Hub Style(トランザクションハブ型)
36.3 共通マスタの設計¶
- 取引先マスタの統合
- 商品/品目マスタの統合
- 部門・組織マスタの統合
第37章:イベント駆動アーキテクチャ¶
37.1 イベント駆動の基礎¶
- ドメインイベントとは
- イベントソーシング
- CQRS(コマンドクエリ責務分離)
37.2 基幹業務システムのイベント設計¶
- 販売管理イベント(受注確定・出荷完了・売上計上)
- 財務会計イベント(仕訳登録・月次締め・決算確定)
- 生産管理イベント(製造指示・完成報告・検収完了)
37.3 イベントストアの設計¶
- イベントテーブルの構造
- スナップショットの管理
- イベントの再生とリプレイ
第38章:API 設計とサービス連携¶
38.1 API 設計の原則¶
- RESTful API の設計
- リソース指向設計
- バージョニング戦略
38.2 サービス間通信¶
- 同期通信(REST / gRPC)
- 非同期通信(メッセージキュー)
- サーキットブレーカーパターン
38.3 API ゲートウェイ¶
- 認証・認可の一元化
- レート制限とスロットリング
- ログ集約とモニタリング
38.4 API インテグレーションテスト¶
- テストコンテナによる統合テスト環境
- REST API エンドポイントのテスト
- データベース状態の検証
- テストデータのセットアップとクリーンアップ
- サービス間連携テスト
第39章:データ連携の実装パターン¶
39.1 バッチ連携¶
- ファイル連携(CSV / XML / JSON)
- ETL 処理の設計
- 差分抽出と全件抽出
39.2 リアルタイム連携¶
- Change Data Capture(CDC)
- データベーストリガーの活用
- メッセージキューによる非同期連携
39.3 連携テーブルの設計¶
- 連携ステータス管理
- エラーハンドリングとリトライ
- 冪等性の確保
付録¶
A:全体 ER 図¶
A.1 基幹業務システム全体図¶
- 各サブシステム間の連携
A.2 販売管理システム ER 図¶
- マスタ系テーブルの関連
- トランザクション系テーブルの関連
A.3 財務会計システム ER 図¶
- 勘定科目系テーブルの関連
- 仕訳系テーブルの関連
A.4 生産管理システム ER 図¶
- 品目・BOM・工程系テーブルの関連
- 購買・工程管理・在庫系テーブルの関連
B:テーブル定義一覧¶
- 各テーブルのカラム定義
- 主キー・外部キー一覧
C:用語集¶
- 基幹業務システム用語
- 販売管理用語
- 財務会計用語
- 生産管理用語