将棋クエスト履歴検索β 開発日誌 棋譜ダウンロードへの対応・「ぴよ将棋で開く」ボタン追加

将棋クエスト履歴検索β( http://c-loft.com/shogi/quest/ ) 
の開発日誌です。
9/17~18に追加した棋譜DL機能と「ぴよ将棋で開く」ボタンについて書きます。

前回までのあらすじ
前回の機能追加( https://note.mu/loftkun/n/n6a5a9a41b47b ) によって対局履歴を自前サーバにキャッシュするようになり、過去の検索履歴が見れるようになりました。

将棋クエストの本家WEB版は最新1局(!)、アプリ版は最新30局しか遡れないので、あの時のあの対局!が無情にも消えてしまいます。
しかしこれからはもう安心、履歴検索βで検索しておけば履歴が半永久的に保存されるというわけです。

今回は?
古い検索結果から本家の棋譜再生ページに飛ぶと、棋譜が消されていることがあります。本家の棋譜はだいたい1ヶ月くらいすると消されてしまうものがあるようです。
せっかく履歴検索βで履歴を保存するようにしても、本家の方で棋譜が消されてしまうのでは、検索結果の価値も半減というものですね。
そこで、棋譜も自前でキャッシュすることにしました。

キャッシュ方法の検討
将棋クエストの棋譜の一般的な取得方法は、1 棋譜ページに遷移、2 Exportボタンを押下、3 JavaScriptがcsa形式文字列を生成、4 生成されたcsa文字列をクリップボードにコピーするなりファイルに保存するなりして活用する というものです。

JavaScriptが動作しないとcsa文字列が出力されないため、棋譜ページのHTTP GETレスポンスからはcsa文字列は手に入らないという課題があります。
今回はブラウザをプログラムから操作して1~4の処理を自動化するアプローチにしました。

コラム:他の将棋サイトは?
・将棋ウォーズ
 棋譜ページレスポンスに棋譜が書いてある。
・81Dojo(WEBシステム移行前)
 検索APIが存在し、対局者名と期間をPOSTすると棋譜が返ってきた。
 WEBシステム移行後は試していないが、検索フォームが堂々と公開されて
 いるので、検索フォームがPOSTしている通りにPOSTすれば
 棋譜にありつけることだろう。
 ただしそのアカウントのマイルが消費される。即ち回数制限がある。
 また、81Dojoは外部ツール等によるDL等は禁止とどこかに
 明記されていたと思う。

キャッシュ方法の実装
使用したのはCasperJSという、JavaScriptで操作を記述できるブラウザです。GUI画面を持たないブラウザに分類されます(ヘッドレスブラウザと呼ばれています。)いちおうGUIを表示する方法もあります→ http://c-loft.com/blog/?p=2546

将棋クエストは棋譜ページにたどり着くまでに独特のページ遷移がありますよね(あれはなんなんでしょう)。CasperJSもブラウザなので、やはり画面遷移待ち時間は発生しています。

そのため、csa文字列を得るのに少々時間がかかる(1ファイル2secくらい)のがちょっとした課題です。履歴検索結果を先に表示し、棋譜のリンクはキャッシュ完了まで表示しないのはこのような都合があってのことなのです。今後改善したい点ですね。

ぴよ将棋で開くボタンを設置
最近勢いのある将棋アプリ「ぴよ将棋 」( http://www.studiok-i.net/android/ ) で開くボタンを設置しました。
設置方法は http://www.studiok-i.net/android/piyo_shogi_link.html に記載されています。

1 将棋クエストで指す
 ↓
2 履歴検索βで検索
 ↓
3 ぴよ将棋で棋譜解析

という連携が便利です。

また、ぴよ将棋公式サイトや、ぴよ将棋アプリ内からも履歴検索βにリンクを貼って頂いています(PONTAさんありがとうございます。)

まとめ
・棋譜のキャッシュに対応したことにより、
 履歴検索βで履歴を検索しておけば、半永久的に棋譜が保存されるように
 なりました。
・また、ぴよ将棋で開くボタンを押すと、直接ぴよ将棋で棋譜を開いて、
 解析することができます(shogi.ioへの投稿もできますね)。
日々の検討にどうぞご活用下さい。


関連つぶやき








この記事が気に入ったらサポートをしてみませんか?