将棋
2013年07月02日
7月13日のCLR/H #83で発表します。
先日に当ブログで書いた、将棋の盤面や指し手などを扱えるライブラリ「OpenShogiLib」を題材に話します。
もちろん、将棋の知識をお持ちでない方も多分にいらっしゃると思うので、
- 「将棋は、2人が決められたルールに従って駒を動かすゲームである」ということを知ってさえいれば分かるくらいの前提で話します。
- 将棋の中でもパズル的・プログラミング的要素が強い「詰将棋」について時間を割いて話すつもりです。
私以外の発表では、前半はHaswellやWindows8.1といった、新しくパソコンを導入する上で気になるトピック、後半は札幌C++から私を含め3人が発表します。ぜひお越しを!
【2013.7.15追記】資料を公開しました。
2013年05月24日
詰将棋を扱うプログラムが書きたくなって、当初は将棋の盤面を表現するライブラリから自分で作ろうかと考えていたのだが、いろいろ調べているうちに、OpenShogiLibという便利なものがあることを発見した。
OpenShogiLib - PukiWiki
「GPS将棋」という、第2回電王戦(コンピュータ将棋ソフト5つとプロ棋士5人の対抗戦)でコンピュータ将棋側の一番最後に登場した、コンピュータクラスタ上での計算にも対応した強豪コンピュータ将棋ソフトがあるのだが、OpenShogiLibはその開発元が提供しているもので、将棋の盤面や指し手などを扱う部分を切り出して使えるようにしてあるし、自分で指し手の部分のコードを書いて対局させることもできる。
なお、言語はC++である。
インストールはDebian系(APTが使える)なら簡単で、「sudo apt-get install libosl-dev libosl-doc」ですぐ入手して使えるようになる。
試しにということで、「将棋盤を初期化して、事前に決まった手順で先手後手3手ずつ動かさせ、その盤面を表示する」というプログラムを書いてみた。実行結果は以下の通り。

OpenShogiLib - PukiWiki
「GPS将棋」という、第2回電王戦(コンピュータ将棋ソフト5つとプロ棋士5人の対抗戦)でコンピュータ将棋側の一番最後に登場した、コンピュータクラスタ上での計算にも対応した強豪コンピュータ将棋ソフトがあるのだが、OpenShogiLibはその開発元が提供しているもので、将棋の盤面や指し手などを扱う部分を切り出して使えるようにしてあるし、自分で指し手の部分のコードを書いて対局させることもできる。
なお、言語はC++である。
インストールはDebian系(APTが使える)なら簡単で、「sudo apt-get install libosl-dev libosl-doc」ですぐ入手して使えるようになる。
試しにということで、「将棋盤を初期化して、事前に決まった手順で先手後手3手ずつ動かさせ、その盤面を表示する」というプログラムを書いてみた。実行結果は以下の通り。

2012年11月12日
不定期に将棋を指したり詰将棋を解いたりしたくなるんですよね。
てことで、最近思ったこととか。
●普通に△8四歩とか△3二飛とか△4二飛とすると、▲5五歩とされて自分の角が使いにくくなる。
●だからと言って△5四歩とすると、自分の陣形が作りにくい。
という感じ。この▲5六歩からの中飛車、ちゃんと受けないとすぐにつぶされてしまうのだが、中飛車の常で相手は広く囲わざるを得ないため、こちらも一度相手の陣形を崩せれば一気に攻めることも可能、と感じた。
ちなみに調べてみたら、ゴキゲン中飛車って戦法とのこと。
最近、初手▲5六歩という手をよく見るようになったのですが、この手はいつ頃から頻... - Yahoo!知恵袋
ゴキゲン中飛車 - Wikipedia
ハム将棋の特徴として、駒落ちに対応していることが挙げられるのだが、駒の落とし方が特殊で、二枚落ちなら金を二枚、四枚落ちなら金と銀を二枚ずつ…というように落としていく。自分を二枚落ちにすると、大駒が残っているとはいえ、金がないのは序盤の守備にかなり難儀するので大変。最初は正直なかなか勝てなかったが、角のまわりをうまく玉と銀で固めると勝てるようになってきた。
横3マス×縦4マスの将棋系ゲーム。感想としては
●マスの数が少ないため、戦略(どう手数をかけて優位な状況を作っていくか)というものはあまり必要なくて、戦術(少ない手数での攻め合い)の重要さが格段に増していると感じた。
●駒損の影響が非常に大きい。駒数が少ないから当然といえば当然なのだが。
ちなみにAndroidアプリもある(¥99)のだが、自分の端末(L-04C)だと何回起動しても強制終了となった。初めてAndroidアプリの払い戻し機能を使った。
てことで、最近思ったこととか。
(1) 先手の第一手が▲5六歩
有名な将棋ソフト・金沢将棋のAndroid版お試し版でレベル39・CPU先手を選ぶと、CPUの初手は必ず5六歩(玉の前の歩を突く)になる。これは意外だと思う一方で、結構いやらしい手だと感じた。▲5六歩△3四歩▲5八飛のあと、●普通に△8四歩とか△3二飛とか△4二飛とすると、▲5五歩とされて自分の角が使いにくくなる。
●だからと言って△5四歩とすると、自分の陣形が作りにくい。
という感じ。この▲5六歩からの中飛車、ちゃんと受けないとすぐにつぶされてしまうのだが、中飛車の常で相手は広く囲わざるを得ないため、こちらも一度相手の陣形を崩せれば一気に攻めることも可能、と感じた。
ちなみに調べてみたら、ゴキゲン中飛車って戦法とのこと。
最近、初手▲5六歩という手をよく見るようになったのですが、この手はいつ頃から頻... - Yahoo!知恵袋
ゴキゲン中飛車 - Wikipedia
(2) ハム将棋の二枚落ち
一部の界隈で有名なハム将棋というFlashがあって、これはハムスターと将棋で対戦できるというものである。正直それほど強くないのだが、定跡をある程度使えるし、駒得の判断とかはしっかりしているので、油断しているとやられます。ハム将棋の特徴として、駒落ちに対応していることが挙げられるのだが、駒の落とし方が特殊で、二枚落ちなら金を二枚、四枚落ちなら金と銀を二枚ずつ…というように落としていく。自分を二枚落ちにすると、大駒が残っているとはいえ、金がないのは序盤の守備にかなり難儀するので大変。最初は正直なかなか勝てなかったが、角のまわりをうまく玉と銀で固めると勝てるようになってきた。
(3) どうぶつしょうぎ
どうぶつしょうぎ - Wikipedia横3マス×縦4マスの将棋系ゲーム。感想としては
●マスの数が少ないため、戦略(どう手数をかけて優位な状況を作っていくか)というものはあまり必要なくて、戦術(少ない手数での攻め合い)の重要さが格段に増していると感じた。
●駒損の影響が非常に大きい。駒数が少ないから当然といえば当然なのだが。
ちなみにAndroidアプリもある(¥99)のだが、自分の端末(L-04C)だと何回起動しても強制終了となった。初めてAndroidアプリの払い戻し機能を使った。