**Show HN:** *バルト海シャドウ艦隊トラッカー – ライブAISとケーブル近接アラート*

2026/03/21 6:04

**Show HN:** *バルト海シャドウ艦隊トラッカー – ライブAISとケーブル近接アラート*

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

## Summary

Shadow Fleet Tracker Light は、オープンソースでセルフホスト型のシステムです。ウクライナのGUR戦争・制裁カタログに収載されている 1,200 障船以上をリアルタイムで監視します。  
AISStream WebSocket を介して AIS データを取得し、Folium/Leaflet マップ上にライブ位置をプロット(3 分ごとに自動更新)し、すべての観測結果をローカル SQLite データベースにログとして保存します。

主なアラートは次の通りです:
- **10 km** 以内にある海底ケーブルに接近する船舶
- 待機検知(速度 < 0.5 ノット、時間 ≥ 1200 秒、半径 ≤ 0.5 km)
- ロシア ↔ 西側のトランスシャーピングパターン(21 日間ウィンドウ内で、港呼び出し時の速度 < 1.5 ノット、ゾーン内で最低 2 回の ping)

ダッシュボードは以下のエンドポイントを公開します:`/`, `/map`, `/analyze`, `/timeline`, `/vessel/<mmsi>`, `/loitering`, `/transshipment`。CSV / 生ログのダウンロードも可能です。

**インストール & 実行**
```bash
git clone https://github.com/FormerLab/shadow_tracker_light.git
cd shadow_tracker_light
pip install -r requirements.txt
export AISSTREAM_API_KEY=your_key_here
python shadow_tracker.py &
uvicorn webserver:app --host 0.0.0.0 --port 8000

(便利な

start.sh
/
start.bat
/
start.ps1
スクリプトも付属しています。)

設定可能項目

shadow_tracker.py
内):

  • バウンディングボックス、ケーブルアラート半径、マップ描画間隔
  • ウォッチリスト再読み込み間隔、ウォームリスタート時間、再接続遅延

任意の OpenSanctions 統合

OPENSANCTIONS_API_KEY
を設定するとポップアップに制裁状況を表示します。設定しなくてもツールは動作します。

システムは AISStream の無料 API キーのみで構成され、クラウドサービスは必要ありません。NGO、政府機関、あるいは民間のセキュリティチームが、コスト効果的にローカルで海上脅威と制裁遵守を監視しつつ、重要なケーブルインフラを保護するために設計されています。

本文

バルト海シャドウ艦隊トラッカー(ライト)
ウクライナGUR戦争・制裁カタログから1200 +の船舶をAISStreamのWebSocketフィードで監視する、無料かつオープンソースのツールです。リアルタイム位置を自動更新マップにプロットし、海底ケーブルへの接近をフラグ付け、ロシア↔西側の輸送パターンを検知します。


主な機能

機能説明
ライブAISAISStream WebSocket経由でバルト海境界ボックスを購読。
ウォッチリストウクライナGURカタログから取得した1200+件の船舶MMSI(
Vessels1.db
)。
マップFolium/Leaflet を使い、ダークCartoDBベースマップ。3 分ごとに更新し、自動リロードとカウントダウン付き。
ケーブルアラート船舶が10 km以内に近づいたらフラグ(
filtered_cables.kml
)。
ロイタリング検知20 分以上同一地点で低速・停止している船舶を検出。
トランスシャップメント検知船舶がロシア港と西側ハブ(または逆)に21日以内に停泊したパターンを検出。
ログ位置データをSQLite (
vessel_data_log.db
) に記録し、オフライン解析用。
ウォームリスタート起動時に直近24時間分のログを読み込み、空白マップ待ちなしで即表示。
ダッシュボードFastAPI アプリでログ閲覧、船舶分析、GPXエクスポート、トランスシャップメントレビュー、インタラクティブルート再生が可能。

クイックスタート

git clone https://github.com/FormerLab/shadow-fleet-tracker-light.git
cd shadow-fleet-tracker-light
pip install -r requirements.txt
export AISSTREAM_API_KEY=your_key_here   # aisstream.io で無料取得
python shadow_tracker.py &
uvicorn webserver:app --host 0.0.0.0 --port 8000

http://localhost:8000
を開くと、マップは
/map
にあります。

Windowsユーザー向け

start.bat
start.ps1
を使うか、以下の手順で手動設定してください。


手動セットアップ

  1. クローン&依存関係インストール

    git clone https://github.com/FormerLab/shadow-fleet-tracker-light.git
    cd shadow-fleet-tracker-light
    pip install -r requirements.txt
    
  2. APIキー設定

    # Linux / macOS
    export AISSTREAM_API_KEY=your_key_here
    export OPENSANCTIONS_API_KEY=your_key_here  # 任意
    
    # Windows (Command Prompt)
    set AISSTREAM_API_KEY=your_key_here
    set OPENSANCTIONS_API_KEY=your_key_here
    
    # Windows (PowerShell)
    $env:AISSTREAM_API_KEY = "your_key_here"
    $env:OPENSANCTIONS_API_KEY = "your_key_here"
    
  3. トラッカー&ダッシュボード起動

    # ターミナル1 – AISフィード消費者
    python shadow_tracker.py
    
    # ターミナル2 – FastAPI ダッシュボード
    uvicorn webserver:app --host 0.0.0.0 --port 8000
    
  4. http://localhost:8000
    にアクセスしてダッシュボードを開く。


スタートスクリプト(全OS)

プラットフォームスクリプト
Linux / macOS
./start.sh
Windows PowerShell
.\start.ps1
Windows コマンドプロンプト
start.bat

スクリプトは

check.py
で前処理チェックを行い、トラッカーとダッシュボードを起動します。


ファイル構成

  • shadow_tracker.py – メインプロセス:WS消費者、マップ描画、DB書き込み。
  • loitering_module.py – ロイタリング検知&マップ注釈。
  • transshipment_module.py – 港呼び出し検知・ロシア↔西側トランスシャップメントフラグ。
  • webserver.py – FastAPI ダッシュボード。
  • gur_scrape.py – IMO→GUR-ID マッピングと船舶カタログを構築するワンショットスクレイパー。
  • check.py – 前処理チェック(Pythonバージョン、依存関係、APIキー、ネットワーク)。
  • start.sh / start.bat / start.ps1 – OSごとの起動スクリプト。
  • requirements.txt – Python 依存ライブラリ。

データベースファイル:

ファイル用途
Vessels1.db
ウォッチリスト(1200+船舶)。
vessel_data_log.db
位置ログ(実行時、追記のみ)。
vessel_static.db
AIS 静的データキャッシュ。
transshipment.db
港呼び出しとトランスシャップメントイベント。
loitering_events.db
ロイタリングイベント。
filtered_cables.kml
バルト海の海底ケーブルジオメトリ。

ウォッチリスト

Vessels1.db
はウクライナGUR戦争・制裁カタログから取得した追跡対象船舶の公式リストです。
実行中に船舶を追加するには:

-- Linux / macOS
sqlite3 Vessels1.db "INSERT OR IGNORE INTO vessels (mmsi, imo, name) VALUES ('123456789', '9999999', 'VESSEL NAME');"

-- Windows (Python)
import sqlite3
conn = sqlite3.connect("Vessels1.db")
conn.execute("INSERT OR IGNORE INTO vessels (mmsi, imo, name) VALUES ('123456789', '9999999', 'VESSEL NAME');")
conn.commit()
conn.close()

データモデル

テーブルカラム
vessels
mmsi TEXT PK, imo TEXT, name TEXT, destination TEXT
vessel_data_log
timestamp, mmsi, name, imo, destination, speed, heading, latitude, longitude, cable_alert
vessel_static
mmsi TEXT PK, name TEXT, imo TEXT, destination TEXT, flag TEXT
flag_history
id, mmsi, flag, timestamp
loitering_events
id, mmsi, timestamp, latitude, longitude, near_cable
port_calls
id, mmsi, name, port, port_type, entry_ts, exit_ts, min_speed
transshipment_events
id, mmsi, name, direction, from_port, from_exit_ts, to_port, to_entry_ts, days_between, detected_ts

設定

すべてのチューナブルは shadow_tracker.py の先頭にあります。

定数デフォルト説明
BALTIC_BBOX
52.65–66°N, 9–30°E
AISStream 購読境界ボックス
CABLE_ALERT_KM
10
ケーブル近接閾値(km)
MAP_RENDER_INTERVAL
180 s
マップリフレッシュ間隔
MMSI_RELOAD_INTERVAL
300 s
DB からウォッチリストを再読み込みする間隔
WARM_RESTART_HOURS
24
起動時にロードする位置履歴時間(h)
RECONNECT_DELAY
10 s
WebSocket 再接続バックオフ

環境変数:

変数必須説明
AISSTREAM_API_KEY
YesAISStream WebSocket API キー
OPENSANCTIONS_API_KEY
Noマップポップアップで制裁情報を有効化(任意)

ロイタリング閾値 (
loitering_module.py
)

定数デフォルト説明
SPEED_THRESHOLD_KN
0.5 kn
これ以下で停止とみなす
TIME_THRESHOLD_S
1200 s
フラグ付け前の持続時間
RADIUS_THRESHOLD_KM
0.5 km
同一地点と見なす最大漂移距離

トランスシャップメント設定 (
transshipment_module.py
)

定数デフォルト説明
SPEED_THRESHOLD_KN
1.5 kn
港ゾーン内でこの速度以下を呼び出しとみなす
MIN_PINGS_IN_ZONE
2
呼び出しとして記録する最小ピン数
WINDOW_DAYS
21
ポート呼び出し間の最大日数(トランスシャップメント判定)

カバーされる港ゾーン:

  • ロシア輸出ターミナル – ウスト・ルガ、プリモスク、サンクトペテルブルク、ヴィボー
  • 西側トランスシャップメントハブ – スカウ/スカゲン、ゴータウン、キール、コペンハーゲン、オーフス

ダッシュボードルート

パス説明
/
ライブログビューア(60 秒ごとに自動更新)
/map
最新マップ(iframe 互換)
/analyze
フィルタ可能な船舶レコード表、CSVエクスポート
/timeline
活動概要 – 各船舶のカードを最終確認時刻で並べ替え
/vessel/<mmsi>
船舶ごとの履歴:AISブラックアウト、ケーブル接近、旗変更、GPXエクスポート
/vessel/<mmsi>/gpx
GPX トラックエクスポート(QGIS, OSM, GPSBabel で開く)
/loitering
ケーブル付近フラグ付きロイタリングイベント、船舶別サマリー、CSVエクスポート
/transshipment
ロシア↔西側港呼び出しパターン – RU→WEST と WEST→RU イベント、CSVエクスポート
/log/download
生ログファイルダウンロード

船舶別ページのハイライト

  • ルート再生 – Leaflet マップで再生/一時停止/リセット・速度制御付き。
  • サマリー – 最初/最後の確認、総ピン数、ケーブルアラート件数、AISギャップ数、観測された目的地。
  • AISブラックアウト – 60 分以上のギャップを開始/終了タイムスタンプと期間でフラグ付け。
  • ケーブル接近 – ケーブルアラートが有効だったピンの割合。
  • 静的データ漂移 – 名前変更、旗変更(日付付き)、目的地履歴。
  • GPXエクスポート – タイムスタンプ付き全トラック。

トランスシャップメントページ

2 つの推定パターンを表示します:

  1. RU→WEST – 船舶がロシア港で停泊後、21日以内に西側ハブへ。
  2. WEST→RU – 船舶が西側ハブで停泊後、21日以内にロシア港へ。

ポート呼び出しは位置ピンから推定され、外部 API は不要です。


ケーブルデータ

filtered_cables.kml
はオープンソースデータセットから派生したもので近似値です。10 km アラート閾値はこの余裕を考慮しています。ケーブルジオメトリの改善に貢献していただけると幸いです。


アーキテクチャ概要

  • WebSocket ストリーム上で単一の非同期ループ。
  • メモリ内状態(
    vessel_info
    ,
    static_cache
    )は各描画サイクルで SQLite にフラッシュ。
  • マップは
    os.replace
    で原子書き込み。
  • ウォームリスタートは起動時に直近24時間のログを読み込み、WebSocket 接続前にマップをプリロード。
  • ウォッチリストと GUR マッピングは5分ごとに再読込;トラッカー再起動不要で船舶追加・再スクレイピングが可能。
  • FastAPI ダッシュボードはステートレス、SQLite から直接読み込み。

現在の状態

コンポーネント状態
AIS ストリーム消費者動作中
ウォッチリスト1200+船舶(完全 GUR カタログ)
ケーブル接近アラート動作中
ロイタリング検知動作中
トランスシャップメント検知動作中
マップ描画動作中(3 分周期、カウントダウン付き自動リロード)
ウォームリスタート動作中(直近24時間ログをプリロード)
船舶ポップアップMarineTraffic + VesselFinder + War&Sanctions リンク (1337船舶マッピング)
OpenSanctions 制裁ステータス任意(API キー必要)
旗変更検知動作中(
flag_history
にログ保存)
ダッシュボード – ログ、船舶、CSV エクスポート動作中
ダッシュボード – タイムラインビュー動作中
ダッシュボード – 船舶履歴+GPX動作中
ダッシュボード – ルート再生動作中(再生/一時停止/リセット、速度制御、ケーブルアラートハイライト)
ダッシュボード – ロイタリングパネル動作中
ダッシュボード – トランスシャップメントパネル動作中

Former Lab をサポートする

Shadow Fleet Tracker Light は Former Lab チームによって構築・保守されている、古いハードウェアで VC なしに運営されるオープンソースのプライバシー重視ツールです。
お役立ちいただけましたら Patreon(patreon.com/FormerLab)でサポートを検討してください。無料 tier が利用可能で、有料 tier では 7 日間トライアルと新ツールへの早期アクセスが付与されます。


同じ日のほかのニュース

一覧に戻る →

2026/03/21 6:03

**OpenCode – オープンソースAI コーディング エージェント**

## Japanese Translation: **改善された要約** OpenCodeは、プライバシーを最優先にしつつオープンソースで開発されたAIコーディングエージェントです。ターミナル、IDE、またはデスクトップアプリとしてスムーズに動作します。使用されるLLMに応じて自動的に適切なLanguage Server Protocol(LSP)をロードし、同一プロジェクト上で複数のエージェントを同時に起動できるようにします。セッションは簡単なリンクで共有でき、参照やデバッグに利用できます。OpenCodeはGitHub Copilot、ChatGPT Plus/Pro、およびModels.devを通じて75社以上の大規模言語モデルプロバイダー(ローカルモデルも含む)と統合しており、さらに**Zen**というコーディングエージェント向けに特別にテスト・ベンチマークされたAIモデルのキュレートセットを提供します。プロジェクトは120,000件以上のGitHubスター、800人の貢献者、10,000件以上のコミット数を誇り、毎月5百万社以上の開発者に利用されています。またコードやコンテキストデータを保存しないため、プライバシーセンシティブな環境にも適しています。新リリースや機能拡張について情報を受け取りたいユーザーはウェイトリストに登録できます。

2026/03/21 4:16

**Windows 品質への我々の約束**

## Japanese Translation: Microsoft は、ユーザーから報告されたタスクバーの混乱したオプション、Copilot エントリポイントのごちゃごちゃ、侵入的なアップデート、遅いファイルエクスプローラー、騒がしいウィジェット、分断された Insider Program などの課題に対処するため、Windows 11 のユーザビリティ・パフォーマンス・信頼性の一連の更新を展開しています。 主な変更点は次のとおりです: - **タスクバー**: 新しい再配置オプション(上部、左側、右側)とより小さなタスクバーで、パーソナライズ性が向上します。 - **Copilot**: スニッピングツール、フォト、ウィジェット、メモ帳のエントリポイントを削減し、有用な体験に焦点を当てることでアクセスを簡素化しました。 - **Windows Update**: コントロールが拡張されました—設定中にアップデートをスキップでき、長時間停止、再起動またはシャットダウン時にインストールせずに済み、自動再起動/通知の数が減ります。 - **ファイルエクスプローラー**: 起動速度向上、ちらつき軽減、ナビゲーション滑らか化、ファイルタスクパフォーマンスの信頼性向上です。 - **ウィジェット**: デフォルトが静かになり、外観コントロールが改善され、Discover フィードのパーソナライズが向上しました。 - **Insider Program**: チャネル定義を明確化し、機能アクセスを容易にし、ビルド品質を高め、フィードバック可視性とエンゲージメント機会を増やすことで簡素化されました。 - **Feedback Hub**: 提出速度の向上とコミュニティインタラクションのために大幅な再設計が行われました。 - **システムパフォーマンス目標**: Windows のリソース使用量を低減し、メモリフットプリントを削減、アプリケーション、ファイルエクスプローラー、WSL 全体で応答性を改善します。 - **信頼性イニシアチブ**: OSクラッシュ、ドライバー品質、Bluetooth/USB の安定性、カメラ/オーディオ接続、デバイス再起動の一貫性、および月1 回の単一再起動と一時停止オプションを対象にします。 - **Windows Hello**: 顔認証の信頼性向上、指紋サインイン速度の高速化、ROG Xbox Ally X のようなゲーム用ハンドヘルドデバイスでの PIN 設定のセキュリティ強化です。 - **Craft 改善**: スタート/タスクバーの信頼性向上、パーソナライズ拡張、デバイス設定を静かに、ウィジェットの賢さ向上、通知削減、タスクバー・スタート・ファイルエクスプローラー・設定間で一貫した検索機能。 Microsoft は実際のハードウェア上で検証/テストを深化させ、デフォルトのセキュリティ設定を引き上げ、Insider のフィードバックに依存して将来の Windows 11 リリースを導く予定です。その結果として、ユーザーと開発者双方に対し、より柔軟なインターフェイス、スムーズな更新、静かな通知、そして高い信頼性が実現します。

2026/03/21 6:42

**タイトル:** GLP‑1薬を中止すると心筋梗塞と脳卒中のリスクが急増 **主なポイント:** - GLP‑1受容体作動薬(GLP‑1 RA)をやめると、心筋梗塞・脳卒中のリスクが高まります。 - これらの薬を中止した患者は、継続している患者に比べて心血管イベントの発生率が増加する可能性があります。 - 本研究は、GLP‑1 RAを服用している患者の心血管安全性には、投与継続(薬剤遵守)が重要であることを示唆しています。

## Japanese Translation: (以下の文は、元の意味を正確に保持し、構造や専門用語もそのまま維持した日本語訳です。) **改訂された要約:** 研究によると、短期間であってもグルカゴン様ペプチド‑1(GLP‑1)薬を中断すると、米国退役軍人の2型糖尿病患者において心臓発作や脳卒中のリスクが増加し、継続使用ではそれらのリスクが低減することが示されました。研究者は33万3000人以上の退役軍人を3年間追跡調査しました:GLP‑1治療を2年間停止したグループは心血管リスクが22%増加し、決して中断しなかった患者は18%リスク減少、再開のみで12%の利益にとどまることが明らかになりました。治療が途切れた際には体重・炎症マーカー・血圧・コレステロールが悪化し、「代謝的ウィップラッシュ」と呼ばれる効果が観察されました。GLP‑1薬はもともと糖尿病のために開発されましたが、現在では腎臓・肝臓・心血管系・関節炎・認知症・依存症などのアウトカムにも有益です。ただし、新規使用者のおよそ半数が早期に中断しています。著者らは、服薬遵守と効果を別々に追跡すべきだと主張し、医療システムには長期的な継続利用を支援するプログラムの構築を求めています。この研究は *BMJ Medicine* にZiyad Al‑Aly(ワシントン大学)によって発表され、心血管保護のためにGLP‑1療法を持続させる重要性を強調しています。