変同チェックツール
2015.7.5
詰将棋の検討では、自分より能力が上である柿木将棋を信頼しきっているのだが、変同のチェックに漏れがある。自分でも詰パラ発表作で、複数回事故を起こした。
全部の変化を確認するくらい、作者の義務だとは分かっているのだが、「簡単に詰むに決まっている」と思い込んでいる手順に限って変同だったりする。
全部の変化手順を柿木将棋で試せばいい。理屈ではそうだが、手動でやるのは面倒だ。
なので、自動的に全部の変化手順を柿木将棋に解かせるツールを作ってみた。
まだ満足する内容ではないが、自分で考えてもこれ以上良くなりそうにないので、公開することにした。
現状、Windows VistaとWindows7 +柿木将棋IXで動作確認した。Windows8の環境が手近にないので確認していない。たぶん動くと思う。Windows8.1、Windows10でも動作します。
ダウンロードと説明のページ
苦情の宛先
改訂履歴 兼 作成者のたわごと
(2024.2.17)
V2.12を公開した。
制限時間の上限値チェックのバグ修正。
(32767秒より大きいとツールがクラッシュする問題を修正)。
上限値は、864000秒(10日間)にした。
(2024.1.8)
V2.11を公開した。
双玉の打歩逆王手に関するバグ修正。
(作意手順から歩打逆王手で分岐する変化があると、ツールがクラッシュする問題を修正)。
(2022.2.13)
V2.10を公開した。
OneDrive等でファイル共有しているフォルダで実行した際に、ファイルアクセス競合でクラッシュする問題の修正。
全般にファイルアクセスを見直し、特に同じファイルの複数回アクセスを削減した。
フォルダを作成するタイミング等の軽微な差を除いて、外見的な動作には変更なし。
(2021.2.13)
V2.01を公開した。
詰工房Webサイトの移転のため、更新ファイルの配布元を変更。
処理内容には変更なし。
(2019.1.14)
V2.00を公開した。
本質的な内容はほとんど変わっていないが、見た目が変わったこともありメジャーバージョンを変更。
内部的な仕事も含めてInternet Explorerを使用しないように変更し、動作中の表示もDos窓風に変更。見た目は退化?したけど実用上軽量に。
(2018.12.2)
V1.11を公開した。
実行結果のketsugo.kifの分岐部分にコメントを入れた。
(以前にやろうと思って、忘れてました)
(2016.5.25)
V1.10を公開した。
今回のバージョンから、Windows10でも動作確認している。
- バグ修正
新しいバージョンのダウンロード機能で、通信回線が混んでいる場合などに、ダウンロードが完了していないのに完了のメッセージが出て終了する件を修正。
- 機能面の追加・変更
- 柿木将棋がインストールされている環境で、フルパス名がレジストリに設定されているのにDosコマンドから取得できないケースがあることが分かったので、これに対処した。
- 上記に合わせる形で、柿木将棋がインストールされていないと判定した場合でも、メッセージを出した上で環境ファイルを作成するように変更した。
- IEの起動待ち、ダウンロード待ちのときに、ポップアップを出す(かつキャンセル可能にする)ように変更した。
(2016.4.10)
V1.00を公開した。やっとバージョン1かよ、はいそうです。
更新版のチェック処理を高速化した以外は、V0.12から変更ありません。
(2016.2.20)
V0.12を公開した。
V0.11で対応したハズの成駒関係のバグが、直っていませんでした。済みません。
(2016.2.14)
V0.11を公開した。
- バグ修正。
- ネットに接続していない環境でエラーになる問題があったのを修正した。
- 作意手順中で成銀・成桂・成香の手があるときにエラーになる場合があったのを修正した。
- その他。
- 特定のアンチウィルスソフトで、本ツールがウィルスと誤認されるという指摘があった点を修正(具体的にはVBSウィルスで良く使用されているADODBを利用しないことにした)。なお、ウィルスの誤認自体は当方の環境で再現しなかったので、この修正で対処できているかどうか未確認。
- 柿木将棋のインストール環境によって、解答結果で詰め上がりの駒余りを返してこないケースがあることが分かったので、これに対応した(具体的には、解答終了後にResultファイルでなくKIFファイルから詰め上がりが駒余りを判定することにした。これによりパフォーマンスが若干(処理時間で5%程度)悪くなっている)。
- 機能面の追加・変更。
- 検討結果の出力ファイルに、初期配置を表示するようにした。
(2016.1.1)
V0.10を公開した。
- バグ修正。
- まず大きな問題点として、稀な条件で合駒の変化を読み落とすバグを修正した。
これはソースコードとしては単純タイプミスで、合駒を読む前に持駒の枚数を確認するとき、現在でなく2手前の持駒を見ていた。
今まで機能追加の都度に付けたし付けたしをしていたので、今後機能追加をしても問題が起きにくいように、ソースコードを全体的に書き直した(きれいなソースコードにした訳ではない)。
- 棋譜がないKIFファイル(盤面のみ)を入力した際にクラッシュするバグを修正。
- 柿木将棋のフルパス名で、空白2つ以上連続したフォルダ名が使用できなかったバグを修正(そんな人いないかも知れないが)。
- 続いて、機能面の追加・変更。
- これまでは王手放置局面なども全て柿木将棋に処理させていたが、打倒な応手局面だけを処理するようにした。これでかなりパフォーマンスが良くなったと思うので、必要なくなったと思える選択肢(全体処理時間を制限するか、等)を環境設定から削除した。
- 処理を始める前にKIFファイルの中身を確認するようにした。これまでは、例えば手修正したKIFファイルに誤りがあった場合は処理の途中でクラッシュしていたが、そういうケースはかなり減ると思う。
- 受方持駒制限のある詰将棋を処理できるようにした。
- 処理中の表示を分かり易くした(分岐の総数や進行具合の表示、読んでいる局面を1つ1つ表示)。
- フォルダ内のKIFファイルが複数あっても処理するようにした。
- あと、今回の修正で処理中のメモリ使用量が多くなっている。
昔の貧乏人根性で、メモリ使用量の節約とか、つい考えてしまっていたが、よく考えると柿木将棋を使うユーザにはメモリ貧乏な人はいない(と思える)ので、思い切ってメモリ節約を考えないことにした。使うメモリ量はOSのバージョン(Windows
Script Hostのバージョン)によって異なるようである。WSHのバージョン5で、ミクロコスモスを解いて36MBぐらい。複数のファイルを入力した場合は、用が済んだメモリを切り離している積り。
- 今回のバージョンから、柿木将棋9.13で動作確認をしている。
- かなり修正したので、安定性確認のためバージョン1昇格は見合わせ。
(2015.10.4)
V0.09を公開した。
- まず機能面の追加・変更。
- 元々の.kifファイルに入っていた攻方手番の手順(紛れ手順などと、それに付随するコメント。通常詰将棋では奇数手目、偶数手詰では偶数手目)を、結合後の.kifファイルに残すようにした。
受方の手番の手順等は、削除されるのは同じ。
- 打合を直ぐに取って2手長になる変化手順を、変長とは別のフォルダに格納するようにした。この手順は無駄合からの(必ずではないが)分岐の可能性が高く、完全作でも多数出現するのだが、手順の中身を見ないと変長と区別できないのが面倒だったので。
ただし、本当に無駄合なのかどうかは判定していないので、手順の中身は確認されたい。これにより、変長フォルダに格納された手順は、変長(または変別)となる。
また、これに関係して、手順を格納するフォルダ名を少し親切な名称にした。
- あと、バグ修正をいくつか(シフトキーを連打すると柿木の画面が最大化することがある、など)。
- この他はもっぱら、動作中にシフトキーを押した場合の処理の改善。ベストではないが、柿木将棋の中身に触らない限り、この辺が限度のように思えたので。
これまではプロセス不定で「詰将棋設定」という名称のウィンドウが出るかどうかに着目していたのを、柿木将棋プロセスのメインウィンドウを確認するように変更した。これにより、仮に「詰将棋設定.txtを編集中のメモ帳」があっても、ツールの動作には影響なくなる。
実際の動作としては「詰将棋設定」の画面が出て、そのプロセスを強制終了しているのだが、「環境によっては」ほぼ目立たない。
「環境によっては」というのは、自分のPC(Windows Vistaと8.1のノート)では所期の動作をするのだが、同じように動作しない(「詰将棋設定」が最前面にポップアップしてしまう)環境があることが分かったため。複数のネットカフェでWindows7のテストをしているが、同じWindows7でも最前面に出る環境と、出ない環境がある。柿木将棋を再インストールしても同じである。
個々人のPC設定には踏み込みたくないので、当面このままとしたいと思う。仮に最前面に出たとしても鬱陶しいだけで、タイムアウトしない限り最終的な結果に差は出ない。
なお、いずれにせよシフトキーを押していると動作が中断することは同じなので「シフトキーを押さないで」というメッセージは残してある。
(2015.9.13)
V0.08を公開した。修正点は次のとおり。
- これまで柿木将棋Ⅷでも動作するかのような書き方をしていたが、致命的に動作していなかった。完全に思い違いによるもので、最初のバージョンから同じであり、もし困っていた方がいたら申し訳ない。なお、柿木将棋Ⅷ用の機能は追加せず、Ⅸ専用としていく。これは別に意地悪ではない。柿木将棋Ⅸは、Ⅷにあった詰将棋関係のバグを多数修正しており、詰・不詰の別に関係するものも含まれる。よって、全ての詰将棋ユーザは、柿木将棋Ⅸを利用して貰いたいと思っている。
- 柿木将棋Ⅸ専用としたことで、以下のとおり動作の改善を行った。
- 子ウィンドウの非表示、音声の消去は、自動的に行うようにした。なお、これは標準のENVファイルだけがある場合の処理で、フォルダ内にENVファイルを作成した場合には従来どおりとなる。
- ウィンドウの最小化は、レジストリの変更で行うことにした。これにより最小化が確実になり、ツールの動作中に不意にウィンドウが最大化することを防止する(キー操作すれば最大化できるが、次の起動時は最小化する)。
レジストリを変更してしまうので、ツールを動かしながら柿木将棋を使うのには不自由する(不可能ではない)が、まあそんな人は少ないだろう。
- 処理中にシフトキーを押して柿木将棋が停止した場合の対処を追加した。これも思い違いに起因する。柿木将棋の動作中にシフトキーを押すと設定画面が出ると思い込んでいたが、起動時にシフトキーを押した場合に出るのであった。つまり、通常操作でシフトキーを押しながら「詰」ボタンを押した場合と同じであり、このときにOKを押すかキャンセルを押すかで結果が変わるので、これまでのやり方(設定画面が出たら手操作させる)には問題があった。
設定画面が出たときの閉じる処理が見苦しいが、ひとまずこのまま。
なお、シフトキーを押しっぱなしにしている時は新たに柿木将棋が起動しないようにしているが、ルールがシフトキーを判定するタイミングと柿木将棋が判定するタイミングが異なるので、設定画面が表示される場合があること自体は防止できない。
また、設定画面を閉じる処理は「詰将棋設定」というウィンドウタイトルを閉じるので、もし他に「詰将棋設定」というウィンドウがあった場合は不具合が出る可能性がある(ALT+F4でなくESC送出なので、大被害はないと思うが)。
- 複数のKIFを処理する場合の、制限時間の判定にバグがあったのを修正した。
あと余談だが、十分な確認ではないがWindowsXPでも動作するようだ。低スペックPCの方が、動作は安定している(笑)。
(2015.8.29)
遅ればせながら、Windows8.1で動作を確認した。バージョン変更なし。 (2015.8.25)
V0.07を公開した。主な修正点は次のとおりで、内容はほとんど変わっていないが動作はかなり安定してきたつもり。。
- 柿木のファイル解放待ちなどで稀にワークファイルの削除に失敗してクラッシュすることがあったので、これを修正した。
- 処理結果を格納するフォルダを誤って削除した際にクラッシュするので、削除できないような細工を追加した。
- IEの表示内容を、ファイルに書き出してから表示していたものを、表示内容を直接変更するように修正した。
- 前項の変更で、IEの動作がかなり安定してきたので、中断ボタンを止めてIEを閉じると終了するように変更した。これは元々、IEの裏に中断ボタンが表示されて中断できなくなることがあった点への修正でもある。
- アップデートが確認できて処理を中断すると、そのままだ新しいバージョンをダウンロードするようにした(ダウンロードしますか?というダイアログを省略した)。
動作安定性については、この仕様で当分、様子見としたいと思う。
あと、IEの11で動作しないのではないかという一抹の不安があったが、動作が確認できた。
(2015.8.9)
V0.06を公開した。修正点は次のとおり。
- 複数のkifファイルを処理するときに、一部だけ処理結果だけ残っているとクラッシュすることがあるバグがあったので修正。複数を処理するときは、処理結果用フォルダを全て事前に削除(移動、名前変更)して頂く必要がある。
- 一つのkifの処理を開始する都度にInternetExplorerのウィンドウを開いていたので、開いているウィンドウは再利用するようにした。
- 柿木将棋のウィンドウを最小化する処理を追加した。事前に最小化しておくのを忘れて起動すると鬱陶しいので、あまり良い出来のものではないのが追加してみた。処理開始前に一度、柿木将棋のウィンドウが開くのはこの処理のため。作りがザルなので、ほんの1秒だが、この間に変なキー操作をしたりすると変な動作をするかも知れない。また、柿木将棋の古いバージョンで動作するか確認していないが、最小化が失敗するだけで他は無害なはず。
- この他、動作の安定化のためにファイル作成終了を確認する処理などを追加しているので、前のバージョンで順調に動いていた環境では、数秒ではあるが処理時間が長くなる。
- 趣味の問題だが、中断ボタンのOKとキャンセルを逆にした。「中断のときはOKボタン」は、おかしいよね、ということで。未選択時のデフォルトボタンはOKの方に変えたので、誤ってEnterしても中断しないのは変わらない。
今回の修正以外の注意点として、柿木将棋の動作中にShiftキーを押すと、詰将棋の設定ウィンドウを出して中断することが分かった。これはこのツールのせいではなく柿木将棋の仕様のようであるので、処理中はShiftキーを押さないで頂きたい。もし中断しても、キャンセルないしOKを押せば継続して動作する(全体処理時間には影響するので、操作が遅ければツールがタイムアウトすることもある)。マウス操作は問題ない。なので、当初の目標の一つである「処理をしながらYoutubeを見る」には差し支えない。
あと、いつまでバージョン0なのか、ということだが、機能追加が一定程度落ち着いて、かつ安定性が確認できた段階でバージョン1ということにしたい。今のところは、機能追加に並行してバグ修正と動作安定化修正をしており、ソフトウェア作法としては大変よろしくない状態であるため。
(2015.8.2)
V0.05を公開した。修正点は次のとおり。
- 解図に時間が掛る変化手順だと、ツールが正常に動いているのか不安になるので、状況表示の変化を細かくした(1手進むごと、から、1局面読み始めるごとに変更)。
- 処理中断ボタンをInternetExplorer上のリンクからダイアログに変更した。状況表示は1秒ごとにリフレッシュしていて、そのせいで元々クリックしずらかったので修正(というか元に戻した)。
- ドラッグアンドドロップで起動するとき、2つ以上のファイルでも処理するようにした。ただし、同時並行ではなく順次処理となる。
- ツールの更新版が見つかったとき、自動的にダウンロードする機能を追加した。その次をダウンロードするときから使える。
使い勝手以外では、Excel-VBAでデバッグするために残していた機能の削除など(本質的でない部分に色々と機能をつけたせいで、Excelでデバッグするのに無理がある)。Visual
Studioを仕入れなさい、はいそのとおりですね。今のPCはもうリソースがないのでムリ。
(2015.7.25)
V0.04を公開した。修正点は次のとおり。他にも直したい箇所はあるが、重大な問題の修正があるので、他は後回し。使い方の説明は変更なし。
- 下に記載のとおり、「銀成を読んでいない」という重大不具合を修正した。
- 途中経過の表示内容の変更を、分岐を2手進めるごと、から、1局面読み始めるごと、に変更した(細かく表示を変更するようにした)。これは、難しい変化手順に当たったときに、単に時間が掛っているのと柿木将棋がハングアップしているのが区別し難かったため。
(2015.7.21)
「銀成を読んでいない」という重大不具合が発覚した。他にも軽微な不具合があるため、改訂版を週末にアップロードする予定。
(2015.7.19)
おもちゃ箱のトップに紹介されたせいだと思うが、突然アクセス数が増えた。
(2015.7.18)
安定動作の観点をメインに、いくつか修正した。
- 状況の表示や中断処理を、ダイアログ(Msgbox)からInternetExplorerにした。継続する場合にダイアログを強制終了させるのは、やはり筋ワルだったようだ。
なお、これによって、途中経過を表示するかどうかはパフォーマスにあまり関係なくなったので、環境設置パラメータから削った。
- 実行中に生成するファイルを、1つのサブフォルダに集めた。これにより、もし不具合で中断してもフォルダごと削除すれば済む。
現在のバージョンでも、やや安定感に欠ける。ただ、問題が起きるのは「何度も連続して実行するとき」が殆どなので、実用上は使える範囲かなと思える。
傾向として、メモリが多い、64bit機の方が安定している(つまり、自分のVista(32bit)ノートが、一番動作が不安定だ)。よって、自分が柿木将棋に設定している使用メモリ量が多すぎるのだろう。たぶん、メモリを開放し終えないうちに次の柿木を起動しているので、メモリの開放が終わったのを確認してから起動すれば良いのだが、面倒くさいのでやらない。たぶんここに適当なタイマを挟めば安定するように思うが、適当な設定を検討中。
ちなみに、作成者のPCは2008年モデルのCore2Duo(U9300)である(ドライブは全部SSDだけどね)。これでも、そこそこ動くのだから、十分実用に耐えるはずだ。
(2015.7.12)
本質的問題点を含めて、いくつか修正した。
- 「成」が作意手順での応手のときの「不成」読み抜け(早く気付け!)を修正した。
- 環境設定ファイルに記入する柿木将棋フルパスを、.kifファイルの関連付けから初期設定するようにした。
関連付を調べるのにレジストリを見る必要があると思い込んでいて、面倒臭いからやめていたが、よく考えたらDOS窓からASSOC~FTYPEすればよかったのだ。という訳で、環境設定ファイルを新規作成するときに、DOS窓が開いてしまうが、まあいいや。
- .kifファイルを、ドラッグ&ドロップしても動くようにした。
- 処理の中断は「ファイルを削除」という変な形式だったが、ポップアップに変えた。
途中経過表示もポップアップに変えてみたが、いい出来ではなく、何より「検討しながらYouTubeを見る(マシンスペックでかなり違うが)」という目標が達成できない。なので、使わないのを推奨(笑)。
このあたりの不出来さは、Windows APIとかの知識がないため。なんかいい方法ないかな。
- 処理結果の.kifファイルを結合できる。
ただし、元々の.kifファイルに設定されていた分岐手順は削除される。これはいずれ修正したい(今は面倒臭いからやらない)。
なお、結合したファイル(ketsugo.kif)は、.kifファイルの正規フォーマットになっていないようだが、柿木将棋が読めるので手抜きする。
- 処理結果は、.kifのファイル名から生成した名前のフォルダに格納することにしたので、違う名前の.kifファイルなら続けて処理できる。
この変更をしたので、フォルダを削除する前に警告するオプションを削った(同じ.kifファイル名の処理結果が残っていれば、処理を中断する)。
やっぱり「フォルダ削除」というメソッドがあると、何か作り間違ったときに大事故になりそうだし。
- あと、大事なことを書くのを忘れていたが、セキュリティ設定について。
このツールはVBScriptというもので作られたプログラムなので、インターネットでダウンロードしてくればOSから見ればウィルスと同じである。
よって、単にダウンロードしてダブルクリックするとセキュリティ的な警告が出て動かない(もし何もせず動いたら、あなたのPCの設定は大変よろしくない)。
デジタル証明書(¥¥高いし¥¥)がついている訳でもないので、WindowsのバージョンとPCの設定に応じて、使えるための処置をして頂く必要がある。
もしどれもダメだったら、単にクリックしてテキストデータを開いて、メモ帳にコピーして、「適当なファイル名.vbs」で保存する。あるいはこれが一番楽かも。
(2015.7.5)
明らかに「やっつけ感」があるが、とりあえず実用にはなりそう。
いまのところ改善したいなと思っていることは次のとおり。
- 動かし始める前に、柿木将棋を最小化しておく作業が面倒。不可視ウィンドウで動作できればよいが、やり方がよく分からない。
(柿木将棋の機能でできるのか、ウィンドウズの機能でできるのか)
不可視でなくても最小化ウィンドウにすれば、とりあえずは実行しながらYouTubeを見るぐらいはできるので、まあ耐えられる範囲かと。
その他、あまり改善する気がない制約事項。
- 入力するkifファイルは、柿木将棋が出力したものに限定される。テキストエディタで修正したものは、ねんのため柿木将棋を経由することを推奨。
- ツールはなぜかVBScriptで作った。なぜそんなオワコンで作ったかというと、「Excelで変化図作成支援ツールを作ろう(VBA) → 以外と面倒だから柿木起動とから色々自動化しよう → Excelの機能は要らねーじゃん → VBS」という訳。今でも修正作業はExcelでやってるので、VBAとVBSの共通機能しか使っていない。
- なので、ユーザインタフェースとか良くないし、「ファイルを削除すると中断」とか何じゃこりゃ、という感じだが、非同期のダイアログとインタフェースするとか面倒くさいのでやらない。