見出し画像

ラジコンカー練習用のラップタイマーをChatGPTでつくる。(Android用 APKファイル公開)

わたしは最近ラジコンカーにはまっていて、近くのラジコンカーのコースで練習しています。そこのコースの上級者コースには車載ポンダーを使ってタイム計測ができる設備があるのですが、初心者コースとオフロードコースには残念ながらタイム計測設備がありません。ラップタイマーのアプリを探したのですが、自分のニーズにしっくりくるものを見つけられませんでした。そこで、無ければ作ろう!ということで、Androidタブレット/Android携帯の内蔵カメラを使った簡易的なラップタイマーを自作しました。

Android用apkファイル

2024.2.17少し修正 画面表示、内部計算など見直し。

⚠️Google Play Consoleのリリース前レポートにて、安定性、パフォーマンス、セキュリティ、信頼性の問題の項目について、問題が無いことは確認していますが、インストール、実行にあたっては自己責任でお願いします。レポート、コメントは大歓迎です。よろしくお願いします。

UIは改善の余地がありそうですが、Simple is the bestということで…😅。

1. どんなアプリか

  • ラジコンカーの個人練習用

  • タブレット/携帯端末の内蔵カメラを横切った時にタイム計測

  • 計測したタイムを音声で読み上げ

  • 各ラップタイムの履歴を表示

  • ベストラップ更新すると音声でお知らせ。(誤検出して短いタイムになったときは、Remove Best Lapボタンをおしてください。ひとつ前のベストラップ表示にもどります。)

とてもシンプルなアプリですが、タイム計測しながら8の字走行などの練習をすると、自分の走りの良しあしが定量的に判るので練習がとても捗ります。ラジコン操作中にスマホ画面を見ている余裕がないので、音声(日本語か英語)でラップタイムを読み上げてくれるのがポイントです。ラップタイムのほか、ベストラップを更新すると音声で教えてくれるので、何気にうれしいです。
なお、測定精度の検証はしていませんが、個人練用に割り切ってラジコンカー1台のラップタイム計測に特化してレスポンスを上げたので、測定精度もそれなりにありそうです。

なお、使用環境により、うまく検出できない場合や感度が過敏すぎるときは、歯車ボタンで設定画面を開いて調整してみてください。

2. アプリのAPKファイル公開

Google Playで無料公開して、みんなに試してもらおうと思ったのですが、新規アカウントだとGoogle Playで公開するには20 以上のテスターにクローズド テストにオプトインして2週間継続してもらう必要があるようです。こんなニッチなアプリのテストに参加してくれる人はいなさそうなので、Google Playでのアプリ公開は未定です。ひとまずアプリのapkファイルを置いておきます。

⚠️Google Play Consoleのリリース前レポートにて、安定性、パフォーマンス、セキュリティ、信頼性の問題の項目について、問題が無いことは確認していますが、インストール、実行にあたっては自己責任でお願いします。レポート、コメントは大歓迎です。よろしくお願いします。

3. ChatGPTでのアプリ開発

アプリ開発にあたって、仕様検討からコード実装の全ての工程で、自分の実現したいことをChatGPTに伝えるだけで、ほとんど作業をChatGPTがこなしてくれました。今回のアプリ開発の流れは以下の通りです。

3.1 アプリ機能の検討

3.2 実装方針の検討

以下、アプリ機能の検討の結果を貼り付けてChatGPTに入力

3.3 コード作成

あとは表示されたコードをAndroid Studioのエディターにコピペして試作版が完成しました。

3.4 パフォーマンスの改善

当初、物体認識にGoogleMLKitの物体検出モデルを利用した試作プログラムをテストしてみたのですが、基本的な動作は問題ないものの、高速なラジコンカーの計測にはレスポンス面で課題がありました。

課題の解決には、聞きたい箇所のファイルを直接 ChatGPT に入力してアドバイスをもらう感じで進めました。

まとめ

Flutterでの開発は未経験だったのですが、ChatGPTに希望を伝えていくことで、割とすんなり自分のニーズにあったアプリをつくることができました。こちらの希望をきちんと言語化できれば、ChatGPTはニーズに沿って良さそうなコードを提案してくれます。今回はconstの付け足しなど一部の作業を除けば、自分でコードは1行も書かず、ChatGPTから提案されたコードのコピペだけで完成することができました。

携帯の縦横画面の切り替えによるレイアウトの変更などFlutterを使うとすごく簡単に実装できてFlutterのファンになってしまいました。(自分はコード書いてないけど。😅

今回作ったアプリを使って練習して、今月のレースで良い結果が得られるようがんばります。

最後までお読みいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?