TrailCam

ガイド

GPXファイルは結局XMLファイルなのか

そのとおりです。GPXはXMLとは別の独立したバイナリ形式ではなく、GPSの座標をどの機器・どのアプリが書いても必ず同じタグの下に並ぶように決めた、XMLの上に乗った1つの構造にすぎません。GPXファイルは中身を見ればすべてXMLとして正しく成立しています。逆方向は成り立たないという点のほうが、ほどいておく価値があります——XMLファイルがすべてGPXファイルというわけではなく、上に乗っている.gpxという拡張子は見た目ほどの仕事をしていません。

結論から言うと

.gpxファイルをふつうのテキストエディタで開くと、たいてい最初の1行はXML宣言で、その次に<gpx>タグが続き、残り全体をくるんでいます——ほかのXML文書とまったく同じ、入れ子のタグと属性という書き方です。GPXは「スキーマ」と呼ぶのが一番近く、その<gpx>要素の中にどんなタグを置いてよいか、トラックポイントがどんな形をしているか、タイムスタンプや標高がどこに入るかを決めた、公開された規則の集まりです。土台となるファイル形式は終始ふつうのXMLであり、GPXはその上に載せられた語彙にすぎません。

つまり.gpxという拡張子は素材ではなくラベルです。開く前にプログラムへ何を期待すればよいか伝える役目はありますが、中身のバイト列には何も足しておらず、なくなったり間違っていたりしても、中身から何かが失われるわけでもありません。

何がその1件を「GPXファイル」たらしめているのか

ファイルを読み込むパーサーは、ファイル名など気にしていません。見ているのは構造です——versionとcreator属性を持つ<gpx>というルート要素があり、その中に<trk>、<rte>、<wpt>のいずれか、または組み合わせがあって、実際の座標を収めているか。ある1件が「GPXファイル」と呼べるのは、ディスク上の名前が何であれ、この構造を含んでいるからです。export.gpxという名前でも<gpx>というルート要素を持たない1件は、名前だけ正しいGPXファイルなのではなく、間違った拡張子をかぶった別の何かです。

この点は拡張子とはっきり分けておく価値があります。両者はふつう一致していますが、同じことを言っているわけではありません。拡張子はファイル名そのものに書き込まれた、そのファイルについてのメタデータです。<gpx>という構造のほうが、そのファイル自体です。

それでも拡張子が実務で意味を持つ理由

拡張子が中身に何も足していないなら、なぜそれだけで弾かれることがあるのかは当然の疑問です。答えは速さにあります。ファイル名を見るのはほぼ一瞬で終わり、プログラムは末尾の数文字を見るだけで、そのファイルを開く価値があるかどうかをその場で判断できます。実際にファイルを解析して有効なGPX構造が入っているかどうかを確かめるのは相応の処理で、渡されるあらゆるファイル——明らかに違う種類のものも含めて——に対してその手間をかけたがらないアップロードツールがほとんどです。そのため、サイトやアプリはまず拡張子で機械的にふるいにかけ、そこを通過したものだけ中身を読みに行くのが一般的です。

その最初のふるい分けこそが、中身としては完全に正しいGPXトラックが、中身とは無関係の理由で弾かれる場所です。export.xmlという名前だったり、track.txtという名前だったりして、実際の構造を見てもらう前に、ファイル名の段階で先に落とされてしまうのです。

拡張子の変更で直ることと直らないこと

拡張子は形式そのものの中で何の重みも持たないので、.xmlから.gpxへ変更しても中身のバイトは1つも変わりません——変わるのは、そのあと、どのファイル名ベースのフィルタを通過できるようになるかだけです。ダウンロードした1件がsomething.xmlという名前で出てきて、テキストエディタで開いた冒頭付近に<gpx>というルート要素が見えるなら、そのファイルはすでにGPXトラックです。something.gpxへ改名するのは安全ですし、元の名前でアップロードを弾いていたツールが、まさに待っていたものだったというケースがよくあります。

改名でできないのは、そこに存在しないGPXのデータを新たに作り出すことです。GPXファイルを規定しているのは中に入っているタグであってファイル名ではないので、たまたま同じXML構文を別の目的で使っている無関係な文書——ウェブのフィードや、あるアプリの設定ファイルなど——を.gpxで終わる名前に変えても、<gpx>というルート要素やトラックポイントが生まれるわけではありません。拡張子を信用せず実際に中身を解析するプログラムなら、名前が何であっても、見覚えのある要素を結局何も見つけられません。

そもそもなぜ.xmlで書き出されることがあるのか

たいていの原因は、データそのものの不備ではなく、汎用的な書き出し経路にあります。古めのシステムや、GPXに特化していない、地理データを広く受け渡すためだけに作られた仕組みの中には、中身は正しいGPX構造で書き出しつつ、ファイル名をそれに合わせて付け直すところまでは面倒を見ない、汎用の「XMLとして書き出す」処理を使っているものがあります。ブラウザの「名前を付けて保存」が、GPXだと特に認識していないコンテンツに対して似たようなことをする場合もあります。いずれの場合も保存される中身そのものは影響を受けず、外側に付くラベルだけが一般的なものになっているだけです。

TrailCamはどこに関わるか

TrailCamがルートを書き出すとき、GPX 1.1として.gpx拡張子を最初から付けて保存するので、Strava、Garmin Connect、KomootなどGPXトラックを想定しているどこへ渡す前にも、改名する手間はありません。GPX書き出しは任意のTrailCam Proアップグレードに含まれる機能で、アプリ本体はダウンロード無料です。

よくある質問

.gpxファイルを.xmlに変えるだけで開けますか?
開けます。テキストエディタやブラウザは、どちらの拡張子でも同じタグを表示するだけで、表示の仕方を決める以外に拡張子を使っていません。ただし、GPXのアップロードだけを専用に振り分けるプログラムは、拡張子が.gpxに戻るまで認識しないことがあります。
.xmlファイルを.gpxに変えれば、弾かれたアップロードは直りますか?
そのファイルがすでに有効なGPX構造を含んでいて、弾かれた原因がファイル名だけだった場合は直ります。まずテキストエディタで開き、冒頭付近に<gpx>というタグがあるかを確認してください。それがあれば改名は安全で、たいていこの問題をそのまま解決します。
GPXのバージョン1.0と1.1で、XMLかどうかという点に違いはありますか?
ありません。GPXはどちらのバージョンもXML文書です。バージョン番号が変えるのは、スキーマが許すタグの種類や一部の値をどこに置けるかであって、ファイル形式そのものの構文ではありません。

自分のルートを記録する

TrailCam は iPhone 用の GPS ルート記録アプリです。動画・写真・音声メモを撮ったその地点に紐づけて保存し、GPX 1.1 または CSV で書き出せます。ダウンロードは無料です。

App Store でダウンロード