Skip to content

Instantly share code, notes, and snippets.

@hkrn
Created March 24, 2013 11:40
Show Gist options
  • Save hkrn/5231546 to your computer and use it in GitHub Desktop.
Save hkrn/5231546 to your computer and use it in GitHub Desktop.
MikuMikuDance Manifest Declaration a.k.a MMD.json の仕様書のドラフトです

※注意

まだ正式版として発行する前のドラフトです

MMD.json

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 が未知の要素を見つけた場合はその要素を解釈しません

asset

  • 継承されるために使われる型です
  • 予約語として使われますが現仕様では使われません
  • object 型でなければなりません
  • 値は要素数関係なく配列形式でなければなりません
  • 配列の値は object 型のみ存在するようにしなければなりません
  • 配列の値に object 以外の型がある場合は無視します

models

  • パッケージ中の全てのモデルの要素を格納します
  • asset 型を継承します

motions

  • パッケージ中の全てのモーションの要素を格納します
  • asset 型を継承します

accessories

  • パッケージ中の全てのアクセサリの要素を格納します
  • asset 型を継承します

effects

  • パッケージ中の全てのエフェクトの要素を格納します
  • asset 型を継承します

extensions

  • 出力時 MD の仕様上存在しないが拡張仕様として存在する要素を格納します
  • object 型でなければならず、キーに拡張名、値にその拡張が要求するバージョンを記述します
  • キー名及び値は両方共 string 型でなければなりません
  • 読み込み側が対象の拡張をサポートしない場合は無視しなければなりません

version

  • 出力した MD の仕様のバージョンを表します
  • 値は string 型でなければなりません
  • 読み込み側は version に従った解釈器を使って解釈されるべきです

asset 型で共通なタグ

author

  • asset の作者を表します
  • 必須要素であり、string 型でなければなりません

uri

  • asset の入手可能先を表します
  • 必須要素であり、object 型でなければなりません

version

  • asset のバージョンを表します
  • 必須要素であり、string 型でなければなりません
  • 原則 "[major].[minor].[patch]" の形式であるべきです

tags

  • asset のタグを表します
  • 任意要素であり、array 型でなければなりません
  • 中身はある場合は1つ以上含めなければなりません
  • 中身の要素数は8を超えてはなりません
  • 中身は全て string 型でなければならず、それ以外の場合は無視します

license

  • asset のライセンス情報を示します
  • 必須要素であり、object 型でなければなりません

readme

  • asset の README の場所を示します
  • 必須要素であり、string 型でなければなりません
  • 値は MMD.json からの相対パスであり、パスの区切りは '/' でなければなりません

実装例 (MMD.ja_jp.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 と同じくスネークケースでなければなりません

MMD_ARB_extended_uri

この拡張は URI タグを拡張します

更新履歴

2013/3/17 hkrn v 0.9.0

初版

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment