[2017年1月22日最終更新]
詰将棋創作プログラミング 23 柿木将棋自動化の効果
柿木将棋を詰将棋の創作に活用している人は多い。創作中には何度も柿木将棋で解答や検討をすることになるが、柿木将棋で詰将棋を入力したり解いたり余詰を調べる操作を自動化すると、どんな効果があり、どのぐらいの時間短縮になるのだろうか。
関連情報: 柿木将棋IX 詰将棋創作プログラミング 2 柿木将棋の活用
1.柿木将棋IXの自動化機能
あらかじめ詰将棋の棋譜ファイルを作っておくことが前提になるが、柿木将棋の起動・終了や棋譜ファイル読み込み、解答、余詰検討の操作は下記の機能で自動化できる。なお、柿木将棋IXは最新にアップデートしておくこと。
1)起動オプションを利用した自動化
柿木将棋はアイコンから起動するのが普通だが、Windowsのプログラムなので、コマンドラインから起動したり、バッチファイルから起動することも、そして他のプログラムの中から起動することもできる。そのとき起動オプションで /M と指定されていれば何も操作しなくても指定した棋譜ファイル(詰将棋)の解答をしてくれるし、更に /Z と指定されていれば余詰検討までしてくれる。
解答+検討のバッチファイルを作ってアイコンを置いておけば、棋譜ファイルをそこにドラッグするだけで、あとは操作不要。起動、棋譜ファイル読み込み、解答、余詰検討、ファイル保存、終了まで全自動でやってくれる。詳しくは詰将棋創作プログラミング 2 柿木将棋の活用を参照されたい。
2)詰将棋の連続実行
対局メニューにある詰将棋の連続実行では、指定されたフォルダにあるすべての棋譜ファイルに対して、全自動で解答や余詰検討をすることができる。たくさんの図を柿木将棋に検討させることを「自動創作」という人もいるようだが、それは特にプログラムを組まなくても柿木将棋だけでできるわけだ。
なお、柿木将棋IXには、詰将棋の連続実行以外にも、ツールメニューの棋譜解析の連続実行、棋譜情報の一括設定といった、複数のファイルを対象にした機能が用意されている。
以下の二つは自動化とはちょっと違うが、時間短縮に効果がある機能ということであげておく。
3)柿木将棋の多重起動
難しい詰将棋の場合、柿木将棋の解答、検討に時間がかかることが多い。終わるのを待つ間何もできないかというと、もう一つ柿木将棋を立ち上げれば別の図を解答、検討したりできる。どのぐらい多重に動かせるかはCPUのコア数やメモリ量などによる。
多重に実行したとき注意が必要なのが、柿木将棋の環境ファイルKSHOGI9.ENVや/M・/Zで解答や検討したときの結果ファイルKShogiResult.txtだ。タイミングによって競合すると誤動作する可能性がある。この二つは /E /F の起動オプションでファイルを切り替えることができるので、動かしたい多重度分のファイルを用意しておけば、安全に実行できる。詳しくは柿木将棋IXのヘルプで、高度な使い方-起動オプション を参照されたい。
また、必要なメモリも多重度分搭載されてないといけないので、パソコンの搭載メモリと詰将棋用のメモリ設定をあらかじめ確認しておこう。
多重度にもよるが、個々の柿木将棋の実行時間が単独で実行させたときより長くなることもあるので、解答時間や余詰検討の制限時間の設定にも注意が必要。
4)余詰発見時の打切り
「余詰を調べる」でポップアップされる設定画面に、「余詰検出で中断する」というチェックボックスがある。ここにチェックを入れておけば、余詰検討中、一つでも余詰が見つかったらそこで余詰検討を終了してくれるので、時間を短縮できる。当然、すべての余詰を見つけたい場合はチェックしてはならない。
なお、適当に並べた図は収束辺りがボロボロのことが多いので、調べる順序を「詰み上がり局面から調べる。」にしておくと時間短縮できる可能性が高い。
2.自動化機能による効果
上記の自動化機能により省略できるのは、柿木将棋の起動・終了やいくつかの操作で、1回だけなら数秒レベルの時間短縮で、効果は小さい。しかし、一般に創作途中では多くの図を柿木将棋で検討することになるので、毎回ファイルドラッグだけで操作不要になれば、かなり使い勝手は向上する。
多数(例えば100題)の詰将棋の棋譜ファイルがすでにあって、それをすべて解答、検討したいときは、自動化機能が威力を発揮する。手操作の場合、操作の時間はたいしたことはなくても、100回も操作するのはかなり面倒だし、なにより、柿木将棋が解答、検討しているのを終わるまで待たないと次の詰将棋の操作ができないので、100題終わるまで付きっきりでいなければならない。詰将棋の連続実行を使えば、寝る前に開始しておけば、何もしなくても柿木将棋ががんばってくれるので、起きてから結果を確認するだけでよい。
100題を50題、50題と二つのフォルダに分けて、2多重で柿木将棋を走らせれば、時間も半分ぐらいで終わることになる。
3.創作プログラミングによる自動化の効果
1)創作プログラミングでの自動化の範囲
詰将棋創作プログラミングは、柿木将棋の自動化機能を活用し、更に拡張したものだ。創作プログラミングによる自動化と柿木将棋の詰将棋の連続実行の違いは、解答、検討の操作だけでなく、詰将棋の入力の操作も自動化していることにある。
2)自動化による時間短縮効果
入力の時間は駒数にもよるが、数十秒~数分かかるので、これがほぼゼロになる効果はかなり大きい。
試しに1題(香歩問題29手詰)を入力して、解答、余詰検討して、時間をはかってみた。
起動、盤面編集、解答、余詰検討、終了の操作はいずれも数秒
図面の入力で40秒ぐらい
柿木将棋の実行時間は解答1秒、検討30秒(進行度300、100秒で打切り)
全体で90秒ぐらいのうち、人間の操作が約60秒、柿木将棋の実行時間が約30秒だったので、人間の操作がなくなれば約3倍の高速化になる。
もちろん、この時間は問題によって変わるし、検討にどれだけ時間をかけるかでも大きく変わる。
また不詰の図の場合には結論がでないことが多いので、適当な時間で打ち切ることになるだろう。これは、柿木将棋の起動オプションで /M100 (解答、100秒で打切り)のように指定できる。
3)操作不要になることの効果
連続実行であげたような、多数の図をチェックする場合には、操作不要になること自体が大きな効果になる。人間には仕事もあるし、睡眠も必要なので、長時間になると付きっきりで実行することはできず、全部終了するまでの時間は非常に長くなることが多い。
例えば、2000年に私が11玉裸玉の検証を行ったとき、1000題近い図を検討したのだが、終わるまでに約3か月かかった。幸い新たな完全作が1作見つかったのでほっとしたが、1作も見つからなかったら徒労の3か月になるところであった。
創作プログラミングを始めてから、持駒サーチプログラムの確認の意味も含めて、詰将棋創作プログラミング 3 裸玉全検の可能性で、11玉裸玉について再度検証してみた。このときの実行時間は約16時間だった。もちろん、これがすべて自動化の効果というわけではなく、2000年から2014年でソフトも進歩しパソコンの速度も向上しているなどの要因もある。
なによりも、こういう条件作の検討は、そもそも存在しない可能性もかなりあるので、それに人生の3か月を賭けるのはかなり勇気がいる。2000年のときは、新しい将棋ソフトの解図能力のテストも兼ねて始めたら、やめられなくなってしまったというのが実情であった。しかし、1日パソコンを実行させておくぐらいなら、仮に見つからなくてもそんなに痛くない。
直接の時間短縮の効果よりも、むしろこれが大きな効果で、詰将棋創作プログラミングで新しい試みをいろいろやれているのも、プログラムが完成してしまえば、あとは操作不要で待っていればよいからである。もちろん、出力された図が完全であっても発表レベルの作品はほとんどないので、あとは、人間ががんばっていい作品か判断して自分で納得のいく作品を見つけなければならないわけだが、完全らしい図のみを対象にすれば、この時間もかなり短縮できて、数時間から数日程度ですむことが多い。
4.柿木将棋自動化のすすめ
操作が不要になること、時間短縮できることは、ほとんどの人にとってメリットと思われるので、柿木将棋の自動化機能をこれまで使ってなかった方は、ぜひ一度試してはいかがだろうか。
プログラミングができ、更に自動化するため自分で創作プログラミングしてみたい方は、詰将棋創作プログラミングの連載が参考になると思う。Rubyで書こうとしている方は、詰将棋創作プログラミング 21 サンプルソースコードも参考に。
最近のコメント