Offline QTH メイン画面

# 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は、これらの問題を一気に解決します:

  1. 一度アクセスすればオフラインで動作:Service Workerでキャッシュ
  2. 必要な情報を一箇所に集約:JCC/JCG、グリッド、標高、住所
  3. GPS利用:インターネット不要で位置取得
  4. ローカルデータベース:1,892件のJCC/JCG地点情報
  5. グリッド自動計算:6桁Maidenheadロケーター

主な機能

🌐 完全オフライン対応

PWA技術により、初回アクセス後はすべてのデータがデバイスに保存されます:

  • JCC/JCGデータベース(1,892地点)
  • グリッドロケーター計算ロジック
  • エリアコード情報

📍 GPS位置情報から自動判定

「現在地を取得」ボタンをタップするだけで以下を表示:

  • 緯度・経度:正確なGPS座標
  • 標高:国土地理院API(オンライン時)
  • 住所:都道府県・市区町村(OpenStreetMap API使用、オンライン時)
  • グリッドロケーター:6桁Maidenhead(例:PM95vr)
  • JCC/JCG:該当する市区町村・郡のコード
  • エリアコード:該当エリアの識別コード

📱 PWAとしてインストール可能

ホーム画面に追加すれば、ネイティブアプリのように使えます:

iOS(Safari)の場合:

  1. Safariでサイトを開く
  2. 共有ボタンをタップ
  3. 「ホーム画面に追加」を選択

Android(Chrome)の場合:

  1. Chromeでサイトを開く
  2. メニューから「ホーム画面に追加」

🎨 Technical Cartography デザイン

アマチュア無線の山岳運用に最適化されたデザイン:

  • ヴィンテージ無線機器風:CRTディスプレイのスキャンライン効果
  • 地形図モチーフ:等高線パターンとグリッド線
  • 高視認性:屋外の日光下でも読みやすい高コントラスト
  • テクニカル感:アマチュア無線のカルチャーにマッチした技術的な外観

使い方

基本的な使い方

  1. https://matsubo.github.io/offline-qth/ にアクセス
  2. 位置情報の許可を求められたら「許可」を選択
  3. 「現在地を取得」ボタンをタップ
  4. 以下の情報が表示されます:
    • 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対応(日本語・英語)

使用例

山岳移動運用

  1. 山頂に登る(アプリをスマホにインストール済み)
  2. 位置情報を取得して現在地を確認
  3. グリッドロケーターを交信で使用
  4. JCC/JCGコードをアワード参加者に提供
  5. エリアコードを確認

移動運用

  1. VHF/UHFコンテスト中のグリッドロケーター素早く確認
  2. 日本国内アワード用のJCC/JCG確認
  3. 運用場所の正確な座標をログに記録

一般的なアマチュア無線活動

  1. QSLカード用の位置情報を確認
  2. 交信ログの正確な座標記録
  3. コンテスト参加時のグリッドロケーター確認

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! 📻⛰️


リンク

JE1WFV Avatar

記事を読んでいただきありがとうございます!

アマチュア無線やライセンスフリーラジオに関するご質問、コメントなどがありましたら、X (@je1wfv) でお気軽にどうぞ。

73!


More Posts

Comments