AIS (船舶自動識別装置)
AIS (Automatic Identification System) は、船舶が自船の位置・針路・速度・船名・目的地などをVHF無線で定期的にブロードキャストし続ける仕組み。周囲の船や陸上局がそれを受信して、互いの動きを把握する。レーダーを置き換えるものではなく、レーダーによる衝突回避を補完する位置づけ(レーダーは相手が何であるかを教えてくれないが、AISは名乗ってくれる)。
IMOのSOLAS条約で、国際航海に従事する300総トン以上の船と大きさによらず全ての旅客船に搭載が義務づけられている。2021年時点で160万隻以上が搭載している。
Class A と Class B
| Class A | Class B | |
|---|---|---|
| 対象 | 義務搭載の大型商船 | 小型船・プレジャーボート |
| 送信出力 | 12.5W | 2〜5W |
| アクセス方式 | SOTDMA | CSTDMA(新しいものはSOTDMA版もある) |
| 送信間隔(航行中) | 2〜10秒(速度による) | 30秒 |
| 送信間隔(停泊中) | 3分 | 3分 |
静的情報(船名・船種・寸法・目的地など)は6分ごとに送られる。
無線・スロット構造
- 専用のVHF 2波を使う。AIS 1 = 161.975MHz、AIS 2 = 162.025MHz(もともと二重通信用だったch.87/88を分割して確保したもの)。
- 変調は GMSK、9600bps。
- 1分を 2250スロットに区切る。1スロットは 26.66ms で最大256bitを運ぶ。2波あるので毎分4500スロット。
SOTDMA
Class A が使う SOTDMA (Self-Organized TDMA) が、この規格の肝。基地局のような集中管理者が居ないのに、各局が勝手にスロットを分け合う。
やり方は単純で、送信するたびに「次に自分が使うスロット」を予告し、それを4〜8分のランダムなタイムアウトで保持する。周りの局はその予約状況を聞いているので、空いているスロットを選ぶ。混雑してきたら、遠方の局のスロットを上書きして近距離の通信を優先する(遠い局は電波が届かないので実害が小さい)。結果として8〜10海里以内ではほぼ100%のスループットが得られる。
Class B の CSTDMA はもっと素朴で、送信前に聞いてノイズレベルと同じ=空いているスロットを探して送る。混雑海域では Class A に押し負ける。
MMSI
各局は MMSI (Maritime Mobile Service Identity) という9桁の番号で識別される。先頭3桁がMID(国コード)で、船種・局種によってプレフィックスの付け方が決まっている。AISのデータを扱うときの事実上の主キー。
船以外のAIS
- AtoN (Aids to Navigation) — ブイや灯台などの航路標識がAISで自分の位置を送る。気象・潮流などのセンサ値を載せることもある。
- AIS-SART — 捜索救助用の遭難信号発信器。PATDMA で毎分8メッセージのバーストを送り、発見されやすさを最大化する。
衛星AIS (S-AIS)
AISはもともと見通し距離(数十海里)の通信を想定しているが、高度500km以上のLEO衛星から受信すれば外洋の船も捕捉できる。exactEarth・ORBCOMM・Spire Global などが AIS ペイロードを積んだコンステレーションを運用している。
ただし原理的な弱点がある。衛星のフットプリントが SOTDMA のセル設計よりはるかに広いため、地上では互いに干渉しないはずの遠く離れた船の電波が衛星では同じスロットに重なって受信されてしまう。交通量の多い海域ほど取りこぼす。
データ形式 — !AIVDM
AISのバイナリメッセージは、NMEA 0183 のカプセル化センテンス !AIVDM(自船のものは !AIVDO)に包まれて機器から出てくる。
!AIVDM,1,1,,B,15M67FC000G?ufbE`FepT@3n00Sa,0*5C
| | | | |
| | | | fill bits (0〜5)
| | | ペイロード(6bit ASCII armoring)
| | チャンネル A / B
| メッセージID(マルチフラグメント時の紐づけ)
フラグメント総数 / 何番目か
- 6bit ASCII armoring — NMEA 0183 は印字可能ASCIIしか通せないので、バイナリを6bitずつ切って文字に変換する。デコードは「ASCII値から48を引き、結果が40を超えたらさらに8を引く」。これを上位ビットから連結すると元のビット列に戻る。
- 0183 の82文字制限に収まらないメッセージ(Type 5 の424bitなど)は複数センテンスに分割される。メッセージIDで紐づけてフラグメント順に連結してからデコードする。
- 末尾の fill bits は、ビット列を6の倍数に揃えるために足したパディング数。
主なメッセージタイプ
ペイロード先頭6bitがタイプ番号。27種類あるが、実際に流れてくるのはほぼ ½/¾/5/18/24 に限られる。
| Type | 内容 | 長さ |
|---|---|---|
| 1〜3 | Class A の位置通報 | 168bit |
| 4 | 基地局レポート(時刻同期に使える) | 168bit |
| 5 | 静的情報・航海情報(船名・寸法・目的地) | 424bit |
| 18 | Class B の位置通報 | 168bit |
| 19 | Class B 拡張位置通報 | 312bit |
| 24 | 静的情報レポート(Class B用、A/B分割) | 可変 |
デコードの罠
gpsd の AIVDM/AIVDO protocol decoding が実データを踏まえた注意点をまとめている。
- チェックサムは合っているのに、タイプに対してペイロード長が合わないメッセージが AISHub のデータで0.3%程度ある。長さを検証してから読むこと。
- 6bit ASCII の文字列フィールドは
@で終端されるが、終端後にゴミが残っているエンコーダが実在する。 - 未初期化のフィールドは0ではなく全ビット1が入っていることが多い(船種や寸法で顕著)。
- 予約・スペアビットが0である保証はない。将来の拡張で使われうる。
信頼性の問題
AISには送信内容の真正性を保証する仕組みが無い。
- スプーフィング — 位置を偽った信号を送る。制裁対象船の航跡偽装や、軍事演習で偽の航跡を大量に発生させた事例が知られている。
- 意図的な停波 — 送信を止めて追跡から消える。
- スロット過負荷攻撃 — 偽信号でスロットを埋め、正規の通信を妨害する。
そのため、AIS由来のデータを分析に使う場合は、レーダーや衛星画像など別ソースとの突き合わせが前提になる。
公開データ
陸上の受信局(ボランティア運営のものを含む)と衛星のデータを集約したアグリゲータがあり、MarineTraffic や AISHub などから閲覧・取得できる。USBのVHF受信機を買ってきて自分で受信し、AISHub に提供する代わりにデータを貰う、といった参加の仕方もある。
舶用データ通信プロトコルの中での位置づけ
NMEA 0183・NMEA 2000 が「船内の機器同士を繋ぐ」規格なのに対し、AISは「船と船・船と陸を繋ぐ」無線システムで、レイヤが違う。ただし受信したメッセージを機器から取り出す部分は0183のセンテンスに乗るので、実装上は0183のパーサとセットで扱うことになる。