UUIDハイブリッドストラクチャの検討

Growth-as-a-Service™︎| Decrypt History, Encrypt Future™

UUIDハイブリッドストラクチャの検討

このスキーマの核心は、「フラグで状態を管理せず、全ての「対象(Object)」『動(Morphism/Arrow)』にIDを与えてオブジェクト化する」という数学領域の圏論的構成点にある。

デジタルツイン・イベント発行ガイドライン

1. 基本原則

本システムにおける全ての事象(デジタルツイン・イベント)は、以下の2つの識別子を組み合わせて記録する。

  • logic_id (UUIDv4): 乱数で記述する空間や時間に依存しない事象の「点」。何者とも重複しない絶対的なアイデンティティ。検索キーに使うことは基本的にはなく、ユニバーサルスキーマの基本として「場」として機能する。
  • phys_id (UUIDv7): 時間軸でソートされる事象の「座標」。時系列ソートと物理的な書き込み最適化用。検索に利用する

2. イベント発行ケース一覧

以下のあらゆるフェーズで、必ず「イベントオブジェクト」を生成し、IDを付与する。

カテゴリイベント名UUID発行のトリガー格納すべき属性 (Attribute)
Existence (存在)生成 (Instance)実体(人、モノ、場所)が初めて登録された時。アカウント仮登録でUUID登録、eKYCというイベントに別のUUIDとして登録、2つのUUIDを紐付け氏名、アカウントID、メールアドレス、イベント生成時間(UUIDv7)、イベント属性など
複製 (Clone)既存の定義から新しい実体が派生した時。例えば100mの生地が100点のSKUに分割された場合親ID (Source UUIDv4)
Action (動作)開始 (Start)職人が作業を開始、または機械が稼働した瞬間。実行者ID、対象物ID、位置情報
完了 (Finish)プロセスが終了した瞬間。結果ステータス、消費リソース
変更 (Update)属性(メールアドレス、所属など)が変わった時。変更前後の差分 (Diff)
Transfer (移動)アップロードローカルからサーバーへ情報が移動した時。通信プロトコル、ハッシュ値、送信元
ダウンロードサーバーから端末へ情報が取得された時。取得者ID、デバイス情報
所有権移転権利がAからBへ移った瞬間。元所有者ID、新所有者ID、署名ID
Relation (接続)コミットGitHub等でコードが確定した時。Gitハッシュ、リポジトリID
プッシュコードが同期された時。同期範囲、ブランチ名
署名 (Sign)真正性を証明する意思表示。署名方式、公開鍵情報、対象事象ID
Incident (異常)衝突/故障予測可能性が崩れた瞬間(例:転倒、エラー)。衝撃度、エラーログ、直前の予測ベクトル

3. 実装上の禁止事項(アンチパターン)

  • 状態の「上書き」の禁止: is_active = false のようにDBレコードを更新してはならない。必ず「無効化イベント(UUIDv4)」を新しく発行し、積み上げること。
  • IDの「意味付け」の禁止: UUIDv4の文字列の中に特定のコードを埋め込んではならない。意味は全てアトリビューション(属性レイヤー)に記述すること。
  • IDの「省略」の禁止: 「これは小さなアクションだからIDはいらない」という判断を禁止する。全ての微細な挙動をユニバーサルスキーマの「点」として打刻する。

4. エンジニアへの補足説明

「なぜここまで徹底するのか?」→単なるデータベースを構築するわけではなく、産業の全履歴をコホモロジー的に連結した『現実の写し鏡(デジタルツイン)』を生み出そうとしているから。

UUIDv7で検索性能(物理)を確保しつつ、UUIDv4で事象の不変性(論理)を担保することで、10年後に『ある製品の不具合が、誰の、どのコミットの、どのダウンロードイベントに起因したか』を瞬時に特定できる。

この構成の肝は、「その事象や実体が何であるか(v4)」「それがいつ、どの順序でシステムに現れたか(v7)」を分離することにある。

システム対象オブジェクト (v4: 論理ID)記録タイミング (v7: 物理ID)記録されるイベント・事象の例
OMS (受注・発注)受注伝票ID (order_v4)
得意先ID (customer_v4)
受注登録 (order_v7)「受注稟議の承認」という意思決定の瞬間。
「ASN(出荷事前通知)作成」の実行。
WMS (在庫・物流)資材ロールID (roll_v4)
棚番・ロケーション (loc_v4)
入庫スキャン (inbound_v7)「生地ロールが倉庫に到着し、スキャンされた」瞬間。
「棚卸による在庫数の差異確定」という特異点。
MES (生産・裁断)裁断パーツID (part_v4)
縫製仕様書 (spec_v4)
工程通過 (process_v7)「1枚の生地が100個のパーツに裁断された」瞬間(親v4から複数の子v4が発生)。
「検品通過」という品質確定イベント。
AURA (データ抽出)抽出定義ID (query_v4)抽出実行 (export_v7)「PLOG抽出エンジンが稼働し、データを外に出した」瞬間。

2. 具体的なシナリオ例:生地から製品への転移

生産フローにおいて、どのようにIDが「もつれ」ながら記録されるかの具体例です。

A. 生地の入庫 (WMS)

  • 事象: 工場に10mの生地ロールが届く。
  • UUIDv4 (論理): roll_a_v4 を発行。この生地の「UUIDv4」として不変。
  • UUIDv7 (物理): arrival_v7 を付与。これにより「今日届いた順」での在庫検索が可能になる。

B. 裁断とパーツ化 (MES)

  • 事象: roll_a_v4 が裁断機にかけられ、100個のブラジャー用パーツになる。
  • UUIDv4 (論理): 新たに100個の part_001~100_v4 が発行される。各パーツは親の roll_a_v4 を属性として保持し、系譜(コホモロジー)を繋ぐ。
  • UUIDv7 (物理): cut_v7。100個のパーツは「ほぼ同時」に生成されるが、v7によって正確なミリ秒単位の生成順序がインデックスされる。

C. 受注と出荷 (OMS/WMS)

  • 事象: 顧客から受注があり、縫製された製品が出荷される。
  • UUIDv4 (論理): 受注伝票の order_v4 と、製品の product_v4 をリンクさせる。
  • UUIDv7 (物理): ship_v7。出荷作業の物理的順序を記録し、WMSの出荷履歴検索を高速化する。

3. 何を「属性」とし、何を「ID」とするか

エンジニアへの指示出しにおいて、以下の基準を徹底してください。

  1. UUIDv4は「実体の座標」:
    • 製品、原材料、人間(職人、作業員)、設備。これらは一度決めたら変えない。メールアドレスや棚番などの「名前」が変わっても、v4は変えさせない。
  2. UUIDv7は「行動の足跡」:
    • スキャン、承認、ダウンロード、アップロード、エラー発生。これらの「動詞」が発生するたびにv7を付与したレコードを作成し、時系列インデックスとして機能させる。
  3. Aura(PLOG Extractor)での活用:
    • 「過去1時間以内の全MESイベントを抽出せよ」というクエリに対し、物理キーである UUIDv7 で範囲スキャンを行い、取得されたデータ内の UUIDv4 を辿って「そのパーツがどの生地から来たか」の因果律(論理)を解決する。

「高速な時間軸の検索(v7)」と「確実な実体の特定(v4)」を使い分けることで、点群によるトポロジーの勾配をコンピュータに理解させることができるようになる。