Yuigo・ん・・・湿っぽい

モルック、システムエンジニア、その他趣味。大学生のころから使っているので、昔の記事は恥ずかしいし今の思想とは異なっていることが多いです。

モルックのデータ分析についての話題を羅列する

全国のモルックファンの皆様、おはようございます。Mölkky clan jaja patatasのharuspringです。

今日はモルックのデータ集計・分析まわりの話題を、思いつく限り色々書いていこうと思います。それぞれの話題には深く突っ込まず、話題を提供するような感じです。

言いたいこと

  • モルックはデータ分析をしやすい構造だ
  • なぜデータ分析をするのか
  • モルック関東プライムリーグでのデータ集計・分析例の紹介
  • スコア集計アプリとの連動構想
  • 既存のスコアアプリ「モルログ」の使い勝手レビューからみる、理想のスコア集計システム化
    • 特定の宗派に偏らないように用語や現象、分類を扱う
    • プレーそのものを優先し、集計が妨げにならないようにする
    • アプリ内外にデータをインポート・エクスポートする仕組みが欲しい
    • ちなみに、レート戦ってモルックで可能なのか?
    • スイスドロー方式の大会を推奨する

軽く考えただけでも多いですが、なるべく簡潔に書いていきますのでよろしくお願いします。

モルックはデータ分析をしやすい構造だ

僕は度々モルックのデータ集計・分析を試みていて、現在は「モルック関東プライムリーグ」という僕が運営しているリーグ戦のスコアシートをもとに分析を進めています。

過去には個人での練習をブログにまとめています。今もここが土台になっています。

m4usta13ng.hatenablog.com

m4usta13ng.hatenablog.com

なぜデータの分析を進めているのかというと、集計がしやすいから、ということが一番の理由です。

スポーツの中で他に集計がし易いものと言えば、身近なものであれば野球が上がるでしょう。野球の特徴は1つ1つのプレーを区切ることができること、そしてプレーがパターン化しやすいということにあります。代表的な例で言えば打率や出塁率防御率といった基本的なところとともに、OPSという指標が挙げられます。

これはヒットとフォアボールを足した「出塁率」と、通常のヒットよりもツーベースやホームランといった長打がより評価される「長打率」という指標を足し合わせたもので、ヒットのみが対象となる打率よりも攻撃での貢献がわかりやすくなるというものです。詳しくはリンクやググってみてください。

keisan.casio.jp

このOPSもまだまだ基本的なもので、野球好きの間では守備に関する指標や総合的なチームへの貢献度を示す指標、ストライクゾーンのエリア別打率、ピッチャーの投げるボールの回転量など、かなり多くの指標があり、様々な観点から選手を評価し、何が勝利に必要な要素なのかということが日々研究されています。

方やデータ分析が比較的しづらいのはサッカーだと思います。サッカーも分析自体はされていますが、常に22人が動き続けること、プレーのパターン化が野球に比べ難しいことから、データが取りづらい、取っても分析に繋げづらいといった面があると思います(それでも研究を進める専門家やスタッフは尊敬の対象です)。

例外としてeスポーツはビデオゲームのデータが蓄積ため、圧倒的に分析はしやすいと思います。まあちょっと種類が違いますね。

といった感じで集計しやすいスポーツとそうでないものがありますが、モルックに関しては明らかに野球寄りと言えます。「プレーに区切りがある」「プレーがパターン化できる」という共通点がありますね。そのため、僕のような素人でもデータをあつめることによってそれっぽい結果を得ることが出来るのです。

なぜデータ分析をするのか

では、なぜデータを集め、分析するのでしょうか。その答えは、「良いとされている戦術の裏付けを取る・もしくは反論する」ためにあると考えています。

モルックはまだまだ競技としては黎明期にあるスポーツですが、現状でも多くの戦術的な定石が積み上がっています。代表的なものでは、

  • ブレイクは力強く、スキットルをバラしたほうが良い
  • 相手に取られないようできるだけスキットルを遠くに押し込んだほうが良い
  • 48点にするとスムーズに勝ちやすい
  • 4人チームだと2番がエース格になる
  • 先攻は絶対的に有利

などといったものです。これらはそれぞれ議論がありますが、どれもある程度の説得力があるとされている言説として伝わってくることが多いです。

ですが、これらの定石が本当にその通りなのかということになると、今まで証拠(エビデンス)をもって説明されてきたことはなく、どれも選手それぞれの印象論がベースとなっています。

モルックが競技として成熟して戦術面のレベルを上げていくためには、これらについてエビデンスを検証し、その通りなのか、それとも印象だけで実際にはそうではないのか、ということを調べていく必要があると感じています。

そして、そのための分析は(モルックの性質上)そこまで非現実的なものでなく、条件を揃えてデータを蓄積していくことで解明されていくだろうと考え、プライムリーグでその一部を実践しています。

モルック関東プライムリーグでのデータ集計・分析例の紹介

現在「モルック関東プライムリーグ」で行っているデータ集計や分析の事例について紹介します。

プライムリーグでのスコア集計

プライムリーグでは全試合のスコアシートを対戦したクラブに提出してもらい、そこから1投1投を集計しています。

その集計した内容が以下のシートに記録されています。

docs.google.com

スコアシートは以下のような画像で提出されます。特殊な書き方はせず、いつものモルックのスコアと同様です。

そこから1投ずつ、以下の要素を集計します。

  • 試合ID
  • 何セット目か
  • 何ターン目か
  • 所属クラブ
  • 誰が投げたか
  • 投げる前の得点
  • 投げた後の得点
  • 投げた結果(狙い通り=ヒット、狙い通りではないが何かしら点を取った=Not ヒット、フォルト)
  • 投げるときにフォルトは蓄積されていたか
  • このセットでは先攻だったか後攻だったか

などの要素です。

これらをまとめて、後は選手別、所属クラブ別、リーグ全体といった単位別に集計したものを適当な数式でまとめておきます。

プライムリーグのスコア分析

上記でまとめたデータから、欲しい結果を求めていきます。単純なものでいうと選手別・クラブ別のヒット率、フォルト率、平均得点、先攻・後攻別の勝率などが出せます。

さらに、集めている要素を使って、以下のようなデータを出すことも可能です。これらはプライムリーグの公式Twitterにも載せています。

いずれもそこまで複雑なものではありませんが、意外と業界内では取り上げられなかった観点なので、個人的にも発見が多かったです。

他にもまだまだ見たいものはあるので、スキをみて検証していきます。

プライムリーグで集計できていない観点

プライムリーグのスコアからはわからないものがあります。それが技術的な観点です。例えば以下はスコアから読み取ることはできません。

  • 目標スキットルの距離、角度
  • 使用した技(縦投げ=バーティカル、バックハンド、サイドバイサイド、ステップスロー、ロブ…)
  • パワープレー(スキットルを遠くに押し込むプレー)で、どのくらい押し込んだか

などといったものは記録していないので、集計はできません。ですが現状は集計する方針もありません。

もちろん欲しいデータではあるし、戦術面でも検討材料として必ず有効になることは間違いありませんが、現状では選手自身がプレーに集中してもらうことを優先しています。プライムリーグはあくまでモルックの技術を高めるためのリーグなので、副次的な要素であるデータ集計は限られた範囲の中でやっていくことにしています。さらに、今持っているデータでもまだまだ検討することはできそうなので、まずはそこを掘り尽くすことが優先です。

プライムリーグのデータがなぜ有効なのか

あとから考えたことなので狙ってはいなかったのですが、プライムリーグのデータは集計対象としてかなり有効で「キレイな」データだと思っています。

他の大会や練習会などは以下のような要素がデータとしてのキレイさを妨げてしまいます(もちろんデータのためにやっているわけではないので咎めるわけではないです)

  • 予選、決勝トーナメントなどラウンドごとに対戦形式が違う(2チーム戦や3チーム、4チーム戦になったり、得点重視になったり、セット数重視になったり勝利条件もそのときごとに違う)
  • 勝ち上がった人や沢山参加した人のデータのみ集計されるので偏りが出る

といったところが代表的です。一言でいうとそのときごとに条件が違ってくるため、同じ条件で結果を比較することが難しくなり、無理やり結果を出してみても説得力が薄かったりします。

ですがプライムリーグはすべての対戦形式が同じであるため、データとしての説得力が出るというわけです(まあ会場がバラバラだったり、課題はありますが)。

だからプライムリーグのデータをまとめるのは楽しい、ということになります。現状でも2000投以上のデータが溜まっており、シーズンをまたげは通算の成績も取れるようになったりするので、選手個人としても目標を立てられるようになったり、強いクラブの傾向から戦略面の改善を建設的に検討できるようになると思います。

まあ選手自身が全員データを重視しろ、というわけではありません。選手はプレーの技術的なところ、精神的なところなどデータに上がってこないことも考える必要があり、そこにデータの観点を載せていくのは大変なことだと思います。なので、プロスポーツでも選手はプレーに集中、アナリストやスタッフがそこにデータの観点からアドバイスをする、という役割分担をすることが定着しています(中には自分で研究するタイプの選手もいますが、そういった選手のほうが必ずしも高い成績を残す、ということは相関しません)。

また、集計によって出てきた数字が選手の能力や強さを示すのか、というとそうではないと思います。例えばモルックのヒット率は大まかには「狙い通りプレーができた」という主観的に判定されますが、これは「簡単な投擲を10回投げて8回成功させた」場合は80%、「難しい投擲を10回なげて4回成功させた」場合は40%ということになりますが、その内容を鑑みるとほぼほぼ同じような貢献度になることが推測できます。つまりは投擲成績は実力だけでなく、チームとしての戦術の選び方の傾向やプレースタイルも含めた数字になっていることが多く、単純に並べてこっちのほうが強い!と断定するのは危険だということを示しています。なので取扱い注意、比較するなら「過去の自分」と「今の自分」をまず比べることをおすすめします。

スコア集計アプリとの連動構想

これはまだまだ実現が遠いのですが、いずれはスコア集計用のアプリで取ったデータを分析基盤にスムーズに連携できるような仕組みができると、より多くの人がデータ集計に協力でき、より沢山のデータが蓄積されるようになると考えています。単純に言うとデータは沢山あればあるほど良いので、こうした基盤やシステムができるというのは集計効率にとってかなり重要な要素です。

既存のスコアアプリ「モルログ」の使い勝手レビューからみる、理想のスコア集計システム化

最初に言っておくと「not for me」って感じでした

そんなことを考えている中で個人的に話題に上がっていたのが「モルログ」というWebアプリです。そのなの通りモルックの試合結果を記録し、後から履歴を見ることができるなどの機能があり、僕の目的にも近いと思ったので、机上で使ってみることにしました。

https://www.mollog.jp/

モルログをテスト利用してみる

モルログでは会員登録して利用します。ログインすると以下のような画面。

ここからとりあえず「通常戦」を選びます。

対戦前の画面でルールや参加者を設定できます。とりあえず1ゲーム(セット)勝負、2人戦でスタートします。

投擲前の画面です。投擲前に狙いや戦術的な意図、技を選択するようです。

この段階で難しいな~と思ってしまいます。理由としては大きく2つあって、1つは「毎回これを入力する面倒さ」、そして「それぞれの用語について馴染みがない」ということです。

毎回入力する面倒さ

モルログでは毎回投擲前に画面の項目を選択する必要があるのですが、普段はやっていない作業なので面倒になります。細かく言えば、1投目はブレークなんだから「複数本」に決まってんだろ、とかのツッコミは出てきます。普段の試合よりも倍以上の時間がかかりそうで、スコアを集計できる利便性を天秤にかけると微妙なところです。

それぞれの用語について馴染みがない、合意がない

画面に出てくる用語なのですが、自分としてはあまり馴染みのないものが多くちょっと入力に困りました。

例えば「加点」といっても色々あって、近くの8点なのか遠くの12点なのかということでも同じ加点にはまとめづらく、また終盤38点になったときに1発で12点を狙うのか、4→8点に分けるのかという選択肢も加点にごっちゃになってしまうのか、というのは疑問です。

「飛ばし」「寄せ」というのもそれぞれディフェンスの選択として用意されていると思うのですが、だったら「ディフェンス」にまとめてよくないかとは思いました。そのうえで小項目としてそれぞれを選べるようにすればいい、といった感じ。また意図は1つのみ選択できますが、実際の試合では複数を兼ねる場合もあると思います。

「狙い」についても、「がしゃ」は「複数本」と同じでは?と思っています。アバウトなのかきっちり本数まで指定する感じでしょうか。

「技」に関しても難しいです。「なし」というのはストレートのような通常の投げ方だと思います。ただ技に「なし」という名称はないのでそれなりの名付けをするべきです。

また「技」についても複数を選ぶことはできないので、複数を兼ねる場合は選び方が難しくなります。そして「投げ方」と「技」が違うところにあるのは分かるは分かるんですがう~~んとこれでいいのか判断しかねます。

さらに「カッサ」や「コツ」、「助走」などは一部の選手の間でしか共通言語化されていない用語なので、こういった言葉をさも平然にアプリに採用しているとなると、あまり使う気にはなれません(個人的にはこういうひねりのない、芸のない用語は使いたくないし同意したくないです)。

こうしたそれぞれのポイントをまとめていくと、「合意のない言葉が採用されているな」という感想になります。モルック業界で広く共通言語として通じる言葉であれば良いのですがそうではないし、最初の方で書いたパターン化の観点でいうと、こういったパターンの分け方も普及していないので、違和感に繋がってしまうというわけです。

言い換えると「宗派性が強く出ているな」と思いました。広く多くの人に使ってもらうつもりなら、もっとプレーンに、誰にとっても理解しやすい形にするか、気づかれないように内部的にデータを分解し記録していくという作業をすべきだと思います。

まあこんなことを早速書いてしまいましたが、入力を完了して次に進みます。

投擲中は以下の画面が出てきますが、正直いらないクッションです。手順的には直接結果入力の画面を出せばいいし、1回分無駄な手作業が発生しています。

次に進むと結果の入力画面に移ります。得点と「狙い通り」なのか「狙い外れ」なのかを申告します。まあここは他のアプリとほぼ同じですが、欲を言うと初期状態で「0」に合わせてほしい(フォルトしたときにすぐに押せる)、最初に聞いたのに1本だけのシングルヒットか複数本ヒットなのかを入れる場所がない、といったツッコミどころは出てきます。

入力が終わると次の人に交代して、同じ手順を繰り返します。

この画面は毎回画像が変わるお楽しみ要素的なやつかと思ったのですが毎回コレなので、いよいよ意味がなくなってくる気がします。

テストで打っていると、「フォルトが溜まってきたときのリスクのバランス感とかも入れたいんだよな…」とも思い始めます。

50点になると試合終了です。

試合ログからスコア表を確認することができます。現実のスコアシートに寄せつつも、それぞれの選択した要素を記号として付与している感じです。ここらへんは表現が難しいところですね。

試合後、成績表のメニューに移ると、過去の試合データを見ることができます。

履歴が勝手に溜まるというのはアプリを使う利点でありとても良いと思います。

ちなみに「画像ダウンロード」を押すと、表示されているそのままの画像がDLできます。

使ってみた感想

上に書いた感想としては、

  • 用語や分類の合意が取れていないので違和感、宗派性が強い
  • 紙で書くときよりも時間がかかる構造になっている

といったものが強く印象に残りました。一部のコミュニティに限られているという点では以下のような記載も事実ではない(一方的な主張)なので、モルック業界全体の合意に取られると困るなあといった感じです。

スコア集計システムに欲しい要素

僕がスコア集計に求めるのは、上以外だと以下のような要素です。

一括入力・一括エクスポートが出来る

スコアを入力しながらプレーすのは煩わしいので、終わった後にまとめて入力するといった機能があると良いと思いました。ただ、終わった後だと細かい戦略などを覚えていないので難しいところではあります。やはり紙ベースで入力し、あとからそれをもとに入力する感じでしょうか。

発展させると、GoogleスプレッドシートExcelで一気に入力したものをアップロードすると複数試合分が一気に登録される、というものがあると、大会を運営しながら入力したい、練習中は練習に集中したいといった要望に応えられます。

最高なのは手書きのスコアを写真に撮ったらOpenCVあたりで画像分析して自動登録してくれる機能ですね。スコアシートのフォーマットを固定したり解析の精度といった問題はありそうですが…

データの出力も同様で、一気に複数試合分のDLが出来ると便利な場面は多いです。

データ分析に使いやすい形でエクスポート出来る

現状は画像形式でのスコアDLなので、これをデータ分析の材料として使うには、手作業での転記が必要になり、大量のデータをスムーズに扱うことはできません。

多少形式やルールが異なっていても、文字列だけで構成されたテキストファイルの形式であれば、コチラがわで取り込んだあとに加工することによって自由に集計し分析を進めやすくなるので、こういったデータを蓄積するたぐいのシステムにはつけて欲しい機能です。

さらには現状のアプリの作りでは難しそうですが、何の大会なのか、プレイヤーの所属チームはなにか、会場はどこか、などの項目をマスタ管理することによって紐づけやすくなると思います。

とまあこういった感じで、僕がスコア集計システムに求めるのは、データのやり取りが自由に出来ることと、プレーと集計作業を分離できること、用語や概念が広く伝わっている共通言語に限られている、といったところになります。

ちなみに、レート戦ってモルックで可能なの?

今回僕が急にこういったブログを書いた経緯ですが、モルログが以下のような大会を企画しているのを見たからです。

モルログに新しく追加されたレート戦という機能を用いた大会のようです。

レート戦というのはオンラインゲームの対戦ではよく聞かれますが、対戦成績によってレート(またはランクポイント)といったような数字が上下して、勝ち続けるとどんどん上がっていく、負けると逆といったようなものです。

モルログではレート戦というメニューが追加されており、その結果によってサイト内のレートも上下します。

それが大会として採用されるということなので、そもそもレート戦を理想的な状態で施行できるのか?ということを考えました。

僕がイメージするレート戦やランクマッチは、いくつかのゲームの共通点を抜粋して以下のようになります。

  • ランダムな対戦相手とマッチングし対戦する
  • レートやランクが近い、つまり実力が近い相手とマッチングする
  • 勝敗の他に内容もレートの上下に加味される
  • 最初はレートがつかず、数戦から数十戦のランク認定マッチを経てスタートするランクが決定する(いわゆる認定戦。強い人は最初から高いランクになることで、実力差がありすぎる対戦が生まれることを避ける仕組み)

といったものが挙げられます。レートの計算はゲームによってはかなり複雑に行われていることがあるので、どのように実力を数値化するのか、というのは中々に難しい課題に見えます。なおこういう要素をモルック、モルログで満たせるかというと、

  • 対戦相手は選べるっぽいので、ランダムではない。離れた人とはもちろん対戦不可
  • 対戦相手が選べるっぽいので、実力差がある相手と当たってしまうことがある
  • 内容はどのくらい加味されるかは不明
  • ユーザー登録したらいきなりランクが設定されたので、認定線はない?

といった感じです。やっぱりランダムなマッチングによってレートの正当性や健全性が保たれると思っているので、この形式でさあ腕試しともいいづらく、前述の手間を考えると参加はし辛いなあと思ってしまいます。

そういえばこの前練習した団体さんは内部でレートの仕組みを作って、仲間内のDiscordで運用しているということでした。まあ身内だけでやるなら全然ありなんですが、さもモルック選手が沢山参加しているみたいな雰囲気でこういう仕組みを作られるとめんどいな~というのが正直な感想です。

関係ないけど

関係ないですが大会の画像だけ見て、色々考えました。僕はこういうのをみたときに一旦「不正ができるか」を考える癖があるのですが、

  • 架空のアカウントを作って、そいつに勝ち続ければレートを不正に上げられるのでは
  • 負けそうな相手とは徹底的に勝負を避ければいいのでは
  • 予選は会場が用意されるわけではなく各自で自前で準備してレート戦をやるだけなのに、なぜ予選だけのエントリー費が必要なのか
  • というか予選通過できそうだという確信が取れた段階で締切直前にエントリーすればいいので、予選と本戦でエントリーを分ける必要があるのか
  • 複数アカウント運用とかアカウント代行とかはオンラインゲームではBAN(アカウント停止や退場)の対象だけど、そういった対策はしているのか

などといったことをとりあえず考えてしまいました。完全に癖ですね。

まあこういうレートとかランクとかを見て思う他のことは、そこまでして強さのランキングを作りたいのかということです。

レートが上がったり下がったりすること自体はモチベーションになりますが、本質は別のところにあるよという話がしたかったです。

スイスドロー方式

実力が近い人に当たる、ランダムにマッチする、という要素を部分的にも実現するなら、大会の進め方として「スイスドロー方式」というものがあります。

esports-world.jp

ざっくりいうと勝ち星が同じ人同士でマッチングするというルールが採用されているので、参加者に委ねるモルログのレート戦よりも、実力が近い人を機械的に当てることができます。

画像のようにキレイには分けられませんが、勝ち星が同じでなくても近い人で当てることによって、ある程度の正当性を保てると思います。で、上位N名を決勝大会に進出、というようにすればだいたい目的は達成できます。デメリットとしては、マッチングした人同士での日程調整が大変ということでしょうか。まあそれに対しては、事前に参加出来る日程を選手自身が提出し、その条件下でマッチングを作っていけばいいと思います。そこに参加できなかったらその選手の不戦敗にすれば運用可能です。

まあ超個人的な理由としては、プレーをしながら土がついている手でスマホを触りたくないな…wというのもあります。