81Dojo

81Dojoのアプリ開発で、これからやりたい事・やらないといけない事がまだまだあります。

細かい仕様改善やデバッグの案件も結構たまっていますが、それは別として今一番やりたいことは「どうぶつしょうぎ専用アプリの、メインアプリへの統合」です。 
3x4
北尾まどか女流がルールを考案された、どうぶつしょうぎ(3x4将棋)は本当に素晴らしいゲームで、現在も様々なデザインに形を変えながら世界中に広まり続けています。(ポーランド、フランスなど。本記事下で紹介。) その素晴らしいゲームを81Dojoに実装する許可を頂き、専用アプリが完成したのが2011年。苦労しましたが、北尾先生との協業でとても良いアプリができ、当時は様々なイベントを開催したり、ネコ型ボットが常駐したりして、たくさんの方にお使い頂き非常に盛り上がりました。今では良い思い出です。

しかし、やはり専用アプリ・専用サーバとして分かれているというデメリットは大きく、イベント開催等が無くなってしまった今ではほとんど人が集まらなくなり、残念に思っていました。
そして先日、「どうぶつしょうぎ」に続き、「5五将棋」「ゴロゴロ将棋」「京都将棋」などにもEXP(経験値)システムが導入されましたが、これらは全てメインアプリ内で遊ぶことが出来ます。こうなるとなおさら、どうぶつしょうぎも統合したいと思うようになりました。

しかし、、、これはとても大変な作業になりそうです。 元々、専用デザイン・レイアウトや、キャッチ・トライなどの特殊ルールがあるために専用アプリ化していたわけで、簡単には統合できません。また、そのためにメインアプリが重くなることも出来るだけ避けたいです。ですが、頑張って実現したいと思います。

ただ、その前に。ひとつ大きな仕事を済ませておきたいと思います。
現在、81Dojoには「国際版」「完全日本語版」の2つのアプリがあります。国際版は21ヶ国語対応(日本語含む)ですが、様々なところに英語が残ります。そこで、日本のユーザをもっと増やすために、本当に何もかも日本語のアプリを別個に作成したわけですが、それ以来、アプリ更新が毎回2倍の手間となり、大変な思いをしていました。
今後、どうぶつしょうぎの統合などの大きな仕事が発生することを考え、まずは国際版と日本語版をひとつのアプリに統合したいと思います。

ということで、現在その作業を実施中ですが、これもかなり大変な作業です。なんとか実現したいと思いますので、応援して頂ければ幸いです。(完成しても、ユーザの皆様にとっては何も変化がないのですが。。。でもそれで今後のアプリ改良がスムーズになるので、とても大事な1ステップです。)

yokai
フランス版 → http://www.trictrac.net/actus/yokai-no-mori-ou-le-petit-shogi-est-sur-les-etals
pojedynek-robotow_002
ポーランド版 → http://item.rakuten.co.jp/nekomado/shogi-044/


今回は81Dojoのレーティング計算式についてご説明したいと思います。

計算式は、81Dojo説明書内の「Rating System」で公開しています。数式自体はどうでもよいので、グラフの方をご覧下さい。
81Dojoでは、レーティングを実数で管理しており(つまり小数点以下があります)、グラフは連続的に変化します。メイン部分の曲線は、標準の確率分布関数に基づいて設計しています。道場内のレーティングは整数部分のみ表示しており、例えば1500.9点の人は、1500となります。(少数点以下を確認するには、ホームページから「アカウント登録・変更」ページにログインして下さい。)

さて、グラフを見ると、とてもおかしな形をしている部分があります。敗者のレーティングが勝者のレーティングより192.23点以上高い場合に、なんとグラフが左右非対称に折れ曲がっていますね。これが当道場のデフレーション防止設計です。
本来レーティングというのは左右対称でなければならず、相対的な棋力に応じてプレーヤーがまんべんなく分布するよう設計されるものですが、それをオンライン将棋での段級位の基準として用いるのは、次の3つの理由により、デフレーションを招くため不適切と考えます。

(1) 「段級位」の意義と整合しない
将棋の段級位は基本的には絶対評価が理想です。一方、レーティングは完全な相対評価であり、自分より下位の相手に負けるとそれだけたくさん点数を失う、というペナルティを与えるシステムです。
例えば、初段の人が三段の相手に指し続けた結果、勝率五割という好成績をあげたとします。この時、「いずれは二人とも二段になる」のが左右対称レーティングです。しかし段級位というのは必ずしもそういうものではありません。絶対的な棋力が下がることはあまりありませんから、「初段の人の方が上達した」と考え、こちらだけを二段に昇段させる(あるいはいずれは三段まで引き上げる)というのが常識的な考え方です。

(2) 過小レーティング登録
それだけではありません。そもそも左右対称レーティングでまんべんなく分布するのは、人の意思が介在せず全くランダムに事象が発生する場合に限ります。実際には人的要素が影響し、2つの問題(この(2)と次の(3))が起こります。
1つ目は、登録時のレーティングが実棋力より低めになる傾向。人間ですから(日本人は特に?)、控え目に申告しようとする意思がどうしても働いてしまいます。落ち着くべき点数に、上からアプローチして負けながら到達するより、下からアプローチして勝ちながら到達したいのが人の性でしょう。そのため、他ユーザのレーティングを下げずに、そういった方を速やかに昇級させる必要があります。

(3) 相手を選ぶ
人間ですから、レーティングを失いたくないという心理がやはり働き、どうしても相手を選ぶようになります。こうなると、無作為の手合を前提とする確率分布関数レーティングは機能しません。
極端な例として、例えば将棋倶楽部24では、2級から7級までほとんど棋力が違わないという現象が起こっています。(実棋力はアマ初段~二段程度。 →下記調査結果参照) この人達が相対的棋力に従ってきちんと分布しないのは何故でしょうか。
それは「2級の国」と「7級の国」という、棋力の変わらない2つの国が出来ている、と表現することが出来るでしょう。2級は2級同士で指して上がったり下がったり、7級は7級同士で上がったり下がったり、同じ棋力であるにも関わらず2つの国が交わることはありません。2級の人が7級と指さないのは、「棋力がさほど変わらない(簡単には勝てない)」ことを知ってしまっていて、それは「割に合わない対局」であるからです。勝っても少ししか点数が上がらないのに、負けたら大きく下がる、これは相手の棋力が本当に自分より低い場合にのみ妥当な条件ですから。(※上記は定性的な説明であり、実際に起こっている事例が100%これに当てはまるとは限りません)

上記3点を考慮したのが当道場のレーティングシステムで、±192点を境に、通常の左右対称システムから非対称システムへの切り替えを行います。
  • 192点差以内では、通常通り、下位者に負けるほど大きく点数が下がる条件下で、実力が近い者同士で切磋琢磨し、上がったり下がったりして頂きます。
  • 192点差を超えてからは、「下位者の勝利は上達と評価し、下位者側を引き上げる」という考え方を除々に強くしていきます。上位者が負けて失う点数は最終的には16点まで小さくします。(つまり互角の者と指して負けた場合に等しい、「ペナルティ要素の無い標準的な1敗」としか見ない)
これにより、定性的には、似たような棋力の人はだいたい200点ぐらいの範囲に集まってくる設計となります。例えば新たに初段の実力の人がたくさん下から入ってきても、皆初段に集まってきますし、ばらけてしまうこともありません。

効果の確認として、81Dojoと町道場の段級位対応を調査した結果を、先日発表しました。(9月6日 お知らせ)
15ヶ月前の調整時と比べて、デフレーションの発生は見られず、同じ水準を維持出来ています。ひとまずは、設計の狙いが機能したのではないかと考えています。ただ、まだ利用人数が少ないため、今後も注意して見ていく必要はありそうです。


↑このページのトップヘ