← /teach Study Portal (maiml) に戻る /teach lesson

Lesson 0006: MaiML のデータ蓄積ベストプラクティスとシステム構成

ファイルシステム運用からWebアプリ・データレイク連携への段階的アーキテクチャ

MaiML のデータモデルを理解した次の実務的な疑問は、「日々の測定で発生する MaiML や生画像ファイルを、具体的にどのようなフォルダ構成やシステム構成で保存・管理していくべきか?」 という点です。

結論から言うと、最初から巨大な Web アプリケーションを一から開発する必要はありません。まずは「標準化されたフォルダ・ファイル規約」からスタートし、規模や共同研究・自動化の要件に応じて段階的にサーバー・Web システムへ発展させるのが最も手戻りの少ないベストプラクティスです。

1. フェーズ 1: ファイルシステム運用のベストプラクティス (小規模・PoC)

実験室内の NAS や共有ストレージ上に、以下のような「自己完結型」のディレクトリ階層を設けます。

/data/analytical_archive/
├── protocols/                                # 共通プロトコル定義 (資産)
│   ├── protocol_sem_eds_v1.maiml
│   └── protocol_xrd_v2.maiml
│
└── runs/                                     # 日々の測定実行データ
    └── 2026-09/
        └── LOT-202609-A20/                   # サンプル/ロット単位
            └── RUN_001_SEM-EDS/              # 1回の測定実行単位
                ├── run_metadata.maiml        # 完全なMaiML (Document, Protocol, Data, EventLog)
                └── raw/                      # 外部参照バイナリ (TIFF, CSV, HDF5等)
                    ├── sem_micrograph_01.tif
                    └── eds_spectrum_raw.csv

ファイルシステム運用の 3 つの重要ルール

  1. 1 測定実行 = 1 フォルダ: MaiML ファイル(メタデータ・条件・解析値)と、<insertion> で参照する生ファイル(raw/ 配下)を同じフォルダ内に同居させ、相対パス(または管理されたファイルURI)で参照します。これにより、フォルダ単位でバックアップや移動を行ってもリンク切れが起きません。
  2. 不変性(Write-Once, Read-Many): 一度生成された raw/ のファイルと MaiML は原則として上書き・再編集を禁止(リードオンリー)にします。SHA-256 ハッシュが記録されているため、変更すると改ざん・不整合とみなされます。
  3. プロトコル定義の集約: 装置定義やペトリネット手順は protocols/ に単体ファイル(ProtocolFileRootType)として集約し、各測定データからはそれを読み込んでバッチ生成します。

2. サーバーや Web アプリケーションを用意すべきか?

「Web アプリケーションを作るべきか?」に対する判断基準は、主に以下の 3 つの課題に直面したタイミングです。

Web アプリ・サーバー導入の判断基準

3. 推奨システムアーキテクチャ (フェーズ 2 & 3)

Web システムを構築する場合でも、ゼロから巨大なフルスタックアプリを作るのではなく、「オブジェクトストレージ」+「軽量メタデータDB」+「REST API」 の疎結合アーキテクチャが標準的です。

【分析装置・Edge PC】
      │ (自動監視スクリプト: watchdog / pymaiml)
      ▼
【バックエンド / API サーバー】
  ├── (1) 実体ファイル保存 ──────> 【オブジェクトストレージ (MinIO / S3)】
  │                                ├── *.maiml (XMLメタデータ)
  │                                └── raw/ (大容量TIFF, バイナリ)
  │
  └── (2) メタデータ抽出・登録 ──> 【検索データベース (PostgreSQL / MongoDB)】
                                   ├── サンプル名, 元素, 条件, 粒子径指標
                                   └── MaiML XML への S3 URI リンク
      ▲
      │ (REST API / GraphQL)
【Web UI ダッシュボード / MI (マテリアルズインフォマティクス) パイプライン】

4. 理解度チェック (Retrieval Practice)

Q: MaiML による測定データ保管において、将来的なシステム拡張やデータ移動に最も強く、安全なフォルダ・ファイル設計はどれですか?

A: 全ての生バイナリデータをBase64で1つの巨大MaiMLに埋め込む
B: 装置別のフォルダに生データのみを保存しMaiMLはDBにのみ置く
C: 1測定実行ごとにMaiMLとrawフォルダをまとめ相対参照で閉じる
D: 測定データが蓄積されるたびに既存MaiMLを追記更新していく
← Lesson 0005 チートシートを見る