すぎゃーん日記

つれづれに

将棋を始めた

ドルヲタを辞めた - すぎゃーん日記 というのを書いてから 約3ヶ月。

なにか新しい趣味は〜 と模索していたところ、@ くんとかに誘われ 周りに将棋をやっている人も結構多いみたいだしやってみるか、と手を出し始めてみた。

3月のライオンとかも読んでて面白かったし 俺もひなちゃんと結婚したいし。


対局はまだまだで ようやく棒銀というのを少し覚えた程度、ぜんぜん勝てない。

まずは とにかく筋トレ、と思って主に詰将棋を解く練習をしている。 3手詰がようやく一通り解けるようになって 5手詰をうんうん唸りながら数十分かけてようやく解く、くらいの感じでやってる。 たった3手や5手 と思ってほぼ総当たりで考えてるつもりでも全然抜けがあってなかなか正解に辿り着けなかったりするし、そういう問題がたった数種類の駒から無数に紡ぎ出されていて すごいなー、と


日本将棋連盟のページには毎日詰将棋というコーナーがあって 毎日1題ずつ詰将棋の問題が掲載されている。 これを毎日cronでChatに貼り付けるスクリプトを書いたりしてみた。

f:id:sugyan:20171011231458p:plain

この世界には.kifという独自の、正直良いフォーマットとは思えないけど とにかく棋譜を表すフォーマットがあるようで 「毎日詰将棋」の各問題にはその問題に対応する.kifファイルへのリンクが貼られている。

これを雑にparseして、その盤面図を表す画像を生成できるようなモジュールを書いた。 最近はGo期なので折角なのでGoで。

github.com

go-shogiとかshogi-goとかだと めっちゃ紛らわしい名前になっちゃいそうだし、シンプルにshogiでいいよね。


んで、これを使って任意の盤面図画像を生成できるWebサービスに。

https://shogi-img.appspot.com/

世の中には CSA標準棋譜ファイル形式 というコンピュータ将棋向けの棋譜フォーマットもあるようで、正直こちらの方がすっきりしていて分かりやすい。 これの開始局面を表すフォーマットを参考に、URLのpathに指定することで任意の盤面を作れるようにしてみた。

https://shogi-img.appspot.com/P-22KA/P+99KY89KE/P+00KI/P-00AL

f:id:sugyan:20171011232516p:plain

という感じ。

kifをparse -> CSAに変換 -> 繋げてURLに とやれば詰将棋の問題を示す画像URLがポンっと投げられる。便利(?)


せっかくなので詰将棋の自動解答とか問題生成もプログラム書いてみたいし、 今日みかけたのでは ARKitとMachineLearningを組み合わせてカメラ上で数独を解くっていうのがあって これの将棋版とか出来たら面白そうだし取り組んでみたいところ。

https://blog.prototypr.io/behind-the-magic-how-we-built-the-arkit-sudoku-solver-e586e5b685b0


あとはまぁコンピュータ将棋とかも素人がどれくらいのものを作れるものなのか分からないけど 出来れば挑戦してみたいなーと思ったり。

無理矢理プログラミングと結び付けなくても普通に楽しめるとは思うんだけどw とにかくネタには困らなそうだし無限に勉強することがあってハマれそうな気はしている。