詰将棋用XMLビューア説明書

2008.6.1 神無七郎

0. はじめに

詰将棋用XMLビューア (TsumeMLViewer.swf、以下「本ビューア」と略す)は、ブラウザ上でフェアリー詰将棋(変則詰将棋)を動かして鑑賞することを目的として います。
以前、JavaScriptで同趣旨のスクリプトを作成していましたが、将棋特有の180°回転した文字を表示するため、Internet Explorer 4.0以上(以下IEと略す)の環境が必要でした。
そこで他のブラウザでも表示ができるようFlash(Actionscript)で書き直したのが、今回の詰将棋用XMLビューアです。
これを動かすためにはFlash Player 9が必要ですが、これは多くの環境に対応し、無償で使えるため、以前のスクリプトより制約が少なくなっていると思いま す。

1. 特徴

世の中に棋譜を再生するソフトは数多く存在しますが、フェ アリー詰将棋には
といった、棋譜の再生に都合の悪い特徴があります。これに 対する解決策として、本ビューアでは、
という2つの対策を採っています。
後者は難しいことを言っているようですが、棋譜は「手順」の代わりに「局面」のデータを持ち、ビューアは指定された局面を表示するだけ、という役割分担を させればこの問題は解決します。本ビューアではこうした棋譜を表現するためXML形式の棋譜を使用しています。
XML形式の棋譜については3.で詳しく説明します。

2. 使い方

本ビューアで詰将棋を動かして鑑賞するには以下のものが必 要です
上の各々について補足します。

(1) ビューア本体のファイル
セ キュリティ上の理由でFlashではWeb上で使うときと、ローカル環境で使うときでは、それぞれに対応したswfファイルを作る必要があります。本サイトでは、オンライン用とオフライン用としてダウンロード元を分けていますが、ファイル名自体は同一です。ダウンロードした後で、混乱を防ぐため名前を変更しておいた方が良いでしょう。

(2) 棋譜ファイル
本ビューアではXML形式で記述された棋譜を用いるので、 まずは既存のファイルをこの形式に変換しなくてはいけません。テキストエディタでこれを記述するのも難しくはないのですが、結構面倒です。
幸 い、神無次郎氏がfmviewにXML形式でファイルを保存する機能を付けてくれたので、fmo形式(fmの出力形式)や、kif形式(Kifuwなど多 くの将棋ソフトで使用されている形式)を自動的にXML形式の棋譜に変換することができます。この機能で棋譜をXML形式に変換した後、必要に応じ固定 項目やコメントを編集すれば棋譜の準備は完了です。

(3) ビューアを埋め込むHTMLファイル 等
ビューアと棋譜ファイルを準備したら、これをHTML文書 に埋め込みます。埋 め込みには<object>タグや<embed>タグを用いるのが一般的です。これについてはサンプル集のhtmlファイルを参考 にしてください。ブラウザの種類が異なっても表示できるよう、できるだけ両方記述するようにしましょう。 タグの記述は大部分は定型的な「決まり文句」ですが、本ビューアではfilenameというパラメータに用意した棋譜ファイル名(パス名)を指定する必要 があるので、そこだけ注意してください。


3. 詰将棋用XML棋譜について

本ビューアでは、ルールに関する知識に依存しない棋譜とし て、詰将棋用のXMLを使用しています。
XML(eXtensible Markup Language)は、用途に応じてタグなどを自由に定義できるのが特徴で、HTMLのようにあらかじめタグの意味や使い方が決められているわけではあり ません。例えば適用分野が数学ならMathML、音楽ならばMusicXMLなどのように、それぞれの分野に適した体系が提案され、実際に使用されていま す。最近では、WordやExcelといった定番ソフトでさえ、XML形式をサポートするようになりました。
詰将棋に関しては、残念ながらXMLを適用した言語仕様が提案されていないので、筆者と神無次郎氏で相談して、勝手に仕様を決めさせて戴きました。こ れを仮にTsumeMLと呼んでおきますが、言語仕様書のような堅苦しいものより、具体例で説明したほうが分かり易いと思いますので、有名な3手詰の古図 式をTsumeMLで表した例をご覧戴きましょう。

<?xml version = "1.0" encoding = "UTF-8"?>
<詰将棋>
<作者>作者不詳</作者>
<作品名></作品名>
<発表場所></発表場所>
<発表年月>不詳(江戸時代?)</発表年月>
<備考>完全</備考>
<ルール>詰将棋</ルール>
<総手数>3</総手数>
<盤サイズ>9</盤サイズ>
<局面>
<手数>0</手数>
<指手>初形</指手>
<攻方配置>25馬53銀</攻方配置>
<攻方持駒>銀</攻方持駒>
<受方配置>41銀51玉61銀</受方配置>
<コメント></コメント>
</局面>
<局面>
<手数>1</手数>
<指手>52馬</指手>
<攻方配置>52馬53銀</攻方配置>
<攻方持駒>銀</攻方持駒>
<受方配置>41銀51玉61銀</受方配置>
<コメント></コメント>
</局面>
<局面>
<手数>2</手数>
<指手>同銀右</指手>
<攻方配置>53銀</攻方配置>
<攻方持駒>銀</攻方持駒>
<受方配置>41銀51玉52銀</受方配置>
<コメント></コメント>
</局面>
<局面>
<手数>3</手数>
<指手>62銀打</指手>
<攻方配置>53銀62銀</攻方配置>
<攻方持駒>なし</攻方持駒>
<受方配置>41銀51玉52銀</受方配置>
<コメント></コメント>
</局面>
</詰将棋>

最初の1行目がXML文書であることを表す「お約束」の表現。
2行目から最終行までの<詰将棋>タグで囲まれた中味が、1作の詰将棋を表しています。
<詰将棋>タグの子供のタグとして、<作者>、<作品名>、<発表 場所>、<発表年月>、<備考>、<ルール>、<総手数>、<盤サイズ>が 各々1つずつ定義されています。これらは局面によって変化し ない固定項目です。
<詰将棋>タグの子供のタグには複数の<局面>タグが含まれています。<局面>タグは子 供のタグとして<手数>、<指手>、<攻方配置>、<攻方持駒>、<受方配置>、<コメント>のタグを1つずつ持っています。これは局面によって変化する項目です。受方に持駒制限があるときは、<受方持駒>のタグを追 加します。
<攻方配置>、<受方配置>の2つに関しては、「座標を表す固定長の数値+駒を表す1文字の繰 り返し」という 決めがありますが、他の項目はただの表示項目で、特別な意味を持ちません。例えば<手数>の値に“-1”とか“1.白番”などの記述を入れていても構いません。

XMLは文字通りExtensible(拡張可能)なのが特長なので、この言語仕様には後からいろいろなタグや属性が追加されると思います。
例えば「<局面>タグに局面番号を表す属性を付けて、Kifuwのような分岐棋譜を可能にする」というような拡張がその例で す。
もし良い提案があれば筆者までご意見をお寄せください。

神無次郎氏のfmviewで既存の棋譜をXML形式に変換できることは2.で少し説明しましたが、この変換機能に頼らず、テ キストエディタで直接XML棋譜を作成する場合の注意点がひとつあります。それは保存するときのコードを「UTF-8」にすることです。理念上、XMLは 文字コードに依存しない言語体系なのですが、実際に世に出回っているツールやライブラリは文字コードがUTF-8でないと動かないものが多いのです。  本ビューアも余計な手間を省くため、UTF-8でXML棋譜が記述されていることを前提としています。

なお、XMLファイルをXML対応のブラウザ(FirefoxやIE等)で開くと、以下のようにツリー形式で表示されます。(以下はIEの例)
XML文書をブラウザで表示した例(一部)

色付きでタグが示されて、- を押すとそのタグが折りたたまれたりします。文法チェックも掛かるので、テキストエディタで作成したXML文書のチェックにはとても便利です。


4.画面と機能の説明

では、実際の画面で本ビューアの機能を説明しましょう。

XML棋譜再現例(Flash Player 9が必要です)


各ボタンの意味は以下の通りです。
表示中の局面から一つ先の局面に進めます。
表示中の局面から一つ前の局面に戻します。
自動で局面を先に進めます。局面を表示する間隔は横にあるスライダーで調整してください。表示間隔の単位はms(ミリ秒) で、表示中の変更も可能です。最小値は1msですが、実際はそんなに早く表示できません。
局面の自動再生を停止します。
最初の局面を表示します。
最後の局面を表示します。

「指定:」の欄は直接表示する局面の番号を指定するものです。これは<手数>とは連動していません。
棋譜にある局面は0から順に内部的な番号が振られており、その番号に対応する局面が表示されます。

固定項目を表示する欄は上から順に、
となっています。(備考は完全・不完全や改良図かどうかなど、短い情報が入ることを想定してこの仕様にしていますが、長い備考が記述されたときの仕様も考えなくてはいけませんね。)

局面ごとの情報を表示する欄は上から順に、
となっています。

5.制約や今後の課題など

挙げていくときりがないのですが、とりあえず時間や知識の不足で未着手になっている項目を記します。
他にもいろいろ問題がありますが、プログラムの動作原理自体はとても簡単なので、誰かがもっと良いビューアを作ってくれるんじゃないかと、他力本願な期待もしています。

6.使用条件

本 ビューアの使用にあたっての制約は特にありません。ご自由に使用・配布してくださって結構です。ただし、本ビューアをお使いくださる方は、ご自身の責任に おいてこれをお使いください。本ビューアを使用することにより何らかの被害があっても、その責についてはご容赦願います。

7.更新履歴

2008.06.01    1.00    初版公開

8.連絡先

本ビューアに対して、ご意見、ご要望、不具合の指摘等を下記までお寄せいただければ、幸いです。

 神無七郎(本名:橋本孝治)
 E-mail : janacek789@ybb.ne.jp