処理の流れを、状態つきで見る
Extract → Transform → Load の各ステップに、レコード数・処理時間・ステータスを重ねて表示します。異常のあるステップは色とアラートで即座に分かります。
データ処理工程を、生きた設計図に。Goose が出力する実行時メトリクスと oh-my-mermaid の Perspective 構造を接合し、パイプラインの流れ・健康状態・ボトルネックを一枚で把握するダッシュボード試作です。
データ処理パイプラインは、ステップが増えるほど「いま何が起きているか」を把握するコストが急増します。ログを追い、メトリクスを突き合わせ、どのステップが遅いのか、どこでレコードが落ちているのかを推測する。Pipeline Viz は、その確認作業を図の上に引き寄せます。
Goose の低オーバーヘッドな計測と、oh-my-mermaid の構造化されたダイアグラムを組み合わせ、「構造」と「状態」を同じ枠組みで管理するのが本試作の狙いです。図は静的なドキュメントではなく、実行時メトリクスを反映するライブ・ビューになります。
Extract → Transform → Load の各ステップに、レコード数・処理時間・ステータスを重ねて表示します。異常のあるステップは色とアラートで即座に分かります。
パイプラインを開発する人、日々の実行を監視する人、ボトルネックを特定したい人。ブラウザで開くだけで、同じビューを共有できます。
Goose が metrics.json を出力し、.omm/ ストアを介してビューアが読み込みます。静的ファイルだけで動作します。
本試作が答えるのは、次の4つの問いです。
各ステップのレコード数とレイテンシをライブ表示します。実行のたびに値が更新され、最終更新時刻も確認できます。
遅延の大きいステップを強調し、ステップ別レイテンシの内訳を表示します。クリックすると詳細パネルで入出力を確認できます。
Diff モードで、前回スナップショットとのレコード数・処理時間の差分をノード上に表示します。
検証に失敗したレコードは @error-handler に分岐します。隔離件数と最近のエラーを追跡できます。
ブラウザで開くと、サンプルメトリクスの読み込みとライブ更新が始まります。ノードのクリック、Diff、アラート、Perspective の切り替えを試せます。
提案資料の UI 仕様をもとに、静的サイトで動く範囲を実装したプロトタイプです。バックエンドなしで動作し、サンプルデータを差し替えるだけで自分のパイプラインに適用できます。
meta.yaml の poll_interval_ms 間隔でメトリクスを再取得。更新がなければブラウザ内シミュレーションで動きを保ち、LIVE / PAUSED を切り替えられます。
メトリクス URL、ポーリング間隔、ステータス色、パイプライン一覧を .omm/data-pipeline/meta.yaml から読み込みます。設定変更は「meta.yaml を再読込」で即時反映できます。
必須フィールド、数値、ステータス、前段との件数整合、隔離件数を表示前にチェック。修復結果と警告・エラーを Meta カードに表示します。
前回スナップショットとの差分をノードに表示。レコード数やレイテンシの変化を、図を見たまま確認できます。
Warning / Error のステップを上部とサイドバーにピン留め。隔離レコードの件数と最近のエラーを一覧します。
ノードをクリックすると、入出力・処理時間・メッセージ・差分を右パネルに表示。Escape で選択を解除できます。
data-pipeline、overall-architecture、error-handler、performance-metrics を切り替え、構造と状態を多角的に確認できます。
現在の状態から Mermaid 定義を生成して表示。classDef による状態色を含み、既存の oh-my-mermaid ワークフローへ持ち出せます。
スループットと隔離レコード数の推移をインライン SVG で描画。ステップ別レイテンシも横棒で比較できます。
「障害を注入」で Transform を一時的に Error 状態にし、アラートや色の変化を確認できます。「復旧させる」で戻ります。
ビルド不要の HTML / CSS / JavaScript と JSON だけで構成。相対パスで動作するため、プロジェクト Pages のサブパスにも配置できます。
oh-my-mermaid の考え方に合わせ、視点ごとに構造と状態を整理します。.omm/config.yaml の Perspective 一覧をダッシュボードのナビゲーションに対応させ、各ビューはダッシュボード内に実装しています。
| Perspective | 確認する内容 | ダッシュボードでの表示 |
|---|---|---|
data-pipeline | ETL 本流のステップと隔離分岐 | ノード図、Diff、アラート、インスペクタ |
overall-architecture | Goose エンジンと .omm ストア、ビューアの関係 | 全体構成図とレイヤー表 |
error-handler | 隔離と最近のエラー | エラー経路図、件数、イベント一覧 |
performance-metrics | スループット、レイテンシ、隔離レコード数の推移 | 時系列チャート、ステップ別バー、履歴表 |
公開サイトの PipelineViz/viewer/ を開きます。ビルドは不要です。ローカルで確認する場合は fetch() の制約があるため、リポジトリのルートで静的サーバーを起動してから開きます。
python3 -m http.server 8000
# http://localhost:8000/PipelineViz/viewer/
.omm/data-pipeline/meta.yaml の pipelines[] にメトリクス URL を追加し、viewer/data/ の JSON を編集します。複数パイプラインはサイドバーのセレクタで切り替えられます。取得に失敗した場合は、HTML 内の埋め込みサンプルで動作します。
pipelines:
- id: etl-main
label: ETL 本流
metrics_url: ../../viewer/data/metrics.json
prev_url: ../../viewer/data/metrics-prev.json
GitHub Actions でリポジトリ全体をデプロイします。Sandbox のルート index.html はプロジェクト一覧、PipelineViz/index.html が本プロジェクトの LP、viewer/ がダッシュボードです。相対パスのため、https://user.github.io/repo/PipelineViz/ のようなサブパスでも動作します。
goose-sandbox/
├── PipelineViz/ # このプロジェクト
│ ├── index.html # プロジェクト LP
│ ├── viewer/
│ │ ├── index.html # ダッシュボード試作
│ │ ├── lib/
│ │ │ ├── data-source.js # meta.yaml パーサー・検証
│ │ │ └── data-source.test.js # Node.js テスト
│ │ └── data/
│ │ ├── metrics.json # ETL 本流の現在スナップショット
│ │ ├── metrics-prev.json # 同・Diff 用
│ │ ├── etl-reporting.json # 日次レポート
│ │ └── etl-reporting-prev.json # 同・Diff 用
│ ├── assets/
│ │ └── brutalist-doc.css # ドキュメント共通スタイル
│ ├── .omm/
│ │ ├── config.yaml # Perspective 一覧
│ │ └── data-pipeline/
│ │ ├── meta.yaml # live_metrics_url / pipelines / status_map / prev_diagram
│ │ └── diagram.mmd # Mermaid 定義サンプル
│ ├── pipeline_viz_proposal.html # 実装提案資料
│ ├── goose_language_guide.html # Goose 言語ガイド
│ └── README.md # プロジェクト README
├── index.html # Sandbox ホーム
├── README.md # Sandbox 全体の README
├── .github/workflows/pages.yml # GitHub Pages デプロイ
├── LICENSE # MIT
└── .nojekyll # GitHub Pages 用
.omm/ の各ディレクトリを読み込むわけではありません。パンくずのファイル名も想定パスの表示です。