tosh1ki/pyogi

View on GitHub
doc/document_warscrawler.md

Summary

Maintainability
Test Coverage
warscrawler
=================

将棋ウォーズの棋譜を収集・解析したい

- 将棋ウォーズの棋譜を収集するための各種関数
- **明示されていない棋譜ページの仕様に依存しているので,そのうち使えなくなる可能性がある.**


# 将棋ウォーズ内部の仕様について
## 将棋ウォーズのrobots.txt
「棋譜をクローリングするわけだし一応 `robots.txt` を確認しておこう」と思って見てみたら全文コメントアウトされていて困った.そのうち編集される可能性が高そうなので,**プログラムを実行する際には注意する**.

[shogiwars.heroz.jp/robots.txt](http://shogiwars.heroz.jp/robots.txt)

## gtype
棋譜に付属している情報で,`gtype` というのがある.おそらく game type(?) の略だと思う.

- `  ` : 10分切れ負け
- `sb` : 3分切れ負け (bullet modeの'b'?)
- `s1` : 10秒指し


## 将棋ウォーズの独自棋譜フォーマットについて
将棋ウォーズではCSA形式に似た独自の棋譜フォーマットを用いている.仕様がわからないので**推測**した結果を以下にメモしておく.

将棋ウォーズでは以下のようなフォーマットを用いている.

    +7776FU,L600    -3334FU,L589  (中略) +2728UM,L200    GOTE_WIN_TORYO

上記の例は10分切れ負けの場合である.この場合,`+7776FU,L600` というのは初手7六歩を指した時点で残り時間が600秒という意味であると考えられる.以下時間が徐々に減っていく.3分切れ負けの場合は `L180` から始まり,10秒指しの場合は `L3600` から始まる.

また,最後の `GOTE_WIN_TORYO` は文字通り(先手が投了し)後手が勝った,という意味であると考えられる.普通のCSA形式であれば `%TORYO` だけで済ませるところだが,将棋ウォーズでは `GOTE_WIN_TORYO` などとしている.

### 終局時の文字列

終局時に出てくる文字列としては,(確認した限りでは)以下のものがある.先手勝ちの場合についてのみ書くが,後手勝ちの場合は `SENTE` の部分を `GOTE` に変えるだけで良い.

- `SENTE_WIN_TORYO` : 後手投了で先手勝ち
- `SENTE_WIN_DISCONNECT` : 後手接続切れで先手勝ち
- `SENTE_WIN_TIMEOUT` : 後手時間切れで先手勝ち
- `SENTE_WIN_ENTERINGKING` : 先手が入玉宣言して勝ち?
- `SENTE_WIN_OUTE_SENNICHI` : 後手連続王手の千日手による反則負けで先手勝ち
- `DRAW_SENNICHI` : 千日手で引き分け

などがある.**「相入玉で引き分け」もあるはず(?)だが確認できていない.**


# 参考文献

- [日本将棋連盟公認 将棋ウォーズ](http://shogiwars.heroz.jp/)
- [CSA標準棋譜ファイル形式 v2.2](http://www.computer-shogi.org/protocol/record_v22.html)