山岳運用や移動運用をやっていると、圏外の山頂で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座標
標高 :国土地理院API(オンライン時)
住所 :都道府県・市区町村(OpenStreetMap API使用、オンライン時)
グリッドロケーター :6桁Maidenhead(例:PM95vr)
JCC/JCG :該当する市区町村・郡のコード
エリアコード :該当エリアの識別コード
ホーム画面に追加すれば、ネイティブアプリのように使えます:
iOS(Safari)の場合:
Safariでサイトを開く
共有ボタンをタップ
「ホーム画面に追加」を選択
Android(Chrome)の場合:
Chromeでサイトを開く
メニューから「ホーム画面に追加」
アマチュア無線の山岳運用に最適化されたデザイン:
ヴィンテージ無線機器風 :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 :カスタムデザインシステム
Service Worker :オフラインキャッシュ
vite-plugin-pwa :PWAマニフェスト自動生成
Workbox :キャッシュ戦略
i18next :日本語・英語対応
react-i18next :Reactコンポーネント統合
国土地理院API :標高データ
OpenStreetMap Nominatim :逆ジオコーディング
GitHub Pages :静的ホスティング
GitHub Actions :CI/CD自動化
Bun :高速JavaScriptランタイム
Playwright :E2Eテスト
プログラマティックSEO実装(9,000+ページ対応)
pre-commit linting(Husky + lint-staged)
react-helmet-async追加(SEOメタタグ対応)
バージョン自動管理システム
i18n/l10n問題修正
PWAキャッシュ処理の改善
React + TypeScript + Tailwind CSSへの完全書き直し
Bun対応
E2Eテスト追加
i18n/l10n対応(日本語・英語)
山頂に登る(アプリをスマホにインストール済み)
位置情報を取得して現在地を確認
グリッドロケーターを交信で使用
JCC/JCGコードをアワード参加者に提供
エリアコードを確認
VHF/UHFコンテスト中のグリッドロケーター素早く確認
日本国内アワード用のJCC/JCG確認
運用場所の正確な座標をログに記録
QSLカード用の位置情報を確認
交信ログの正確な座標記録
コンテスト参加時のグリッドロケーター確認
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データベース拡充にご協力ください
計画中の機能:
Offline QTHは、日本のアマチュア無線山岳・移動運用者のために特化して作ったツールです。
オフライン機能、包括的なデータベース、直感的なインターフェースにより、フィールドでの位置情報収集の手間を大幅に削減できます。
ベテラン移動運用者でも、これから移動運用を始める方でも、Offline QTHは必要なデータを、必要な時に、必要な場所で提供します。インターネットがなくても。
今すぐ試す: https://matsubo.github.io/offline-qth/
73 and good DX! 📻 ⛰️