1. はじめに

本ドキュメントは、Servlet版の月山実行環境である「櫻花(おうか)」の製作者であるD.Miki氏が、
コンピュータ技術専門誌「XML PRESS」(技術評論社)に向けて書かれた原稿を元に編集、作成されました。

使用許諾条件 (2001年 6月 1日 現在)

風林火山は、GNU の GPL(General Public License)に基づく条件のもとで本ソフトウェアの利用を許諾します。

商標について

Javaおよび Java ベースの商標は、 Sun Microsystems, Inc. の米国、その他の国における商標または登録商標です。
Windows,Windows95, Windows98,WindowsMe, WindowsNT,Windows2000,Win32 は、Microsoft Corporation の米国、その他の国における商標あるいは登録商標です。
UNIX は、X/Open Company Limited がライセンスしている米国ならびにその他の国における登録商標です。

上記以外の、このドキュメントに記載した社名および製品名などは、一般に各社の商標または登録商標です。


2. 櫻花とは

風林火山ではシナリオ記述言語としてGEML/GSMLを開発していました。
GEML/GSMLはXMLを応用した構造化言語で、従来の単純なテキストベースでのスクリプト言語よりもシナリオを明確に記述できるという利点を持っています。
当初、GEML/GSMLを閲覧する専用のアプリケーションとして月山が開発されました。
月山はJavaで開発されており様々に優れた機能を持っていましたが、反面、起動するためにJavaをインストールする必要があり一般ユーザが利用するには敷居が高いという問題点がありました。
また既存のGEML/GSML作成者からも、GEML/GSMLで作成したシナリオをWebで簡易に公開するための手段が欲しいという要求が挙がっていました。
そこでGEML/GSMLをHTMLに変換し、汎用的なHTMLブラウザで閲覧するための方法が風林火山でいくつか検討されました。
その一つとして、Servlet技術の応用を選択したのが櫻花です。

櫻花はGEML/GSMLを解釈し、それをHTMLに変換して出力するServletアプリケーションです。
櫻花はSession内部にシナリオの状態を保持しており、ユーザからのリクエストを元にシナリオを進めます。
また櫻花はサーバ側で画像を合成し、クライアント側には単一のJPEGファイルのみを送信します。
従って、ユーザはHTMLやJPEGを表示することのできるブラウザを用意するだけで、GEML/GSMLで記述されたシナリオを閲覧する事が可能になります。
櫻花はJavaアプリケーションなのでその実装の一部を月山と共有しています。
例えば、シナリオの分岐やフラグ状態の保持、それに画像の合成の部分がそれに当たります。
櫻花はシナリオ実行状況のセーブ/ロードに対応しています。
ユーザはシナリオを任意の場所で中断したり、再開したりといった使い方が出来ます。


3. 櫻花の利用法

櫻花の利用方法としては、以下の3通りを考えることが出来ます。


[図1:櫻花の利用形態]

サーバ管理者については後で詳しく解説するとして、ここではコンテンツ作成者とユーザについて簡単に解説します。

3.1. コンテンツ作成者

結局のところ、コンテンツの作成者にとっては月山も櫻花も関係なく、単にGEML/GSMLを作成すれば良いだけです。
コンテンツ作成者にかかる追加の負担は、どこかの公開サーバに配置する手間だけという事になりますが、これは月山と同梱してCD-ROMなどで配布する際の手間と比べると、どっこいどっこいと言えるかもしれません。
一度作成したコンテンツは内容を変更することなしに、月山でも櫻花でもどちらでも公開可能ですので作成者にとってみれば公開手段の選択肢が広がったと言えるかもしれません。

3.2. ユーザ

次にユーザが櫻花を利用してGEML/GSMLを閲覧する方法を詳しく説明します。

以上で、ユーザが櫻花を利用してGEML/GSMLで記述されたシナリオを閲覧するための方法の解説を終わります。
櫻花はSessionを用いて各ユーザを個別に扱って居ますので、複数のユーザが同時に別途のシナリオを閲覧することも可能です。
なお、ブラウザの「戻る(back)」ボタンによるリクエストは無効扱いしますので、「戻る(back)」ボタンはお使いになれません。ご注意下さい。


[図7:櫻花の画面遷移]

4. 櫻花Servletの構築

本章ではサーバ管理者として櫻花を運用する場合について簡単に解説します。
WindowsMe上で櫻花を構築する例を追っていきますので、UNIXなど他のOSで設置を試みる場合には、PATHの記述などを適宜読み換えて下さい。
実際に櫻花が稼動し始めると、サーバ管理者が行なうことはそれを眺めるだけになります。
もちろん、櫻花も含めたサーバ全般の日常的な管理は随時行なう必要がある訳ですが、櫻花Servletの稼動後に特別な作業が追加になるようなことは通常ありえません。

以上で、櫻花を稼動させるための環境設定は終了です。

 

以上、簡単ですが櫻花Servletの構築について解説しました。
WindowsMeではUNIXなどと違いユーザの権限の設定などがありませんので、そういった点についての記述は省いてあります。
UNIXなどのユーザ権限の設定できるOSを利用する場合には、それらの設定にも十分注意する必要があるかと思います。

5. 櫻花のカスタマイズ

櫻花はJavaのプログラムですので、Javaのコーディングについての知識があれば、カスタマイズすることが可能です。
櫻花の仕組み自体をカスタマイズする必要はあまり無さそうですので、ここでは櫻花が出力するHTMLをカスタマイズする方法を解説します。
櫻花で、HTMLを出力している部分はorg.wffm.ooka.processパッケージです。
パッケージ内には以下のようなクラスが含まれています。

さて、OokaProcessAudioをカスタマイズすることを試みます。
ベータ版では単にタグの内容をテキストとして出力しているだけですが、これをEMBEDタグとして出力させることにします。
まず、OokaProcessAudio内でカスタマイズの対象となる部分を見ることにします。以下のようになっています。

  public void process(OokaRequest req, OokaStatus status){
    status.addContent(new Text("Audio: " + ge.getAttributeValue("file")));
    status.addContent(new Tag("BR"));
    status.addContent(new Text("  Layer: "+ ge.getAttributeValue("layer")));
    status.addContent(new Text(" /Command : "+ ge.getAttributeValue("command")));
    status.addContent(new Tag("BR"));
  }

これを以下のように書き換えてみましょう。

  public void process(OokaRequest req, OokaStatus status){
    Tag embed = new Tag("EMBED");
    embed.put(new AttrDefault("AUTOSTART", "false"));
    embed.put(new AttrDefault(
      "SRC",
      ge.getBaseURL().toString() + ge.getAttributeValue("file")
    ));
    status.addContent(embed);
    status.addContent(new Tag("P"));
  }

このようにすることで、GEML/GSMLのaudioタグに対応したEMBEDタグが出力されるようになります。
EMBEDタグに対応しているブラウザなら、図9のように音楽再生のためのパネルが表示されるかと思います。


[図9:カスタマイズ結果]

前述したような変更の詳細を完全にご理解頂くには、櫻花に付属する以下のライブラリの機能について一通り目を通しておく必要があります。
以下、概要のみを解説します。


詳細については、別途公開されている櫻花ライブラリのAPIドキュメントを参照下さい。
以上で、櫻花のカスタマイズについての解説を終わります。



Copyright © 2001 著作権はすべて風林火山に帰属します。
Copyright © 2001 WFFM. All Rights Reserved.