nineml によるメッセージ定義

nineml

ninemlは nineメッセージを定義するための言語であり、XML をベースにしたマークアップ言語となっている。

ninemlでは、メッセージのデータ構造のみを定義すれば良く、この定義を元に実際のメッセージクラスのソースコードを生成することができる。

さらに、C++, ActionScript3, JavaScript 言語用のソースコードを出力できるので、nine for Flashを使用してクライアントを開発する際にも同一の定義からサーバー・クライアント両方のメッセージクラスを生成することができる。

nineml によるメッセージ定義

ここでは、簡単なメッセージ定義での nineml の使い方を説明する。 複雑なメッセージ定義方法については、nineml仕様を参照のこと。

nineml によるメッセージ定義

<?xml version="1.0" encoding="utf-8"?>
<nineml>
  <messageDef kind="1">
    <message name="FooMessage" type="0">
      <field name="value" type="int"/>
    </message>
  </messageDef>
</nineml>

nineml は XML であり、XML の文法に則る必要がある。 XML 宣言を記述し、ルート要素は nineml である。

nineml 直下の messageDef は実際のメッセージ定義である。 この定義は次のような内容になっている:
  • メッセージの KIND は 1, TYPE は 0 である。intの値を格納するメッセージが定義している。
  • メッセージは一つの要素を持ち、名前は value, 型は int である。

コンパイル方法

nineml は Java を使用しているため、Java をインストールする必要がある。 インストールされていない場合は、java.comからダウンロードしてインストールすること。

次のようなコマンドをシェルから実行することで、ソースコードを生成する

Windows:
  ninemlc.bat [オプション] ファイルパス
Linux:
  ninemlc.sh [オプション] ファイルパス

ファイルパスには、コンパイル対象となるメッセージ定義XMLファイルへのパスを指定する。

オプションは次のものを記述する:
-l <lang>
出力されるソースコードの言語を指定する。以下のいずれかを指定できる。
c
C++ 用のコードを生成する。
as
ActionScript3 用のコードを生成する。
js
JavaScript 用のコードを生成する。
-d
出力先のディレクトリ。デフォルトはカレントディレクトリになる。