MDS ファイル

MDS は MIDAS のプロジェクトファイル形式です。拡張子は .mds です。データセットやモデル、レポート、ワークスペースのレイアウトなど、プロジェクトの状態を1つのファイルに保存します。

保存とエクスポート

MDS ファイルの保存方法は2つあります。ブラウザへの保存は作業中のこまめな保存に、ファイルとしてのエクスポートは他のユーザーへの共有やバックアップに使います。

ブラウザに保存する

File > Save to Browser(Cmd+S / Ctrl+S)で、ブラウザのストレージ(OPFS)にプロジェクトを保存します。保存したプロジェクトはランチャー画面の Quick Access に表示され、クリックして再度開けます。

ブラウザのストレージを使うため、同じブラウザ・同じプロファイルでのみアクセスできます。別のブラウザやデバイスでは表示されません。ブラウザのデータを消去すると保存内容が失われます。保存時に MIDAS はブラウザへ永続ストレージを要求します。要求が承認されると、容量不足によるブラウザの自動削除の対象から外れます。承認するかどうかはブラウザが判断するため、ブラウザの設定やストレージ容量によっては自動的にデータが消去される場合もあります。重要なプロジェクトはファイルとしてもエクスポートしてください。

ファイルとしてエクスポートする

File > Export Project...(Cmd+Shift+S / Ctrl+Shift+S)で、.mds ファイルをダウンロードします。エクスポートされるファイルには必ず電子署名が付きます。初めてエクスポートするときは、ダイアログで署名者名を入力すると署名鍵が作成されます。

エクスポートした MDS ファイルは、他のユーザーに共有したり、バックアップとして保管できます。受け取った MDS ファイルは、ランチャー画面の Open File から開けます。受け取った側では署名者が Unknown として表示されます。事前に公開鍵を交換しておけば Trusted として認識されます。詳しくは 署名鍵の管理 を参照してください。

自動保存について

MIDAS はリアルタイムでは自動保存しません。作業内容を保持するには、上記いずれかの方法で明示的に保存してください。エクスポートは MDS ファイルを書き出すだけで、ブラウザに保存した内容を更新しません。MIDAS 内でプロジェクトを閉じるときや別のプロジェクトを開くときは、ブラウザに保存していない変更があると確認ダイアログが表示されます。変更をエクスポートした後でも、ブラウザに保存していなければこのダイアログが表示されます。ブラウザのタブを閉じる場合は確認ダイアログが表示されず、ブラウザに保存していない変更は失われます。

保存から除外されるデータ

Primary Dataset(CSV などから取り込んだ元のデータセット)の行データは MDS ファイルに含まれます。Derived Dataset(クエリや変換操作で生成したデータセット)は定義のみ保存され、行データはデフォルトでは保存されません。プロジェクトを開いた後、保存された操作を再実行して必要に応じて再計算されます。

この仕組みにより、MDS ファイルのサイズを小さく保てます。計算コストの高いクエリを含む Derived Dataset では、Save data with project を有効にすると計算結果も保存できます。詳しくはデータセット > 計算結果のプロジェクトファイルへの保存を参照してください。

ファイルの構成

MDS ファイルは zip 形式のファイルです。エクスポートした MDS ファイルの zip には、3 つの JSON ファイルと、データセットの行データを記録した Parquet ファイル1が入っています2。各ファイルの内容は次のとおりです。

ファイル内容
manifest.jsonmetadata.json と各 Parquet ファイルの名前、大きさ、SHA-256 ハッシュ値 の一覧と、署名者名、署名日時、来歴
signature.jsonmanifest.json に対する電子署名と、署名者の公開鍵
metadata.jsonデータセットの列の名前と型、Derived Dataset の操作、除外した行の値、モデル、レポート、ワークスペースのレイアウトなど、Parquet ファイルに入れないプロジェクトの状態
datasets/*.parquetデータセット 1 つ分の行データ

Parquet ファイルは、行データを保存するデータセット 1 つにつき 1 つあります。行データを保存するのは Primary Dataset、Save data with project を有効にして計算結果を持つ Derived Dataset、開いているタブが持つ Ephemeral Dataset の 3 種類です。そのほかの Derived Dataset について、MIDAS は metadata.json に定義だけを記録します。どの Parquet ファイルがどのデータセットの行データかも、MIDAS は metadata.json に記録します。

Parquet ファイルの列は、MIDAS が列ごとに付けた ID によって metadata.json の列の定義と対応します。MIDAS は Parquet ファイルの列に、データセットの列の名前ではなくこの ID を名前として付けます。列の名前と型は、MIDAS が metadata.json に記録します。MIDAS は MDS ファイルを開くとき、Parquet ファイルの列の数・ID・型と行数が metadata.json の定義と一致するかを確かめ、一致しないファイルは開きません3。

MIDAS が開けるのは、MIDAS が書き出すのと同じ形の zip だけです。MIDAS は zip の中のファイルを圧縮せずに格納し、manifest.json と signature.json 以外のファイルをすべて manifest.json に載せます4。中のファイルを圧縮した zip や、manifest.json に載っていないファイルを足した zip は開けません。

電子署名と来歴

エクスポートされる MDS ファイルには必ず電子署名が付きます。署名には Web Crypto API の ECDSA P-256 を使用します。署名により、ファイルを最終的に誰が作成したか(どの鍵で署名されたか)を確認でき、署名後の改竄も検出できます。署名はファイルの内容を暗号化しません。MDS ファイルを入手した第三者はファイルの内容を読めます。

ブラウザへの保存(Save to Browser)には署名が付きません。ブラウザ内の保存領域はこのブラウザだけが読み書きする作業用の置き場であり、署名の対象になるのはブラウザの外に出るエクスポートファイルだけです。

MIDAS は MDS ファイルを開くとき、署名を検証します。署名がないファイルと、改竄や転送時の破損により検証に失敗したファイルは開けません。検証失敗時の対処は署名鍵の管理を参照してください。

署名の対象は manifest.json だけですが、MIDAS は metadata.json と各 Parquet ファイルの改竄も manifest.json に記録したハッシュ値を通して検出します。SHA-256 ハッシュ値はファイルの内容から計算する値で、内容を書き換えると値が変わります。署名の検証に通ると、MIDAS は manifest.json に載っている各ファイルのハッシュ値を計算し、記録と照合します。このため署名後に metadata.json、Parquet ファイル、署名者名や来歴を含む manifest.json のどれかを書き換えたファイルは、検証に失敗して開けません。

検証を通過した場合、ファイルの来歴(誰が作成し、誰が編集して再エクスポートしたか)から信頼レベルが決まります。

信頼レベル説明
OfficialMIDAS の提供者の鍵による署名
Trusted自分の鍵、または登録済みの公開鍵による署名
Unknown未登録の署名者による署名

他の人が作成した MDS ファイルを編集して再エクスポートすると、ファイルにはあなたの署名とともに、元の作成者の記録(来歴)が引き継がれます。受け取り側では、来歴に含まれる全員の信頼レベルのうち最も低いものがファイルの信頼レベルになります。未知の署名者に由来する内容が、別の人の署名を経ることで信頼済みに見える状態を防ぐためです。ファイルを開いた後にブラウザへ保存せず、変更も加えずにエクスポートすると、MIDAS は元のファイルをそのまま出力し、元の署名を保ちます。

MIDAS は既定では、署名者が Unknown の MDS ファイルも確認ダイアログなしで開きます。これは、MIDAS が MDS ファイルを読み込んだだけでは外部サーバーへ通信しないためです。ファイルの内容から通信が起きうる操作とその扱い、Unknown の署名者のファイルを開くたびに確認する設定は、署名鍵の管理 を参照してください。メニューバーの署名バッジは Unknown を表示し、クリックするとフィンガープリントを表示します。鍵を信頼するかは、このフィンガープリントを相手が公開している値と照合してから判断してください。

署名鍵の生成と管理、公開鍵のエクスポート、他者の公開鍵の登録については署名鍵の管理を参照してください。

データの所在

MIDAS のデータ処理はすべてブラウザ内で完結します。プロジェクトのデータが外部サーバーに送信されることはありません。MIDAS はブラウザ内のローカルストレージ領域(OPFS と IndexedDB)にデータを保存し、エクスポートした MDS ファイルも外部サーバーを経由せずにユーザーのデバイスへダウンロードします5。ストレージの使い分けの詳細は ストレージ管理 を参照してください。

署名鍵もブラウザ内に保存され、外部サーバーに送信されることはありません。ブラウザのデータを消去すると署名鍵も失われ、過去に自分が署名した MDS ファイルは Unknown として扱われます。鍵のバックアップは 署名鍵の管理 を参照してください。

バージョン互換性

新しい MIDAS は古いバージョンの MDS ファイルを開けますが、2026 年 7 月の署名形式の更新より前にエクスポートしたファイルとブラウザに保存したプロジェクトは開けません。MDS ファイルには、プロジェクトを最後に保存した MIDAS のバージョンが記録されています。古いバージョンの MDS ファイルを開くと、MIDAS はマイグレーションを自動的に適用し、プロジェクトのバージョンを開いた MIDAS のバージョンに更新します。現在の形式に変換できないデータセットがあれば、MIDAS はそのデータセットを、それに依存するデータセット・モデル・レポート要素・タブとともにプロジェクトから削除し、削除したものを警告で表示します。2026 年 7 月の更新で署名形式は来歴を含む形式になり、MIDAS はそれより前の署名形式を読みません。

ファイルの構成 で説明した zip 形式より前の形式の MDS ファイルも、2026 年 7 月の署名形式の更新より後に書き出したものであれば、現在の MIDAS で開けます。以前の形式では、MIDAS はプロジェクト全体を 1 つの JSON にして gzip で圧縮し、署名を付けていました。以前の形式のファイルから開いたプロジェクトをブラウザに保存するか、編集してエクスポートすると、MIDAS は zip 形式で書き出します。ファイルを開いた後にブラウザへ保存せず、変更も加えずにエクスポートすると、MIDAS は元のファイルを以前の形式のまま出力します。

zip 形式に対応する前の MIDAS は、zip 形式の MDS ファイルを開けず、「Invalid MDS file: missing signature」というエラーを表示します。ブラウザに保存したプロジェクトも同じで、zip 形式で保存した後は、対応前の MIDAS では開けません。MIDAS は Web アプリのため、古いバージョンの MIDAS が動くのは、主にブラウザが古いバージョンをキャッシュしている場合です。ページを再読み込みすると、ブラウザは最新バージョンの MIDAS を読み込みます。

zip 形式に対応したバージョンどうしでは、ファイルに記録されたバージョンが開く側の MIDAS より新しいとき、MIDAS は警告を表示してからファイルを開きます。警告は、一部の機能が正しく動作しない場合があることを知らせます。

脚注

  1. Parquet は、表のデータを列ごとに格納するファイル形式です。 ↩

  2. ブラウザに保存したプロジェクトも zip ですが、署名がないため signature.json を持ちません。MIDAS は manifest.json に署名者名・署名日時・来歴を記録せず、来歴を origin.json に記録します。MDS ファイルを開いた直後に MIDAS がブラウザに置く複製は、開いたファイルそのものです。 ↩

  3. MIDAS は Parquet ファイルの読み書きに、ブラウザの中で動く SQL の処理系 DuckDB を使います。DuckDB を起動できない状態で zip 形式の MDS ファイルを開くと、MIDAS はプロジェクトを開かずにエラーを表示します。Save to Browser とエクスポートも Parquet ファイルを DuckDB で書くため、この状態では失敗します。未編集のファイルを原本のまま書き出すエクスポートは Parquet ファイルを書かないので、失敗しません。ページを再読み込みすると、MIDAS は DuckDB を起動し直します。 ↩

  4. MIDAS は行データの Parquet ファイルを、Parquet 自体の圧縮機能を使って Zstandard(zstd)方式で圧縮します。 ↩

  5. プロジェクトに署名してエクスポートするときと、ブラウザのストレージに保存したプロジェクトを編集せずにエクスポートするときは、MIDAS は MDS ファイルをいったん OPFS に書き出してからダウンロードします。OPFS に残るこの複製は、同じタブで次のエクスポートを始めたときか、そのタブを閉じた後に MIDAS を開いたときに MIDAS が削除します。 ↩