局面情報ベースの棋譜記述形式案

86 views
Skip to first unread message

ginsho

unread,
Nov 9, 2011, 11:36:27 PM11/9/11
to ginsho会(仮)
「近日中に」などと言いながら、ずいぶんと間が開いてしまいまいた。スミマセン。。

「新しい棋譜形式について」トピックの流れを受け、局面情報をフルに収めた棋譜の可能性を追求するべく棋譜記述形式案を考えてみました。
こちらが目指しているのは局面図を使用するコンテンツ制作者の都合に沿うべく特化した、ぎりぎりまで原始的な形式です。また同時に、現時点における棋譜
データ記述の"冗長さ"の基準だとか、棋譜を記録するプログラム、棋譜データ、表示するプログラム三者の役割分担の理想的な在り方について、根本から考
え直すためのベースになればとも思っています。
しかし実際のところ棋譜形式というよりは駒配置の表記法に過ぎませんし、指し手でなく局面情報を束ねたものを「棋譜」と呼んでよいのかも疑問ではありま
すが、とりあえずそれらはさて置いてください。


記述方法を考えるにあたり、特に重要視したのは以下の三点です。

1.記述方法が自明な、単純・原始的な形式にすること。

この棋譜を扱うプログラムの作成に必要な事前知識は駒と文字の対応ルールくらいのもので、SFEN表記のような文字数圧縮、ハッシュ化/複号化について
の対応を制作者にもプログラムにも要求しません。ですから、プログラミングの敷き居は非常に低くなっていると思います。また、記述はプログラムが行うこ
とを想定していますが、手入力による修正が可能な余地も残したいと考えました。

2.棋書等でおなじみの局面図と、Kifu for Flash上で再生されるような対局棋譜の両方を同じ方法で記述できること。

局面図でも対局棋譜でもない、別のなにかを記述しコンテンツ化したい場面が多々あると思うのですが、既存の局面図記述の形式は単一局面のみ、対局棋譜は
指し手が先後で連続しているもののみしか扱えず、共に融通が利きません。
例えば「駒落ち初期配置カタログ」あるいは「詰問題と正解手順」といったウェブコンテンツの制作を考えた場合、指し手が連続することを前提とした棋譜形
式ではこれを扱うことが出来ず、必要分の局面図画像を制作する他ありません。画像化はデータの再利用が容易でないですし、検索性もなく不便です。
ですので記述方法は単一局面のデータが基本、さらにこれを複数束ねることで連続・不連続の局面両方を扱えるようにしました。
もちろんこれは記述方法ではなく、JSONの使用とビューア側の対応があってできることなのですが。

3.一般的なテキスト検索ツールを使って、棋譜専用DBソフトと同等以上の複雑な局面検索に対応できること。

持ち駒を含む指し手の局面状態をすべて展開状態で記述しますので、grep、Mac OS XのSpotlight、Windowsのファイル検索、あ
るいはGoogleのウェブ検索など、どこにでも転がっている検索ツールで局面部分一致や完全一致検索ができます。
大量の局面データ・棋譜ファイルを管理するために将棋専門DBソフトとの心中以外の選択肢が欲しいですし、実際そちらの方が高機能かつ利用者にとって扱
いやすい環境になっているんじゃないでしょうか。
またコンテンツ制作者の立場からは、高度な検索が単純に行えることで局面表示に対して独自のビジュアル支援のアイデア、あるいは局面抽出機能を追加する
ことも容易になると考えています。


用途

記述形式がその具体的用途を定めるのも妙な話ですが。
連続・不連続の局面を両方扱えるという点と、局面の表示が軽量・単純なビューアで事足りることから、JavaScript製のビューアと組み合わせた
HTMLベースの電子棋書で利用するのが良さそうと思っています。


【データの構成】
棋書等で見かける局面図を構成する必要最小限のデータ(bd=盤面、cb=先手持ち駒、cw=後手持ち駒)だけを持ちます。
空きマス、持ち駒の数はSFENのように圧縮していません。極めて泥臭い記述をすることで、局面の検索性とコンテンツ制作者の扱いやすさを優先していま
す。
またKIF形式などがヘッダ部に持つ対局情報は含めていません。そのへんは棋譜を書き出す側の都合と表示側のプログラムの用途に合わせて自由に拡張して
いただければよいのではと、今のところ考えています。拡張の例については後述する拙作サンプルでいくつか試してみました。

【駒と文字の対応】
プログラムからの読み書きを前提とした形式ではあるのですが、ヒトが手入力で記述できる余地も残したいと思い、先手駒と後手駒の対応には規則性を持たせ
ています。例えば、先手の歩=aなので後手の歩=b、先手と金=1なので後手と金=2 といった具合です。

並び順:歩/香/桂/銀/金/角/飛/と金/成香/成桂/成銀/馬/龍/王玉/
先手: a c e g i k m 1 3 5 7 q s u
後手: b d f h j l n 2 4 6 8 r t v
※空きマスはo(オー)

【記述例】
連続しない2つの局面情報を記述しています。上のエントリは平手の開始局面、下は簡単な1手詰め問題です。


-------

[
{

"bd":"dfhjvjhfdonooooolobbbbbbbbboooooooooooooooooooooooooooaaaaaaaaaokooooomocegiuigec",
"cb":"",
"cw":"",
},

{

"bd":"oooooooooooooooojdooooosobvoooooooqooooooooaooooooooooooooooooooooooooooooooooooo",
"cb":"",
"cw":"bbbbbbbbbbbbbbbbdddffffhhhhjjjln"
}
]

-------


説明だけではイメージが掴みにくいと思いましたので、拙作SFEN ReaderをベースにJavaScript製の簡易ビューアを作ってみましたの
で、あとは実際にサンプルでご覧になっていただいて、いろいろご意見をうかがってみたい所存です。(長くなったので次の投稿につづく)
Message has been deleted

ginsho

unread,
Nov 10, 2011, 1:28:42 AM11/10/11
to ginsho会(仮)
実動のサンプルがあった方が用途のイメージが涌きやすいのじゃないかと思い、拙作SFEN ReaderをベースにJavaScript製の簡易ビュー
アを作ってみました。
表示する局面は先の投稿にあった記述形式に則って作成していますので、ビューア側も含め改善案等ご意見いただけましたら幸いです。

なおビューアについてはブラウザ上での拡大縮小時や印刷を行った際に駒文字がきれいに出力されるようSVG形式画像を使用しているのですが、今回サン
プ ルを作るにあたってビットマップ画像を新たに用意しなかったのでIEではご覧になれないと思いますので、お手数ですがChrome、
Safari、 Firefoxでご覧願います(←推奨順です)。ビューア側は対応しているのですが。。

そのかわりと言ってはなんですが、ブラウザからページをPDF保存した場合、局面図部分は同様に拡大縮小表示に対応した形で収められます。余談ですが、
PDF形式で電子棋書や教材プリントを作るのなら、この方法が一番手っ取り早いのではないかと思ってます。
(HTMLでページ制作、PDF保存して束ねるだけ)


●サンプル1 単一局面の表示

HTML内にビューアのスクリプトをベタ貼りし、ページ上に単一局面を表示できるようにしたサンプルです。スクリプトはスコブル単純です。

http://www.air-bldg.com/shogiboy/simple.html

●サンプル 2 詰問題の表示

基本データ構成に"sid(局面のID)"というオブジェクトを追加した動く局面図のサンプルです。ここからはビューアのスクリプト、棋譜(JSON)
を外部化し、ページから独立させました。ついでに局面図上の「先手、後手」の文字をクリックして盤面を反転表示する機能と、盤面左半分をクリックして一
手前、右半分をクリックして次の手に進める将棋世界電書風の機能を付けました。
棋譜には簡単な一手詰め問題と、失敗手順、正解手順、さらに脈絡無く平手開始局面が収められています。「電子書籍になったときの詰将棋本」トピックの
takodoriさんの疑問にもある程度なら応えられるかなと思っているのですが、どうでしょう?
ページの文章には指し手記述部分にAタグのリンクが設定してあり、クリックすることでビューアの表示局面を切り替えることが出来ます。テキストを読み進
めながら、必要に応じてユーザが表示局面を切り替えていくのようなインタラクティブ電子棋書的のような使われ方を想定してみました。

http://www.air-bldg.com/shogiboy/tsume.html

●サンプル 3 対局棋譜のリプレイ

連続する局面情報であるところの対局棋譜表示のサンプルです。こちらはsidに加えて"mv"(その局面で駒が動いた、または持ち駒が置かれたマスの
ID)という指し手強調表示用のオブジェクトを追加してます。mvは伝統的な段・筋による座標の記述でなく、盤上の9 一から1一方向に向かって1、
2、3...という順に数字を振ってあります。つまり、動いたのはbd(盤面)の文字列の左から何文字目、という数字がそのままmvという値にあたりま
す。棋譜ファイルは、拙作KZに新たに付けた棋譜形式変換機能を使って自動作成しました。

http://www.air-bldg.com/shogiboy/ryuo.html

●サンプル4 ビジュアル支援と局面検索

ビューア制作をすすめるうちになんだかノリノリになってしまい、いくつかのビジュアル支援機能と局面検索追加しました。サンプルでは局面検索を表示中の
棋譜に対してのみ行っていますが、先の投稿で述べました部分一致局面・完全一致検索とはこのような検索が複数の棋譜に対して横断的に行えるということと
お考えください。
検索設定はGUIを用いた操作で行えるといいと思うのですが、現状はHTMLフォームから直接変更を行うようになっています。それぞれの機能説明は以下
の通りです。

・sb_trace
ユーザ指定の駒の移動を足跡のように残しながら表示する機能です。盤面上で「取る」が発生したマスを強調表示することも出来ます。
・sb_match
一致局面検索です。サンプルは表示中の棋譜から先手居飛車穴熊の盤面パターンが含まれる局面を抽出するように設定にしてあります。現状ではテキスト入力
フォームに正規表現を記述する方式になってます。面倒くさくてすみません。また正規表現のメタ文字には*も利用できますが、ハイライト表示は不完全な対
応になっていると思います。
・sb_filter
指定した駒種を表示/非表示にします。指し手強調表示の強化版です。
・sb_mvlight
On/Off指し手マスのハイライトのオン/オフ
・sb_bwcolor先手駒/後手駒でマスを色分けします。ハム将棋にこのような機能があり、駒文字の判読が難しい海外プレイヤーに役立つのではな

かと。。

http://www.air-bldg.com/shogiboy/anaguma.html

●サンプル5 デザインカスタマイズ
ビューア内のデザインレイアウトはすべて外部CSSファイルに分離してあるのですが、これを容易にカスタマイズできるよう、CSS成用の補助スクリプト
を作成してみました。駒画像他のサイズを指定すれば全体のレイアウト指定が正しいサイズで行われるようれるようにしてあります。そして、これを利用して
悪のりしてみたサンプルがこちら。要するに、悪のりの受け狙いです。

http://www.air-bldg.com/shogiboy/hiden.html

●サンプル6 英字駒
SFEN Readerに内蔵してあるものそのまま。HIDETCHIさん駒の方が具合が良さそうですね。。

http://www.air-bldg.com/shogiboy/engpieces.html

以上です。
Reply all
Reply to author
Forward
0 new messages