# Offline QTH - 山岳運用のためのオフラインQTH検索ツールを作った
Table of Contents
概要
山岳運用や移動運用をやっていると、圏外の山頂でJCC/JCGコードやグリッドロケーターを確認したい場面がよくあります。
そこで、完全オフラインで動作するQTH情報検索PWA(Progressive Web App)を作りました。
デモサイト: https://matsubo.github.io/offline-qth/
Offline QTH のメイン画面
なぜ作ったか
山岳運用での課題
山岳移動運用をしていると、以下のような問題にぶつかります:
- 圏外でJCC/JCGが分からない:山頂は電波が届かないことが多い
- 複数のサイトを確認する手間:JCC/JCG、グリッドロケーターなど、バラバラに調べる必要がある
- バッテリーの節約:限られた電力でスマホを使いたい
- グリッドロケーターの計算が面倒:緯度経度から手動計算は大変
解決策
Offline QTHは、これらの問題を一気に解決します:
- 一度アクセスすればオフラインで動作:Service Workerでキャッシュ
- 必要な情報を一箇所に集約:JCC/JCG、グリッド、標高、住所
- GPS利用:インターネット不要で位置取得
- ローカルデータベース:1,892件のJCC/JCG地点情報
- グリッド自動計算:6桁Maidenheadロケーター
主な機能
🌐 完全オフライン対応
PWA技術により、初回アクセス後はすべてのデータがデバイスに保存されます:
- JCC/JCGデータベース(1,892地点)
- グリッドロケーター計算ロジック
- エリアコード情報
📍 GPS位置情報から自動判定
「現在地を取得」ボタンをタップするだけで以下を表示:
- 緯度・経度:正確なGPS座標
- 標高:国土地理院API(オンライン時)
- 住所:都道府県・市区町村(OpenStreetMap API使用、オンライン時)
- グリッドロケーター:6桁Maidenhead(例:PM95vr)
- JCC/JCG:該当する市区町村・郡のコード
- エリアコード:該当エリアの識別コード
📱 PWAとしてインストール可能
ホーム画面に追加すれば、ネイティブアプリのように使えます:
iOS(Safari)の場合:
- Safariでサイトを開く
- 共有ボタンをタップ
- 「ホーム画面に追加」を選択
Android(Chrome)の場合:
- Chromeでサイトを開く
- メニューから「ホーム画面に追加」
🎨 Technical Cartography デザイン
アマチュア無線の山岳運用に最適化されたデザイン:
- ヴィンテージ無線機器風:CRTディスプレイのスキャンライン効果
- 地形図モチーフ:等高線パターンとグリッド線
- 高視認性:屋外の日光下でも読みやすい高コントラスト
- テクニカル感:アマチュア無線のカルチャーにマッチした技術的な外観
使い方
基本的な使い方
- https://matsubo.github.io/offline-qth/ にアクセス
- 位置情報の許可を求められたら「許可」を選択
- 「現在地を取得」ボタンをタップ
- 以下の情報が表示されます:
- GPS座標(緯度・経度)
- 標高(国土地理院API、オンライン時)
- 住所(都道府県・市区町村、オンライン時)
- グリッドロケーター(6桁)
- JCC/JCG番号
- エリアコード
詳細なヘルプページも用意
データの精度について
JCC/JCG:
- 各市区町村の代表座標(市役所など)から計算
- 市区町村境界付近では隣接コードが表示される場合あり
- 1,892地点のデータベース
エリアコード:
- 日本国内のエリア区分に基づく識別コード
- 位置情報から自動判定
グリッドロケーター:
- Maidenhead Locator Systemで計算
- 6桁精度(約3km × 4km)
- GPS座標から即座に算出
標高:
- オンライン時:国土地理院APIから正確なデータ取得
- オフライン時:「利用不可」と表示
住所:
- オンライン時:OpenStreetMapから正確な逆ジオコーディング
- オフライン時:ローカルデータから推定(「(推定)」と表示)
技術スタック
フロントエンド
- React + TypeScript:型安全な開発
- Vite:高速ビルドツール
- Tailwind CSS:カスタムデザインシステム
PWA関連
- Service Worker:オフラインキャッシュ
- vite-plugin-pwa:PWAマニフェスト自動生成
- Workbox:キャッシュ戦略
国際化
- i18next:日本語・英語対応
- react-i18next:Reactコンポーネント統合
API
- 国土地理院API:標高データ
- OpenStreetMap Nominatim:逆ジオコーディング
デプロイ
- GitHub Pages:静的ホスティング
- GitHub Actions:CI/CD自動化
開発環境
- Bun:高速JavaScriptランタイム
- Playwright:E2Eテスト
バージョン履歴
v2.3.1 (2026-02-06) - 最新版
- プログラマティックSEO実装(9,000+ページ対応)
- pre-commit linting(Husky + lint-staged)
- react-helmet-async追加(SEOメタタグ対応)
v2.1.0 (2024-02-03)
- バージョン自動管理システム
- i18n/l10n問題修正
- PWAキャッシュ処理の改善
v2.0.0 (2024-02-03)
- React + TypeScript + Tailwind CSSへの完全書き直し
- Bun対応
- E2Eテスト追加
- i18n/l10n対応(日本語・英語)
使用例
山岳移動運用
- 山頂に登る(アプリをスマホにインストール済み)
- 位置情報を取得して現在地を確認
- グリッドロケーターを交信で使用
- JCC/JCGコードをアワード参加者に提供
- エリアコードを確認
移動運用
- VHF/UHFコンテスト中のグリッドロケーター素早く確認
- 日本国内アワード用のJCC/JCG確認
- 運用場所の正確な座標をログに記録
一般的なアマチュア無線活動
- QSLカード用の位置情報を確認
- 交信ログの正確な座標記録
- コンテスト参加時のグリッドロケーター確認
FAQ
Q: インターネット接続は必要ですか? A: いいえ、初回アクセス後はオフラインで動作します。
Q: 日本国外でも使えますか? A: JCC/JCG・エリアコードは日本のみ対応です。グリッドロケーターは世界中で使えます。
Q: GPSの精度は? A: 通常5-10メートルですが、衛星の見通しや地形により変動します。
Q: バッテリー消費は? A: GPS使用でバッテリーを消費します。長時間運用にはモバイルバッテリー推奨です。
Q: データベースの更新頻度は? A: 必要に応じて更新します。プルリクエストも歓迎です。
オープンソース
プロジェクトはMITライセンスで公開しており、コントリビューション歓迎です:
- GitHub: matsubo/offline-qth
- Issues: バグ報告・機能リクエスト
- Pull Requests: コード改善
- データ: JCC/JCGデータベース拡充にご協力ください
今後の開発予定
計画中の機能:
- JCC/JCGデータベースの境界データ精度向上
- その他アワードプログラム対応
- エリアコードデータベースの拡充
まとめ
Offline QTHは、日本のアマチュア無線山岳・移動運用者のために特化して作ったツールです。
オフライン機能、包括的なデータベース、直感的なインターフェースにより、フィールドでの位置情報収集の手間を大幅に削減できます。
ベテラン移動運用者でも、これから移動運用を始める方でも、Offline QTHは必要なデータを、必要な時に、必要な場所で提供します。インターネットがなくても。
今すぐ試す: https://matsubo.github.io/offline-qth/
73 and good DX! 📻⛰️