- Google Timeline Visualizer Python は、エクスポートした Timeline JSON をローカルでレンダリングされた旅行動画に変換します。
- デスクトップ環境のセットアップには、Python 3.9 以降、FFmpeg、およびプロジェクトの依存関係が必要です。
- 対応フォーマットには、現在のエクスポート形式、古い semantic segments、アクティビティ、訪問履歴、複数の座標形式が含まれます。
- ルートの平滑化には、保守的な外れ値フィルタリングと、疎な移動経路向けの大円補間を使用します。
- プライバシーに関する注意:Timeline JSON はローカルに保持されますが、地図タイルのリクエストによって、表示した地域がタイル提供元に知られる可能性があります。
Google Timeline Visualizer Python:できること
デスクトップ版の Python バージョンは、Google Maps Timeline のエクスポートデータを扱うローカルレンダリングツールです。保存された Timeline.json ファイルを読み込み、位置情報のポイントとルート情報を解釈して、アニメーション地図動画を生成します。これにより、Timeline ドキュメントを第三者のアプリケーションにアップロードせず、過去の旅行を確認できます。
このツールは、ライブ追跡サービスではなく、過去の記録を振り返るためのレンダラーとして理解するのが適切です。新しい移動情報を継続的に収集したり、Google アカウントに接続したり、暗号化された Timeline バックアップを復元したりすることはありません。まず Google Maps で履歴を準備・復元し、ファイルをエクスポートしてから、ビジュアライザーで動画を作成してください。
動画の主な特徴:
- 分割された複数の Google Timeline エクスポート形式をローカルで解析
- 孤立した GPS 外れ値を保守的にフィルタリング
- 長距離フライトや疎なルート向けの大円補間
- 地図の揺れを抑える安定したカメラ移動
- デスクトップ Python ワークフローによるローカル動画レンダリング
ローカルレンダリング
Timeline データは履歴ファイル全体としてアップロードされるのではなく、端末上で処理されます。
ルートアニメーション
レンダラーは、長距離の移動を含め、選択した日付に沿って映画的な動きを作成します。
スキーマ変換
パーサーは、複数のエクスポート構造、座標表現、古い Timeline 形式に対応しています。
デスクトップでの操作、繰り返し実行できるコマンド、生成された MP4 ファイルへの直接アクセスを求める場合は、Python 版を使用してください。
| 機能 | デスクトップ Python 版 | 実際の結果 |
|---|---|---|
| 入力 | エクスポートした Timeline.json | Timeline 履歴のローカルコピーを使用 |
| 出力 | FFmpeg によるアニメーション動画 | 共有可能な MP4 を作成 |
| 処理 | Python のコマンドラインワークフロー | 繰り返し実行するデスクトップ処理に適している |
| 追跡 | 過去の記録のみ | 継続中の位置情報を追加しない |
| アカウントアクセス | 非対応 | Google ログインは不要 |
Python のセットアップとファイル準備
レンダラーを起動する前に、必要なデスクトップツールをインストールし、Timeline のエクスポートファイルを見つけやすい場所に配置してください。文書化されているデスクトップワークフローには、Python 3.9 以降、FFmpeg、requirements.txt に記載されたパッケージが必要です。
入力ファイルは Google Maps からエクスポートするか、エクスポート前に Google Maps で復元しておく必要があります。ビジュアライザーは Google の暗号化されたモバイルバックアップを直接開くことも、アカウントにアクセスして失われた履歴を復旧することもできません。
Timeline.json の変更されていないバックアップを保管してください。フィルタリングが影響するのはレンダリング処理だけで、元の JSON は変更されませんが、別のバックアップを用意しておくと誤ったファイル操作から保護できます。
Timeline データをエクスポートする
アカウントで利用できる端末または Google Maps のワークフローから Timeline データをエクスポートします。Android では、文書化された手順は端末の設定にある「位置情報」、「位置情報サービス」、「Timeline」から始まります。iPhone では、Google Maps の個人コンテンツ設定からエクスポートし、JSON を「ファイル」に保存します。
Python の依存関係をインストールする
Python 3.9 以降であることを確認し、プロジェクトディレクトリから python -m pip install -r requirements.txt を実行します。これにより、デスクトップ用ジェネレーターに必要なパッケージがインストールされます。
FFmpeg をインストールする
デスクトップ環境に FFmpeg を追加し、ターミナルからコマンドを利用できることを確認します。FFmpeg は動画の結合工程を処理し、マルチスレッド処理に対応しています。
JSON ファイルを配置する
Timeline.json を既知のフォルダーにコピーまたは移動します。ターミナルが別のディレクトリで動作している場合は、完全なパスを使用してください。
対象を絞ってレンダリングする
年または日付範囲を限定し、安定したカメラオプションを選択して開始します。複数年にわたる大規模なエクスポートを試す前に、結果を確認してください。
| セットアップ項目 | 要件 | 確認方法 |
|---|---|---|
| Python | 3.9 以降 | python --version を実行 |
| 動画エンジン | FFmpeg | ターミナルから実行できることを確認 |
| パッケージ | requirements.txt | pip でインストール |
| 入力 | Timeline.json | 元のバックアップを保管 |
| 最初のレンダリング | 限定した範囲 | 長時間のエクスポート前にテスト |
文書化されているコマンドのパターンは次のとおりです。
python visualizer.py --input Timeline.json --year 2025 --camera-movement steady
この例では、プロジェクトの手順にある 2025 年の年フィルターを使用しています。現在の 2026 年のワークフローでは、可視化したいエクスポートデータに合う年または日付範囲を選択してください。プロジェクトのバージョンで追加の日付引数が公開されている場合は、ローカルのヘルプ出力で正確な構文を確認してください。
短い旅行を最初にレンダリングするのが最も安全です。長時間の処理で時間を消費する前に、Python、FFmpeg、入力パス、地図へのアクセス、出力権限が機能していることを確認できます。
対応する Timeline 形式とルート制御
Google Timeline のエクスポート形式は、端末、アカウント履歴、エクスポートの世代によって異なる場合があります。ビジュアライザーは、すべてのファイルが単一の座標スキーマを使用すると仮定するのではなく、複数の構造を正規化するよう設計されています。
対応する入力には、現在の直接配列形式のエクスポート、semanticSegments を使用する古いファイル、パス、アクティビティ、訪問履歴、オプションの生の位置情報が含まれます。座標値は、文字列、latLng 値、度数フィールド、geo: 文字列、または E7 整数座標として現れる場合があります。
| Timeline 入力 | 処理方法 | 推奨アクション |
|---|---|---|
| 現在の直接配列形式のエクスポート | 最新の Timeline 構造として解析 | エクスポートした JSON をそのまま使用 |
semanticSegments エクスポート | 古いネスト形式から変換 | まず短い日付範囲でテスト |
| パス、アクティビティ、訪問履歴 | ルートの文脈を構築するために使用 | 関連する移動期間を選択 |
| 生の位置情報へのフォールバック | 警告を表示して解析し、ローカルでノイズを低減 | フィルタリングされたポイント数を確認 |
| E7 座標 | 利用可能な緯度・経度に変換 | 元ファイルは変更せずに保持 |
デフォルトの GPS 設定は、保守的な GPS 外れ値フィルタリングです。急なスパイクや誤った迂回を生じさせる可能性がある、孤立した不自然な往復ポイントを無視します。この方法は、元のデータを書き換えることなく、読みやすさを向上させることを目的としています。
記録されたすべてのポイントが重要な場合は、フィルタリングを無効にできます。技術的な検証には便利ですが、Timeline に建物周辺、信号の弱い場所、一時的な測位エラーによる GPS の揺れが含まれていると、アニメーションが不安定になる可能性があります。
外れ値フィルターはレンダリング設定です。生成された可視化に表示されるポイントを変更しますが、元の Timeline ファイルは後の処理のためにそのまま利用できます。
長距離フライトなどの疎なルートでは、レンダラーは大円補間を使用します。平面地図上に見た目の悪い直線を描くのではなく、球面上の最短経路に沿ってルートを表示します。これは、国際日付変更線をまたぐ移動に特に役立ちます。
カメラにも安定した移動モデルが使用されています。地図を固定したまま、マーカーが中央の表示領域内を移動できます。マーカーが境界に到達すると、カメラが追従を開始します。これにより、近距離の通勤などでカメラが素早く前後にパンするのを抑えられます。
| 制御項目 | 目的 | 最初に選ぶ設定 |
|---|---|---|
| 日付範囲 | 表示する移動を限定 | 1 回の旅行には正確な日付 |
| 年フィルター | 暦年を選択 | 最初のテストには 1 年を使用 |
| カメラ移動 | 地図の追従動作を制御 | 落ち着いた旅行映像には Steady |
| GPS フィルタリング | 孤立した不自然なポイントを削除 | デフォルトの Conservative |
| 距離単位 | 表示される移動距離の単位を変更 | 視聴者や地域に合わせる |
狭い日付範囲の方が、1 年全体をレンダリングするよりも明確なストーリーになりやすいです。1 回の旅行ではなく、広範な旅行の概要を目的とする場合は、1 年全体の表示を使用してください。
レンダリング、確認、動画管理
ファイルを読み込んだら、プレビューの前に移動期間、カメラ移動、距離単位を選択します。インタラクティブなプレビューによって、欠落したポイント、不要な GPS スパイク、目的の動画には広すぎるルートを確認できます。
保存される動画では選択したデザインが使用され、レンダリング前に地図タイルが準備されます。Android では、関連アプリが完成した MP4 ファイルを専用の動画フォルダーに保存します。一方、元のデスクトップワークフローでは、プロジェクトの出力動作とローカル権限に応じて結果が書き出されます。
Python ワークフローでは、最初のレンダリング中はエラーを確認できるよう、ターミナルを開いたままにしてください。短いテストにより、依存関係の不足、利用できない FFmpeg コマンド、不正なパス、想定されるエクスポート構造と一致しない入力ファイルなどを発見できます。
短いテストが正常に動作するまでは、10 年分の位置情報履歴から始めないでください。大きなファイルには多数のポイントが含まれる可能性があり、より多くの処理時間と一時ストレージが必要になります。
最終動画を作成する前に確認すること:
- Timeline.json の変更されていないバックアップを保管する
- Python 3.9 以降と FFmpeg が利用できることを確認する
- 短い日付範囲または 1 回の旅行でテストする
- GPS フィルタリングとカメラ移動を確認する
- エクスポートした MP4 と地図の帰属表示を確認する
| 確認段階 | 確認する内容 | 重要な理由 |
|---|---|---|
| ファイル読み込み | 日付と検出された位置情報 | エクスポートを解析できることを確認する |
| プレビュー | ルートの形状とカメラの安定性 | スパイクや過度な動きを発見できる |
| フィルターレポート | 無視されたポイント数 | ルートの違いを説明するのに役立つ |
| レンダリング | 進行状況と最終出力 | FFmpeg が正常に完了したことを確認する |
| 最終動画 | 再生、帰属表示、共有用コピー | 意図しないルートの公開を防ぐ |
アプリケーションのエコシステムには、完成した MP4 ファイル、サムネイル、タイトル、期間、再生時間、作成日を管理するローカル動画ライブラリも含まれます。ライブラリの外で動画を移動または削除すると、その項目を利用できなくなる場合があります。リストから項目を削除することと、元のファイルを完全に削除することは別の操作です。
プライベートな旅行記録の場合は、共有する前に完成した動画を確認してください。元の JSON がコンピューターから外部に出ていなくても、ルートアニメーションから自宅、職場、定期的な通勤経路、通院先、その他の機密性の高い場所が分かる可能性があります。
完全な位置情報履歴を公開するのではなく、選択した旅行ごとに別の動画を作成してください。これにより映像としてのストーリーを保ちながら、機密性の高い移動情報を不必要に公開せずに済みます。
プライバシーの限界と代替ワークフロー
ローカルファーストの設計により、処理中の Timeline JSON は端末内に保持されます。ただし、地図の背景には外部のタイルリクエストが必要です。文書化されているプライバシー説明では、OpenStreetMap の地図データを使用するベースマップ提供元として CARTO が示されています。表示する地域へのリクエストによって、閲覧している地域がその提供元に知られる可能性があります。
最初の地図タイルが読み込まれる前に、プライバシー通知を確認し、そのトレードオフが用途に適しているか判断してください。ローカル処理によって履歴全体をアップロードする必要性は減りますが、すべてのネットワーク通信が見えなくなるわけではありません。
| データ要素 | ローカルまたは外部 | プライバシー上の考慮事項 |
|---|---|---|
| Timeline JSON | ローカル処理 | ビジュアライザーからアップロードされない |
| GPS の解析 | ローカル | 座標は端末上で解釈される |
| 地図タイルのリクエスト | 外部 | 閲覧した地域がタイル提供元に見える可能性がある |
| レンダリング済み MP4 | ローカル出力 | 共有するとルートが視覚的に明らかになる可能性がある |
| Google アカウントのバックアップ | Google の別サービス | エクスポート前に Google Maps で復元する |
永続的な保存を求めるユーザーは、ビジュアライザーとセルフホスト型の位置情報データベースを区別する必要があります。ビジュアライザーは一時的なツールであり、データを読み込み、動画をレンダリングし、過去の記録を振り返るために使用します。セルフホスト型の空間システムは、位置情報履歴を継続的に保存し、長期的な分析を支援するという別の目的を持ちます。
実用的なハイブリッド方式として、継続的な記録はプライベートなシステムで管理し、映画的なエクスポートが必要な場合だけビジュアライザーを使用する方法があります。移行ユーティリティは、重複するエクスポートを統合したり、独自形式をより汎用的な地理フォーマットに変換したりするのにも役立ちますが、機密データを預ける前に各ツールを確認してください。
ソフトウェア開発については、リポジトリにデスクトップ版と Android プロジェクトの両方に関するテストおよびビルド手順が含まれています。Python の開発用依存関係は python -m pip install -r requirements-dev.txt でインストールし、その後プロジェクトのテストコマンドを実行できます。Android のビルド要件は Python ワークフローとは別です。
Timeline ドキュメントをローカルに保持したままでも、ベースマップのリクエストは端末の外部へ送信されます。プライバシー通知、タイル提供元、最終 MP4 を、脅威モデルの別々の要素として扱ってください。
実装の詳細については、Google Timeline Visualizer GitHub リポジトリを参照してください。リポジトリには、対応ワークフロー、インストールに関する注意事項、プライバシー動作、ビルドコマンド、MIT ライセンスについて記載されています。
FAQ:Google Timeline Visualizer Python
Q: Google Timeline Visualizer Python は何に使用しますか?
エクスポートした Google Timeline JSON ファイルを読み込み、Python と FFmpeg を通じてアニメーション旅行動画を作成するデスクトップ用レンダリングワークフローです。継続的な追跡ではなく、過去の記録を可視化することを目的としています。
Q: Python 版には何が必要ですか?
文書化されているデスクトップ版には、Python 3.9 以降、FFmpeg、requirements.txt に記載されたパッケージが必要です。ジェネレーターを実行する前に、python -m pip install -r requirements.txt でパッケージをインストールしてください。
Q: 失われた Google Maps Timeline のバックアップを復元できますか?
いいえ。まず Google Maps で暗号化されたバックアップを復元し、その後新しい Timeline JSON ファイルをエクスポートしてください。ビジュアライザーは Google アカウントにアクセスしたり、暗号化されたバックアップを直接開いたりすることはできません。
Q: ビジュアライザーは Timeline ファイルをアップロードしますか?
文書化されているワークフローでは Timeline ファイルをローカルで処理し、アップロードすることはありません。地図タイルは別のネットワーク機能であるため、タイル提供元はどの地図領域がリクエストされたかを知る可能性があります。
短いエクスポートから始め、保守的なフィルタリングを使用し、ルートをプレビューして、元の JSON と最終 MP4 の両方を自分で管理してください。