投稿

登山とランニングの違いは? 登山に特化した項目を探す!

Silicon Valley Super Ware 2019年8月31日 登山とランニングの違いは? 登山とランニングのためのGPSのデータ解析サービスの記事を連載しています。 ランナーも登山者もやっている事は似ています。 GPSを使って走ったコース、距離、時間、心拍数などを記録しているという事です。 登山の場合は走る代わりに歩いていますが、同じような使い方ですよね! 私は登山もランニングもやるのですが、 どちらも同じ時計型のGPS機器を使って同じような記録を取っています。 前回まで解説した解析方法は、登りに特化したり、 標高による違いを調べたりしています。 現状で調べる限り、この辺に着目しているサービスは殆どないように思います。 つまり、これだけでも十分付加価値は提供していると感じます。 他には何か違いはないでしょうか? 登山は休憩するのは当たり前! そこで思いつくのは登山では休憩するのは普通ですよね? 一方でランニングでは余り休憩という概念はありません。 走るのを止めた時点で一旦データを取るのもやめるのが普通です。 また走る場合は改めてデータを取り始めるのが普通です。 今回のサービスではその辺の事にも着目してみました。 実際にランニングも登山・ハイキングもやるので気づける発想だと思っています。 こうした、一見関係なさそうな2つの別のスポーツというかアクティビティですが 一緒に考えるとわかる事も結構あります。 この辺が、新しいサービスや、価値の高いサービスを考える場合の秘訣だと思います。 別々だと思っていた事を上手く結び付けたり、比較すると新しいアイディアが浮かびます 第三の時間の使い方! 実は、休憩は第三の時間です。 「登り」「下り」「停止(休憩)」が登山の3つの状態です。 休憩時間は、登りでも下りでもないわけです。 そこで、「登り」「下り」「停止」の3つの状態に分けてデータを見ると さらに詳しい事が分かってきます。 そして、この3つを含めたのが全体の所要時間という事になります。 約10年にわたって過去の登山やランニングの記録をGPSで取っています。 そのデータを見ていて面白い事に気づきました。 カリフォ...

登山のための解析 ~ 標高による違いを見る!

イメージ
Silicon Valley Super Ware 2019年8月29日 登山のための解析とは? 今日は、登山のためのGPSのデーター解析の詳細について書いていきます! 標高の違いによるデータの違いを中心に解析を行います。 比較するのは 速度 心拍数 この2点が注目するポイントです。 速度を求める 速度は基本的なGPSのデータに含まれる事もありますが、 多くのGPXファイルでは含まれていませんので、計算で求める必要があります。 速度=移動距離/移動にかかった時間 で求められます。 以前の投稿で書いていますが、計算するにあったって注意する事があります 移動距離のデータがレコードから抜けている場合はそのレコードを計算から外す 時間を決めるタイムスタンプが2つ以上のレコードで同じ場合があります この場合、レコード間の時間、つまり移動にかかった時間が「0」になってしまいます。 そうすると計算する事ができませんので、今回は最初のレコード以外を除きます。 解析する! 必要なデータが揃ったところで解析ですが、 心拍数のデータもレコードから抜ける事があります。 その場合もそのレコードを除きます。 まず最初に速度の解析について考えます。 よく行われる解析は、平均速度を求める事ですが、 登山とハイキングの場合、重要になるのは登りの速度です。 下りの場合は、筋力不足を除くと余り問題になる事がありませんので、 登りの速度に着目 すると役に立つデータになります! 登りという事を判別するには、前のレコードより標高が上がった場合です レコードの標高の差がマイナス ー> 下り レコードの標高の差がプラス  -> 登り 登りの場合だけの速度の平均を求めると登りの速度が分かります。 次に考えられるのは心拍数です。 心拍数も登りの平均が分かると有効です。考え方は速度と同じです もう一つは、心拍数の分布をみると役に立ちます。 心拍数の分布は心拍数ゾーンを利用すると参考になります。 標高による区間を設定する 標高ごとに区間を作って区間に該当するレコードを解析して違いをみます。 区間の間隔を変えられると便利ですが、...

富士山が楽に登れる方法!

Silicon Valley Super Ware 2019年8月28日 富士山が楽に登れる方法! 今日のトピックは「富士山が楽に登れる方法」です。 日本一高い富士山は標高が3776mです。 この標高になると殆どの人に高山病の症状が出ます。 頭が痛くなったり、吐き気がしたり、眠くなったり 症状はいろいろです。 でも、富士山を楽に登れる方法があると言ったらあなたはどうしますか? 高山病 富士山を登るのに多くの人に起きる問題は「高山病」です。 この高山病の症状を少しでも軽くできれば、富士山はかなり楽に登れます。 楽にといっても、登山ですからそれなりの体力は必要です。 トレーニングも必要ですが、あなたの体力に合わせて上手くペースを管理できれば 意外にスムーズに登る事ができます。 高山病と言うのは低酸素化で通常の呼吸で必要な酸素を取り込めなくなることで 起きる症状の事です。よく高い所に行くと「酸素が薄くなる」と言いますが、 それによって引き起こされる症状です。 この記事の目的は高山病の説明ではないので、詳しい事は書きませんが インターネットで検索すると詳しい説明が出てきます。 心拍数が目印に! さて、先日から連載しているのは、GPSのトラッキングデータを解析して 登山やハイキングに役立つWebサービスを作る物です。 それと、今日の話は密接な関係があります。 実はこのサービスが実現すると多くの人が富士山を今までより楽に登れるようになります その秘密が 「心拍数」 です! ランニングをされる方はご存知だと思いますが、 心拍数は運動の強さ(運動強度)のとても良い指標になります。 ランニングの世界ではこれを基に、トレーニング内容を決めたり レースのペースを考えたりします。 この考え方を登山やハイキングに応用しようという物です。 最近は、小型のGPS機器が普及して、腕時計型の物も簡単に手に入るようになりました。 ランナーはそうした機器を使って走った記録を残して利用しています。 富士山で起きる事! さて、富士山を登っていると起きる事はどういうことかを簡単に説明しますね! 多くの人が登り始めるのは五合目ですが、登山コースによっ...

GPSデータの解析の手順! ~ 既存の解析からはじめます!

Silicon Valley Super Ware 2019年8月27日 GPSデータ解析の手順 一通りGPSのデータを読み込むところまでできました! 次は実際にどのような解析をするかです! いきなり、既存のサービスにない解析をする事もできますが、 まずは足慣らしを兼ねて、既存のサービスが行っている解析をしてみます! そうすると、既存のサービスのデータと比較する事も出来るので読み込んだデータが 正しいかもある程度分かります。 基本は「違い」 解析の基本は、各レコード間の違いを見るのが基本です。 つまり、一つ前のレコードとの「差」を調べて行きます。 今回のレコードに含まれるデータは タイムスタンプ(秒単位) 距離(m) 標高(m) 心拍数(回/分) です。位置情報は距離に変換しているので解析の場合は無視して問題ありません。 実際の登山やハイキングの解析の際は、 基準になる場所の特定に使いますが今回の基本の解析では使いません。 このうち、タイムスタンプと距離は増えて行く量なので減る事はありません。 一方で、標高と心拍数は増減します。 解析中のデータから一つ前のデータを引いた数がマイナスの場合は減少になります。 前処理で必要な事 実は、こうしたデータの解析をする場合に大事な事があります。 それは、計算不能な値を予め取り除く事です。 以前にも少し触れましたが、TCX形式のGPSのデータは位置情報が抜ける事があります。 その場合、距離がレコードに含まれない事があります。 この場合、取り込んだ値はJavascriptで数字でない(NaN)になります。 この数を加算したり減算すると、その結果も数字でなくなってしまいます。 そのため、 距離情報が無いレコードは前処理で除外した方が後の処理が簡単 になります。 もう一つは「0で割るの避ける」必要があります。ご存知の通り、「0」の除算も(NaN)になります。従って解析時に「0除算」をする可能性のあるレコードも除外した方が処理が簡単です。 一般的な解析では、速度を求めるので移動距離を時間で割ります。 つまり、 時間の差が「0」になるレコードは除外 します。 前のレコードとの差を求める ...

Webサービスを作成するときのポイント

イメージ
Silicon Valley Super Ware 2019年8月26日 Webサービスを作成するときのポイント 今回のサービスの目的は登山やハイキング時のGPSデータを解析して オーバーペースになっていないかとか、高山病の影響がどの程度出ているかを調べます そのうえで、将来の似たような登山やハイキングでどの程度の心拍数を目標に 歩けばいいかを見つける事を考えています。 そういう意味で、心拍数の扱いがポイントになってきます。 心拍数の分布を考える上で心拍数ゾーンという考え方があります。 これによって、運動強度を評価してトレーニングやペースの管理に役立てています。 簡単なサービスを公開! 今回、心拍数ゾーンの分布がどうなっているかを知るために、 年齢、最大心拍数の実測値、安静時の心拍数の実測値を用いて 計算するサービスを公開しました! 心拍数ゾーンの計算ツール 実はこのサービスは単純な物なんですが、いろいろ考慮して作ってみました。 Webサービスを作る上では大事な事を含んでいますのでその辺を解説していきます! モバイル対応! まず一つ目のポイントは、 モバイル対応 です! Webサイトの制作でもそうですが、現状ではモバイルデバイス(スマホなど)の 対応はとても重要です。PCを使う人も使わない人も、スマホを使います。 つまり、スマホでサービスを利用する機会もとても多くなります。 むしろ、多くのサービスではPCのブラウザー対応より スマホで使いやすいサービスは重要です PCブラウザー時の表示 モバイル用の表示 今回はモバイル用に縦長で表示できるようにして、横長にする代わりに 選択メニューをつけて、どのタイプかを選べるようにしています。 どちらでも使えると利用者が都合の良い端末を選べるので便利です! ちょっとした事ですがこうした小さなことが利用者数を左右します 多言語化 例に示した物は、英語表記ですが、日本の方にも利用して頂きたいので ブラウザーの言語の設定をみて、自動で日本語表記に切り替わるようになっています。 別のページを作る方法もありますが、同じページで両方の言語に対応できると 利用者としては便...

GPSの位置情報から2地点間の距離を求める

Silicon Valley Super Ware 2019年8月25日 GPSの位置情報から2地点間の距離を求める! TCX形式のファイルには、距離情報が含まれているのでGPSの位置情報から計算する必要はありません。しかし、GPX形式のファイルの場合は距離情報が含まれていないのでGPSの位置情報から距離情報を計算する必要があります。 今日はその話です。 いろいろなサンプルコードや計算のやり方自体はインターネットで検索すると 沢山でてきます。 検索キーワードは「GPXの距離計算方法」とか「ヒュベニの式」とかで検索すれば出てきます。 基本的な考え方は、地球を回転楕円体と仮定して、緯度と経度から計算するという物です その際に必要になる、地球の長半径、扁平率などが必要になりますがそれらは幾つか異なる定義があって、それによって計算結果も変わってきます。さらに精度を高くするために実際に使われている計算式にいろいろ補正が加えられていたりします。 主な数値を定義している物として Bessel Ellipsoid Geodetic Reference system 1980 World Geodetic System 1984 などが広く使われています。 今回のサービスの実装では? 今回のサービスの実装には距離の制度は余り重要ではなく、 あくまで移動速度を求めるために必要になるだけです。 同じ距離の算定によって導き出された速度情報を元に比較などをおこなって 実際の歩くペースの評価を行うため、 誤差が数パーセントであれば大きな問題にはなりません 従って、今回は「World Geodetic System 1984」の数値を使って算出しています。 長半径が6378137.0[m] 扁平率が1 / 298.257223563 という数値を比較しています。 実際に、この式によって求められた距離とTCXの距離情報と比較を幾つかの例で行いましたが、ござは数パーセント以内に収まっている事を確認しています。 計算自体は公式を当てはめるだけ 詳細は、サンプルのコードがいろいろなプログラミング言語で提供されているので それを見れば簡単に実装できます。 入力情報は、2地点...

GPSデータファイルの見分け方!

Silicon Valley Super Ware 2019年8月24日 GPSデータファイルの見分け方 便利なサービスにするために、幾つかのGPSデータファイルをサポートする事は 前回の投稿で説明しました。 今回はもう少し具体的な内容を見て行きます。 実際にサービスを作るには必要なデータを調査して どのように実装していくかを決める必要があります。 今日の記事はその例を具体的に説明しています! GPSデータファイルのヘッダー 幾つかアメリカでメジャーなサービスのGPSデータファイルのヘッダを調べてみました! 調べたのは、ガーミンのサービスの「Garmin Connect」、ランニングなどのデータをアップロードしてシェア出来る2つのサービス「Strava」と「Runkeeper」です。 同じような方針で、他のサービスが生成するGPXファイルも使える可能性が高くなります まずは、この辺をベースに実装を進める事にします! Garmin Connect GPX ヘッダー部分のXMLのタグは「gpx」 心拍数の拡張の名前空間(ネームスペース)は「ns3」を使っています <?xml version="1.0" encoding="UTF-8"?> <gpx creator="Garmin Connect" version="1.1"   xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/11.xsd"   xmlns:ns3="http://www.garmin.com/xmlschemas/TrackPointExtension/v1"   xmlns="http://www.topografix.com/GPX/1/1"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://www.garmin.com...