トップ  >  趣味の部屋  >  マラソン  >  JogNoteからGarminへ移行用PHPスクリプト

概要と要件 anchor.png

 JogNote。スマホアプリでランニング中のGPSログを記録したり、SNS機能があったりして気軽に使えて2015年からお世話になっていましたが、2020年3月をもってサービス終了となるアナウンスがありました。

 終了にあたり、GPSログやラップログをエクスポートして、他のサービスにインポートできるようにしてくれたようですが、具体的には色々と制約があるようです。 単に別のアプリに移行するだけなら機能を選べば良いので簡単ですが、JogNoteで記録してきたGPSログやラップタイムログを廃棄したくないし、できれば別のアプリにそっくりインポートしてシームレスに参照したいです。

 また、私の場合はレース記録を公開する目的も兼ねています。 今までもブログの記事や、レースの記録ページからJogNoteの当該ページにリンクを貼って、過去のレース結果やラップなどの記録を探し易くして使っていました。 このため、そのアプリの登録メンバーでなくゲスト訪問者にも、公開することができるものでないと困ります。

選択肢 anchor.png

 JogNoteからインポート可能なアプリとして、有名なところでいうと、

  • Runtastic
  • Strava
     などがあります。 しかしいずれも(おそらく)ゲスト公開ができません。 まあ、ゲスト公開するとサーバー負荷がどっと上がってしまうので、運営上は賢明な選択なのかもしれませんが、私的にはこれらはパスです。

 次に考えたのは、現在使っている

  • Garmin Connect
     にインポートする方策です。

 しかし残念ながら、GPSデータ(.gpx形式ファイル)だけをインポートしても、json形式ファイルに記録されているラップタイムデータはインポートされません。。 いやはや困った。。

 別の方法として、新たなアプリにシームレスに移行するのをあきらめて、

  • JogNote難民救済サイト
  • JoggFIle
     へ期待を寄せる。。 というのも一手でしょう。
     しかし、元々JogNoteは心拍計データをラップタイムデータやGPSデータと紐づけて表示できませんでしたし、これから準備するサイトがどんなものになるのか、ある程度の想像と期待はできますがそれ一本に絞るのも勇気が要ります。

最終案 anchor.png

 ということで、現時点で私が最善と考えて取った方法は、以下のような手順でGarmin Connectに取り込むものです。 現時点で、同日に2回以上のワークアウトがある場合は失敗して、.gpxファイルを1個づつ配置して処理しないと生成できない時があるほか、まだまだ不完全かつバグも潜在しています。
 ようやくローカルPC上で動作するVB.net版ができました。 phpと同じような動作になるので、使いやすいほうをご使用ください。

VB.net版(Windows専用) anchor.png

  1. JogNoteのエクスポートデータのうち、「.json」形式のラップログデータと、「.gpx」データを、「.tcx」テンプレートファイルに埋め込むプログラムを使用し、新たな「.tcx」ファイルを生成する。 その際に、.tcx形式のテンプレートファイルを使用する。
    • プロトタイプVB.netプロジェクト
      • v0.33 2020-4-12 エラーを抑制
        GpxConvert_VB-0.33.zip
      • v0.32 2020-4-11 GPXファイルが無い時のエラーを抑制
      • v0.31 2020-4-5 エンバグ修正
        まだ完全ではありませんが、エラー停止はかなり減ったと思います。
        GPSファイルが存在しない場合、.tcxファイルは \tcx_w\noGpx フォルダ内に生成されます。
      • v0.30 2020-4-5 GPSファイルが存在しない場合もTCXファイル変換を実行し出力するよう改善
      • v0.20 JogNoteのワークアウト総カロリーを各LAP距離で分割し反映
      • v0.13 ラップデータが1つ以下の場合の不具合を修正
        ver0.12 エラー時の例外処理を追加しました。
        ver0.1 ダウンロードを、GitHubへのリンクに変更しました。
      • GitHubリポジトリ:https://github.com/naao/GpxConvert
  2. zipファイルを解凍し、できた「json」フォルダ内にJogNoteのエクスポートデータの「.json」形式のラップログデータを。「gpx」フォルダ内にjsonファイルに紐づけられた「.gpx」データをコピーします。gpxファイル名はjsonファイルの中の最後のほうに書かれています。 一度に処理するファイル数は、まあ20個程度までに抑えておくのが無難でしょう。
  3. 「GpxConvert/bin/Debug」 配下のアプリケーション「GpxConvert.exe」を起動する。 もし起動に失敗したり、動作中に異常終了する場合は、PCに VisualStudio.net 2019 をインストールして、ご自身でアプリケーションをビルドしてください。
  4. アプリケーションの「変換実行」をクリック
  5. 「GpxConvert/bin/Debug」 配下の「tcx_w」フォルダ内に出来た「.tcx」ファイルを、Garmin Connectにインポートする。(複数ファイル一括インポート可能)
  6. STRAVAにもインポートできることを確認しました。
  7. 各記録を確認し、1件づつ細かな編集を行う。

php版 anchor.png

 動作には、phpが動作するWEBサーバーやPCが必要です。 説明は、下のスクリプトの中にコメントで書いてあります。 意味が分からない人は、サーバーサイドスクリプトのphp言語がわかる友人に相談してください。 なお、いつものお約束ですが、このスクリプトを使用して生じたいかなる不具合や損害にも、当方は保障などの対応は致しません、自己責任でお願いします。

-  

新案

  1. JogNoteのエクスポートデータのうち、「.gpx」データと、「.jason」形式のラップログデータを、上記「.tcx」データに埋め込むスクリプトを使用し、新たな「.tcx」ファイルを生成する。 その際に、.tcx形式のテンプレートファイルを使用する。
  2. 出来た「.tcx」ファイルを、Garmin Connectにインポートする。(複数ファイル一括インポート可能)
  3. 各記録を確認し、1件づつ細かな編集を行う。
+  旧案

旧案

  1. JogNoteのエクスポートデータのうち、「.gpx」データを一括で、Garmin Connectに一旦インポートする。
  2. Garmin Connectから、「.tcx」データとしてラン記録1件ごとにエクスポートする。
  3. 「.tcx」ファイル名を、元の「.gpx」だったファイル名に変更する。拡張子は「.tcx」とする。
  4. JogNoteのエクスポートデータのうち、「.jason」形式のラップログデータを、上記「.tcx」データに埋め込むスクリプトを作成し、新たな「.tcx」ファイルを生成する。
  5. この「.tcx」ファイルを、再度Garmin Connectにインポートする。
  6. 各記録を確認し、1件づつ細かな編集を行う。

 いやあ、XMLファイルの「tcx」と、jsonファイルをそのまま合体できるわけもなく、面倒くさいですねえ・・ とか思いつつ、3連休を利用して、何とかある程度の完成度のものができました!

参考結果 anchor.png

 上記インポートしたもののうち、以下の2レースは公開設定にしてあります。 他のレースも仮インポートしてますがまだラップタイムデータの合体をしていないものが多数です。

今後の予定 anchor.png

 将来的に、VB.netで作り変えて、JogNoteのデータからGarminの.tcxファイルを直接生成するプログラムを作ろうと考えています。 そうすれば一旦Garmin Connectにインポートしてから1件ずつエクスポートしてファイル名を書き換えて・・という面倒な作業が無くなり作業時間が大幅に短縮できる見込みです。 JogNoteがまだ使えている3月中には何とか作りたいと思います。

 → (2020/1/22追記)gpxファイルには、標高や距離が埋め込まれているわけではないのですね。。 残念。 tcxに変換したとしても、標高などは入らないかも・・? まずは Time、LatitudeDegreesとLongitudeDegrees のみを埋め込んでみてテストします。 今後のテスト次第では、断念もあり得ます、ご容赦を。。
 → (2020/1/24追記) まずはphpスクリプトで、.tcxファイルを直接生成できるようになりました! このページ中ほどのリンクからスクリプトとテンプレートファイルをダウンロードして使用してください。
 → (2020/2/4追記) とりあえずプロトタイプでVB.net版ができました! このページ中ほどのリンクからプロジェクトファイルをダウンロードして使用ください。
 以上、参考になれば幸いです。

プリンタ用画面
投票数:50 平均点:10.00
カテゴリートップ
マラソン
次
趣味のはなし : マラソン

コメント一覧

投稿ツリー


さかき サイトURL  投稿日時 2020/4/1 12:00

榊原と申します。

可能なら教えてください。
JogNoteが終了になったので、VBのツールを使わせてもらっています。
見つけたとき、とてもん感動しました。プログラマではないのでどうしようかと悩んでいたところです。 
まだうまく動いてくれないので、教えていただけないでしょうか。
データをセットして起動させると以下のようなメッセージが出ます。
「ファイルがロックされている可能性があります。\gpx.\」このメッセージは全ファイルに出てコンバートが進みません。ファイルを調べましたがロックはかかっていないと思います。原因がおわかりであれば教えていただけないでしょうか。

なーお  投稿日時 2020/4/1 21:22 | 最終変更

さかきさんこと、榊原さん、こんにちは。

拙サイトをお試しありがとうございます。

引用:
JogNoteが終了になったので、VBのツールを使わせてもらっています。
見つけたとき、とてもん感動しました。

ありがとうございます。お役に立てば幸いです。

引用:
「ファイルがロックされている可能性があります。\gpx.\」このメッセージは全ファイルに出てコンバートが進みません。ファイルを調べましたがロックはかかっていないと思います。原因がおわかりであれば教えていただけないでしょうか。

確認させてください。
/gpx/フォルダ内には、jsonファイル群に紐づいた拡張子「.gpx」ファイルを入れてますか?(gpxファイル名は、各jsonファイル内の最後のほうに書かれています) また、/gpx/フォルダ直下にgpxファイル群をそのまま(他のフォルダに入れずに)格納していますか? ファイルが読み取り専用になってませんか?

もしそうしていてもダメなときは、VisualStudio.net 2019をインストールして、ソースから実行して確認するのが早いです。 もしご自身で出来ない場合は、ご友人で可能な人をお探しいただければ幸いです。
引っ掛かっているエラー箇所は、↓ココです。
https://github.com/naao/GpxConvert/blob/master/FrmGpxConvert.vb#L89

よろしくお願いします。

さかき   投稿日時 2020/4/4 21:55

お返事ありがとうございます。

JSONファイル、GPXファイルともJogNoteからダウンロードしたものをそのまま移動しています。階層は間違っていないと思います。読み取り専用にはなっていなことを確認しています。

で、ひょっとしたら、何も考えずにJSONとGPXファイルをそのまま移動したことが問題がありそうですね。GPXファイルはGPSでルートを記録しないとないのですよね。JSONにファイル名がNullのものが多いです。特に初期はGPS連動していなかったので。ここでしょうか。

プログラマではないので、また勉強して改造してみます。とりあえずダウンロードしたJSON等はEXCELに読み込んでテーブルに分解しているのですが、これをどうやってGARMINなどのサイトに変換したらいいか悩んでました。最初からTCX形式で書き出してくれていたらすぐに別のサイトに持って行けたのですが。14年分あるのでじっくり臨みます。

ありがとうございました。

なーお  投稿日時 2020/4/4 22:16 | 最終変更

さかきさん、こんばんは。

ああ、gpxファイルが無いとそうなりますね。
元々、gpxファイルだけででもそのままGarminConnectにインポートできるのですが、jsonファイルのほうに記録されたラップデータと紐づけるためを主目的に、今回のマージソフトを考えたので、jsonファイル単体にはあまり重点を置いていません。

また、jsonファイルに記載された内容も、日記やコメントなども、GarminConnectにはインポートする手立てが無さそうなので実装していません。

以上ですが、何か変化があればご連絡いただければ幸いです。

なーお  投稿日時 2020/4/5 13:38 | 最終変更

さかきさん、こんにちは。

VB.netバージョン v0.30をアップしました。
(→追記:バグを修正しv0.31としました)
.gpxファイルが無い場合も、.tcxファイルを生成するように改善しましたので、本文中のリンクからダウンロードのうえお試しください。

自分も、トレッドミルで走った記録をこれで取り込めるようになりました。 :-)

沼倉 睦 サイトURL  投稿日時 2022/9/16 22:57

なーお

こんにちは、ご無沙汰しております、ランニングSNS「JoggFILE」オーナーの沼倉です。2020年、JoggFILEオープン前、Facebookグループ「JoggFILEオープン前ディスカッション」にて貴重なご意見・ご要望を賜り、その節はありがとうございました。覚えていらっしゃれば幸いです。

実は今回折り入ってご相談したいことがあり、Facebookのメッセンジャーにメッセージをお送りさせていただきました。数日前のことです。

なかなか既読がつかないため、厚かましくも本日、念のためにとこちらにアクセスさせていただきました。突然の押しかけで恐縮ですが、もし可能でしたら是非メッセンジャーの内容をご一読いただき、お返事くだされば幸いに思います。

Facebook(メッセンジャー)の名義はローマ字で「Mustumi Numakura」となっています。JoggFILEオープン前はビジネスネームで活動しており、本名では今回が初めましてになるかと思いますがよろしくお願いいたします。

お忙しいところ、大変恐縮ですが、お返事いただければ嬉しいです。

ご縁がありますように。

2020企画JoggFILEプロジェクト 沼倉 睦

なーお  投稿日時 2022/9/30 6:42

こんにちは。

当方、その後はGarminConnectにGPSデータを全て取り込み、過去参照も可能として運用しています。

JoGfileは公開当初利用しようと試みましたが、インポートがうまくゆかず断念して放置していました。

ご用件は、どんなことでしょう?



新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

ブックマーク