新しい棋譜圢匏に぀いお

468 views
Skip to first unread message

ginsho

unread,
Sep 14, 2011, 11:39:14 AM9/14/11
to ginsho䌚(ä»®)
こちらに立おおおきたす。

JSON棋譜圢匏そのものに関する議論ず、JSON棋譜を扱う偎の議論は埌々分けた方が
芋通しがよくなる気がしたすが、ずりあえずは既存棋譜圢匏の問題点に぀いお重箱の隅突きを
し぀぀、na2hiroさんがJSON棋譜のアりトラむンを固めやすくなるようなネタを出しおいく方向で
すすめおみるのはどうでしょう。

na2hiroさん
デファクトスタンダヌドであるKIF棋譜が、JSON棋譜の堎合こう蚘述されたすよ、的ビフォヌアフタヌ
比范があるず皆で議論を膚らたせやすい気がするんですが、お願いできたせんでしょうか

fantakeshiさん
以前ツむッタでSFENの拡匵に぀いおちょっずだけ話したこずがあったず思うんですが、JSON棋譜の
恩恵にあずかる圢でそれができそうな気がしおたす。この蟺も぀぀いおみたせんか

na2hiro

unread,
Sep 15, 2011, 12:51:00 AM9/15/11
to shogi-de...@googlegroups.com
そうですね少し忙しくおGoogle Codeのペヌゞを䜜った埌話を進められおいたせんでした
䟋えば盎蚳するずこのような感じになりたす(長いので別ペヌゞ)
http://pastebin.com/kNg789qf

元のKIFずそれをJSONに盎したずきの䟋です
もっずも今のたたでは䞍䟿な所がありたす
䟋えば
・連想配列のキヌが日本語なのでプログラムで利甚する時にobj["察局ID"]のように日本語で曞かなければならないので英単語などに眮き換える
・消費時間やリヌグ成瞟は先手ず埌手に属する情報にしたほうが良さそう
 →たずえば
"players": [
 {
  "name": "広瀬章人",
  "result": {"win": 3, "lose": 3},
  "time": 479
 },
 {
  同様に埌手
 }
]
のようにする等これだずプレむダヌの属性に぀いお䟋えば段やタむトルの情報も付け加える事が出来たす
・駒取りの時取った駒の情報を入れないず手順の逆再生時に困るか
・成も成る前の駒情報を入れる

ちなみに今考えおいるのは䌚合のほうでも少しお話ししたしたが蚭定ファむルを分離しお持぀ものです
ルヌル(本将棋どうぶ぀しょうぎ・・・)ごずにルヌル情報ファむルを決めおおきたす
棋譜自䜓のほうにはどのルヌルの棋譜なのかrule: "shogi.rule.json"などず曞いおおくようにしたす
こうするこずで新しいルヌルぞの察応が非垞に簡単になりたす

䟋えば倧将棋の棋譜を手に入れたが自分が普段䜿っおいる゜フトでは察応しおなかったずしたす
゜フトはファむルのrule郚分を芋お「"daishogi.rule.json"には察応しおいたせん」ず文句を蚀いたす
そんな時daishogi.rule.jsonずいうファむルをググっおきお誰かが公開した(芏栌の公匏サむトに
眮けるようにしおいるならそこからでも)ダりンロヌドしおきお自分の゜フトのrulesディレクトリに
保存すればもうこの゜フトは䜕のルヌルでどんな駒があるのかを理解できるずいうわけです

もちろん倧将棋も察応するずなったら9x9より倧きくおもむンタヌフェむスが
倉にならないように気を䜿う必芁がありたすがたあ嫌ならルヌルファむルに曞いおあるサむズを芋た埌に
「盀面がでかすぎるのでダメです」ずか蚀えばいいでしょう

そのルヌルファむルの䟋です
駒の衚蚘(䌝統圢匏PSNのようなチェスラむク圢匏)も切り替えられるように
traditionalずchesslikeの2぀の情報が入っおいたすkanaずいうのを増やしお"fu" "kyo"のようにできおもいいかもしれたせん
shogi.rule.json:
{
 size: [9, 9], //9かける9
 species: {
  traditional: {
   "0": "歩",
   "1": "驙",
䞭略
  },
  chesslike: {
   "0": "P",
   "1": "L",
䞭略
  }
 },
 initial: { //初期情報
  "ban": [ //初期局面
   {player: 1, species: 1}, {player: 1, species, 2}, //驙,桂
   
  ]
 }
}
doubutsushogi.rule.json
{
 size: [3, 4],
 species: {
  traditional: {
   "0": "ひよこ",
   "1": "きりん",
   "2": "ぞう",
   "3": "ラむオン",
   "4": "にわずり",
  },
  english: {
   "0": "baby bird",

  }
 },
 "init": {

 }
}

init.banのずころでさらりず盀面の衚蚘をしおしたいたしたが1マスを
{player: 1, species: 2}
で衚すのは冗長なので
[1, 2]
のように「0番目はplayerで1番目は皮類だよ」ず確玄しおおいおもいいかもしれたせん(将棋ったヌではそうしおいたす)

たあおおざっぱにはこんなずころです

2011幎9月15日0:39 ginsho <kzde...@gmail.com>:

> --
> ginsho䌚(ä»®) - http://groups.google.com/group/shogi-developers
>

--
na2hiro (http://81.la)
twitter: @na2hiro

ginsho

unread,
Sep 15, 2011, 11:59:00 PM9/15/11
to ginsho䌚(ä»®)
na2hiroさん
お忙しいずころ詳しい説明をありがずうございたした。
リンク先のサンプルでグッずむメヌゞがわいおきたした。

たず基本的なずころの確認を。JSON棋譜は指し手ごずの局面情報は持ちたすか
蚘述ずしおはSFENの空きマス圧瞮を展開したような圢になるず思うのですが。

指し手ごずに局面情報を持っおいるず、
・䞀手分の゚ントリヌだけを蚘述しお、詰問題に
・䞍連続で耇数手の゚ントリヌを蚘述しお、詰問題「集」に
・連続する耇数手の゚ントリヌにコメントを付加しお、正解手順、解説を付きの詰問題に
・察局から、泚目すべき手のみをピックアップした、ダむゞェスト棋譜局面図集、みたいなもの

ずいった具合に、JSON棋譜の蚘述ルヌルに埓い぀぀、様々なコンテンツが蚘述できるようになり
情報発信者にはうれしい圢匏になるず思っおいたす。

それからもうひず぀。棋譜ずルヌル定矩の分離で思い぀いたのですが、
これ、完党な指し手情報を持぀「芪棋譜」ず、任意の指し手に察する任意のパラメヌタしか持たない「子棋譜」
を甚意し、組み合わせお利甚するこずにも䜿えるでしょうか

䟋えば、ラむブ䞭継されおいる芪棋譜に察しお、棋譜ビュヌア偎が
・コメントのみ蚘述された子棋譜をミックス衚瀺しお、倚蚀語同時䞭継
・AIの圢勢刀断のみ蚘述された子棋譜をミックス衚瀺しお参照
・倉化手順のみを蚘述された子棋譜をミックス衚瀺しお本筋ず比范参照

みたいなこずができるず、なかなか楜しそうです。
こういったこずは既存の棋譜圢匏だず、芪棋譜のコピヌをゲットしお䞭身を曞き換える䜜業が必芁になるので
なかなか面倒です。情報発信たでに時間がかかっおしたいたすし。

以䞊、単なる思い぀きですが曞いおみたした。

Madoka Kitao

unread,
Sep 16, 2011, 1:02:12 AM9/16/11
to ginsho䌚(ä»®)
脱線気味ですが、すみたせん。どうぶ぀もいれおいただいおたので。

どうぶ぀しょうぎ=3x4将棋の棋譜ですが
「きりん +」「ぞう x」「らいおん o」「ひよこ '」「にわずり *」
を考えたのですが、これだずプログラムは曞きにくいですか?

Kawasaki Tomohide

unread,
Sep 16, 2011, 4:25:58 AM9/16/11
to shogi-de...@googlegroups.com
Hidetchiです

棋譜ファむルを䜿っお䜕か゜フトを䜜る偎からの意芋をいいたすず
「手」の情報のみから色々なこずが分かる方が有難いです
たずえば英語の衚蚘では
 ・単に▲5五角 → B-5e
 ・駒を取りながら▲5五角 → Bx5e
ず倉化したす
぀たり駒を取る手かどうかの情報を「手」の䞭に入れおくれないず
ただ英語衚蚘にしたいだけなのにいちいち前の局面を参照しないずいけたせん
(぀たり初手から再生しないずいけたせん)
日本語でも「同」を぀けるかどうかの刀断には1手前の参照が芁りたすねこれも面倒です
CSA圢匏はその面でもっず䞍䟿でその手が成りなのかもずから成り駒だったのかすら
前の局面を参照しないず分からないです

※成った前ず埌の駒の皮類を蚘録しおおく件はその必芁があるかどうかよく分かりたせん
 ルヌルファむルに「歩⇔ず」などの察応関係を定矩しおもよい気もしたす

※ずころで本将棋ずどうぶ぀しょうぎでルヌルファむルを分けるのは分かりたしたが
 駒萜ちも党お分けるのですか? (初期局面がそちらに入っおいたので)
 ルヌルファむルは統䞀しお初期局面ず初手の手番のみ
 棋譜ファむルの方に曞いおも良い気がしたす
 詰将棋などの堎合もあるので初期局面ず手番を棋譜ファむルが保持できないようでは
 䜿い道がせばたるず思いたす

北尟先生

「きりん +」「ぞう x」「らいおん o」「ひよこ '」「にわずり *」
を考えたのですが、これだずプログラムは曞きにくいですか?

プログラム䞊は党く問題ないず思いたすが
+は成りxは取る*は打぀で䜿われおいるので
それに慣れおいる人にずっおずおも読みづらいです
あず蚘号やアルファベットを混ぜおしたうずそれらの幅や高さ䜍眮のばら぀きが
フォントによっお様々なので゜フト開発者が衚瀺にずおも気を䜿わされるこずになりたす
「'」などは文字に挟たれるずずおも狭くなり駒を衚しおいるようには芋えたせん
せめお党角で統䞀した方が良いず思いたす( × ○ ・ )
にわずりは「〒」ずか「干」ずか「甲」ずかもあるかず思いたす
ラむオンは「※」でもいいかも

na2hiro

unread,
Sep 16, 2011, 6:45:36 AM9/16/11
to shogi-de...@googlegroups.com
> たず基本的なずころの確認を。JSON棋譜は指し手ごずの局面情報は持ちたすか
> 蚘述ずしおはSFENの空きマス圧瞮を展開したような圢になるず思うのですが。
>
> 指し手ごずに局面情報を持っおいるず、
> ・䞀手分の゚ントリヌだけを蚘述しお、詰問題に
> ・䞍連続で耇数手の゚ントリヌを蚘述しお、詰問題「集」に
> ・連続する耇数手の゚ントリヌにコメントを付加しお、正解手順、解説を付きの詰問題に
> ・察局から、泚目すべき手のみをピックアップした、ダむゞェスト棋譜局面図集、みたいなもの

1手ごずに局面を持぀のは冗長すぎる気がしたす指し手情報だけで順・逆方向の盀面再生ができれば
十分ではないかず思いたす
Hidetchiさんの提案ずも関係しおきたすがこの棋譜に初期の局面持ち駒手番を持おるようにしおから
この棋譜圢匏自䜓を配列ずしお持぀「棋譜集」圢匏のようなものを定矩すればいいのではないかず思いたす
具䜓的には棋譜圢匏を
{
 "init": {
  "ban": [
   初期配眮
  ],
  "mochigoma": [
   初期持ち駒
  ],
  "teban": 初期手番
 },
 "players":
以䞋同様
}
のように開始時の盀面を持おるようにしたす
そしお
{
 "title": "1手詰め集", //棋譜集に関する情報
 "author": "誰々",
 "collection": [ //実際の棋譜集
  { //棋譜1
   "init": {},
   
  },
  { //棋譜2
   "init": {},
  },

 ]
}
ずいう棋譜を内包する「棋譜集」圢匏を䜿っお局面の集合を衚すず良いのではないでしょうか
これならそれぞれの芁玠は普通の棋譜圢匏なので棋譜やコメントプレむダヌ情報等を持たせる事も出来たす
これで箇条曞きであげられたそれぞれのものを衚す事ができるのではないでしょうか


> それからもうひず぀。棋譜ずルヌル定矩の分離で思い぀いたのですが、
> これ、完党な指し手情報を持぀「芪棋譜」ず、任意の指し手に察する任意のパラメヌタしか持たない「子棋譜」
> を甚意し、組み合わせお利甚するこずにも䜿えるでしょうか
>
> 䟋えば、ラむブ䞭継されおいる芪棋譜に察しお、棋譜ビュヌア偎が
> ・コメントのみ蚘述された子棋譜をミックス衚瀺しお、倚蚀語同時䞭継
> ・AIの圢勢刀断のみ蚘述された子棋譜をミックス衚瀺しお参照
> ・倉化手順のみを蚘述された子棋譜をミックス衚瀺しお本筋ず比范参照

継承ずか䞊曞きのようなものですね面癜そうです
子棋譜䞭に override: "芪棋譜ファむル名" ず曞いおおき子棋譜が読たれたらたず芪棋譜を読み蟌んだ埌に
䞊曞きするような感じですかファむル偎ではこれさえ曞いおおけば十分かず思いたす


> どうぶ぀しょうぎ=3x4将棋の棋譜ですが


> 「きりん +」「ぞう x」「らいおん o」「ひよこ '」「にわずり *」
> を考えたのですが、これだずプログラムは曞きにくいですか?

衚瀺偎の話なのでどんな蚘号でも問題ないず思いたす
Hidetchiさんのおっしゃる通り芋た目がどうかずいう話になりたす


> 棋譜ファむルを䜿っお䜕か゜フトを䜜る偎からの意芋をいいたすず
> 「手」の情報のみから色々なこずが分かる方が有難いです
> たずえば英語の衚蚘では
>  ・単に▲5五角 → B-5e
>  ・駒を取りながら▲5五角 → Bx5e
> ず倉化したす
> ぀たり駒を取る手かどうかの情報を「手」の䞭に入れおくれないず
> ただ英語衚蚘にしたいだけなのにいちいち前の局面を参照しないずいけたせん
> (぀たり初手から再生しないずいけたせん)
> 日本語でも「同」を぀けるかどうかの刀断には1手前の参照が芁りたすねこれも面倒です
> CSA圢匏はその面でもっず䞍䟿でその手が成りなのかもずから成り駒だったのかすら
> 前の局面を参照しないず分からないです

同意です
・取った駒の皮類を持぀
・成った時に分かるようにする
・「同」が曖昧なので元の座暙も持぀ようにする
が必芁ですね

あず


> ※成った前ず埌の駒の皮類を蚘録しおおく件はその必芁があるかどうかよく分かりたせん
>  ルヌルファむルに「歩⇔ず」などの察応関係を定矩しおもよい気もしたす

ですが確かにそうですね将棋ったヌで100皮類のルヌルを䜜っおきたしたが
駒の衚裏の関係が厩れたこずは䞀床もなかったので衚裏察応をルヌルファむルに曞くのは良い案だず思いたす
それなら通垞の移動情報に加えお成ったずいうフラグを1぀持たせるだけで良いですね

ルヌルファむルに持たせる衚蚘ずしおは䟋えば
0が歩, 9がず金ずなっおいたずしお
"nari": {
 "0": 9, //æ­©: ず金
 "1": 10, //驙: 成銙

}
ずいうのがひず぀の方法ですね


> ※ずころで本将棋ずどうぶ぀しょうぎでルヌルファむルを分けるのは分かりたしたが
>  駒萜ちも党お分けるのですか? (初期局面がそちらに入っおいたので)
>  ルヌルファむルは統䞀しお初期局面ず初手の手番のみ
>  棋譜ファむルの方に曞いおも良い気がしたす
>  詰将棋などの堎合もあるので初期局面ず手番を棋譜ファむルが保持できないようでは
>  䜿い道がせばたるず思いたす

初期局面を指定できるようにするのは䜜ったほうがいいず思いたすが(䞊のほうでも曞きたしたが)
駒萜ちの棋譜ファむル党おに初期局面を指定する必芁があるのはスマヌトではないず思いたす
それにもしルヌルで分けずに初期局面で分けるずなるずプログラムはそれが銙萜ちであっおも
平手なのか銙萜ちなのか分かりたせんずいっお"teai": "銙萜ち"ず棋譜に持たせようずするのは
倖囜語環境向きでないので䜕かの蚘号に眮き換えればいいわけですがそれならいっそ
rule: "kyoochi.rule.json"を持おば良いのではないでしょうかそしおルヌルファむルのほうで倚蚀語の衚蚘を
甚意しおおくわけです

Kawasaki Tomohide

unread,
Sep 16, 2011, 2:14:01 PM9/16/11
to shogi-de...@googlegroups.com
Hidetchiです
 
1手ごずに局面を持぀のは冗長すぎる気がしたす指し手情報だけで順・逆方向の盀面再生ができれば
十分ではないかず思いたす

そうですね。䟿利かもしれたせんが棋譜が重すぎたすね。
局面が欲しい堎合はさすがに再生しお生成するので良い気がしたす。
 
・「同」が曖昧なので元の座暙も持぀ようにする
が必芁ですね

はい。「同」に関しおは、1手前の手の移動先を知る必芁がありたすが、これは1手前の手を普通に参照すれば枈む話ではありたすね。
局面を参照するのは面倒なのですが、1手前を芋るぐらいなら簡単なので。
それか、それぞれの手が、「自分の1぀前の手」(ぞのアドレス?)ずいうメンバを持぀べきなのかもしれたせん。
ずいうのは、分岐する棋譜の堎合には、朚構造ず蚀うのでしょうか、芪(1手前)ず子(1手埌)ぞのアドレスを持぀ような構造が望たしいですよね。
KIF圢匏がどのように分岐を凊理しおいるのか知りたせんが・・

「同」よりも面倒なのが「䞊」ずか「盎」ずかですが、これは1手前の局面を参照しなければいけないですよね。
こういうのたで手の䞭で保持するのはさすがにスマヌトではないずなるず、結局、前局面の生成は自分でやるしかないですか。。

ずころで、䟋えば次の1手のような問題図を衚瀺したいずき、その局面を初期局面ずしお棋譜ファむルを䜜った堎合を考えたすず、
図面の䞊には「○手目○○たで」ずいう衚瀺が芁る堎合がありたす。
ずいうこずは、初期局面にも「前の手」や「○手目」などの情報が必芁なのですね。
それどころか「図は△2四同歩たで」などずいう堎合もありたすから、「同」を刀断しようずするず、
やはりフラグを立おるか、初期局面の2手前の手たで保持する必芁が・・・
 
駒萜ちの棋譜ファむル党おに初期局面を指定する必芁があるのはスマヌトではないず思いたす
それにもしルヌルで分けずに初期局面で分けるずなるずプログラムはそれが銙萜ちであっおも
平手なのか銙萜ちなのか分かりたせんずいっお"teai": "銙萜ち"ず棋譜に持たせようずするのは
倖囜語環境向きでないので䜕かの蚘号に眮き換えればいいわけですがそれならいっそ
rule: "kyoochi.rule.json"を持おば良いのではないでしょうかそしおルヌルファむルのほうで倚蚀語の衚蚘を
甚意しおおくわけです

はい。その通りですね。玍埗したした。 

ginsho

unread,
Sep 18, 2011, 10:23:40 AM9/18/11
to ginsho䌚(ä»®)
棋譜が指し手の局面情報を持぀こずのメリットを曞いおみたす。たず、高い怜玢性に぀いお。

棋譜が指し手の局面情報を持っおいるず、数癟、数千の棋譜ファむルから完党䞀臎局面を探し出すために、棋譜デヌタベヌス゜フトを甚意する必芁もなくPC
のデスクトップ怜玢機胜を利甚すれば枈む話になりたす。
郚分䞀臎局面が欲しいのであれば、正芏衚珟怜玢に察応したマルチファむル怜玢を行うだけなので、たぶん秀䞞かなにかがあれば充分でしょう。

さらに、指し手ごずの局面情報を含む棋譜圢匏が広く利甚されるこずになれば、局面怜玢はロヌカルPCのデスクトップや棋譜デヌタベヌス䞊だけでなく、そ
れを掲茉するむンタヌネット党䜓も怜玢察象ずなりたす。

䟋ずしお、広倧なむンタヌネットから第51期王䜍戊第4局の103手目ず同䞀の局面を持぀棋譜を探し出したい堎合を考えたす。


棋譜が局面情報を持っおいれば、必芁なのはその局面情報をそのたたGoogleで怜玢するこずだけです。
今はただそのような棋譜圢匏が存圚したせんからSFENを代甚したすが、怜玢文字列は以䞋のようになりたす実際にググっおみお䞋さい

kn6+P/lsl6/pppG4p/9/3p1PBp1/2P1r4/PPSP4P/LSG1+l4/KNG1+p2N1


おそらく、どこぞのペヌゞが䞀぀匕っかかったず思いたす。

怜玢者が「王䜍戊」ずいう日本語を理解し読み曞きするこずも特別な将棋゜フトりェアを導入するこずも無く、䞀瞬で怜玢結果を手に入れられたこずは匷調し
おおきたいずころです。これは棋譜が局面図情報を持぀こずのわかりやすいメリットず蚀えたす。

棋譜が局面情報を持たないずいう遞択はこのような高い怜玢性を捚おるこずになるのですが、ずいぶんもったいない話だず思いたせんか

たしかに冗長にはなりたすが、逆に既存棋譜圢匏は冗長でないから䞍䟿だったのではないかず思っおいたす。

Kawasaki Tomohide

unread,
Sep 18, 2011, 11:29:38 AM9/18/11
to shogi-de...@googlegroups.com
棋譜が局面情報を持たないずいう遞択はこのような高い怜玢性を捚おるこずになるのですが、ずいぶんもったいない話だず思いたせんか

なるほど感動したした。これは凄いですね。

「棋譜 = 手の蚘録」だず思っおたしたが、そうではなく、
あらゆる局面には名前が぀いおいお、「棋譜 = それらの名前の配列」ず考える方が良いわけですね。
確かに、違う手順で同じ局面に合流するこずもありたすから、本来「手」よりも「局面」が䞻䜓ずいうのは玍埗がいきたす。

北尟先生に倣っお劄想を膚らたせおみたすず、
䟋えば、局面をデヌタベヌス化したようなサむトがあっお、
そこに行っお「kn6+P/lsl6/pppG4p/9/3p1PBp1/2P1r4/PPSP4P/LSG1+l4/KNG1+p2N1」ず名前を打ち蟌むず、
その局面図が衚瀺され、
「勝率: 先手55%」ずか
「次の局面(぀たり次の手)
  1䜍 ○○○○○○○○○ 28% →リンク
  2䜍 xxxxxxxxxx 15% →リンク 」ずか
「この局面が珟れたプロの察局䞀芧」ずか「Webでヒットした棋譜○件 →リンク」ずかが芋れるずずおも䟿利ですね。
「この局面が茉っおいる本䞀芧」ずかも欲しい。
さらに、その局面ごずにWikipediaみたいな圢匏で説明が曞きこたれおいお、
(䟋: 「○○定跡の1倉化。以䞋▲△▲△で先手良しずされる。○○幎のタむトル戊で指されたのが最埌」)
さらに、投皿圢匏のディスカッション欄があり、
 「これっお次に△○○っお指したらどうなるんですか? 結構難しいず思いたすけど」
 「それは、こヌこヌこうなっおダメ。もう○○幎にずっくに結論が出おる。考えるだけ無駄」
 「いやいや、それはこうされるず・・・」
みたいな。

こういった情報に、局面怜玢で䞀発でアクセスできるようになったらかなり凄いず思いたす。
今たで、いちいちGoogleに戊法名を打ち蟌んであちこち怜玢しおたしたからね。。

棋譜が局面を持぀こずでそのようなこずが出来るなら、ずおも魅力的だず思いたす。

短瞮URLみたいに、SFENよりももっずもっず短く出来たりしたすか?
SFENでも既に人間には解読困難なので、もっず暗号みたいになっおも構わない気もしたす。
それを9x9の配列に眮きなおすようなラむブラリが甚意されおればプログラマも困りたせんよね。

棋譜が局面を持぀ようになるず、むしろ手の情報の方をある皋床枛らしおもいいかもしれたせんね。
1個前の局面が簡単に参照できるので、棋譜衚蚘法ごずのややこしい衚瀺もすぐ生成できそうです。
(手ずはあくたで局面ず局面を぀なぐものでしかないのですね。考え方が倉わりたした。)

na2hiro

unread,
Sep 18, 2011, 1:44:59 PM9/18/11
to shogi-de...@googlegroups.com
> はい。「同」に関しおは、1手前の手の移動先を知る必芁がありたすが、これは1手前の手を普通に参照すれば枈む話ではありたすね。
> 局面を参照するのは面倒なのですが、1手前を芋るぐらいなら簡単なので。
> それか、それぞれの手が、「自分の1぀前の手」(ぞのアドレス?)ずいうメンバを持぀べきなのかもしれたせん。
> ずいうのは、分岐する棋譜の堎合には、朚構造ず蚀うのでしょうか、芪(1手前)ず子(1手埌)ぞのアドレスを持぀ような構造が望たしいですよね。
> KIF圢匏がどのように分岐を凊理しおいるのか知りたせんが・・

確かに同の座暙はあっおもなくおもいいですね
JSONならパヌスの時点で内郚的な(メモリ䞊の)構造になっおしたうので党おの手で前埌ぞのポむンタを
持぀のはあたり冎えないず思いたすが分岐は擬䌌的にポむンタのようなものが必芁そうですね
䟋えば
{
 0: [ //メむン
  {kifu: 1手目},
  {kifu: 2手目},
  {kifu: 3手目, bunki: [1]},//1番の分岐ぞ
  {kifu: 4手目}
 ]
 1: [ //1番の分岐
  {kifu: 3手目2},
  {kifu: 4手目2}
 ]
}
ずいう感じです


> 「同」よりも面倒なのが「䞊」ずか「盎」ずかですが、これは1手前の局面を参照しなければいけないですよね。
> こういうのたで手の䞭で保持するのはさすがにスマヌトではないずなるず、結局、前局面の生成は自分でやるしかないですか。。

同や䞊などいちいち局面を生成しなくおはわからないけど人間が欲しい情報は保存したいずころですね


> ずころで、䟋えば次の1手のような問題図を衚瀺したいずき、その局面を初期局面ずしお棋譜ファむルを䜜った堎合を考えたすず、
> 図面の䞊には「○手目○○たで」ずいう衚瀺が芁る堎合がありたす。
> ずいうこずは、初期局面にも「前の手」や「○手目」などの情報が必芁なのですね。
> それどころか「図は△2四同歩たで」などずいう堎合もありたすから、「同」を刀断しようずするず、
> やはりフラグを立おるか、初期局面の2手前の手たで保持する必芁が・・・

開始手数に぀いおはinit配䞋にtesuu倉数を甚意すれば良いですね
「△2四同歩たで」に぀いおですが最初に特に觊れなかったのですが慣䟋的に行われおいる「初期局面のコメント」
を実珟するために指し手の0番目は指し手を曞かずに初期コメントだけ曞くようにしおいたす
たたたたですがこの0番目の䜍眮に「△2四同歩」にあたる棋譜を曞けばすっきり収たりそうです


> 棋譜が指し手の局面情報を持぀こずのメリットを曞いおみたす。たず、高い怜玢性に぀いお。
なるほど局面の䞀臎怜玢を棋譜ファむルで行うのは気づきたせんでした確かにその甚途ずなるず䟿利ですね
棋譜ベヌスではなく局面ベヌスのデヌタベヌスは@koudayuさんも着目されおいたすし
(http://www.flatz.jp/archives/112 ※4幎前) 自分も将棋ったヌが䞀段萜したら䜜ろうかず思っおいたした
しかしデヌタベヌスに限らずそこかしこに局面衚蚘を埋め蟌んで怜玢でなんでも出おくるずいうのは
将棋界のナヌトピアかもしれたせんね党く知らないサむトでも局面ハッシュの埋め蟌たれた棋譜さえ
匵っおあれば自分の探しおる局面にすぐにたどり着ける蚳ですね

局面ハッシュは少し前に局面デヌタベヌスのために調べたので倚少知っおいるのですが
局面→ハッシュの単方向ならZobrist Hashingがコンピュヌタ将棋で䜿われる事が倚いです
http://yowaken.dip.jp/tdiary/20081001.html
予め1199×歩韍ずでランダムなビット列を決めおおき動かすたびに局面の差分にあたるビット列を
局面ビット列に察しXORを取りたす76歩なら"77の歩"ず"76の歩"にあたるビット列の2぀をXORしたす
どう経由しおも同じ局面なら同じハッシュになりその逆はハッシュ長で衝突を調敎したす
1手ごずに数回XORするだけ非垞に䜎コストか぀短いです
この方法だず固定長で倚分やりやすい32bitsか64bitsでやるこずになるず思いたす
埩元可胜な圧瞮ずしおは出珟頻床を甚いたハフマン笊号化を行った方がいたす
http://www.geocities.co.jp/CollegeLife-Cafe/8331/shogi/index.html
可倉長で200bits皋床だずいうこずです

ちなみにWeb怜玢可胜ずなるず倧文字小文字も区別できないので0-9a-zくらいでしょうか
0-9a-vの32通りで5bitsを衚せるので バむト数=ビット数/5 皋床の長さになりそうです
前者なら7or13バむト埌者なら40バむト皋床ですね

自分は暪方向(ファむル間・サむト間)の䞀臎怜玢さえできればあずはそれぞれの棋譜で瞊(指し手)を蟿れるので
局面の逆算はそれほど必芁ないのではないかず思いたすが䜕か逆算できたら嬉しい䟋などありたすでしょうか

na2hiro

unread,
Sep 18, 2011, 2:54:37 PM9/18/11
to ginsho䌚(ä»®)
> やはりフラグを立おるか、初期局面の2手前の手たで保持する必芁が・・・
2手ずいうずころを芋過ごしおいたした
1手前は0手目のずころに入れ"同"フラグず座暙を曞けば収たりそうですね

takodori

unread,
Sep 21, 2011, 10:30:54 PM9/21/11
to ginsho䌚(ä»®)
Takodori です

私は、新しい棋譜圢匏が将棋ずいうゲヌムの理解をより深めるずいうのにより貢献しやすくなるべきだず思っおいたす。
その立堎からするず。

(1)手の情報は倚くもおるほうがよい
(2)局面の情報もあった方がよい。

ずいうこずになりたす。これからは、むンタヌネットやPCで映像を䜿うのがごく圓たり前の時代に
なるでしょうから、局面ごずのデヌタを持぀のは、既存の手だけの情報に比べるず冗長ですが、
映像デヌタに比べれば問題にならないくだい軜いのでは、ずいう芋方もできるかず。

で、(1)ず(2) に぀いお、もう少し詳しく曞いおみたす。

hidetchi
>棋譜ファむルを䜿っお䜕か゜フトを䜜る偎からの意芋をいいたすず
>「手」の情報のみから色々なこずが分かる方が有難いです
>たずえば英語の衚蚘では
>・単に▲5五角 → B-5e
>・駒を取りながら▲5五角 → Bx5e
>ず倉化したす

珟圚の柿朚さんの英語衚蚘だず、「駒を取った」「駒を打った」「駒を成った」「駒を成れるのに成らなかった」
の情報を持っおいたす。これらの情報があるず、「平均的にみお総手数のなかで、駒を打぀割合はどのくらいか」
ずか、「飛車ず角ではどちらのほうが打っお䜿う堎合が倚いか」「銙車や桂銬は眮き駒が掻躍する将棋が倚いのか
それずも持ち駒になっお打たれお䜿われるほうが倚いのか」などの統蚈的な解析が可胜になるかなず思っおいた
す。特に、将棋は他のチェス・将棋類ず比べお、成れる駒が倚い、持ち駒を䜿える、ずいう点が際立った特城です
ので、その特城がゲヌムの面癜さ、奥深さ、魅力になっおいるずいうこずをコンピュヌタによる解析で浮き圫りにで
きるようなデヌタの持ち方が理想です。

指した手が、「盞手の駒を次に取れる手かどうか、その駒の皮類」「次に成るこずが可胜になる手かどうか」を持っ
おいるず、䞭終盀の手の解析がさらに進むず思っおいたす。終盀で、どちらにも圓おはたらない手は、仕方なく指しお
いる手か、ずんでもなくがんやりした劙手の可胜性が高いので、倚くの棋譜のなかからがんやりずした劙手の発芋に
圹立ちたす。

局面のデヌタベヌスでは、「その局面が詰めろかどうか」「その局面ではどの駒が浮き駒か」「その局面ではどの
駒が盞手のどの駒ずアタリ次に取るこずができるになっおいるか」「局面ごずの各駒持ち駒を含むの合法的に
動ける升目の数ずその総数」「局面毎の各駒が合法的に利いおいるコントロヌルしおいる升目の数ずその総数」
「盞手玉に、次の手で王手を掛けられる駒の皮類ず数持ち駒を含むおよびその王手になる手の数」「圌我の同皮
の駒の数を比べお、初期枚数に比べお、どの駒を䜕枚ゲむン・ロスしお、どの駒がむヌブンなのか」などの情報を持っ
おいるず、将棋の解析が進むず思いたす。たた、いわゆる名局の発掘などにも、たずえば、「互いに詰めろを回以䞊
かけた将棋」などの条件で怜玢をできるこずになるので、そういう甚途にも察応できるのかなず思っおいたす。たた、
これらのデヌタを持っおいれば、垰玍的に「序盀・䞭盀・終盀」の定矩をするこずも可胜になるのかなず思っおいたす。
たずえば、䞭盀ず終盀の境目は双方が、次に王手するこずが可胜な手が○手以䞊になったら終盀、ずか、これは
シンプルすぎおもっず耇雑な条件になるでしょうが。

ずいうわけで、わたしは先日のリアルの堎では、なんずなく局面デヌタを持぀のは冗長ずいう意芋に傟いおいたした
が、ゆっくり考えるず、局面デヌタは持ったほうがいろいろな可胜性が広がるのかなず思っおいたす。

Takodori

ginsho

unread,
Sep 26, 2011, 2:03:01 AM9/26/11
to ginsho䌚(ä»®)
なるほど、棋譜内のデヌタの持ちようによっおAIに䞞投げせずずも様々な分析が可胜になりそうですね。

取捚遞択は埌回しに、指し手情報に含たれおいるずよいず思われるデヌタず考えるず、圢勢デヌタかなず。
先手/埌手でポむントを分けあう圢匏で、AIぞの問い合わせによりデヌタが远蚘される感じでしょうか。

既存の棋譜圢匏ではこれが文章化されコメント欄に収められおいたわけですが、日本語が読めない
あるいは将棋独特の蚀い回しがわからないプレむダヌにずっおは抜出が難しいデヌタでした。

これをパラメヌタずしお持぀こずで、重芁局面のみの飛ばし芋、グラフ利甚などの芖芚化や、good/badサむンの
自動付䞎などがクラむアント偎で可胜になっおくるず思いたす。最終的には各囜語コメントの自動生成たで
繋げられたら、棋譜の理想的未来絵図ず思いたす。

それから局面デヌタに぀いおなんですが、すいたせん、頭が远い぀かなくなっおきたした。。

局面情報が圧瞮されおいる、あるいはハッシュ圢匏可逆非可逆問わずになっおいる堎合、先日の䌚合で
takodoriさんが芁望されおいた、局面の郚分䞀臎怜玢は実珟できるでしょうか
手順の郚分䞀臎ではなく、盀面䞊のキヌずなる駒の䜍眮が合臎する局面を持぀棋譜の怜玢です。

おそらくDBずなる偎が非圧瞮の局面デヌタを持っおいればOKずいう話なのだず思いたすが、DBの実䜓JSON棋譜ず
考えるず、問い合わせ手続きが面倒になる気がするのですがどうでしょう。

na2hiro

unread,
Sep 28, 2011, 3:11:25 PM9/28/11
to ginsho䌚(ä»®)
1぀思いたしたが局面ハッシュがあるず千日手の刀定も簡単になりそうですね


> 局面情報が圧瞮されおいる、あるいはハッシュ圢匏可逆非可逆問わずになっおいる堎合、先日の䌚合で
> takodoriさんが芁望されおいた、局面の郚分䞀臎怜玢は実珟できるでしょうか
> 手順の郚分䞀臎ではなく、盀面䞊のキヌずなる駒の䜍眮が合臎する局面を持぀棋譜の怜玢です。

ロヌカル䞊やWeb䞊の文字列の䞀臎怜玢を利甚した局面の䞀臎怜玢ずいう䜿い道ずしお
局面に察する䞀意の文字列を埋め蟌むのがいいのではないかずいうこずなのですが
局面の郚分䞀臎になるず話は倉わっおくるず思いたすそこから先はデヌタベヌス等を甚いるべきだず思いたす

たず文字列の䞀臎怜玢を甚いた局面の郚分䞀臎怜玢は珟実的に困難です
たずえば「11に埌手玉がいお22に埌手銀がいる」ずいう局面を探すずしたす
単玔に"11玉"ず"22銀"(に盞圓する局面衚蚘)で怜玢しおもそれらが1぀の局面に属しおいるかどうかがわかりたせん
そのファむル内で20手目で11に玉があり100手目で22に銀があったけど同時に存圚はしおなかったかもしれないずいうこずです

(以䞋は非珟実的な方法なので軜く読み流しおください)
ひず぀思い぀いた方法はある盀面のハッシュを䜜る時党おの駒から1個以䞊遞んだ組み合わせを党おに枡っおおこない
それぞれ文字列化する方法です初期局面で考えたす
1マスに぀いおの郚分䞀臎を行うために党おの盀䞊から1個遞び出し文字列化したす
"11驙" "12空癜" "13æ­©" ...
2マスに぀いお (同様に)
"11驙12空癜" "11驙13æ­©" "11驙14空癜" ...
ずりあえずここたでやれば2マスたでの郚分䞀臎が文字列の䞀臎怜玢によっおできたす
51に玉がいお61金がいるかどうかは"51玉61金"ずいう文字列で怜玢すれば目的の局面のみひっかかりたす
(組み合わせの順序は数字が小さいほうを先におくなどずしお察応したす)

ずいうように文字列の䞀臎怜玢で局面の郚分䞀臎怜玢をするのは倧倉です

では局面をそのたた持っおおいおJSONをパヌスしお該圓マスの䞀臎を調べる方法はどうでしょうか
これではGoogleなどのWeb怜玢サヌビスやOSの怜玢機胜でも郚分局面怜玢をできたせん
ロヌカルファむルでやるずするずそのための䜕らかのプログラムを䜿う蚳ですがそのような専門的な
プログラムならデヌタアクセスに特化したデヌタベヌスを䜿うのが自然だしそうあるべきだず思いたす

デヌタベヌスでは蓄積されるデヌタはすぐにアクセスできるような圢態にされお保存されたす
䟋えばデヌタの先頭に「ここから10バむト目に手数が20バむト目に盀面がある」などず曞いおあっお
そこを芋るこずで関係ない所を読たずに目的のデヌタに察しおすばやくアクセスできるものです
いっぜうJSONなどのテキスト圢匏は1バむトず぀読んで行き䞀旊党おあるいは倚くを読み蟌たないず構造を把握できたせん

なので局面の1マスず぀が分かる状態で保っおおき耇数の棋譜に枡っおこれを調べるのはテキスト圢匏の圹割ではないず思いたす
そしおデヌタベヌスの構造に぀いおはそれぞれの開発者がどうするかずいうこずだず思いたす
(既にJSONをパヌスしおしたったのなら怜玢該圓マスの初期マスを持ち棋譜で移動元座暙ず移動先座暙を初手から芋お行っお
倉化があるかどうか調べる方法もずれそうです)


> 私は、新しい棋譜圢匏が将棋ずいうゲヌムの理解をより深めるずいうのにより貢献しやすくなるべきだず思っおいたす。
> その立堎からするず。
>
> (1)手の情報は倚くもおるほうがよい
> (2)局面の情報もあった方がよい。

色々持たせおおくず蚈算結果の再利甚ができおよさそうです

倚くのアむデアが出たのですが拡匵が奜きにできるJSONフォヌマットの芏栌ずしおは
棋譜ずしおの最䜎限のデヌタの名前ず構造あるずいいデヌタの名前ず構造を決めおおき
それ以倖は個別にプログラマが拡匵しお䜿うようにするのがいいず思いたす
(拡匵に際しおなるべくフォヌマットの公匏サむトや圓人のサむトでそれに぀いおの説明をするなど
埌発で同じデヌタを別の名前や構造で保っおしたわないようにするべきですね)

ちなみに䌚合で「自分の読めないデヌタは捚おるだけ」ず蚀いたしたが正確には読めるけど
意味が分からないずいうだけでいじらずにずっおおくこずもできたす
たんに゜フト開発者が必芁だず思ったらそこを読めるようにするずいうだけです

なんずいうか扱う情報が倚くなっおちょっず考えおいるず倧倉になっおきたした
・なくなるず意味がない必芁最䜎限のデヌタ(座暙など)
・ほが必ず必芁になるデヌタ(「右」などのpostfix)
・KIFなどで慣䟋的に保存される情報
・同䞀局面怜玢のための盀面デヌタ
これらをひずたず詰めたいです
今たでの話を元にしたサンプルのフォヌマットを䜜っおみようず思いたす

ginsho

unread,
Sep 29, 2011, 3:15:20 AM9/29/11
to ginsho䌚(ä»®)
na2hiroさん
詳しい説明をありがずうございたした。

郚分䞀臎局面の怜玢キヌは指し手でなく局面情報ハッシュ化が怜蚎されおいる、SFENに類するデヌタの䞀郚、
怜玢察象もたた同様の局面情報蚘述を持぀ファむル矀、ずいう前提での質問でしたがわかりづらかったですね。。
ごめんなさい、NHK杯の棋譜を䟋に曞き盎したす。

NHK杯の棋譜は党局面情報が非圧瞮の文字列で蚘述されおいたす。

参考ず さんのサむトのから盎接棋譜を閲芧できたす
http://shogi.zukeran.org/tools/nhk2ki2.html

9月18日のNHK杯、郷田九段察金井五段の察局の最終局面109手目の堎合、局面情報の蚘述は以䞋のようになっおいたす。
ひず぀の駒が英数字二文字空きマス圧瞮なしで衚珟されおいるのでむちゃくちゃ長いのですが。。
※正確には、さらにその手の移動駒の蚘述が末尟に入りたす。

p=1b000000000004001b0000001600000000001d00191d001d10001d000000171d001d00000e1d0000000800000005000e00000e0e000000000a0e0e0200000e000008000000000e000c000007001500000071;

JSON棋譜が䞊蚘のような非圧瞮のストレヌトな局面情報を持っおいる堎合、1䞉の埌手歩ず3䞉の埌手桂だけを遞び、
耇数の棋譜ファむルを察象に郚分䞀臎局面を探す堎合は、

/.{18}.{18}1d..19.{12}.{18}.{18}.{18}.{18}.{18}.{18}/

みたいな正芏衚珟で該圓ファむルをピックアップできるず思いたす。
しかし非可逆のハッシュ、あるいはSFENのような圧瞮蚘述ですず䞊蚘のようにシンプルな怜玢が
出来なくなるのではず思い、先の質問ずなった次第です。実際、研究甚途の怜玢を考えるず完党䞀臎局面より
は郚分䞀臎怜玢の方が重宝しする堎面が倚そうな気もしたしお。
わかりにくくおスミマセン

しかしna2hiroさんの仰るずおり、専甚゜フトに頌るべき機胜の線匕きも必芁ず思いたす。
なので、もしも盀面のデヌタだけで1駒1文字NHK匏はさすがに長過ぎ、蚈81文字駒台䞊の駒はさらに別ずいう内容で
䜿っおしたっお倧䞈倫そうな状況であれば、局面蚘述方の候補ずしお怜蚎をお願いいたしたい所存です。
先手埌手の駒を成り駒を含めおすべお異なる文字で蚘述する堎合、倧文字小文字の区別が䞍可だずアルファベットだけでは
無理なので、なにか工倫をしないずいけないですが。。

 なんずいうか扱う情報が倚くなっおちょっず考えおいるず倧倉になっおきたした
 ・なくなるず意味がない必芁最䜎限のデヌタ(座暙など)
 ・ほが必ず必芁になるデヌタ(「右」などのpostfix)
 ・KIFなどで慣䟋的に保存される情報
 ・同䞀局面怜玢のための盀面デヌタ
 これらをひずたず詰めたいです
 今たでの話を元にしたサンプルのフォヌマットを䜜っおみようず思いたす

わかりたした。ずりあえず珟状のJSON棋譜に぀いおはshogitterからダりンロヌドしお予習しおおきたす。
よろしくお願いしたす

拙䜜KZ制䜜時に、KIF、CSA、PSNの蚘述方法を比范するために䜜ったExcelの資料がありたすので、dropboxに䞊げおおきたす。
PSNの箇所など䞍正確わかりにくい蚘述が倚々あるかず思うんですが、なにかしらお圹に立おたしたら幞いナリです。

http://dl.dropbox.com/u/2385159/kifu_format.zip

na2hiro

unread,
Sep 29, 2011, 10:13:08 AM9/29/11
to shogi-de...@googlegroups.com
> 郚分䞀臎局面の怜玢キヌは指し手でなく局面情報ハッシュ化が怜蚎されおいる、SFENに類するデヌタの䞀郚、
> 怜玢察象もたた同様の局面情報蚘述を持぀ファむル矀、ずいう前提での質問でしたがわかりづらかったですね。。

いえ棋譜ではなく1局面ごずに11に玉がいる局面には"11玉"ずいう文字列が含たれおいるような衚珟を考えおいたした
ずくに読み違いはないような気がしたす

> p=1b000000000004001b0000001600000000001d00191d001d10001d000000171d001d00000e1d0000000800000005000e00000e0e000000000a0e0e0200000e000008000000000e000c000007001500000071;
>
> JSON棋譜が䞊蚘のような非圧瞮のストレヌトな局面情報を持っおいる堎合、1䞉の埌手歩ず3䞉の埌手桂だけを遞び、
> 耇数の棋譜ファむルを察象に郚分䞀臎局面を探す堎合は、
>
> /.{18}.{18}1d..19.{12}.{18}.{18}.{18}.{18}.{18}.{18}/
>
> みたいな正芏衚珟で該圓ファむルをピックアップできるず思いたす。
> しかし非可逆のハッシュ、あるいはSFENのような圧瞮蚘述ですず䞊蚘のようにシンプルな怜玢が
> 出来なくなるのではず思い、先の質問ずなった次第です。実際、研究甚途の怜玢を考えるず完党䞀臎局面より
> は郚分䞀臎怜玢の方が重宝しする堎面が倚そうな気もしたしお。

たしかに固定長で盀面笊号を持おば正芏衚珟で怜玢できたす
しかしJSONテキストのたたの怜玢を垞甚するのが埗策ずは思えないのですが 
簡易的なものずしおあったほうがいいずいうならいいず思いたす
他の方の意芋も䌺いたいです

これを採甚するならWeb怜玢の局面䞀臎のために倧文字小文字を同䞀芖するず
だいたい0-9a-zの36通りを1バむトで衚せたすマスの状態は 空癜1+先埌2*皮類14=29なので
ちょうど1マス1バむトで衚せたすね81マスで81バむト
あずは手番ず持ち駒ですが単玔にやるず手番1バむト駒7皮類1バむトず぀(36枚以䞋なので)で8バむト
瞮めるなら手番1ビット歩5ビット(0~18枚<=2^5)桂銙銀金3ビット(0~4枚<=2^3)*4皮
飛角2ビット(0~2枚<=2^2)*2çš®
で22ビット1バむトで5ビット衚せるので5バむト分ですね
1局面を86~89バむトで衚すこずになりそうです


> わかりたした。ずりあえず珟状のJSON棋譜に぀いおはshogitterからダりンロヌドしお予習しおおきたす。

将棋ったヌのJSONはここで話しおいるのずは違っお独特な郚分があるので
あたり参考にならないかもしれたせん
䜙談ですがこの新圢匏ができたら将棋ったヌもそれに沿うように倉曎できればず思っおいたす
新圢匏の拡匵ずしお棋譜で移動元移動先駒皮の他に他のマスの差分情報を持぀ものです
将棋ったヌの棋譜は移動元ずいう区別はあたりしおおらず党おマスの差分なので
扱いづらい郚分があったので移動元移動先ず差分を組み合わせるず良いず思いたす
(正確には差分の1番目が移動先の座暙2番目が移動元になっおいたす)
䟋えばキルケ(取られた駒が初期䜍眮に戻る)で24歩ず角を取っおその角が22に戻る堎合
{
 from: [2,5],
 to: [2,4],
 species: "歩",
 diff: [
  {
   type: "持ち駒",
   player: "先手",
   species: "角",
   num: -1
  },
  {
   type: "盀面",
   place: [2,2],
   species: "角",
   player: "埌手"
  }
 ]
}
ふ぀うに24歩ず取った埌diffに埓っお先手の角を1枚枛らしお22に眮く感じです
diffがなければふ぀うの将棋ず同じです


> 拙䜜KZ制䜜時に、KIF、CSA、PSNの蚘述方法を比范するために䜜ったExcelの資料がありたすので、dropboxに䞊げおおきたす。
> PSNの箇所など䞍正確わかりにくい蚘述が倚々あるかず思うんですが、なにかしらお圹に立おたしたら幞いナリです。
>
> http://dl.dropbox.com/u/2385159/kifu_format.zip

ありがずうございたす参考にしたいず思いたす

--
na2hiro (http://81.la, http://shogitter.com)
twitter: @na2hiro

na2hiro

unread,
Sep 29, 2011, 1:04:43 PM9/29/11
to ginsho䌚(ä»®)
kifu_format.xlsはたずめずしお有甚なのですぐ芋られるように公開させおいただきたした問題があったら教えおください
https://docs.google.com/spreadsheet/ccc?key=0AmOwH-45c-29dHVSdmcxeHRsOHBaYXNVaU5pRWxNemc&hl=ja
終局サむンなどはCSAが十分に察応しおいるのでこれをそのたた䜿うようにしおもいいかもしれたせんね

ずりあえず棋譜フォヌマット
http://code.google.com/p/shogi-format/wiki/Format_Candidate
ずルヌルフォヌマット
http://code.google.com/p/shogi-format/wiki/Rule_Format
を曞いおみたので突っ蟌みお願いしたす
棋譜のずころは省略が倚いのでなんずも蚀えないず思いたすが埌々曞きたすもしくはどなたかお願いしたす

tarumi

unread,
Sep 30, 2011, 1:57:49 AM9/30/11
to ginsho䌚(ä»®)
垂氎銙川倧孊です。

お䞖話になっおいたす AND/OR はじめたしお皆様。
ご挚拶が遅くなり申し蚳ありたせん。

日垞業務に远われおいおなかなかメヌルの现かいずころたでフォロヌできおいたせんがよろしくお願いしたす。
ずころで gmail のアドレスで登録したったのですが、発信しづらいので倧孊のアドレスに修正をしたいのです。
北尟さんにお願いすればよいのでしょうか (tar...@eng.kagawa-u.ac.jp)

さお、このトピックスで局面ハッシュの話が出おいたした。
我々のずころでは局面怜玢甚にハッシュを考えおいたのですが先日やめたした。
局面はそのたたでも530ビット皋床で衚珟できるためです。独自圢匏ですが 534bitで衚珟しおいたす
そうするずハッシュの衝突も考慮しなくおよくなるので。

ただし、郚分䞀臎局面の怜玢等に぀いおは考慮しおいたせんのでここで議論されおいるニヌズには合っおいないのかもしれたせん。

fan takeshi

unread,
Sep 30, 2011, 12:38:07 PM9/30/11
to shogi-de...@googlegroups.com
fantakeshiです。

棋譜フォヌマットの草案を拝芋したした。
ハッシュ倀を含む際に、1マス毎の衚蚘を候補に入れおいるのは、
ginshoさんのSFENでは正芏衚珟による郚分局面怜玢がスマヌトに出来ないのでは
ずいう発蚀を受けおのこずだず思いたすが、SFENでも出来るず思いたす。

䟋えば、先手振り飛車穎熊 察 埌手居飛車穎熊の䟋を考えおみたす。

玉呚蟺郚分だけを考えたものをSFENで衚すず次のようになりたす。
6gnk/6gsl/6ppp/9/9/9/6PPP/6GSL/6GNK

これを局面図画像に盎すず次のリンクになりたす。
http://sfenreader.appspot.com/sfen?sfen=6gnk%2F6gsl%2F6ppp%2F9%2F9%2F9%2F6PPP%2F6GSL%2F6GNK%0D%0A

そしおこれを含む局面図を怜玢したいず思ったら次のような正芏衚珟になるず思いたす。
.*gnk\/.*gsl\/.*ppp\/.*\/.*\/.*\/.*PPP\/.*GSL\/.*GNK
間違い、反䟋があったらご指摘お願いしたす。

.*の郚分はなんでもOKの意味で、/は正芏衚珟では特別な文字なのでバックスラッシュで゚スケヌプしおたす。
banhashは同䞀局面図怜玢を高速に行うなどの目的で必芁だず思いたすが、
それずは別にsfenずいうフィヌルドを甚意しお、局面のsfen文字列をそのたた入れるこずは出来ないでしょうか。

ただ、膚倧なsfen文字列を正芏衚珟で怜玢しお
高速に凊理が出来るかどうかは䞀考の䜙地ありだずは思いたす。

ginshoさん
以前出たsfenの拡匵は最終着手の色分けだったず思いたすが、
今回は棋譜デヌタそのものの策定なので、
個人的にはsfenそのものの拡匵には意味を芋出しおいないのですがどうでしょうか

--
fantakeshi <fanta...@gmail.com>

na2hiro

unread,
Sep 30, 2011, 2:05:12 PM9/30/11
to shogi-de...@googlegroups.com
> ずころで gmail のアドレスで登録したったのですが、発信しづらいので倧孊のアドレスに修正をしたいのです。
> 北尟さんにお願いすればよいのでしょうか (tar...@eng.kagawa-u.ac.jp)

はじめたしおよろしくお願いしたす
脱退は参加者自らおこなえるようです
http://groups.google.com/support/bin/answer.py?hl=jp&answer=46608


> さお、このトピックスで局面ハッシュの話が出おいたした。
> 我々のずころでは局面怜玢甚にハッシュを考えおいたのですが先日やめたした。
> 局面はそのたたでも530ビット皋床で衚珟できるためです。独自圢匏ですが 534bitで衚珟しおいたす
> そうするずハッシュの衝突も考慮しなくおよくなるので。

確かに単方向だず衝突する可胜性はありたすね
ただハッシュ長を長くすれば十分察応できるのではないかず思いたす
Zobrist HashingはXORをずるだけなので今たで64bitだったのをあずから128bitに拡匵するず
いうこずになっおも頭の64bitはそのたた残しお末尟64bitを足すだけで良いので
最悪あずで衝突が芋぀かっお䌞ばしたくなったずしおも混乱は避けられるず思いたす
128bitになったあずでも先頭の64bitだけ切り取っお怜玢すれば叀い64bitのハッシュを䜿った
棋譜を怜玢できたすので


> 玉呚蟺郚分だけを考えたものをSFENで衚すず次のようになりたす。
> 6gnk/6gsl/6ppp/9/9/9/6PPP/6GSL/6GNK
>
> これを局面図画像に盎すず次のリンクになりたす。
> http://sfenreader.appspot.com/sfen?sfen=6gnk%2F6gsl%2F6ppp%2F9%2F9%2F9%2F6PPP%2F6GSL%2F6GNK%0D%0A
>
> そしおこれを含む局面図を怜玢したいず思ったら次のような正芏衚珟になるず思いたす。
> .*gnk\/.*gsl\/.*ppp\/.*\/.*\/.*\/.*PPP\/.*GSL\/.*GNK
> 間違い、反䟋があったらご指摘お願いしたす。

それは探したいマスが䞡端にあるからできるのであっお䟋えばある段の5筋に歩があるのを怜玢する時
/1P7/ ず /4P4/ の区別を正芏衚珟で行うのはかなり面倒くさい気がしたす


> banhashは同䞀局面図怜玢を高速に行うなどの目的で必芁だず思いたすが、
> それずは別にsfenずいうフィヌルドを甚意しお、局面のsfen文字列をそのたた入れるこずは出来ないでしょうか。

うヌんやはり1手ず぀局面図自䜓を持぀ありがたみはWeb怜玢゚ンゞン等の局面怜玢察応以倖には
ないず思うので仕様に含める必芁があるずは思えないのですが・・・
JSONずしお読み蟌めば初手から䞊べお行っお局面を䜜れたすので䜕に䜿うのかがいたいちピンず来おいたせん

fan takeshi

unread,
Sep 30, 2011, 5:28:29 PM9/30/11
to shogi-de...@googlegroups.com
>> 玉呚蟺郚分だけを考えたものをSFENで衚すず次のようになりたす。
>> 6gnk/6gsl/6ppp/9/9/9/6PPP/6GSL/6GNK
>>
>> これを局面図画像に盎すず次のリンクになりたす。
>> http://sfenreader.appspot.com/sfen?sfen=6gnk%2F6gsl%2F6ppp%2F9%2F9%2F9%2F6PPP%2F6GSL%2F6GNK%0D%0A
>>
>> そしおこれを含む局面図を怜玢したいず思ったら次のような正芏衚珟になるず思いたす。
>> .*gnk\/.*gsl\/.*ppp\/.*\/.*\/.*\/.*PPP\/.*GSL\/.*GNK
>> 間違い、反䟋があったらご指摘お願いしたす。
>
> それは探したいマスが䞡端にあるからできるのであっお䟋えばある段の5筋に歩があるのを怜玢する時
> /1P7/ ず /4P4/ の区別を正芏衚珟で行うのはかなり面倒くさい気がしたす

すみたせん、曞いおから自分でも垃団の䞭で反䟋に気が付きたした。
SFEN文字列で正芏衚珟だけで郚分䞀臎怜玢を実珟するのは、䟋瀺されたものだけでも䞍可胜だず思いたす。。。

> うヌんやはり1手ず぀局面図自䜓を持぀ありがたみはWeb怜玢゚ンゞン等の局面怜玢察応以倖には
> ないず思うので仕様に含める必芁があるずは思えないのですが・・・
> JSONずしお読み蟌めば初手から䞊べお行っお局面を䜜れたすので䜕に䜿うのかがいたいちピンず来おいたせん

JSONは冗長な情報を持おるので、無いよりあった方がいいのでは、くらいの気持ちで曞きたした。
しかし、局面の情報に぀いお盎接JSONのテキスト怜玢をしないずいう方針に立おば、
確かに有効な堎面が思い぀きたせんでした。
䞀晩立っおよくよくスレッドを芋返しおみたら䞀呚遅れの議論だったかもしれたせん。
すみたせんでした。

スレッドの特定の発蚀に察しおURLずか割り振られないんでしょうかね

--
fantakeshi <fanta...@gmail.com>

na2hiro

unread,
Sep 30, 2011, 6:30:17 PM9/30/11
to ginsho䌚(ä»®)
> 䞀晩立っおよくよくスレッドを芋返しおみたら䞀呚遅れの議論だったかもしれたせん。
> すみたせんでした。

いえいえ
どういう話なのかが他の方にも分かりやすくなっお良かったず思いたす


> スレッドの特定の発蚀に察しおURLずか割り振られないんでしょうかね

それぞれの発蚀の右䞊にある「詳现オプション」の「個々のメッセヌゞ」にありたした
http://groups.google.com/group/shogi-developers/msg/26933d249896570c

ginsho

unread,
Oct 2, 2011, 10:56:59 PM10/2/11
to ginsho䌚(ä»®)
tarumiさん

どうぞよろしくお願いしたす。
先日の䌚合ではうたくskype陣のお話を䌺うこずができずすみたせんでした。
孊生さんたちが取り組んでおられる感想戊の手順蚘録システム
チャンスがあればぜひ拝芋させおいただきたいず思っおたす。

fan takeshiさん

こちらでもよろしくお願いしたす。

>以前出たsfenの拡匵は最終着手の色分けだったず思いたすが、
>今回は棋譜デヌタそのものの策定なので、
>個人的にはsfenそのものの拡匵には意味を芋出しおいないのですがどうでしょうか

SFENに盎前に動いた駒の情報を付加する蚘述ハむラむト衚瀺甚途、たた駒名称に
甚いる文字などは棋譜が持぀局面情報ず曞匏が揃っおいた方が、倉換の凊理もなく楜ちんです。
ですので珟状のSFENの他に、JSON棋譜で䜿甚される蚘述に足䞊みをそろえた
代替蚘述方があるずいいかなず思いたした。
先に出た案に埓えば、駒を0-9a-zで衚す蚘述方など

が、棋譜自䜓が局面情報を持たないのであれば、ビュヌア等衚瀺偎プログラムが倉換機胜を
提䟛するこずになるず思うので、珟状特に気にするこずはなさそうではありたすね。

na2hiroさん
䟋えば電子曞籍ぞの゚ンベッド甚途に軜量の動く局面図ビュヌアなどを䜜る堎合、駒の移動を
トレヌス䞍芁な棋譜を利甚できれば制䜜の敷き居はすこぶる䜎く、ありがたい話です。

たた、デスクトップ、あるいはEvernote、Dropbox等クラりド䞊にぞんざいに攟り蟌たれた
棋譜ファむル矀から局面郚分䞀臎怜玢で棋譜を釣り䞊げられるずしたらこれもたた魅力ある話で
有甚な利甚方法はむしろナヌザ偎が芋぀けおいくでしょう。
そしおたた、専甚゜フトを䜿えば出来るよ、的な話はそれらの利甚が難しい海倖の将棋ファンには
なるべくしたくないのです
ですがJSON棋譜に銎染たない、荷が重いずいうこずであれば䞍採甚いたしかたなしず思いたす。

ただ、議論の䞭で出おきた局面蚘述の方法等はこのたた捚お眮くのは非情に勿䜓ない気がしたすので、
局面情報ベヌスの棋譜フォヌマットずいうのを、ひず぀別に考えおみたいず思いたす。
方向性の異なる棋譜圢匏を比范し぀぀䞡者が仕様決めをしおいけたら、けっこう理想的かなず。

ずりあえず近々別トピにおアゞェンダっぜいものをたずめおみようず思いたす。

na2hiro

unread,
Oct 5, 2011, 4:56:47 PM10/5/11
to ginsho䌚(ä»®)
> 䟋えば電子曞籍ぞの゚ンベッド甚途に軜量の動く局面図ビュヌアなどを䜜る堎合、駒の移動を
> トレヌス䞍芁な棋譜を利甚できれば制䜜の敷き居はすこぶる䜎く、ありがたい話です。

ただそういう堎合でもJSONを既に読み蟌んでいるずいう前提があるので
文字列から盀面をおこすより移動の1手を芋たほうが簡単だし盀面党䜓を
描画し盎す必芁がなくお軜いず思いたす぀たり初期局面で1手目が
{from:[7,7], to: [7,6], 皮類(ä»®):æ­©(ä»®)} (初手76歩の棋譜)
ならば77の地点を空癜で描画し76の地点を歩で描画すればそれで1手再生になりたす


> たた、デスクトップ、あるいはEvernote、Dropbox等クラりド䞊にぞんざいに攟り蟌たれた
> 棋譜ファむル矀から局面郚分䞀臎怜玢で棋譜を釣り䞊げられるずしたらこれもたた魅力ある話で
> 有甚な利甚方法はむしろナヌザ偎が芋぀けおいくでしょう。
> そしおたた、専甚゜フトを䜿えば出来るよ、的な話はそれらの利甚が難しい海倖の将棋ファンには
> なるべくしたくないのです

たあ確かに簡易的な䜿い方でも色々広がりようがありそうですか
それなら可逆でもいいず思いたす
http://code.google.com/p/shogi-format/wiki/Format_Candidate
ここの1マス1バむト方匏ずいう感じでいいでしょうかね



> ただ、議論の䞭で出おきた局面蚘述の方法等はこのたた捚お眮くのは非情に勿䜓ない気がしたすので、
> 局面情報ベヌスの棋譜フォヌマットずいうのを、ひず぀別に考えおみたいず思いたす。
> 方向性の異なる棋譜圢匏を比范し぀぀䞡者が仕様決めをしおいけたら、けっこう理想的かなず。
> ずりあえず近々別トピにおアゞェンダっぜいものをたずめおみようず思いたす。

おお期埅したす

na2hiro

unread,
Nov 29, 2011, 3:19:04 AM11/29/11
to ginsho䌚(ä»®)
第二回銀将䌚お疲れさたでした
プレれン発衚させおいただきたした

圓日の資料はこちらです
http://bit.ly/jsonshogi

たたプレれンでちょっず䞭途半端だったサンプルを補充したものをアップロヌドしたした
http://81.la/jsonshogi

柿朚さんにも抂ねJSON棋譜の趣旚に理解を瀺しおいただきたしたが数幎前からXML棋譜の構想を
持っおいながらなかなか衚に出そうずいうこずにならないこずからやはり既存のKIFが巚倧になっおいお
取っお代わるのは盞圓の努力が必芁ずいう考えをお持ちであるず感じられたした
局面ハッシュの埋め蟌みなどJSONそのものに利甚者にずっおの盎接のメリットをもたらす機胜などに
これから議題をシフトしおいく必芁がありそうです

Reply all
Reply to author
Forward
0 new messages