ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

「猛レース」でバーチャルレースに参戦!

地図・位置情報をテーマにした、ユニークで楽しい実験サービスを公開しているLatLongLab
前々回の「4x3印刷」、前回の「うごけ!道案内」に続き、今回は、インターネット上でバーチャルなレースに参加できる「猛レース」を紹介します。
開発担当の宇野浩史さんにお話を聞きました。



■「猛レース」開発のきっかけは?
GPSログなどの位置情報の持つ可能性をもっと広げたかったということがあります。 例えば、今までのGPSログ管理ツールなどでは、ログの再生方法にしてもポリラインを構成する点をタイマーで順々に追っていく再生の仕方がほとんどで、実際の速度を考慮して再生できるアプリケーションはありませんでした。
以前、われわれはALPSLAB videoにおいて、車載動画などの再生時に、その移動体の位置を地図上で同期させることによって、実際の移動体の速度に同期した地図移動を実現しました。 ただ、ALPSLAB videoでは、動画のそれぞれのフレームと移動体の位置を関連付けるのにユーザーによる面倒な手作業が必要であるという問題がありました。 「GPSログを使えば手作業なしで簡単に関連付けができるのでは?」というアイディアがありましたが車載動画をGPSログを取りながら撮影しているユーザー数の少なさを考えると却下となりました。 ただ、この「GPSログによる、実際の速度を考慮したログ再生」というアイディアが発展して、同じコースを走って記録したログ同士を競争させたら面白いんじゃない? ということになり「猛レース」の開発が始まりました。

■「猛レース」ってどんなサービス?
猛レースは「ひとりで走って、みんなでレース」をテーマに、走行記録を持ち寄ることで、みんなで仮想的にレースを楽しむことができます。 猛レースではレースのオーナーとなり、レースコースを作成したり、公開されているレースに参加し、 自分の実力を確認することができます。 また、レースには参加しなくてもいろいろなレースを観戦して楽しむこともできます。
「猛レース」の技術的なトピックは主に以下の2つあります。

--チェックライン
GPSログでレースに参戦する際、コースとかけ離れたルートを通過しているログの参戦を認めてしまうと、レースとして成立しなくなってしまします。 また、ハンディGPSの精度は小さくても数メートル程度の誤差があり、完全に同じコースを走っても、取得されるログの位置座標はコースの位置座標とは本来的に異なっており、そのログがコースに沿っているのかどうかの判定が難しいという問題もあります。 この問題を解決するためにチェックラインという概念を導入しています。 レースを開催するときに、通過しなければならない関門をコース上にチェックラインとして設定し、参戦したいGPSログはそのチェックラインをすべて順番どおりに通過していることを参戦の条件としました。

--実際の速度を考慮したログ再生
「猛レース」ではGPSログ同士で競争しますので、ログを実際の速度にあわせて再生する必要があります。 GPSログは「緯度経度」と「時間」のペアの羅列になっています。 やりたいことはスタートからの任意時間の位置を取得するGetPosByTime(time)という関数を作成すればよいのですが、簡単に説明するためにこの関数を以下の2段階に分割します。
Position GetPosByTime(time)
{
var dist = GetDistByTime(time); //時間からスタート地点からの距離を算出
var pos = GetPosByDist(dist); //スタート地点からの距離から時間を算出
return dist;
}


これにより、「緯度経度」と「時間」の元データは以下のように変換します。
「緯度経度」「時間」のデータ(元データ)
LATITUDE
LONGITUDE DATE TIME
N345912.800 E1370504.080 14-FEB-09 07:12:05
N345912.970 E1370504.630 14-FEB-09 07:12:08
N345912.890 E1370505.010 14-FEB-09 07:12:10
N345912.790 E1370505.280 14-FEB-09 07:12:12
N345912.710 E1370505.230 14-FEB-09 07:12:14


緯度経度1点に対して、時刻が対応付けられている。

【1】「時刻」「距離」のデータ
DATE
TIME DISTANCE
14-FEB-09 07:12:05 0.000
14-FEB-09 07:12:08 12.547
14-FEB-09 07:12:10 25.094
14-FEB-09 07:12:12 37.641
14-FEB-09 07:12:14 50.188

GetDistByTime(time)で使用。

【2】「距離」「緯度経度」のデータ
DISTANCE
LATITUDE LONGITUDE
0.000 N345912.800 E1370504.080
12.547 N345912.970 E1370504.630
25.094 N345912.890 E1370505.010
37.641 N345912.790 E1370505.280
50.188 N345912.710 E1370505.230

GetPosByDist(dist)で使用。

GetDistByTime(time)において、時刻がデータとデータの間にある場合は、線形補間(データ間を等速直線運動と仮定)して距離を算出します。 またGetPosByDist(dist)において、距離がデータとデータの間にある場合はこれも線形補間(データ間を直線的に運動していると仮定)して、位置を算出します。 また蛇足ですが、【1】の「距離」と「時間」のデータは速度を計算する際にも使用します。

■使い方を教えてください。
まず、自分が常日ごろ走っているようなホームコースをレースとして「開催」して、定期的に自分の記録で「参戦」し、自分自身の日々の記録の変化を「観戦」して楽しんでいただければと思います。 1週間、1か月前の自分とバーチャルレースをして自分のがんばりを確認すれば、日ごろのトレーニングへのモチベーションがぐんとアップします。 また開催するレースは一覧に表示されないようにすることもできますので、プライベートなコースを登録して自分だけで楽しみたい場合でも安心です。 また、「猛レース」ではGPSをお持ちでない方のためにラップタイムによる参戦もできるようになっていますが、GPSによる参戦では、上り坂や下り坂などでのペースの変化が本当にリアルに観戦できますので、ぜひGPSによる参戦をお勧めしたいと思います。

■おすすめのレースは?
有名どころのレースでは、「東京マラソン」や「全日本マウンテンサイクリングin乗鞍」などがすでに 開催されています。こういったオフィシャルな大会のコースを個人でゲリラ的に走って参戦したり、有名ランナーのタイムを自分で入力して競争させてみたりなどいろいろな楽しみ方があると思います。 また「皇居ラン」などは初心者の方でも割りと参加しやすいのではないかと思います。



■今後の展望を教えてください。
要望の多いiPhoneや携帯アプリに対応して、もっと簡単にレースを参戦できるようにして、もっともっと多くの人に使ってもらいたいですね。 また現在3Dの地図ビューアーを研究中なので、猛レースを3Dの地図上で再生できたりすると、坂の様子などがリアルにわかって、観戦がより楽しくなるかなと思っています。


LatLongLab
猛レース

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました

このページの先頭へ