1. HOME
  2. ブログ
  3. オンライン将棋道場の消費時間データ分析

BLOG

ブログ

オンライン将棋道場の消費時間データ分析

工学部 社会基盤学科 井口健太

Ⅰ.はじめに

インターネットが普及した現在、将棋を楽しむために将棋盤・将棋駒はもはや必要不可欠なものではなくなりました。人々はオンラインで、時間・場所を問わず将棋を楽しめるようになりました。

人々がインターネット上で沢山対局を行うと、その数だけ対局データが蓄えられていきます。こうしたデータは、将棋AIの開発研究などに用いられてきました。将棋AIの実力が既に人間を遥か凌ぐものになっていることは読者の皆さんもご存知の通りです。将棋AIは対局データのうち“棋譜”(どの駒がどこに動いたのか)を学習することによって、実力を飛躍的に伸ばしました。

一般に将棋の研究というと、棋譜を利用したものを指します。しかし実は対局データには、棋譜のほかに“消費時間”(その駒を動かすのにどれだけの時間考えたか)も含まれます。ここでは、筆者は後者の消費時間に着目した分析を行うことにしました。

アマチュアの対局では、持ち時間の使い方がとても重要になります。アマチュアの対局はプロと比べて持ち時間がとても少ないです。途中まで有利であっても、持ち時間が少なくなり判断を誤って逆転負けをしてしまうことも少なくありません。筆者自身も悔しい逆転負けを何度も喫してきました。持ち時間について調べることで、何か対局を行う際のヒントが得られないかと思い分析を開始しました。

Ⅱ.分析手法
環境:Python 3.12.3, Jupyter Notebook 7.0.8

使用サイト:将棋倶楽部24(https://www.shogidojo.net)・・・日本で1番メジャーなオンライン将棋道場

対象ユーザー:分析日(2024/12/23)においてデータのダウンロードが可能であった期間(2024/11/10〜12/23)の中で、レーティング対局を200局以上行なっていた11名

対局データ:上記ユーザーによる対局 合計3609局
この中から、持ち時間設定1手30秒のもの(早指し1、早指し2)を使用. さらに、対局が通常とは異なる形で終わったものは除外(切れ負け、中断、千日手、相手番投了の反則)

分析方法:ウェブサイトからkifファイルをダウンロード、その後pandasのread_csvで読み込み(ファイルを変換することなく、直接読み込めるのがとても便利です)
実際に分析する際には、pandasの中で“/”などのシグナルを利用して、消費時間データを扱いやすいように加工してから使用

Ⅲ.検証1 「不利な側が持ち時間を多く使っている」は本当か?

将棋をする人たちの間では「勝つときよりも負けるときの方が持ち時間を多く使っている」ということがよく言われます。これは、多くの人が「自分自身が形勢が悪くなったときに苦しんで持ち時間を多く使っている」と感じているからだと考えられます。果たしてこれは本当なのでしょうか?

この問いに、簡単な仮説検定を用いて答えてみます。あるユーザーの対局データーを、勝った対局と負けた対局の2つに分けます。勝った対局のグループと、負けた対局のグループで、1手あたりの平均消費時間(考慮時間)に有意な差があるのでしょうか?有意な差が観察できれば、確かに「勝つときよりも負けるときの方が持ち時間を多く使っている」と言えそうです。

行う検定は、2標本間の片側T検定です。帰無仮説は「負けた対局と勝った対局では平均消費時間が変わらない」となります。有意水準は5%としました。

分析を行った結果、分析した11名のうち9名でp値が有意水準を下回り、帰無仮説は棄却されました。多くのユーザーについて「勝つときよりも負けるときの方が持ち時間を多く使っている」ことが分かります。

上のヒストグラムは、あるユーザーの一手あたりの考慮時間を、勝った対局(青色)と負けた対局(オレンジ色)で色分けして示したものです。オレンジ色の山が、青色の山よりも右側にずれていることが分かります。確かに負けた対局の方が勝った対局よりも時間を使っていることが2つの山の位置関係から読み取れます。

※補足ですが、上のグラフは正規分布に類似の形をしており、母集団は正規分布に従っていることが予測されます。このことが検定としてt検定を用いた1つの理由づけになっています。ただし、本当にt検定を使うことが妥当であるのかは明白ではありません。分析した標本は時期が偏っており、無作為抽出であるとは考えづらいです。また、そもそも今回の分析における母集団とは何であるのかを考えることが難しいという問題もあります。

Ⅳ.検証2 時間攻めの状況調査

将棋の持ち時間に関するトピックとして“時間攻め”があります。時間攻めとは、対戦相手にプレッシャーをかけたり焦らせたりするために、自分が全く時間を使わずに着手する行為のことです。相手だけが時間を消費することで、焦ってミスをすることを誘う目的で行われます。将棋を普段しない方はあまりピンとこないかもしれませんが、相手がノータイムでばんばん指してきて、自分だけが持ち時間を使っている状況はかなり焦ります。

私は、この時間攻めがどのような場面で頻繁に行われるのかに興味を持ちました。有利な状況にあるユーザーが、さらに有利を拡大しようとするために用いるのでしょうか?あるいは、不利な側が形成を巻き返そうとして時間攻めを繰り出すのでしょうか?

以下、分析方法です。時間攻めが起こっている状況では、あるユーザーが持ち時間を目一杯使っている一方で、他方のユーザーは全く時間を使わずに指し手を選んでいます。言い換えると、両者が消費した持ち時間の差が大きいターンが連続していると考えられます。このような箇所を分析データの中から探し、一体どのような局面・形勢であるのかを実際の棋譜を見て調べます。

分析データは、時系列データにおける移動平均のような処理(先手と後手でそれぞれ5手分の平均を取る)を施して、変化を滑らかにしています。先手と後手の消費時間の差が33秒以上ある箇所を検出しました。

 

分析の結果、分析データ3609局のうち4局で時間攻めが検出されました。(グラフは一例)

時間攻めが検出された局面の1つを見てみましょう。図は、後手が△6五桂(右から6列目、上から5行目のマス目に桂馬を置いた)と指した局面です。ここから、▲3四歩△同銀▲同銀△同玉▲2六桂△4三玉▲4一飛△5四玉▲4五銀△6四玉と進みます。長手数を進めてしまいましたが、局面を完全に把握する必要はありません。着目するべきは、この手順の間、後手の王様には常に王手がかかっているということです。後手は、放っておくと王様を取られてしまうため、常に何か対応しないといけません。王手を防ぐ手以外は反則になってしまうので、おのずと指し手も限られてきます。結果として、短い考慮時間で指し手を決めることができるため、先手と後手で消費時間に大きく差がついたようです。この対局を含めて、時間攻めが検出された4局の内2局は王手が絡んだものでした。また、局面の形勢は時間攻めの有無にはあまり関係していないようでした。

果たして、この分析は時間攻めという現象を正確に捉えているでしょうか?筆者自身は少し疑問の念を抱きます。今回の分析手法で観察できた現象は、「王手が掛かっているユーザーが、手段が限られているために時間を使わずに指す」というものでした。“時間攻め”ならぬ“時間守り?”といったところでしょうか。当初調べたかったのは「意図的に時間を使わずに指すことによって、相手にプレッシャーをかけてミスを誘う」現象です。2つには微秒な違いがあります。今回観察できた現象も時間攻めには含まれるのかもしれません。ただ理想的には、攻め手側が時間攻めを行なっている現象も観測できればよかったと思います。より良い分析のためには、分析手法を変更する必要がありそうです。

本ブログ記事が、読者の皆様の参考になれば幸いです。

Ⅴ.参考文献
[1] 倉田博史・星野崇宏,「入門統計解析」,サイエンス社,2009
[2] 「Pythonで棋譜ファイル(.kif)から消費時間と評価値を抽出する方法」
https://note.com/agility40/n/na8c601a31ac1 12月10日閲覧

スーパーデータサイエンスアワード2024年度秋学期

ブログ