Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スマホで海難事故は防げるか?年間2000件以上の小型船舶の事故に挑むアプリ開発

Avatar for Atsuki Seo Atsuki Seo
September 19, 2025

 スマホで海難事故は防げるか?年間2000件以上の小型船舶の事故に挑むアプリ開発

iOSDC2025 登壇時の資料になります。

https://fortee.jp/iosdc-japan-2025/proposal/9be7446d-1bcc-4e09-92e3-73ecbbefb592

#iosdc #a

Avatar for Atsuki Seo

Atsuki Seo

September 19, 2025
Tweet

Other Decks in Programming

Transcript

  1. 目次 Part1: 海難事故の現況と新システムの提案 Part2: プロトタイプ v1 開発(2015.4 - 2015.10) Part3:

    プロトタイプ v2 開発(2016.4 - 2018.3) Part4: 国土交通省が定義したガイドラインについて 今後について iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校 3
  2. 現状の海難事故対策 -AIS(Automatic Identification System)- iOSDC Japan 2025 09/20 10:50〜 Track

    A | ©弓削商船高等専門学校 船舶・陸上施設間で船舶や航海に関する情報を VHF電波で送受信するシステム 海上保安庁も航行管制のために利用している 搭載義務:内航船500総トン、外航船300総トン以上 小型船舶にはコスト、申請が必要などの 理由から普及は進んでいない 6
  3. iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校 システムの特徴

    iOSアプリのインストールのみで利用可能 AISでやり取りされている船舶の情報も表示 VHF電波の受信機から定期的にAIS情報を受信 機能1: 危険検知機能 既存のAIS受信機にはない、船舶の危険検知機能 他船の衝突検知 陸地・浅瀬への乗り上げ 機能2: 海上情報表示機能 海上の様々な情報を表示する 他船情報 気象情報 9
  4. Part2: プロトタイプ v1 開発と検証(2015.4 - 2015.10) 進んだ注 当時の開発メンバー(僕含め5名)は全員iOS開発ほぼ0の状態で開発しています 全国高等専門学校プログラミングコンテストに出すため、上記の期間でプロトタイプを開発しました 補足

    iOSで言うとiOS8 ~ 9のあたりで、開発期間中にiOS9が来ました Swiftで言うとSwift v1.x系のあたりで、Swift v2.0が開発期間中に来ました WkWebViewが出たぐらいでした ※ 全国高等専門学校プログラミングコンテスト: https://www.procon.gr.jp/ iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校 10
  5. プロトタイプv1:海上地図 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    本システム専用の海上地図 以下の構成で独自の海上地図を作成 海上保安庁の公開している500mメッシュ水深データをもとに 水深図(等高線の図)を作成し、着色したタイル画像 国土地理院が公開している情報をもとに配信されている、 陸地のみのタイル画像 技術選定に問題発生 iOS MapKit上でネイティブ表示したかったが、 当時の技術調査で実装例が見つけられず、 やむをえずLeaflet.jsで表示することになった 海上地図表示にUIWebViewを使うことにした ↓ 12
  6. プロトタイプv1の検証:危険検知機能のパフォーマンス問題 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    自船の進路方向と速度を元に30秒後の座標を予測、 その座標周辺の情報と比較することで危険判断を行う 危険検知について 他船の30秒後の位置 自船の進路方向に他船がいないかどうか 付近の水深値 自船の喫水(沈む深さ)より浅瀬かどうか パフォーマンスについて 船舶の情報取得量を現在表示している領域内に絞ることで、 安定して処理できた 表示周りがWebViewなので、 画面表示・ユーザ操作時のカクツキが目立った 15
  7. プロトタイプv1の検証:海洋クラウドに関する技術勉強会 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    2025/10/27 に 四国情報通信懇談会 主催の 海洋クラウドの技術勉強会に参加 関係各社・海上保安庁にプロトタイプの デモンストレーションを実施 以下のフィードバックを頂いた フィードバック事項 iOSアプリの機能としてはOK 水深地図の機能は一旦落とした方が良い 500mメッシュ水深の情報は航行支援に利用する ために、計測したものではないため 16
  8. プロトタイプv1の検証:定期航路上の実験 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    iPhoneで瀬戸内海エリアの定期航路上で 通信ができるかの検証を行いました 日時 調査航路 キャリア 4G/3G GPS 2015/08/11 弓削島 → 今治 B社 △ ◯ 2015/08/12 弓削島 → 因島 B社 ◯ ◯ 2015/08/17 今治 → 弓削島 B社 △ ◯ 2015/09/01 弓削島 → 因島 A社 ◯ ◯ 2015/09/07 因島 → 弓削島 A社 ◯ ◯ ◯:4Gで良好 △:一部使用不可 ✕ :使用不可 ※ 当時の検証データになりますので、参考値程度 ※ 2015/9以降はプロトタイプでの検証も入っています。 17
  9. プロトタイプv1の検証:法的な課題に関する分析 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    各社との情報交換やリリースに向けての技術調査の中で出てきた課題として、電波法の抵触リスク がある 電波法59条 何人も法律に別段の定めがある場合を除くほか、特定の相手方に対して行われる無線通信(電気通信事業法第4条第1項又は第 164条第3項の通信であるものを除く。第109条並びに第109条の2第2項及び第3項において同じ。 )を傍受してその存在若しく は内容を漏らし、又はこれを窃用してはならない。 ※ スライド作成時の 2025/8/17 19:41 時点での原文をそのまま記載しています e-GOV 法令検索 電波法(昭和二十五年法律第百三十一号),https://laws.e-gov.go.jp/law/325AC0000000131/20251001_507AC0000000027#Mp-Ch_5-Se_1-At_59 AIS受信機で得た情報をスマートフォンに配信するのは、"窃用" に当たる可能性がある? ただし、窃用だとも明言されていないため現状はグレーゾーンとなっている 18
  10. Part3: プロトタイプv2 開発と検証(2016.4 - 2018.3) 進んだ注 プロトタイプv1をベースに、学科横断の研究テーマとして開発と検証を進めました 開発メンバーは2名になりました 空白の期間の間にアプリ部分のフルSwift化も実施しました 補足

    iOSで言うとiOS9 ~ 11 Swiftで言うとSwift v2.x ~ 3.x系のあたりで、途中v3系への移植で悲しい思いをしました iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校 19
  11. プロトタイプv2:iOS コードベース書き換え iOSDC Japan 2025 09/20 10:50〜 Track A |

    ©弓削商船高等専門学校 海上地図の機能は海上保安庁の フィードバックに従い、削除する 地図周りをネイティブに 寄せられるようになった 船舶のレーダーや他アプリを参考に アイコン周りも変更 利用技術:MapKit MKAnnotationView.image AIS, 本システム共に進行方向を 取得しているため、アイコンの 回転で進行方向を表現 MKCircle 危険が検知された範囲を赤丸で 描画する 21
  12. プロトタイプv2:iOS コードベース書き換え iOSDC Japan 2025 09/20 10:50〜 Track A |

    ©弓削商船高等専門学校 本システムは船舶内に端末を固定して 使うことが想定される 自船の速度、進行方向については 位置情報から算出する形が望ましい 利用技術:CoreLocation CLHeading 位置情報から算出した進行方向 CLLocationSpeed 位置情報から算出した速度 船の速度表記でよく使われる knotにも変換する ※ 当初は調査不足が理由で、2点の位置情報から自身 で算出するロジックを実装していた 22
  13. プロトタイプv2の検証:海上での実証実験 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    小型船舶操縦者4名に航海中に利用してもらい、その後アンケートを取った 調査航路: 弓削島 - 新居浜 日時: 2016/04/28 09:45 ~ 10:45 24
  14. プロトタイプv2の検証:海上での実証実験 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    フィードバック 操船中に画面を見ることはあまりない、すべきでない 積極的にアプリ操作をする必要がないものになってるので、より通知に気づきやすくする仕掛けがあると良い 25
  15. プロトタイプv2の検証:AppleWatchを使ったインタフェース案の検証 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    構成 スマートフォンで危険検知をする AppleWatchには危険検知の結果のみを送信する 危険時にはバイブレーション、音の再生を行う 利用技術 WatchConnectivity リアルタイムにAppleWatch - iPhone間でデータ送信 WKInterfaceDevice.play() AppleWatchでバイブレーション、音の再生を行う 27
  16. プロトタイプv2の検証:AppleWatchを使ったインタフェース案の検証(補足) iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    検証当時はなかったが、 今はApple Watchに常時点灯のモデルが出ている Series 5以降は「常時点灯ディスプレイ」をOS側で設定する 手首を下げてもスクリーンがオフにならない 利用技術(≒ 設定) WKSupportsAlwaysOnDisplay watchOS 8以降からは、アプリ側で常時表示オンにするかを 決める設定ができる 28
  17. プロトタイプv2の検証:AppleWatchを使ったインタフェース案の検証 iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    AppleWatchを組み込むことでシステムからの通知に 海上でも気づきやすくなるのかの検証も実施 海上での応答時間取得実験 航行中の小型船舶上で実験 実験日:2016年10月26日 実験場所:弓削-岩城島航路 実験後に被験者へヒアリングを実施 通知は作業しながらでも、気付けた 航海中、音は一切聞き取れず、振動が頼りだった 振動はもう少し大きくても良いと感じた 騒音や波揺れの大きい船舶の上では、 AppleWatchによる音と振動を組み合わせた通知が有効 29
  18. 国土交通省のガイドライン iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    スマートフォンで動作する小型船舶航行支援アプリに 期待される主な仕様が右図の6つ 他船接近警告(★) : 船舶間の衝突検知 危険海域警告(★) : 危険、注意海域への接近や侵入検知 危険海域: 浅瀬、岩礁、漁網、障害物がある海域 注意海域: 交通量・事故が多く注意を要する海域 航行支援情報提供: 波高、風向・風速、天候 その他情報提供: 観光情報、点検支援情報の提供 緊急連絡(★) : 118通報への導線、他船へメッセージ送信 ★マークの箇所が、安全航行支援に直接的に関わる。 今回は特に重要な他船接近警告を重点的に解説する 37
  19. 国土交通省のガイドラインへの対応アプリについて iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校

    本校もリソース不足が原因でアプリの正式版はリリース できていない 本校の調査だと、既存アプリは情報の更新頻度や他船接 近警告について、課題があるアプリがほとんどであった 課金やサブスクでの機能開放がほぼ前提 国土交通省のガイドライン通りの基準を採用した、 他船接近警告の機能を持つアプリがなさそう スマートフォンを用いた AIS 代替システムの動向について,長尾和彦,日本航海学会 第149回講演会・研究会 国土交通省のガイドラインに従った他船接近警告機能を 持つアプリは需要が高い 38
  20. 国土交通省のガイドライン -他船接近警告- iOSDC Japan 2025 09/20 10:50〜 Track A |

    ©弓削商船高等専門学校 ガイドラインでは、他船の接近を警告する方法としては以下の2種類を想定 A、Bどちらにしないといけない等の指定はない A)他船が一定距離以内に近づいた場合に警告する方法 B)自船・他船の進行を予測して、衝突のおそれがある場合に警告する方法 実装のシンプルさを優先するならAパターンになる。今回はAパターンを優先して解説する 40
  21. 国土交通省のガイドライン -他船接近警告- iOSDC Japan 2025 09/20 10:50〜 Track A |

    ©弓削商船高等専門学校 海上での実証実験にて発覚した事実は以下であった スマートフォンのGPS誤差:最大20m 他船が接近していることの警告を受けてから、他船を回避するまでに必要な時間:18秒 上記をもとに、他船接近警告の基準は500mとなった 41
  22. 国土交通省のガイドライン -他船接近警告- iOSDC Japan 2025 09/20 10:50〜 Track A |

    ©弓削商船高等専門学校 iOS: 他船接近警告の判断の処理 func distance(from location: CLLocation) -> CLLocationDistance 位置情報2つを指定することで、その距離を取得することができる(単位:m) 地球の曲率も考慮した計算式になってる 42
  23. 国土交通省のガイドライン -他船接近警告、船舶の位置表示について- iOSDC Japan 2025 09/20 10:50〜 Track A |

    ©弓削商船高等専門学校 他船を画面上に表示する際、移動向きの方向に 船首を向けて表示する 過去の2点の位置情報から移動向きを計算し、その移 動向きの方向に船首を向けて表示する AISは移動向きを自身で計算して送信してるので、 スマートフォン側も計算した値 or CLHeadingの値を サーバに送るのが良さそう 少なくとも半径1,000m以内の他船を表示可能とする AIS から得られた位置情報を表示する場合は、国際的な 表示方法(IEC62288)を参考にするのが望ましい AIS とスマートフォンのように精度が異なる位置情報 の表示に違いを持たせられるとより良い 43
  24. 国土交通省のガイドライン -他船接近警告、ユーザへの警告方法について- iOSDC Japan 2025 09/20 10:50〜 Track A |

    ©弓削商船高等専門学校 iOS:音と振動による警告 利用技術:AVFAudio、Audio Toolbox AVAudioPlayer.play() 警告音の再生を行う アプリ内に警告音の音声ファイルを入れておき、 他船接近時に音声ファイルをリピート再生する AudioServicesPlaySystemSound() kSystemSoundID_Vibrate などを指定すると、 バイブレーションさせられる 45
  25. 国土交通省のガイドライン -他船接近警告、通信頻度・データについて- ポイント: 3秒間隔でID・位置情報関係(緯度・経度・速度・向き・タイムスタンプ)を送信する iOSDC Japan 2025 09/20 10:50〜 Track

    A | ©弓削商船高等専門学校 通信頻度について 自船・他船の位置情報を、サーバーと送受信する間隔は 3秒以下とすること 参考 小型船舶は操作性能が高いため通信頻度を高くした方がより 安全に寄与できる。一般的なスマートフォンのスペックを考 慮し、レーダーの回転周期の3秒を採用 AIS: 航行速度に応じて最速2秒間隔 一般的なレーダーの回転周期: 3秒程度 通信データについて 少なくとも次のデータをサーバーとスマートフォンとの間で 通信すること スマートフォンを識別するための ID スマートフォンの GPS から得た 緯度・経度、移動速度・移動向きの情報 CLLocationCoordinate2D、 CLHeading、CLLocationSpeed 緯度・経度情報を取得した時刻 timestamp 46
  26. 国土交通省のガイドライン -通信エリア外の挙動- スマートフォンが通信エリア外になった際や通信制限になった際の対応については以下のように定義された ポイント: 3回 or 9秒以上の更新不能状態の際、通信エリア外の表示を行う必要がある iOSDC Japan 2025

    09/20 10:50〜 Track A | ©弓削商船高等専門学校 1. 自船が通信エリア外になった場合 通信が3回又は9秒以上、正常にで きなくなった場合は、ただちにその 旨を表示する 他船の位置情報が信頼できなくなる ため、以下いずれかの対応を行う 他船の位置情報を表示しない バツ印かそれに準じる表示や文 字により明示する 2. 他船が通信エリア外になった場合 他船の情報が9秒以上更新されない 場合、以下の対応を行う バツ印かそれに準じる表示や文 字により明示する 47
  27. 今後について スマートフォンアプリで小型船舶の航行支援を実現していくために、以下を実施していこうと考えています → → 小型船舶航行支援の研究も今年で10年。次の10年はよりアプリ開発やクラウド環境の整備を具体的に進める予定です iOSDC Japan 2025 09/20 10:50〜

    Track A | ©弓削商船高等専門学校 海洋クラウドの実装 船舶情報、危険海域、注意海域 情報を管理するためのクラウド プラットフォームを実装する 船舶情報の管理部分から順次実 装予定。研究関係者の立地の都 合、瀬戸内海・釧路・石垣あた りから対応する OSSのiOS向けライブラリ実装 SwiftUI・Swift6を前提とし、海 洋クラウドから船舶情報や危険 海域・注意海域情報を簡単に取 得できるライブラリの実装 SPM形式で実装を行い、 OSSとして公開予定 OSS版アプリ実装、海上検証 SPMのライブラリをどう実装す るかのサンプルにする このアプリを使って海上での検 証を引き続き行い、学会やイベ ントで定期的に公開する 49
  28. iOSDC Japan 2025 09/20 10:50〜 Track A | ©弓削商船高等専門学校 今回の登壇資料や研究テーマの続報はXアカウントでアナウンスします

    atsuki_seo 気になる点の質問や感想はもちろん、共同研究のお話もお待ちしています! フォローよろしくお願いします 50
  29. EOF -Bon Voyage- iOSDC Japan 2025 09/20 10:50〜 Track A

    | ©弓削商船高等専門学校 51