こんにちは、AaaS Tech Labの樋口です。
私はゴルフが好きです。いろいろな魅力がありますが、データサイエンティストとして特に惹かれるのは、ゴルフが不確実性の中で意思決定を繰り返すスポーツである点です。
ゴルフでは打数をスコアとしてカウントし、なるべく小さいスコアを目指します。初心者ながら、そのスコアを良くする要素は正確性と戦略性のかけ合わせだと考えています。
正確性:狙った場所に打つ能力・分布の狭さ
戦略性:限られた正確性の中で、どのクラブを持ち、どの方向を狙うかを選ぶ力
前者の正確性は練習によって改善していくことができると思います。私自身も、日々の練習により多少はショット自体の成長は感じるようになりました。しかし、スコアは一定で伸び悩んでいます。その原因として、後者の戦略性の部分が不十分なのではないかという考えに至りました。ドライバーではできるだけ遠くへまっすぐ狙う、7番アイアンはまっすぐxxxヤード飛ばすなど、データサイエンス的なワードで言えば点推定で戦略を組み立てていることに気付きました。しかし、現実は思った通りにいかないことの方が多く、もっと確率的・データ起点で戦略を立てることが重要なのではないかと考えるに至りました。そこで今回はデータサイエンスを活用して戦略を最適化するデータドリブンなゴルフ戦略アプリケーションを制作しました。
アプリケーション概要
今回目指したのは、現在地から打てる複数のクラブと方向を自分の実際のショットデータを元にシミュレーションし、その後のプレーまで含めて期待打数が小さくなる選択肢を提示するアプリです。単にピンとの距離を最大限縮めるクラブを選ぶのではなく、OBやバンカーに入る確率、木に当たる可能性、次のショットを打つ場所と、各クラブにおける自分の癖を考慮し客観的に最適な選択肢を提示できるようにしました。
アプリ制作では大きく3つのポイントがありました。1つ目は、フェアウェイやラフ、OB、高低差、木などを表現したコースモデルの構築。2つ目は、クラブごとの飛距離と左右のばらつき等を表現したプレイヤーのショットモデルの構築。3つ目は、その2つを組み合わせてクラブと方向を比較する意思決定ロジック設計です。以降では、順番に各ステップの詳細を説明します。
コースのデータ化
まず必要になるのがコースマップです。今回はGoogle Maps PlatformのPhotorealistic 3D Tilesを利用し、実際の地形や建物、樹木を含む3D空間を表示しました。既存のゴルフアプリの多くは2次元マップですが、本アプリでは打球の軌道のイメージをしやすくすることに加え、打ち上げ・打ち下ろしや、目の前の木が弾道を遮る状況まで扱うため3Dメッシュにしました。
次に、コースの航空画像をグリーン、フェアウェイ、ラフ、バンカー、OBの5領域セグメント分けする作業に移ります。規約の都合で、この作業においては国土地理院のAPIを用いて取得した航空写真を元にセグメンテーションを行ないました。
SAM 3.1等とも比較したうえで、最終的にはNano Banana 2のimg2imgによって分類マスクを生成する方法を採用しました。生成ごとの差はあるものの、うまくはまると各領域を高い精度で塗り分けられます。画質を保つために元画像をグリッド分割して処理し、各ホールのティー位置とピン位置を登録したうえで、フェアウェイからマージンを伸ばしてホール境界も取得しました。
生成モデルによるマスクは完全に決定的ではないため、現時点では自動生成後の確認と補正を前提としています。(上記スクリーンショットは生成、選択、確認、修正のサイクルを高速に回すための専用WebUI)
高低差の取得
次に、コース上の各地点の標高を取得します。Google Elevation APIと、国土地理院の標高データを利用できるD1MAPを比較しました。Google Elevation APIは複数地点をまとめて取得しやすい一方、日本国内では国土地理院のデータのほうが細かな解像度を利用できます。
比較したところ、フェアウェイ周辺の差は比較的小さく、コース外の領域で差が大きくなる傾向が見られました。そこで、D1MAPをメインとし、データを取得できない場合にはGoogle Elevation APIへフォールバックする構成にしました。
ショット分布の計測
トラックマンを使い、9種類のクラブで合計285球を計測しました。練習場では同じクラブを連続して打つことが多いですが、実際のラウンドではショットごとにクラブを変えることがほとんどです。クラブに慣れた状態のデータにしないために、今回は持つクラブを頻繁に変えながら計測しました。
取得できる主な値は、キャリー距離、ランを含む総距離、左右のブレ、弾道の最高到達点です。クラブごとの平均飛距離だけを見るのではなく、これら4つの値がどのようにばらつくかをショット分布として扱います。
シミュレーションロジック
クラブと方向を比較するためには、ボールが落ちた地点の良し悪しを数値化する必要があります。
ショットの結果やルートは無限通りあり再帰的にシミュレーションするのは不可能なため、「そこからホールアウトするまでに、あと何打かかると期待されるか」を割り当てた期待打数マップを作成しました。期待値マップ上での評価は最低限必要な打数、残り距離、長距離特有の追加負担、プレイヤーの平均スコア、ライの悪さを引数とした式で評価します。以下の画像はスコアマップのイメージです。
次に、実際に期待値マップ上で各クラブで打ったときにもっとも期待値が高くなる方向を割り出します。実測したショットは各クラブ30球前後ですが、標準偏差を維持する形で分布をデータ増強し、様々な方向に計10,400球をサンプリングします。この処理をすべてのクラブに対して行い、クラブごとの最適方向と期待打数を算出します。最も期待値の高いクラブを推薦として表示しつつ、ユーザーが他のクラブと比較して選べる設計にしました。
コース状況の考慮
ゴルフコースには傾斜があったり、地面のテクスチャーが場所によって変わったり、障害物があったりとコースの状況を考慮する必要があります。本アプリではそれらの状況を定量的に加味してシミュレーションに適用しました。
高低差: 打ち上げでは必要な飛距離が長くなり、打ち下ろしでは短くなります。詳細な弾道計算を行うと計算量が増えるため、今回は高低差1ヤードに対して実質距離を1ヤード補正する単純なルールで扱いました。
ライ: ライとはボールが止まっている位置や、芝・地面などの状態のことです。ゴルフ場にはフェアウェイ、ラフ、バンカーなど様々な芝のテクスチャーパターンがあります。それらの状況を踏まえてトラックマン計測の分布から調整する処理を加えました。
地面の傾斜: 実際のゴルフ場は平面ではなく、左足上がり/下がり、つま先上がり/下がり、もしくはそれらの組み合わせなど様々な地面の角度が存在し、それらが弾道に大きく影響を及ぼします。そこで、スマートフォンの加速度センサーで計測する傾斜の向きとクラブのロフト角の値を用いてショット分布への影響を計算し補正する処理を加えました。以下動画は、傾斜上でロフト角が異なるクラブで打ったときの差分シミュレーションです。ロフト角の大きいP(ピッチングウェッジ)ではより球が左に出てしまうことがわかります。
VIDEO
スタイミー: スタイミーとは、目の前の木や障害物によって狙った方向へ真っすぐ打てない状態です。シミュレーションの弾道予測が3D Tilesの樹木メッシュに衝突した場合はぶつかったと判定し、その地点でボールを止めます。難しいが前進できる方向に打つチャレンジプランや簡単に場所に一度出す安全プランなどを定量的な期待値で比較して最適なプランを算出できるようにしました。
アプリケーションデモ
以上のステップを経て、以下のアプリケーションが完成しました。
VIDEO
検証
最後に、本アプリを実際のラウンドへ持ち込んで実際にデータドリブンな戦略でコースをまわりました。参考までに過去36ラウンドの平均は108.8、中央値は106です。
結果は、スコア96となりセカンドベストのスコアが出ました。過去のスコア分布と比較すると、良い側の約2.8%に入る結果でした。
もちろん、これは1回のラウンドにおける結果です。天候、コース難易度、当日のショットの調子なども影響するため、本アプリによって平均スコアが12打改善したと結論づけることはできません。しかし、特別調子が良かったわけではないなかでセカンドベストが出たということもあり、かなり効果があるという所感です。
まとめ
今回は、ゴルフコース、プレイヤーのショット分布、期待打数を組み合わせ、クラブと方向を比較するアプリを制作しました。コースのセグメント分けや標高取得、データによるショットモデル、モンテカルロ法による探索をつなぎ、実際のラウンドで利用できるところまで実装できました。
一方で、各クラブの計測数はまだ限られており、力感や打ち方を変えたショットまでは十分に扱えていません。コース分類マスク生成の自動化や、複数ラウンドでの効果検証も必要です。今後はこのあたりの課題にチャレンジしていきたいと考えています。
今回の取り組みで得られた一番大きな変化は、良いショットを一点で想像するのではなく、自分が打ち得るショットの分布を前提に考えるようになったことでした。データドリブンであることは、完璧な答えを出すことではなく、不確実性を認めたうえで、より納得できる選択をすることなのだと思います。
こういった形で、AaaS Tech Labでは、ビジネスの最適化などを目的としたデータサイエンス活用はもちろん、メディア・コンテンツ領域へのAI技術応用や、データを用いた新しい体験の研究開発も進めています。
もしご興味を持っていただけた方がいらっしゃいましたら、worksをご覧いただいたり、contactからお問い合わせください。