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

2014.3.23 神無七郎

0. はじめに

 詰将棋用XMLビューア(TMLView.xap、以下「本ビューア」または「TMLView」と略す)は、ブラウザ上でフェアリー詰将棋(変則詰将棋)を動かして鑑賞することを目的としたビューアです。

 以前、JavaScriptで同趣旨のスクリプトを作成していましたが、将棋特有の180°回転した文字を表示するため、Internet Explorer 4.0以上(以下IEと略す)の環境が必要でした。その後、IE以外のブラウザでも表示ができるようFlash用に書き直したTsumeMLViewerを作成しましたが、Actionscriptという専用の言語を覚える必要があったため、機能追加や保守が億劫に感じていました。
 そこで開発言語をC#に改め、表示用のプラグインをSilverlightにして書き直したのが、今回の詰将棋用XMLビューアです。名前もTsumeMLViewerでは長すぎるため、TMLViewと短縮しました。また、機能追加もしていますが、これについては4.と5.で説明しましょう。
 なお、閲覧にはSilverlightが必要です。まだFlashほど一般的ではありませんが、既に主要なOSやブラウザ向けにランタイムが配布されており、これからも利用可能なプラットフォームは増えると思います。

1. 特徴

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

2. 使い方

ここでは本ビューアの使い方を説明します。
一口に「使う」と言っても、想定される使い方はいくつかあります。
  1. TMLViewが埋め込まれたページを閲覧する
  2. TMLViewをオフラインで使う
  3. TMLViewを自分のサイトで使う
一般の人は「見るだけ」で充分ですから1、自分で棋譜を作りたい人はオフラインでも使えると便利なので2、自分のホームページでTMLViewを利用したい人は3、の使い方を覚えてください。
以下の画像は初版時のものです。最新版では多少外観や使い方が異なります。

2.1 TMLViewが埋め込まれたページを閲覧する

TMLViewが埋め込まれたページ(今の所このサイトしかありません)を閲覧するにはSilverlightが必要です。
もしSilverlightが利用可能でない環境では以下のように、Silverlightのインストール先を示す表示になります。 (FireFoxでの表示例)
インストールを促す画面
画像をクリックすることで、Silverlightを入手できます。
Silverlightプラグインを無効化しているだけの場合も同様の表示になりますが、その場合はSilverlightプラグインを有効化してください。

2.2 TMLViewをオフラインで使う

TMLViewは自分のPCにあるXML棋譜を読み込み閲覧することができます。これはどこにあるTMLViewを使っても良いのですが、PCにインストールしておけばネットに繋がっていない状態でも使うことができます。
この作業には、特に難しい点はありません。このサイトにあるTMLViewの表示画面で右クリックを行うと以下のようにインストールの選択肢が出ます。
右クリックでインストールを選択
このメニューから「このコンピュータにTMLViewをインストールします」を選択すると、次のようなインストール画面が出るので、必要な項目を選択してOKを押下してください。
インストール画面
インストールが終わったら、実際に起動してみてください。以下のような画面が出るので、「開く」から閲覧するXML棋譜を選んでください。(マウスを乗せると拡大表示)
ブラウザ外実行

今すぐインストールする場合は、以下のサンプルページをご利用下さい。
サンプルページ(別ウィンドウで表示)

インストールしたTMLViewをアンインストールする場合は、起動したTMLViewの画面を右クリックしてください。アンインストールのメニューが表示されます。(Del等で無理やり削除しないでください。不具合の原因になります。)

2.3 TMLViewを自分のサイトで使う

自分のサイトに本ビューアを設置し、閲覧者が詰将棋を動かして鑑賞できるようにするには以下のものが必要です
上の1、2及びサンプルのたXML棋譜ファイルをセットにしたものを用意しましたので、以下のリンクよりダウンロードしてください。

TMLView本体及び関連ファイルのセット(zip形式:約192KB)

上記セットの各々について補足します。

(1) ビューア本体のファイル(TMLView.xap)
本ビューアの本体です。

(2) ビューアを埋め込むHTMLファイル 等(TMLView.html、Silverlight.js)
TMLView.htmlが本ビューアを埋め込むHTMLファイルです。これがSilverlight.jsと連携して本ビューアを表示します。
(Silverlight.jsを使わず、<object>タグを用いて直接埋め込むことも可能ですが、やや上級者向けの使い方なので、後に例示するに留めますす。)
また、表示する時の枡の大きさを調整したい場合、TMLView.htmlの中の「CellSize=24」という記述を変更してください。例えば枡の大きさの初期値を36ピクセルにしたい場合は「CellSize=36」と指定します。

(3) 棋譜ファイル
上記のセットにはサンプルとして「purity951.xml」という名前の棋譜ファイルを用意しています。動作確認などにご活用ください。(棋譜の形式については後述。)

棋譜ファイルを指定して本ビューアを表示したい場合は、TMLView.htmlにパラメータとして表示する棋譜のファイル名を指定します。例えば棋譜ファイルの名前が「purity951.xml」ならば、「TMLView.html?purity951.xml」と指定します。
セキュリティ上の理由から他サイトの棋譜ファイルは指定できませんが、自サイトの中であれば指定することができます。
相対パス指定(これが普通)で棋譜ファイルを指定する場合は、ベースがTMLView.xapのある場所になることに留意してください。(TMLView.htmlのある場所ではありません。何らかの理由で2つを別の場所に置いた場合は特に注意!)

また、ローカルPCに棋譜ファイルを置いている場合、これをパラメータとして指定することはできません。
PC上で棋譜が正しく記述されているかどうか確認したい場合は、TMLView.htmlを直接開くか、ローカルPCにインストールした本ビューアを起動した後、「開く」ボタンで当該のファイルを選択する必要があります。面倒ですが、これもセキュリティ上の制約です。


Objectタグで直接埋め込む場合

Objectタグで直接HTML文書内に本ビューアを埋め込む際は以下の例を参考にしてください。
“source”に本ビューアの名前を指定し、本ビューア独自のパラメータを“initParams”に与えます。
パラメータは今の所、Kifu(棋譜ファイルへのパス)とCellSize(マスの大きさの初期値)だけです。
後のパラメータは必要に応じ、適当な値に調整してください。

《Objectタグによる埋め込みの記述例》
<object width="800" height="600"
    data="data:application/x-silverlight-2," 
    type="application/x-silverlight-2" >
    <param name="source" value="TMLView.xap"/>
    <param name="background" value="white"/>
    <param name="initParams" 
                value="Kifu=purity951.xml,CellSize=36"/>

    <!-- Display installation image. -->
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156" 
        style="text-decoration: none;">
        <img src="http://go.microsoft.com/fwlink/?LinkId=108181" 
            alt="このページの表示はSilverlightが必要です" 
            style="border-style: none"/>
    </a>

</object>


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のような分岐棋譜を可能にする」というような拡張がその例です。
もし良い提案があれば筆者までご意見をお寄せください。
2.40版から中立駒用のタグを追加しました。<中立配置>、<中立攻方持駒>、<中立受方持駒>の3つです。このタグで指定された駒は横向きに表示されます。

本ビューアではXML形式で記述された棋譜を用いるので、まずは既存のファイルをこの形式に変換しなくてはいけません。テキストエディタでこれを記述するのも難しくはないのですが、手作業では結構面倒です。
幸い、神無次郎氏がfmviewにXML形式でファイルを保存する機能を付けてくれたので、fmo形式(fmの出力形式)や、kif形式(Kifuwなど多くの将棋ソフトで使用されている形式)を自動的にXML形式の棋譜に変換することができます。

操作手順

1. fmviewで変換対象の棋譜を開き、「名前を付けて保存」(赤丸で囲ったアイコン)を選択します。

fmviewで名前をつけて保存

2. 「ファイルの種類」を「fmXMLファイル」とし、名前を付けて保存します。

fmXML形式で保存

3. 保存したファイルをエディタで開き、必要に応じ固定項目(赤で囲った項目)やコメント(青で囲った項目)を編集すれば棋譜の準備は完了です。

エディタで編集

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


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

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


4.画面と機能の説明

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

ビューア画面

ボタンとコントロール

各ボタン及びコントロールの意味は以下の通りです。
最初 最初の局面を表示します。
後退 自動で局面を戻します。局面を表示する間隔は横にあるスライダーで調整してください。
前へ 表示中の局面から一つ前の局面に戻します。
停止 局面の自動再生を停止します。
次へ 表示中の局面から一つ先の局面に進めます。
開始 自動で局面を先に進めます。局面を表示する間隔は横にあるスライダーで調整してください。
最後 最後の局面を表示します。
開く ローカルファイルを開くためのダイアログを表示します。お使いのPC上にある棋譜ファイルを閲覧するときにお使い下さい。
編集 XML棋譜編集パネルを表示します。閲覧中の棋譜を変更したり、お使いのPC上に保存したりする時に使います。
手順表示 手順パネルを表示します。手順を一覧表示し、ダイレクトに指定の局面に移動することができます。
作品情報 作品情報パネルを表示します。局面に依存しない固定項目(作者名等)を見るときに使います。
コメント コメントパネルを表示します。各局面に対するコメントを見るときに使います。

表示間隔 自動再生の時に局面を表示する間隔を調整するためのスライダーです。間隔を短くするときはツマミの左側を、長くするときは右側をクリックします。ツマミを直接動かすと、大きく値を変えることができます。
表示間隔の単位はms(ミリ秒)で、表示中の変更も可能です。最小値は1msですが、実際はそんなに早く表示できません。
升目 盤の升目の大きさを調整するためのスライダーです。升目を小さくするときはツマミの左側を、大きくするときは右側をクリックします。ツマミを直接動かすと、大きく値を変えることができます。
升目の大きさに合わせ駒文字の大きさも同時に変化します。

タイトル部

タイトル部
固定項目を表示する欄は上から順に、
となっています。

局面部

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

ダイアログ画面及び各種パネル

下段のボタンの押下でダイアログ画面及び各種のパネルが表示されます。
パネルは擬似ウィンドウになっていて、タイトル部をドラッグして移動させることができます。ただし、サイズ変更はできません。
パネルを表示するボタンはトグル式で、ボタンを押下するごとに表示・非表示が切り替わります。

ファイルダイアログ

「開く」ボタン押下時に以下の画面が表示されます。
自分のPC上にある棋譜を閲覧するときは、この画面から選択してください。
ファイルダイアログ

XML棋譜表示・編集パネル

「編集」ボタン押下時に以下の画面が表示されます。ここで編集した棋譜を表示に反映させたり、お使いのPCに保存したりすることができます。
ただし、操作性はお世辞にも「便利」とは言い難いので大きな棋譜の編集には向きません。小さな手直しにご利用ください。
XML棋譜表示・編集パネル

手順表示パネル

「手順表示」ボタン押下時に以下の画面が表示されます。ここで指定した局面をダイレクトに表示させることができます。
手順表示パネル

作品情報パネル

「作品情報」ボタン押下時に以下の画面が表示されます。閲覧専用で、ここでの入力は表示や棋譜に反映されません。
作品情報パネル

コメントパネル

「コメント」ボタン押下時に以下の画面が表示されます。閲覧専用で、ここでの入力は棋譜に反映されません。
コメントパネル

5.追加された機能

本ビューアでは以前Flash向けに作成したTsumeMLViewerに対し、機能を追加しています。
以下に主な追加点を紹介します。

★10×10以上の盤への対応

古将棋を扱えるよう盤の大きさの上限を36×36としました。これは大局将棋が扱えるようにするためです。
ただし、長方形盤には対応していません。必要な場合は正方形盤の部分領域をご利用することで対応して下さい。
サンプルとして中将棋盤(12×12)の表示例を用意しました。盤が10×10以上の場合の表示やXML棋譜の書式をこれでご確認下さい。
中将棋盤の表示例(別ウィンドウで表示)

★可変サイズ

盤のマスの大きさと駒文字の大きさを可変としました。ビューア全体のサイズを変更する場合は、ブラウザのズーム機能をお使いください。表示領域全体が指定した倍率で表示されるはずです。

★巨大な棋譜の読み込みへの対応

理論上は棋譜の大きさの制限はありませんが、XML棋譜のサイズは通常の棋譜ファイルに比べ大きくなるので、ダウンロードに掛かる時間やメモリサイズに考慮して棋譜を指定してください。
オフラインで使う場合はかなり大きなファイルでも(棋譜読み込み時間を我慢すれば)ご利用できます。例えば加藤徹氏作「寿限無3」(49909手)でも、オフラインであれば差し支えなく閲覧できます。

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

本ビューアは世の中の優秀な棋譜閲覧ソフトと比べるとかなり貧弱で、追加すべき機能はたくさんありそうですが、とりあえず今「将来実装できたらいいなぁ」と思っている項目を記します。
他にもいろいろ問題がありますが、プログラムの動作原理自体はとても簡単なので、誰かがもっと良いビューアを作ってくれるんじゃないかと、他力本願な期待もしています。

7.使用条件

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

8.更新履歴

2014.03.23    2.41版    様々な機能追加(中立駒対応等)、不具合の修正
2010.02.03    2.10版    初版公開

9.連絡先

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

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