Skip to content

serkenn/Navigation-calculations

Repository files navigation

NavCalc — 航法計算アプリ

License: Unlicense SvelteKit Svelte TypeScript Tailwind CSS Cloudflare Pages

船舶の航法計算をブラウザ上で行える Web アプリケーションです。海技試験(三級海技士など)の学習支援から、教育での天文航法・航海計画まで幅広く対応します。

公開サイト: https://navcalc.serken.tech/

機能一覧

航海計画 (Pilot 1)

計算 説明
針路・航程 中分緯度航法 / 漸長緯度航法(メルカトル)による針路と航程の計算
到着点 中分緯度航法 / 漸長緯度航法で出発位置・針路・航程から到着点を算出
大圏航法 大圏航法による最短距離と初針路の計算
集成大圏航法 制限緯度を持つ複合大圏航路の計算
到着時刻 距離と速力からETA(到着予定時刻)を算出

その他の航法 (Pilot 2)

計算 説明
実航針路・速力 船速と潮流から CMG / SMG を算出
視針路・対水速力 目標針路と潮流から操舵針路を算出
視針路・実航速力 目標針路と潮流から操舵針路と SMG を算出
流向・流速 船速・針路・実航針路から海流を推定
真風向・風速 相対風と船速から真風を算出
潮高計算 cos 補間法による任意時刻の潮高計算
潮流計算 潮流の速度と方向の補間計算

天文航法 (Celestial Navigation)

計算 説明
薄明時 市民薄明・航海薄明の開始/終了時刻
索星 観測可能な恒星の高度と方位を計算
天測暦 太陽の GHA・赤緯の簡易計算
位置の線 天体観測から LOP(位置の線)を算出
船位決定 複数の LOP から船位を決定
出没方位角 Amplitude からジャイロコンパス誤差を算出

六分儀 (Sextant)

計算 説明
測高度改正 器差・眼高差・大気差・視半径等の改正
物標距離 六分儀の角度から物標までの距離を計算

時間・弧度変換 / 四則計算

計算 説明
時間→弧度 時分秒を度分秒に変換
弧度→時間 度分秒を時分秒に変換
時分秒変換 10進数 ↔ 時分秒の相互変換
四則計算 時分秒形式での加減乗除

海技試験 (Exam)

3N 航海

計算 説明
天体による船位の決定 午前観測と正中観測から正中時の船位を決定(メリパス計算)
平行線・正子午線航 平行線および正子午線に沿った航海距離の計算
大圏航路 二点間の最短経路である大圏航路の計算
真風計算 船速と相対風から真風向・真風速を算出
進行軸計算 潮流を考慮した操舵進路の計算
推測位置計算 進路・速力・時間から推測位置(EP)を算出
光達距離 灯台の灯高と眼高から地理的光達距離を計算
潮汐表の使用法 潮汐表から転流時刻と最強流速を計算
クロス方位法 2つの物標の方位から船位を決定
転位法(Running Fix) 転位による船位決定
船内時計の改正 経度差から時差と船内時計の改正量を計算
常用日出没時 任意の位置と日付における常用日出没時を計算
出没方位角・ジャイロ誤差 天体の出没方位角からジャイロ誤差を算出

3N 運用

計算 説明
TPC・平均喫水 箱形船のTPC、積載後平均喫水、喫水差からの積載重量
トリム・前後喫水変化 貨物積載位置とMTC/TPC/LCFから前後喫水変化とトリム
横揺れ周期とGM 横揺れ周期の変化からGMを推定
比重差と入港喫水 消費量と比重差を考慮した入港時の喫水計算
見張り死角距離 眼高と船首部材条件から死角距離を計算
等喫水化バラスト移送 前後喫水差とMTCからバラスト移送量を計算
前後喫水差から積載重量 船首船尾喫水変化から積載重量を逆算
比重差による平均喫水 排水量と比重差から移動後の平均喫水を計算

導入方法

Web(ブラウザ)

インストール不要。以下のURLにアクセスするだけで利用できます。

https://navcalc.serken.tech/

PWA対応ブラウザではホーム画面に追加してオフラインでも利用可能です。


Windows(デスクトップアプリ)

Releases ページから最新の .exe インストーラーをダウンロードして実行してください。

ソースからビルドする場合

git clone https://github.com/serkenn/Navigation-calculations.git
cd Navigation-calculations
npm install
npm run electron:build        # release/ にインストーラーが生成されます

注意: 初回起動時に Windows Defender SmartScreen の警告が表示される場合があります。「詳細情報」→「実行」で起動できます。


macOS(デスクトップアプリ)

Releases ページから .dmg をダウンロードし、NavCalc.app を Applications フォルダにドラッグしてください。

ソースからビルドする場合

git clone https://github.com/serkenn/Navigation-calculations.git
cd Navigation-calculations
npm install
npm run electron:build:mac    # release/ に .dmg が生成されます

注意: 署名なしの場合、初回起動時に「開発元が未確認」と表示されます。システム設定 → プライバシーとセキュリティ から「このまま開く」を選択してください。


iOS / iPadOS

App Store では未公開のため、Xcode 経由でインストールします。

前提条件

  • macOS + Xcode(最新版推奨)
  • Apple ID(無料の開発者アカウントで可)

手順

git clone https://github.com/serkenn/Navigation-calculations.git
cd Navigation-calculations
npm install
npm run build
npx cap sync ios
  1. ios/App/App.xcodeproj を Xcode で開く
  2. Signing & Capabilities で自分の Apple ID を Team に設定
  3. iPhone / iPad を接続してビルド・実行(Cmd + R

注意: 初回起動時に「信頼されていないデベロッパ」と表示されます。端末の 設定 → 一般 → VPN とデバイス管理 から該当の開発者証明書を信頼してください。


Android

APK から直接インストール

Releases ページから .apk をダウンロードし、端末にインストールしてください。

注意: 「提供元不明のアプリ」のインストールを許可する必要があります。

ソースからビルドする場合

git clone https://github.com/serkenn/Navigation-calculations.git
cd Navigation-calculations
npm install
npm run cap:build    # android/app/build/outputs/apk/release/ に APK が生成されます

Android Studio で android/ フォルダを開いてビルド・実行することも可能です。


技術スタック

  • フレームワーク: SvelteKit 2 + Svelte 5 + TypeScript
  • ビルドツール: Vite 6
  • スタイリング: Tailwind CSS v4(ダークモード対応)
  • アイコン: Lucide Svelte
  • ホスティング: Cloudflare Pages(adapter-static)
  • CI/CD: GitHub Actions(v* タグで自動リリース)

ドキュメント

各計算機能の詳細な解説は docs/ ディレクトリにあります。

ドキュメント 内容
航海計画 (Pilot 1) メルカトル航法・大圏航法・推測航法
その他の航法 (Pilot 2) 潮流・風向・潮汐計算
天文航法 (Celestial) 薄明時・位置の線・船位決定
六分儀 (Sextant) 測高度改正・物標距離
時間・弧度変換 時間⇔弧度変換・四則計算
海技試験 (Exam) メリパス計算 3N

開発

# リポジトリのクローン
git clone https://github.com/serkenn/Navigation-calculations.git
cd Navigation-calculations

# 依存関係のインストール
npm install

# 開発サーバーの起動
npm run dev

# ビルド
npm run build

# プロダクションビルドのプレビュー
npm run preview

プロジェクト構成

src/
├── routes/
│   ├── +layout.svelte         # アプリ全体のレイアウト
│   ├── +page.ts               # トップページ
│   ├── calc/[id]/             # 各計算ページ(動的ルート)
│   ├── guide/                 # 使い方ガイド
│   └── theory/                # 理論解説
├── lib/
│   ├── components/
│   │   ├── calculators/       # 各計算機能のコンポーネント
│   │   │   ├── pilot1/        #   航海計画系
│   │   │   ├── pilot2/        #   潮流・風向など
│   │   │   ├── astro/         #   天文航法系
│   │   │   ├── sextant/       #   六分儀系
│   │   │   ├── timeArc/       #   時間⇔弧度変換
│   │   │   ├── timeCalc/      #   四則計算
│   │   │   └── exam/          #   海技試験
│   │   ├── layout/            # Sidebar, MobileHeader
│   │   └── shared/            # 共通UI部品 (DMSInput, SectionCard, etc.)
│   ├── data/
│   │   ├── calculatorRegistry.ts   # 全計算機能の定義・ルーティング
│   │   └── stars.ts                # 恒星データ
│   ├── stores/
│   │   └── theme.svelte.ts    # ダークモード制御(Svelte 5 runes)
│   ├── types/                 # TypeScript 型定義
│   └── utils/                 # 航法計算ロジック
│       ├── navigationMath.ts  #   メリパス・高度改正・Sight Reduction
│       ├── mercatorSailing.ts #   中分緯度航法・メルカトル航法
│       ├── greatCircle.ts     #   大圏航法
│       ├── astronomy.ts       #   天文計算
│       ├── ephemeris.ts       #   天体暦
│       ├── sextant.ts         #   六分儀計算
│       ├── currentVector.ts   #   潮流ベクトル
│       ├── wind.ts            #   風向計算
│       ├── tide.ts            #   潮汐計算
│       └── timeConversion.ts  #   時間変換
├── app.css                    # Tailwind CSS エントリーポイント
└── app.html                   # HTML テンプレート
docs/                          # 各計算機能の詳細ドキュメント

ライセンス

Unlicense — パブリックドメイン。自由にご利用ください。

About

Multi-Platform Navigation Calculation

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors