まだ正式版として発行する前のドラフトです
MikuMikuDance Manifest Declaration Format Specification
これは MikuMikuDance Manifest Declaration (以下 MD) の仕様書です。
MikuMikuDance (以下 MMD) がサポートするファイルには PMD/PMX/VMD/X が、MikuMikuMoving (以下 MMM) がサポートするファイルには MVD とありますが、いずれもメタデータ情報を格納する仕様が乏しいため、これを補完する形で MD が策定されました。MD の目標は以下があります
- 機械的に処理できること
- ファイルの証明を保証すること
- MD は MMD.[locale]_[language].json という名前にし、大文字小文字は区別しません
- MD が例えば日本を想定している場合 MMD.ja_jp.json という名前にします
- MD は可読性及び可搬性を重視するため JSON 形式でかつ UTF-8 で保存されなければなりません
- MD は圧縮されたファイルの中に含まれることを想定されています
- MD は圧縮されたファイルの中で言語及び地域ごとにひとつだけ存在しなければなりません
- MD に含まれる要素名はスネークケース (全て半角小文字の英数字と "_" で構成され、単語区切りは _ ) でなければなりません
- MD が未知の要素を見つけた場合はその要素を解釈しません
- 継承されるために使われる型です
- 予約語として使われますが現仕様では使われません
- object 型でなければなりません
- 値は要素数関係なく配列形式でなければなりません
- 配列の値は object 型のみ存在するようにしなければなりません
- 配列の値に object 以外の型がある場合は無視します
- パッケージ中の全てのモデルの要素を格納します
- asset 型を継承します
- パッケージ中の全てのモーションの要素を格納します
- asset 型を継承します
- パッケージ中の全てのアクセサリの要素を格納します
- asset 型を継承します
- パッケージ中の全てのエフェクトの要素を格納します
- asset 型を継承します
- 出力時 MD の仕様上存在しないが拡張仕様として存在する要素を格納します
- object 型でなければならず、キーに拡張名、値にその拡張が要求するバージョンを記述します
- キー名及び値は両方共 string 型でなければなりません
- 読み込み側が対象の拡張をサポートしない場合は無視しなければなりません
- 出力した MD の仕様のバージョンを表します
- 値は string 型でなければなりません
- 読み込み側は version に従った解釈器を使って解釈されるべきです
- asset の作者を表します
- 必須要素であり、string 型でなければなりません
- asset の入手可能先を表します
- 必須要素であり、object 型でなければなりません
- asset のバージョンを表します
- 必須要素であり、string 型でなければなりません
- 原則 "[major].[minor].[patch]" の形式であるべきです
- asset のタグを表します
- 任意要素であり、array 型でなければなりません
- 中身はある場合は1つ以上含めなければなりません
- 中身の要素数は8を超えてはなりません
- 中身は全て string 型でなければならず、それ以外の場合は無視します
- asset のライセンス情報を示します
- 必須要素であり、object 型でなければなりません
- asset の README の場所を示します
- 必須要素であり、string 型でなければなりません
- 値は MMD.json からの相対パスであり、パスの区切りは '/' でなければなりません
{
"version": "0.9.0",
"extensions": [
"MMD_ARB_extended_uri" => "1.0.0"
],
"models": [
{
"name": "おんだ式初音ミク",
"version": "1.0.1"
"author": "On_Da",
"uri": {
"author": "http://www.crypton.co.jp",
"distribution": "http://bowlroll.net/up/dl15351",
},
"license": {
"format": "Other",
"redistributable": false
},
"readme": "最初にお読みください(初音ミク編).txt",
"documents": [
"VOCALOID.txt"
],
"tags": [ "VOCALOID", "初音ミク", "MikuMikuDance", "おんだ式ミク" ]
}
],
"motions": [],
"effects": []
"accessories": []
}
拡張は仕様が実験的であるがゆえに流動的のため仕様には含まれない実装仕様をさします。拡張は extensions によって実行時に解釈されます。
拡張名のルールは以下のようにする必要があります。また、バージョンの解釈は拡張によって行われるべきです。
MMD_[vendor]_[summary]
- vendor は策定したベンダ名あるいは ARB
- summary は拡張が何を行なっているかを示す文字列
- vendor 及び summary の名前付けは MD と同じくスネークケースでなければなりません
この拡張は URI タグを拡張します
初版