はじめに
友人がゴルフを始めたので、自分も何となく始めることにしました。形から入るタイプなので、まずYoutubeでカッコいいスイングをひたすら見て研究していました。
でも「見て覚える」だけだと限界があって、自分のスイングをちゃんと録画して振り返ることにしました。すると困ったことが出てきました。
「過去のスイングと今のスイングを見比べたい」のに、iPhoneのカメラロールでは遡りづらい。何スイングも連続録画するからストレージを圧迫する。そもそも何のクラブで打ったのか分からなくなる。
「これ解決するアプリ、あるんじゃないか」と探してみました。スイング比較系のアプリはありました。でもアルバム特化のシンプルなものが見当たりませんでした。
「じゃあ作るか」となりました。
作ったもの:ゴルフスイングアルバムアプリ
現在の主な機能です。
- スイング動画を録画・保存
- クラブ情報(1W、5I、7I など)をタグ付け・メモ追加
- 過去のスイングを月別にアルバム形式で一覧表示
- 理想のスイングとの比較モード(並べて表示・重ねて表示、フェーズ別シーク)
当初は「見返しやすくする」というただ一点に絞ってアルバム機能から作り始めました。使っていくうちに理想のスイングと並べて見比べたいというニーズが自然に出てきたため、比較モードを後から追加しています。
技術選定:なぜ React Native か
仕事でReactを使っていたので、モバイルでもReactの知識が活かせるReact Nativeを選びました。
「モバイルアプリ開発を一度やってみたかった」という動機もありました。SwiftやKotlinをゼロから学ぶより、今の自分のスキルセットで最短で作れる選択だと判断しました。
使った主要ライブラリ
| ライブラリ | 用途 |
|---|---|
react-native-vision-camera |
カメラ起動・動画録画 |
react-native-image-picker |
カメラロールからの動画選択 |
react-native-video |
録画した動画の再生 |
react-native-create-thumbnail |
動画一覧のサムネイル生成 |
react-native-fs |
動画ファイルの保存・管理 |
@shopify/flash-list |
アルバム一覧の高速描画 |
@react-native-async-storage/async-storage |
クラブ情報などのメタデータ保存 |
react-native-vision-camera はパーミッション周りの実装が初めてで少し詰まりました。iOSではカメラとマイクの両方を許可しないと動画録画が開始できないため、権限が拒否された場合に設定画面へ誘導する処理を別途実装しています。
動画ファイルは react-native-fs でアプリのドキュメントディレクトリに保存し、アプリ側には uri とクラブ情報などのメタデータだけを AsyncStorage に持たせる構成にしました。動画そのものをアプリ内で管理することで、カメラロールを汚さずに済むようにしています。
開発で工夫したこと
打ちっぱなし場でドッグフーディングした
ある程度プロトタイプができたら、実際に打ちっぱなしに持ち込んで使ってみました。
録画を開始して、スイングして、録画を止めて、再生して確認して……という一連の流れが、実際にやってみると非常に面倒でした。ユーザーがスイングを確認してすぐにまた打ち直すという導線をまったく想定できていなかったのです。現場に持ち込んで初めて気づくことがいくつもあって、その都度改善しました。
AIにコーディングをほぼ任せた
意図的に自分でコードを書かないようにしました。Claude CodeやCodexを活用して、コーディングは大部分をAIに生成させました。
理由があります。「モバイルアプリの開発フローやReact Nativeの全体感を掴むことに集中したかった」から。細かい実装より、どういう構成にするか・どんな機能を優先するかを自分が考える役割に徹しました。
これは後で別の気づきをくれることになるのですが、それはまた別の記事で書きます。
使ってみた結果
スイングの振り返りはかなりやりやすくなりました。クラブ別に見返せるのが地味に便利で、「7番アイアンのときだけ引っかかる」みたいな傾向も気づきやすくなりました。
ゴルフのスコアが劇的に改善したかというと...まだそこまでは至っていません。でもちゃんと課題を認識して練習できるようになった感覚はあります。
個人開発やってみて思ったこと
「こういうものが欲しい」という自分のニーズから始めるのが、一番モチベーションが続きます。
既存サービスを調べて「ない」と判断したら作る。完璧を目指さず、まず自分が使えるレベルで出す。使いながら直す。このサイクルが個人開発の醍醐味だと感じました。
今後の展望
「見返せるアルバム」から「分析して上達できるツール」へ育てていくのが次のステップです。
- MediaPipe による姿勢解析:録画した動画からスケルトンを検出し、アドレス・トップ・インパクトなどフェーズごとのフォームを数値で評価したい。スイングの崩れを感覚ではなくデータで把握できるようにするのが目標。
- Apple Watch のジャイロセンサーを使ったスイングデータの取得:クラブの軌道・ヘッドスピード・切り返しのタイミングをセンサーから数値化して、練習の質を定量的に管理できるようにしたい。
- スイングの自動録画・トリミング:録画の開始・停止を手動でやるのが地味に面倒。スイングを自動検知して切り出せれば、練習の流れがもっとスムーズになるはず。
ちなみに、先日ついに実際のゴルフコースに出てみました。
打ちっぱなしで練習を積んで、アプリでフォームも振り返って、準備は万端のはずでした。
結果、打ちっぱなしとはまったく別のスポーツでした。傾斜あり、風あり、バンカーあり。アプリで磨いたスイングがコースでは全然再現できず、スコアは惨敗。
どうやらゴルフはもっと深いらしいです。アプリの開発も、ゴルフの上達も、まだまだ続きそうです。


