現在地: 01 / 実績 — SwingNote

CASE 02 / APP

SwingNote — AIゴルフスイング分析アプリ

スイング動画をサーバーに送らずスマホの中で分析し、コーチング文を書くAIは自社で運用しているゴルフアプリです。

分野
AIゴルフスイング分析
対応
iOS・Android(1つのコード)・Webポータル
言語
韓/英/日
状態
両ストアで公開・運営中
SwingNoteの画面2枚 — スイング計測値とAIコーチングのフィードバック(韓国語画面)

概要

概要
スマホで撮ったスイング動画からテンポ・頭の上下動・肩の回転を計測し、AIが区間ごとのコーチングと練習プランを作成。練習・ラウンドの記録まで1つの流れでつなぎます。
担当
企画から公開・運営まで、すべて自社
技術
React Native(Expo)・MediaPipe(端末内の姿勢推定)・Spring Boot(WebFlux)・MongoDB・RevenueCat・Paddle・Kubernetes

スイング分析アプリをいちばん簡単につくる方法は、動画をサーバーにアップロードして分析することです。ただ、そうすると利用者が増えるほど動画の転送・処理コストも増え、他人の体が映った動画をサーバーに溜めることになります。SwingNoteは、最初からこの2つを避ける構造にしました。

分析はスマホの中で行います

課題
動画をサーバーで分析すると、利用者の数だけ転送・処理コストが増え、体が映った動画をサーバーが保管することになります。無料でたっぷり使ってほしい機能なのに、使われるほどコストが積み上がる構造でした。
選択
姿勢推定モデル(MediaPipe)をアプリに組み込み、スマホの中で動かします。サーバーに送るのは計算済みの数値だけで、動画は端末の外に出ません。テンポはバックスイングとダウンスイングの時間の比率、頭の動きは胴体の長さに対する割合で測り、カメラとの距離が違っても比べられるようにしました。
理由
モデルをアプリに同梱しているので、インターネットがなくても分析できます。Androidの実機(Galaxy S10 5G)で、機内モードのまま分析が完了することを確認しました。3.2秒のスイング動画の分析にかかった時間は約5秒です(2026年8月29日)。同じ動画なら何度分析しても同じ数値が出るべきですが、最初は端末の負荷によって結果が変わっていました。再生しながらフレームを取り出す方式から、一定の間隔でフレームを読み取る方式に変え、同じ動画の結果が最後の桁まで一致するようにしました。肩の回転は2Dの動画では正確な角度を測れないため、角度ではなく、同じ角度で撮った回同士を比べる0〜100の相対指数で表示しています。
SwingNoteの計測画面 — テンポ2.2:1(バックスイング1.57秒・ダウンスイング0.70秒)、頭の上下動は胴体比16.2%、肩の回転は相対指数68(韓国語画面)

コーチングAIは自社で運用しています

課題
計測した数値を読みやすいコーチング文や練習プランに変えるには、言語モデルが必要です。従量課金の外部AI APIを使うと呼び出すたびに料金がかかり、利用者が増えるほど赤字が膨らむため、無料で開放できません。
選択
公開されている言語モデルを自社で運用するサーバーで動かし、コーチングと練習プランを作成しています。料金もコストの構造に合わせて分けました。スマホの中で完結する計測はサーバー費用がほとんどかからないため無料・無制限、サーバーでモデルが動くAIコーチングだけがクレジットを使います。
理由
クレジットは、コーチングが実際に届いたときにだけ差し引きます。AIサーバーが一時的に応答できないときは、リクエストを待ち行列に入れ、完了したように見せません。お金をいただく機能で「完了と表示されたのに届いていない」ことが、いちばん信頼を失う瞬間だからです。
SwingNoteのAIコーチング画面 — スイングを区間ごとに解説したフィードバック(韓国語画面)

2つのストアの審査をこう越えました

課題
Appleからは、中核機能であるAI分析を実機で撮影した動画で見せてほしいと求められました(ガイドライン2.1)。撮影しようとして、iOSでは分析が最初から動いていなかったことに気づきました。アプリ内のWebView設定に、Androidでしか効かないオプションしか入っていなかったのです。「第三者のAIサービスに個人情報を送りながら、告知も同意もない」(5.1.1(i)・5.1.2(i))という指摘も受けました。
選択
iOSの設定を直し、実際のiOS端末で最初から最後まで操作する確認を公開前のチェックに加えました。AIの指摘には、サーバーに何を送っているかを項目ごとに回答しました。外部のAIサービスは使っておらず、動画も端末の外に出ないことを説明し、プライバシーポリシーのAI処理に関する記載を補いました。原因がはっきりしない点は、推測で書きませんでした。
理由
Androidで動くからといって、iOSで動くとは限りません。審査への回答に誤った説明を送ると、まずその説明から訂正し直すことになります。Google Playは個人アカウントのため、テスター12人が14日間使うクローズドテストを先に行い、申請から8日後に製品版の公開が承認されました。

結果物

  • アプリiOS・Android、1つのコード(React Native・Expo)、韓/英/日
  • 端末内のスイング分析テンポ・頭の上下動・肩の回転(相対指数)、分析直後に体に重ねて表示する骨格、前回との比較
  • AIコーチング区間別(バックスイング・切り返し・インパクト)のコーチングと練習プラン、練習・ラウンドの記録
  • Webポータル・決済サブスク決済(アプリはRevenueCat・WebはPaddle)
  • サーバー機能別7つ(認証・スイング・コーチング・練習・ラウンド・メディア・サブスク)+ゲートウェイ、Kubernetesで配信
  • ログインGoogle・Apple
  • 公開App Store・Google Play、現在も自社で運営

AIやカメラを使うアプリなら

まず、何をスマホで行い、何をサーバーで行うかを決めます。この選択が、公開後に毎月かかるサーバー費用と、扱う個人情報の範囲を決めるからです。

外部のAI APIを使うか自社で運用するかは、想定利用量とコストを一緒に計算して選びます。利用量の少ないアプリなら、従量課金のAPIのほうが安いことも多くあります。

カメラ・動画・AIを扱うアプリが審査で受ける質問(データはどこへ行くのか、実機で本当に動くのか)に答える資料を、公開前に用意します。

次の事例

laonmon.com

このサイト · Web · 韓/英/日

CONTACT

LET'S
TALK.

ホームページ・アプリ制作のご相談、提携、その他のご質問もお気軽に。ロゴや原稿がなくても大丈夫です。事業内容とご希望をお書きいただければ、範囲・期間・お見積りをまとめてご返信します。