Portfolio demo

Decision Supply Chain

意思決定、施策、システム、成果の依存関係を有向グラフで整理し、 どこから進めるべきかを見えるようにするアプリです。

非永続デモです。 Cloud Run service restart、scale-to-zero、redeployによりデータが初期化されることがあります。

Problem

依存関係が見えないと、意思決定は止まる

大きなプロジェクトでは、意思決定、技術実装、契約、データ整備、検証結果が互いに依存します。 それらが表や口頭説明に散らばると、何が決まれば次へ進めるのか分からなくなります。

  • 循環依存が見えず、議論が進まない
  • 重要な前提や根拠が暗黙化する
  • 部門をまたぐ依存関係を説明しづらい

Features

デモで試せること

01

Dependency Graph編集

NodeとしてItemを追加し、EdgeとしてDependencyを作成します。位置、状態、担当、根拠も更新できます。

02

上流 / 下流探索

起点Itemから依存元や影響先をたどり、カテゴリや強さで分析対象を絞れます。

03

循環検出

特定Itemの周辺で循環依存を検出し、技術循環や意思決定デッドロックとして分類します。

04

全体分析

相互依存グループ、独立候補、入出力Dependencyの多いItemを俯瞰できます。

Demo scenario

全社データ基盤・BI統合サンプル

デモには、BI活用の価値仮説、投資判断、DWH刷新、標準BI、先行導入、価値検証が循環するサンプルを用意しています。 さらに、データカタログと品質監視の小さな技術循環、独立候補も確認できます。

  1. デモを開く
  2. デモ用ワークスペースを作成する
  3. マップメニューからサンプルを作成する
  4. 全体分析を実行し、相互依存グループを確認する
触れるデモへ デモを開く

Architecture

設計のポイント

Go modular monolith

DDDを意識し、公開面をmodule.goとcontractに絞り、実装詳細をnested internalへ閉じ込めています。

DB設計: 隣接リスト

Dependencyはfrom itemとto itemを持つ隣接リストとして保存し、外部キー、重複禁止、自己依存禁止をDB制約でも守ります。

React Flow adapter

Domain graphとReact FlowのNode/Edge表現を変換層で分離し、UI都合をAPIへ混ぜない設計にしています。

Tarjan法による決定論的分析

強連結成分をTarjan法で求め、相互依存グループを再現性のある分析結果として表示します。

PostgreSQL + sqlc boundary

DB制約とDomain/Application層の責務を分け、generated型がDomainへ漏れない境界を置いています。

Analysis as projection

分析結果は保存済みGraphを変更しないRead Model / UI projectionとして扱い、編集状態とは分離しています。

Tech stack

技術スタック

Frontend

  • TypeScript
  • React
  • Vite
  • React Flow

Backend / API

  • Go
  • OpenAPI
  • sqlc
  • pgx/v5

Data / Infrastructure

  • PostgreSQL
  • Docker
  • Cloud Run
  • Cloudflare Pages