(本エントリーは、Tord Romstad 氏によるThe Universal Shogi Interface, draft 1
(2007-01-24) の ”3, Forsyth-Edwards notation for shogi” のTakodori による日本語訳である)
(gg さんのコメントを参考に一部修正。2007/1/30)
(一部修正 2007/2/12)
3. 将棋用のForsyth-Edwards 記法
In computer chess, there is a standardized compact ASCII notation for chess positions, known as the Forsyth-Edwards notation (usually abbreviated as FEN). It was originally invented by David Forsyth more than 100 years ago, and was extended for use with chess software by Steven Edwards some time in the 1990s. For a precise definition of the FEN standard, consult section 16.1 of the PGN specification.
コンピュータチェスでは、チェスの局面を表記するのに、通常FENと略記される、Forsyth-Edwards 記法として知られている、標準化されたコンパクトなアスキー記法が存在する。これは、100年以上前に David Forsyth によってもともとは考案され、1990年代の時期に Steven Edwards によってチェスソフトで利用できるように拡張されたものである。正確な FEN スタンダードの定義については、PGN specification の section 16.1 に当たられたい。
As far as I know, no equivalent standard exists for shogi (please correct me if I am wrong). This section describes a variant of FEN notation suitable for shogi.
私の知る限り、同様な標準は将棋には存在していない(もし誤っていれば、正されたし)。本セクションでは、将棋に適用できるFEN記法の変形について記述を行う。
A Shogi FEN string (SFEN from now on) consists of a single line of ASCII text containing four data fields, separated by whitespace. These are:
将棋FEN string (以後、SFEN と略す)は、空スペースで区分された4つのデータフィールドを含む一行のアスキーテキストから成る。そこにはそれらは
1. Board state. The placement of the pieces of the board is written rank by rank, with each rank separated by a slash ('/'). The ranks are ordered from the white side, beginning with rank 'a' and ending with rank 'i' (using the standard English shogi board coordinates). For each rank, the squares are specified from file 9 to file 1. The uppercase letters "PLNSGBRK" are used for the non-promoted black pieces, while the lowercase letters "plnsgbrk" are used for the non-promoted white pieces. A promoted piece is denoted by a '+' character immediately before the piece letter, e.g. +B for a black promoted bishop. One or more contiguous empty squares are represented by a digit counting the number of squares.
1. 盤上の状態. 盤上の駒の配置が、行ごとに、スラッシュ('/')でそれぞれの行を区分しながら、記述される。行は白側から、'a' 行から始まり、'i'行で終わるように定義される(標準の英語の将棋盤の 座標を用いている)。すべての行に対しては、升目が、9筋から1筋まで定義される。大文字の "PLNSGBRK"という英語文字は、成っていない黒の駒を表すのに使われる。一方、小文字の "plnsgbrk"は、白の成っていない駒を表すのに使われる。
成り駒は、駒の文字の直前に '+'を denote することで表される。成り駒は、駒の文字の直前の '+'文字で示されるすなわち、+B は黒の成り角を表す。ひとつないしそれ以上のcontiguous な連続した空の升目は、升目の数を数える桁によって表される。升目の個数の数字1文字で表される。(訳者註:Pないしpは「歩」(Pawnの頭文字)、Lないしlは「香」(Lance),Nないしnは「桂」(kNight)、Sないしsは「銀」(Silver)、Gないしgは「金」(Gold)、Bないしbは「角」(Bishop)、Rないしrは「飛」(Rook)、Kないしkは「玉」(King)を表す)
2. The side to move. This field contains of a single letter, "b" (for "black") or "w" (for "white"), depending on the current side to move.
2. 手番 このフィールドには "b"(黒)ないし"w"(白)のどちらか一文字が、実際の手番によって入ることになる。
3. Pieces in hand. Again we use uppercase letters for black pieces, and lowercase letters for white's captured pieces. A digit before a letter means that there are several pieces of the given type in hand. The pieces are always listed in the order rook, bishop, gold, silver, knight, lance, pawn; and with all black pieces before all white pieces. As an example, in a position where black has one rook, one gold and four pawns in hand, while white has two bishops, two silvers and three pawns, the pieces in hand data field in the SFEN would look like "RG4P2b2s3p". If neither player has any pieces in hand, a single minus character ("-") is used for the pieces in hand field.
3. 持ち駒 再び、黒の駒は大文字、白の持ち駒には小文字を使う。文字の前の数字は、ある特定の持ち駒が数枚あることを意味する。持ち駒は常に、飛、角、金、銀、桂、香、歩の
順番で並ぶように順でリストされ、あらゆる黒の持ち駒は、白の持ち駒の前にくるようにされる。例を出そう。黒が飛を一枚、金を一枚と歩を4枚持ち駒とし、白が角を2枚、銀を2枚、歩を3枚持ち駒としている局面は、SFEN の持ち駒フィールド上では、"RG4P2b2s3p"というようになる。双方とも持ち駒無しの場合は、マイナスキャラクター("-")ひとつが持ち駒フィールドに入ることとする。
4. Move count. An integer representing the number of the current move in the game. We are using the shogi convention for move counting, which means that we count what international players would call "plies" or "half moves". For instance, after the moves 1. P7g-7f 2. P8c-8d, the move counter is 3. The "move count" data field is optional; a program should be able to read and understand an SFEN string even if this field is missing.
4. 手数のカウント 整数は競技における現在の指し手の手数を表す。われわれは、将棋式の手数の数え方を採用する。すなわち、インターナショナルチェスのプレーヤーが、”
pilies””plies””ply”とか “half move” と呼ぶ方式である。例を出すと、1. P7g-7f 2. P8c-8dという指し手の後の手は、手数は3になる。move countは3になる。"move count" フィールドは選択項目であり、プログラムは、このフィールドに入力がなくても、SREN string を読み、理解できなければならない。
の4つがあるである。
As an example, the initial position in shogi is encoded like this:
例を出そう。将棋の初形配置初期配置は以下のようにコード化される。
lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1
A more complicated example is the following position, taken from the 3rd game of the 19th Ryu-O match between Sato and Watanabe:
より複雑な例は、以下のような局面である。これは、第19期竜王戦第3局、渡辺竜王対佐藤棋聖戦から取った。
9 8 7 6 5 4 3 2 1 +----+----+----+----+----+----+----+----+----+ | | | | | | | | | Lw | a 1B 1G 1N 3P +----+----+----+----+----+----+----+----+----+ | | Lw |+Rb | | | Pb | | | | b +----+----+----+----+----+----+----+----+----+ | Pw | | | Pw | Bb | Gb | | Pw | Pw | c +----+----+----+----+----+----+----+----+----+ | Kw | Pw | Sw | | Pw | | | | | d +----+----+----+----+----+----+----+----+----+ | Nb | Nw | | Pb | | | Gb | | | e +----+----+----+----+----+----+----+----+----+ | Pb | | Pb | | Pb | | | Pb | Pb | f +----+----+----+----+----+----+----+----+----+ | | Pb | Sb | | | | | | | g +----+----+----+----+----+----+----+----+----+ | | Kb | Sb | Gb | | | |+Rw | | h +----+----+----+----+----+----+----+----+----+ | Lb | Nb | | |+Pw | | | | Lb | i 1S +----+----+----+----+----+----+----+----+----+
The SFEN for the position above is:
上図の局面は、SFEN 上では以下のように表現される。
8l/1l+R2P3/p2pBG1pp/kps1p4/Nn1P2G2/P1P1P2PP/1PS6/1KSG3+r1/LN2+p3L w Sbgn3p 124
The SFEN notation described above differs from the FEN notation forchess positions in a few ways. The castling and en passant fields have been removed, for the obvious reason that castling and en passant captures do not exist in shogi. The halfmove clock has been removed because shogi has no 50-move draw rule. Finally, because captured pieces can be dropped back on the board in shogi, the "pieces in hand" data field has been added.
上記のように記述されたこれまで述べてきたSFEN 記法は、チェスの局面用の FEN 記法といくつかの点で違いがある。キャスリングとアンパッサンのフィールドは取り除かれている。なぜなら、将棋にキャスリングとアンパッサンによる駒取りが存在しないのは明らかだからである。なぜなら、将棋にキャスリングとアンパッサンによる駒取りが存在しないのは明らかだからである。これは自明だが、将棋にはキャスリングとアンパッサンは無いからである。ハーフムーブクロックは、将棋には50手到達による引き分けルールが無いので、取り除かれている。最後に、将棋では、とった駒を盤上に打って再使用できるので、「持ち駒」データフィールドが追加されている
翻訳ありがとうございます。非常に参考になります。
コンピュータ将棋選手権で使われている、ASCIIによる盤面や指し手の表現形式(CSA形式)と
http://www.computer-shogi.org/protocol/record_e.html
それを用いたTCP/IP通信プロトコル
http://www.computer-shogi.org/protocol/tcp_ip_server_11_e.html
(コンピュータ将棋選手権やネット上でのオープン戦はこのプロトコルを用いて行われます。また、このプロトコルに基づいた対局サーバもいくつか公開されています)
がありますので、こちらともある程度整合性を取っていただけると、これまで将棋プログラムを開発していたプログラマにとっても便利かと思いますが、Tord氏はこれらの存在をご存知なのでしょうか…。(コンパクトさを目的としたものではありませんし、手数等はコメントとして表記する形になりますが)
それとも、UCIとの整合性上やむを得ないという判断なのでしょうか。
(日本語版はそれぞれ
http://www.computer-shogi.org/protocol/record_v21.html
http://www.computer-shogi.org/protocol/tcp_ip_server_112.html です。
このほか、TCP/IP通信プロトコルの拡張モードというものもあります。
http://shogi-server.sourceforge.jp/protocol.html )
投稿情報: 香山 | 2007年1 月26日 (金) 12:13
素早い対応ありがとうございます>takodoriさん。
香山さんの言われる通り、盤面や指し手の表記にSFENとCSAのどちらを採用するかというのが大きな問題になると思います。個人的にはどちらでもいいと思っていますが、将棋プログラマの大半が日本人であることを考えると、CSAをそのまま使った方がいいような気もします。このあたり、将棋プログラマの意見が欲しいところです。
Tord氏はCSA形式を用いたTCP/IPプロトコルを解説したページは知っているはずですが、CSA形式自体を英語で解説したページ
http://www.computer-shogi.org/protocol/record_e.html
は知らないかもしれません。(このページはCSAの英語版トップページから直接リンクされていないので見つけにくい。私も知りませんでした。)
あと、将棋ソフト特有の使い方として、普通の対局だけでなく、ソフトに詰将棋の問題を解かせるということをよくやります。これに対応する必要もあると思います。
USIの原案を見たところ、エンジンに対して詰みの探索を命じるのはgo mateコマンドを使うのかと思いますが、エンジンが詰め手順や不詰の情報をGUIに返す方法が定義されていないように思いました。この部分の追加が必要かもしれません。
ところで、ブログだと、書いた文章がどんどん下がってしまいますよね。せっかく翻訳されたのですから、すぐ見つけやすいところに残せたらいいのではないかと思います。
どうせならCSAのページにそのまま載せてしまえばいいのではないかと思いますが、どなたが管理者なんでしょうか。
投稿情報: 暇人 | 2007年1 月26日 (金) 22:31
>香山さん 情報とご意見ありがとうございます。
Romstad氏は、Google Translation を用いてこのブログをチェックしているので、今まで知らなくても、香山さんの書き込みで知ることになったと思います。
>暇人さん
コメントありがとうございます。いつも暇人さんののコメントで、ポイントがつかめた気になります。
CSA は1人一票の民主的会員組織なので、会員外のどこの馬の骨ともわからぬ人間の作ったコンテンツなど載せるのは無理なんじゃないでしょうか。少なくともすぐには。
このやりとりに興味のある方は、それなりにネットリテラシーがある方のはずですので、「USI関連」のカテゴリーhttp://shogi.typepad.jp/brainstorm/usi/index.html
を作ったことで必要十分とは申しませんが、かなりそれに近いのではと。
もちろん、載せていただけるならそれに越したことはありませんが、その場合は、どなたかに翻訳の間違いを正してもらってからにしてほしいです。確実に誤訳はあるでしょうから。
投稿情報: takodori | 2007年1 月27日 (土) 11:55
>A promoted piece is denoted by a '+' character immediately before the piece letter
成り駒は、駒の文字の直前の '+' 文字で示される。<denoteは「示す」程度の意味>
この辺りはチェスの駒の名前を英語(例えばbishopを角とせずにbishop)のまま書いた方が誰でも'B'などとの対応が付けられて分かり易いのではないかと思いますが,いかがでしょう?
>contiguous な
連続した
>are represented by a digit counting the number of squares.
升目の個数の数字1文字で表される。
>再び、黒の駒は大文字、白の持ち駒には小文字を使う。
ここは英語も非対称的になってますが,どちらも持ち駒のはずです.原著者に確認して頂けませんか?
>順番で並ぶようにリストされ
「順でリストされ」でいいような
>、"piles" とか
plies(plyの複数形)です
日本語的には単数形にして「"ply"とか"half move"...」かな
>手数は3になる
「move countは3になる」の方が対応が付き易いかと.
>このフィールドに入力がなくても、
このフィールドがなくても、
>そこには...の4つがある。
4つがダブるので「それらは...である。」の方が良いかと.
>初形配置
普通,初期局面あるいは最初の局面って言いませんか? (将棋ではこれが普通の言い方ならご免なさい;私は囲碁屋なので)
>SFEN 上では
SFENの元の意味を考えると「SFENでは」の方が自然だと思います.
>上記のように記述された
「これまで述べてきた」の方がいいでしょう.あるいは「上で説明した」.
>なぜなら、将棋にキャスリングとアンパッサンによる駒取りが存在しないのは明らかだからである。
なぜなら、これは自明だが、将棋にはキャスリングとアンパッサンは無いからである。
では.
投稿情報: gg | 2007年1 月27日 (土) 23:23
あれ、コメントを入れたはずが消えてしまいました。
> gg さん、重ねてありがとうございました。駒の名前は、そのまま角とさせていただきます。
投稿情報: takodori | 2007年1 月30日 (火) 21:31
plyは単数形になってますが,half movesの方は複数形のままです.後,文字のサイズがおかしくなっているのと,「”」がゴチャゴチャ:)
>なぜなら、将棋にキャスリングとアンパッサンによる駒取りが存在しないのは明らかだからである
字消し線のある文と無い文が同じです.
投稿情報: gg | 2007年2 月 1日 (木) 10:31
あそうそう,駒の名前の件ですが,前の主張は撤回し,英語/日本語両方あるのがベストであると思います.ので,どこかに訳注として対応関係を挟むのが,本文も長くならずに済むし,順当かと.
投稿情報: gg | 2007年2 月 1日 (木) 10:36
> gg さん
half moves を単数形にしました。字のフォントの大きさは、こちらの意図に反して大きくなってしまいましたが、html をいじると当方の知識の問題でさらにバラバラになる恐れがあるので、そのままとします。
駒の名前については、訳注として挿入しました。
投稿情報: takodori | 2007年2 月12日 (月) 23:23
>gg さん
>再び、黒の駒は大文字、白の持ち駒には小文字を使う。
ここは英語も非対称的になってますが,どちらも持ち駒のはずです.原著者に確認して頂けませんか?
原著者に確認の結果、持ち駒であるとのことです。
投稿情報: takodori | 2007年2 月13日 (火) 03:33
> 暇人さん
エンジンから GUI へ詰めの情報を返す件ですが、"If you look closely, this information is already there. Look in
section 5.3, under the command "info". The engine can give numeric
scores by sending commands like "info score cp 139", or mate scores by
sending commands like "info score mate 7" (if the program is winning)
or "info score mate -6" (if the program is losing)." とのことで Section 5.3 にあるとのことです。いかがでしょう。
投稿情報: takodori | 2007年2 月13日 (火) 03:42