String GOAT
サインイン
Blog
2026年8月4日
Blog
2026年8月4日

Apple WatchとGalaxy Watchでテニスのショット数とプレー時間を記録する — String GOATウォッチアプリ

Apple WatchとGalaxy Watchでテニスのショット数とプレー時間を記録する — String GOATウォッチアプリ

いつ張り替えるかを決めるのは、日付ではなく使用量です。同じ1か月の中でも、週1回プレーする人と週4回プレーする人とでは、コート上で過ごす時間が4倍違います。カレンダーは同じペースで進みますが、ストリングにかかる負荷はそうではありません。

String GOATも最初は同じ発想でした。張り替えた日付と、日数によるサイクルです。私自身も自分のラケットにストリングを張るので、この基準が崩れる場面に何度も出くわしました。ハードに練習した週と、ほとんどプレーしなかった週が、同じ日に同じリマインダーを出すのです。

基準を日付から使用量に移すのは当然の解決策でしたが、まさにそこでつまずきました。プレー時間は、セッションを終えて「今日は2時間半くらいだったかな」と見積もった瞬間に、データではなく記憶になってしまいます。ショット数に至っては、そもそも数えようがありません。私は、ストリングが実際にどれだけ働いたかを記録する手段のないまま、ストリング記録アプリを作っていたのです。

ウォッチアプリは、このギャップを埋めるために存在します。Apple WatchまたはGalaxy Watchでセッションを開始すれば、ショット数とプレー時間が記録され、その記録が張り替えの判断に活かされます。

これを作るには、ひとつの制約を乗り越える必要がありました。テニスコートでは通常、ラケットを持たない方の手首にウォッチを着用します。ラケット側の手首だと、グリップの邪魔になり、衝撃をそのまま受けてしまうからです。ところがショットを数えるうえでは、この習慣が不利に働きます。ボールが当たった瞬間の衝撃は、ラケットを持っている腕に最もはっきりと現れ、反対側の腕にはずっと弱くしか伝わらないからです。そのため、手首センサーによるショット検出は通常「ウォッチはラケット側の手首に着ける」という前提から出発します。

String GOATは、その前提を変えないことを選びました。もともと着けている場所、つまりラケットを持たない方の手首のままで構いません。

この記事は、自分でラケットにストリングを張る、あるいは自分で張り替えのサイクルを管理しているプレーヤー向けです。検出の仕組み、実際の精度、そしてその記録がどう張り替えの判断につながるかを解説します。

要点

  • 対応機種 — watchOS 9.0以降(Apple Watch Series 4以降)、Wear OS 3.0以降(Galaxy Watchを含む)。ペアリングされたスマホアプリと連携して動作します。
  • 着用位置 — ラケットを持たない方の手首。
  • 記録される項目 — ショット数、プレー時間、心拍数、消費カロリー、屋外でのGPSルート。
  • 精度 — 素振りや歩行はカウントされません。グラウンドストローク全体ではおおむね4分の3程度の検出率で、片手バックハンドは過小にカウントされます。
  • 用途 — 累積プレー時間をストリングの種類ごとの寿命基準と比較することで、リマインダーがカレンダーではなく実際の使用量に基づくようになります。

弱い信号からショットを読み取る

反対側の腕にも振動は伝わります。ただ、それが弱いだけです。必要なのは信号を強くすることではなく、弱い信号を読み取れるように訓練されたモデルです。

String GOATは、KAISTの研究チームが発表したSilent Impactモデルを採用しています。これは、ラケットを持っていない方の腕の動きからインパクトを識別するために作られたモデルです。UIST 2024(ACM Symposium on User Interface Software and Technology、Park, Yang, Jo)で発表され、商用利用も可能なCC BY 4.0のもとで公開されています。String GOATはアプリのオープンソースライセンス画面でこれをクレジット表記しています。論文はACM Digital Libraryで公開されています。

解析はウォッチではなくスマホ側で行われます。ウォッチはセンサーデータを収集して送信し、スマホがそれをモデルに通します。すべて端末上で処理されるため、コートの電波状況が不安定でも検出には影響しません。

セッションで記録される内容

ラケットを選び、ウォッチアプリでセッションを開始すると、終了するまで以下が蓄積されます。

1回のセッションで記録される内容
項目詳細
ショット数検出されたインパクトの回数
プレー時間セッションの開始から終了まで
心拍数平均、最大、ゾーン別の時間
消費カロリーウォッチのヘルスデータから算出
距離とルートGPSを有効にした屋外セッション

対応機種はwatchOS 9.0以降(Apple Watch Series 4以降)と、Wear OS 3.0以降(Galaxy Watchを含む)です。ウォッチアプリはペアリングされたスマホのString GOATアプリと連携して動作するため、スマホアプリが必須です。

精度はどれくらいか

ショット数は、画面に表示された瞬間から「本当に合っているのか」という疑問を招きます。以下の数値は、論文で報告された性能ではなく、私たち自身のアプリで実測したものです。ウォッチのハードウェアやその周辺の処理が変わると、同じモデルでも挙動が変わってきます。

まず、成立している部分から。ボールを打たない素振りはカウントされません。屋内テストでは、素振り30回は0としてカウントされ、歩行や静止も同様に0でした。このモデルはスイングそのものではなくボールの接触を検出する方式のため、ラケットを持ってコートを歩き回ったりボールを拾ったりしている間にカウントが増えることはありません。フォアハンド中心のテストでは、実際に打った球数とほぼ一致する結果になりました。

一方、精度が及ばない部分もあります。

  • グラウンドストローク全体(ベースラインからバウンド後に打つフォアハンドとバックハンド)では、おおむね4分の3程度の検出率です。実際に打った数より少なく記録されることがあります。
  • 片手バックハンドが最も過小カウントされます。モデルの学習データに、片手バックハンドのプレーヤーがごく少数しか含まれていなかったと見られます。
  • 速いボレーは検出漏れが起こり得ます。連続して素早く打つショットが1回にまとめられてしまうことがあります。
  • ショットの種類は分類されません。フォアハンド、バックハンド、ボレーといった内訳はありません。

つまり、これは審判のような正確なカウントではありません。むしろセッション間で比較するための負荷の目安に近いものです。今日は先週より練習量が多かったか、このストリングがこれまでどれだけの負荷を受けてきたかを把握するには十分ですが、額面通りに使う数値ではありません。

蓄積された記録がリマインダーをどう動かすか

ここで当然の疑問が出てきます。カウントが正確でないのに、どうやって判断に使えるのかということです。実際にリマインダーを動かしているのはショット数ではなくプレー時間です。時間はセッションの開始と終了から取得されるため、推定ではなく計測された値です。

セッションが保存されると、プレー時間はラケットごとに蓄積されます。String GOATは、その累積時間をストリングの種類ごとの寿命基準と比較します。ポリエステル、マルチフィラメント、ナチュラルガットではそれぞれ耐久性の期間が異なるため、種類ごとに個別の基準が設定されており、その数値は公開されている資料の調査に基づいています。ストリングは切れる前に性能が落ちることがあるという点は、Tennis Warehouse Universityのテストでも報告されています。

変わるのはリマインダーが届くタイミングではなく、その根拠です。「張ってから1か月」ではなく、「このストリングが実際に何時間使われたか」が基準になります。月1回プレーする人と週4回プレーする人が、同じ日に同じリマインダーを受け取ることはもうありません。

ショット数もラケットごとに蓄積されます。プレー時間と並べて見ることで、多くのインパクトを受けたストリングと、同じ時間でも打球数がずっと少なかったストリングを区別できます。

テンション測定と組み合わせると、判断はさらに鋭くなる

プレー時間とショット数だけでも、すでにカレンダーより優れています。ただ、それらが表すのはあくまでストリングがどれだけ使われたかであり、今どんな状態にあるかではありません。

状態を示す数値は別にあります。張り替え直後のテンションと、その後測定するDT(動的テンション、ストリングベッドの硬さ)です。ストリングを登録する際に初期DTを入力するとそれが基準値になり、以降の測定がその都度データ点として加わっていきます。

ウォッチのデータは、そこに2つ目の軸を加えます。「何日でテンションがどれだけ落ちたか」ではなく、「何球打ってどれだけ落ちたか」を問えるようになるということです。任意の2回の測定の間のショット数は、ウォッチが提供します。

データ点が蓄積されると、String GOATはその推移を延長して、閾値に到達する時期を推定します。閾値は基準値に対する損失率と主観的な評価スコアの組み合わせで、出力は予想される張り替え日、または残りのショット数です。テンション測定が存在する場合は、この方式が自動的に使われます。どの信号を使うかは設定ではなく、利用可能なデータによって決まります。

String GOATの測定画面 — 累計3,504ショット・プレー時間6時間28分と、メイン50→43.9lbs・クロス48→42.8lbsのテンション低下グラフ、AIインサイトが同時に表示された様子

ショット数・プレー時間とテンション測定が1画面に統合される実例です。

3回以上張り替えを行うと、さらに一歩進みます。実際に張り替えを選んだ時点での損失率とフィーリングスコアを振り返り、標準の閾値ではなくあなた自身の閾値を使うようになります。同じテンションの低下でも、そのままプレーを続ける人もいれば、張り替える人もいるからです。

判断の根拠は、次のように移っていきます。

張り替え判断を支える根拠の段階
段階根拠必要なもの
日付張ってからの日数張り替えた日付
使用量プレーした時間と打った球数+ ウォッチのセッション
状態ショットが蓄積するにつれてテンションがどれだけ落ちたか+ 初期テンションとDT測定
自分自身の閾値自分が実際に張り替えを決める基準+ 過去3回以上の張り替え履歴

段階が下がるほど判断は鋭くなりますが、その分求められる入力も増えます。この表は機能一覧というより、私自身が実際にたどってきた順番です。一段ずつ下りていく中でぶつかった壁は、「基準が間違っている」ことではなく、「その基準に入れるデータがない」ことでした。ウォッチは、その中間の2段階を自動的に埋めてくれます。

ウォッチからアプリへ、そしてウェブへ

セッションが終わると、ウォッチはスマホにデータを送信します。分析と保存はスマホ上で行われます。保存されたセッションは、スマホアプリとウェブダッシュボードの両方に表示されます。

コートのネットワーク環境は不安定なことがよくあります。送信や保存に失敗したセッションは端末に残り、次にアプリを開いたときに自動的に再試行されます。終了したはずのセッションがすぐに表示されない場合は、一度スマホアプリを開いてみてください。

始め方

累積プレー時間は新しいストリングを登録した時点から数え始めるため、ウォッチでの記録は張り替えた瞬間から使い始めるのが最も効果的です。

  1. まずスマホアプリでログイン — ウォッチアプリはペアリングされたスマホアプリと連携して動作します
  2. ラケットを持たない方の手首にウォッチを着用 — ショット検出はこの着用位置を前提としています
  3. ウォッチでセッションを開始 — 屋外ではGPSをオンのままにしておくとルートも記録されます
  4. セッション終了後にスマホアプリを開く — 分析と保存はここで行われます
  5. ストリングの記録と合わせて確認 — 累積プレー時間が張り替えの判断に反映されます

無料プランでは、月8セッションまで詳細を閲覧できます。それを超えたセッションもリストには残り、サブスクリプションに登録すると過去の分も閲覧できるようになります。

String GOATは無料で始められます。

String GOATを無料で始めよう

記録・AI提案・交換リマインダー — 入力は30秒

App StoreGoogle Play

関連記事:

  • ポリエステルストリングの張り替え時期 — 自分のデータから最適なタイミングを見つける
  • 自宅でストリングを張る人のための記録システム — 作業・リール・テンションを1つのアプリで
  • ストリングを記録する理由 — プロが記録を残す理由

よくある質問

String GOAT
プライバシーポリシー利用規約
© 2022 String GOAT. All rights reserved.