Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

rsshogi

rsshogi は、将棋局面の表現、合法手生成、1 手詰め判定、棋譜や定跡の入出力、深層学習向け教師データの操作を提供する MIT ライセンスの Rust ライブラリおよび Python パッケージである。 探索エンジンや学習パイプラインの基盤として再利用できるよう、ヒープ確保を排した高速な局面操作プリミティブと、外部データ形式との厳密なバイナリ互換性を兼ね備える。

主な機能

カテゴリ提供する機能
盤面と合法手SFEN と USI position の解析および出力、指し手の適用と取り消し、探索用途別の合法手生成(Legal / LegalAll / Captures / Evasions / Checks)。
将棋規則と詰み王手とピンの検出、千日手と連続王手の千日手判定、打ち歩詰め判定、入玉宣言勝ちの評価、静的反駁を備えた 1 手詰めソルバ。
棋譜の入出力KIF、KI2、CSA、JKF の相互変換、分岐を含む棋譜ツリー(Record)の編集、PACK および SBINPACK(SBN2)バイナリの圧縮とストリーミング復号。
定跡の参照と構築部分参照の NativeBook、差分保存の NativeBookEditor、やねうら王形式(DB2016 / YBB)と ShogiHome 形式(SBK)の直接参照、編集用中間表現 BookDatabase。
深層学習データHuffmanCodedPos(HCP)、HuffmanCodedPosAndEval(HCPE)、PackedSfen、PackedSfenValue(PSV)、AlphaZero 系自己対局形式 SAZPACK(SAZ2)、Policy ラベル(2187 / 1496 次元)、NumPy 構造化 dtype。
Python 補助機能盤面の SVG 描画、平手および駒落ち 14 種の初期局面定義、USI の info / bestmove / go コマンド解析。

最小コード例

Python では rsshogi(または AVX2 対応 x86_64 環境向けの rsshogi-avx2)をインストールしてすぐに利用できる。

python -m pip install rsshogi
from rsshogi.core import Board

board = Board()
board.apply_usi("7g7f")
print(board.to_sfen())
# => lnsgkgsnl/1r5b1/ppppppppp/9/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL w - 2

Rust では Cargo.toml に rsshogi を追加する。 デフォルトではエンジン向けの最小コア(board、mate、types、movegen)のみが有効になり、棋譜や定跡などの機能は Cargo feature で選択する。

[dependencies]
rsshogi = { version = "1.7.0", features = ["records", "book"] }
#![allow(unused)]
fn main() {
use rsshogi::board;

let mut pos = board::hirate_position();
pos.init_stack();
let mv = pos.move_from_usi("7g7f").unwrap();
pos.apply_move32(mv);
assert_eq!(
    pos.to_sfen(None),
    "lnsgkgsnl/1r5b1/ppppppppp/9/9/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL w - 2"
);
}

目的別の読み進め方

本マニュアルは対象読者の目的に合わせて 4 部構成をとる。

読者の目的参照するパート主な内容
初めて導入して基本操作を動かすはじめにPython / Rust のインストール、Feature フラグの選び方、クイックスタート、実践レシピ集。
Python で将棋ツールや学習器を書くPython API リファレンスBoard、Move / Move32、Record、NativeBook、Policy ラベル、NumPy 連携、SVG 描画など全サブモジュールの API 仕様。
Rust でエンジンやツールを組み込む全体アーキテクチャ / docs.rsクレート構成、モジュール境界、Feature フラグ、および rustdoc による全公開型と関数のリファレンス。
棋譜、定跡、教師データの仕様を調べるデータモデルとフォーマット仕様Record データモデル、KIF / KI2 / CSA / JKF、定跡 3 層モデル、学習バイナリ、SBINPACK、SAZPACK、cshogi 互換表。
内部データ構造と高速化手法を知る内部設計とアルゴリズム座標系と Hand / Move のビット配置、ビットボードと飛び利き、StateStack と Zobrist ハッシュ、合法手生成、1 手詰めソルバ、256-bit 局面圧縮。

外部リンク