開発日誌 / RideMeter-Simple GPS Computer
RideMeter 開発日誌: シンプルな GPS サイクルコンピューター
折りたたみ自転車での外出から電話ベースのサイクリング コンピューターまで: RideMeter の自動一時停止、走行記録、MapKit ナビゲーション、座標変換の課題。
これは、バイブコーディングを発見した後、iOS アプリに初めて挑戦したものでした。私の以前のプログラミング作業は、1 年以上前、中国一周旅行の前に行われました。当時、私は主に仕事に必要なもの、通常はユーザースクリプトと Chrome 拡張機能を作成していました。
ユーザースクリプトとは何ですか?
ユーザースクリプトは、ブラウザ内で実行されて既存の Web ページを変更または拡張する小さなプログラムです。これはブラウザ拡張機能に似ていますが、通常はより軽量で、各スクリプトが 1 つの特定の問題に対処します。ユーザースクリプトは、広告の削除、ページ レイアウトの調整、ダウンロード ボタンの追加、フォームへの入力、さらには元にはなかった機能を Web サイトに提供することさえできます。中国語のニックネーム「Youhou」は通常、Tampermonkey ブラウザ拡張機能を指します。 Tampermonkey をインストールしてからスクリプトをインストールすると、関連する Web サイトにアクセスするとスクリプトが自動的に実行されます。言い換えれば、Web サイトが元のページを提供し、ユーザースクリプトがそれをブラウザー内で適応させます。
アイデアはどこから来たのか
最初の iOS アプリに戻ります。
中国一周旅行から杭州に戻った後、ヤンと私は時々サイクリングに行きました。私は自分で作ったロードバイクを15,000元で売り、楊さんに中国製のブロンプトン風の折りたたみ自転車を買った。 Dahon の折りたたみ自転車と一緒に、どちらも車のトランクに簡単に収まるので、どこへでも気軽に出かけることができました。それまでの私は、通勤中でも時速30kmを維持したいタイプのサイクリストで、サイクルコンピューターがないと道に迷ってしまいました。 Strava にもお金を払いましたが、非常に高価でした。
私のようなライダーは通常、自転車にサイクル コンピューターを搭載しており、場合によっては自転車ごとに個別にサイクリング コンピューターを搭載しています。しかし、常に持ち歩いているわけではありません。おそらく、シェア自転車に乗っているか、単にコンピュータを家に置いてきただけかもしれません。私は自宅に持ち帰って充電し、駐車するときは盗難に遭わないように取り外しています。そんな時は電話が代わりになります。

サイクリング コンピューターは、いくつかの重要な点で通常のナビゲーション アプリとは異なります。
ナビゲーションはサイクリングルートを使用する必要があります。アマップでもそれができます。
停止するとタイマーが一時停止するはずです。ほとんどのナビゲーション アプリではこれが行われず、カジュアルなライダーには必要ないかもしれませんが、トレーニングや競技ライディングでは重要です。静止時間が重視されると、平均速度が低下し、そのセクションをどのように走ったのかを評価することが難しくなります。
記録の速度しきい値は調整可能である必要があります。たとえば、5 km/h または 10 km/h を超えるとカウントを開始します。 Strava の優れた統計を追い求めている人の中には、そのしきい値を 15 km/h、さらには 20 km/h とはるかに高く設定している人もいます。 15 km/h のしきい値を使用すると、低速セクションや信号での時間がかかっても、記録されたパフォーマンスが低下することはありません。
ライドメーターの紹介

したがって、私の練習プロジェクトは非常にシンプルなサイクル コンピューターです。その暗いインターフェースは、OLED スクリーンでの消費電力をできるだけ少なくすることを目的としており、黒と黄色の色はスピードと動きを示唆しています。
機能リストは短く、ナビゲーション。ライブ速度、平均速度、距離、乗車時間。そして乗車データを共有します。クルーズモードでは、アクティブなナビゲーションがなくてもルートの記録とデータ表示が機能します。ビジネス モデルも同様にシンプルです。AdMob 広告と、それらを削除するための 1 回限りの購入です。
この小さなアプリが、各ユーザーに限界サービスコストを追加することなく、世界中で動作するようにしたいと考えていました。それが、私が中国のナビゲーション API や Google マップではなく、Apple の MapKit を選んだ理由です。これは、Apple のような真のグローバル企業の利点です。Apple は、困難な国際インフラストラクチャを処理し、それを簡単な方法で統合できます。
開発の落とし穴
最大の問題は地図座標の変換でした。地図アプリを作成したことがない場合は、中国本土の地図では異なる座標系が使用されることが多いことを知らないかもしれません。 「緯度と経度」は、必ずしも同じ参照系を意味するわけではありません。 GPS は通常、WGS-84 座標を提供します。現地の規制と地図作成要件に基づいて、中国のインターネット地図は一般に変換された座標を使用します。Amap と Tencent は主に GCJ-02 (しばしば「火星座標」と呼ばれます) を使用し、Baidu はその BD-09 変換を追加しています。これらの地図上に生の GPS 座標をプロットすると、結果が数百メートル異なる場合があります。
デモを作成した後、ヤンと私はそれをテストするために何度か乗りましたが、毎回ナビゲーションの位置が間違っていました。そこで、2015 年に相乗り製品 Aipinche に取り組んでいたときに同様の問題を思い出しました。GPT に確認したところ、WGS-84 ⇄ GCJ-02 の変換の問題が確認されました。 Codexに座標変換を追加してもらったらオフセットが消えました。