はじめに
経済産業省は、ドローンの社会実装を促進するために、世界初の「ドローン航路」の整備を進めています。2024年には、浜松市と秩父エリアにおいてドローン航路が開通しました。
従来、ドローンの運用においては各事業者が個別に機体登録や飛行申請を行っていたため、重複投資や申請手続きの煩雑さが課題となっていました。これにより、ドローンの社会実装が進みにくいという問題が生じていました。
この課題を解決するため、共通の「ドローン航路」を整備し、飛行ルートの共有や申請の簡素化を図る取り組みが始まりました。現在、その中核となるドローン航路システムが オープンソースソフトウェア(OSS) として公開されています。
ドローン航路に関するニュースやビジネス紹介の記事は見かけるものの、技術的な構成に踏み込んだ情報はあまり見つかりませんでした。
本記事では、経済産業省がOSSとして公開しているドローン航路システムを技術者目線で読み解き、各機能の概要・リポジトリの対応関係・構築環境などを整理してご紹介します。
リポジトリの一覧はこちらから確認できます。
ドローン航路システムの構成機能とリポジトリ
ドローン航路の全体像は以下のようになっています。
(ドローン航路、離着陸場及びドローン航路システムの仕様・規格PDFファイル)より抜粋
次に、それぞれの機能とリポジトリの対応を記載します。
A-1-1 空間デジタルツイン・風速・天候・気象・DIPS情報
中身は3つのプロジェクトで構成されています。
環境構築はこちらのエクセルファイルを参考に作成します。
SpatialId
空間IDを計算するライブラリです。
宇宙サービスイノベーションラボが作成したソースになります。
C++で作成されたAPIのアプリケーションです。
Visual Studio 2022の環境で動作を想定しています。
drone-web
C++を使ったAPIサーバーです。
WebのAPIはlaravelを使って実装されています。
spaceInfra-cpp
C++で作成されたバッチアプリケーションです。
DBはMySQLを使用しており、個別でインストールした環境に特定の名前のデータベースを作成し、CREATE文を実行してテーブルを作成します。
A-1-2 航路企画
Intent Exchange, Incが作成したソースになります。
航路の画定を行うモジュールです。
Docker Composeの環境にアプリケーションとDBが含まれています。
Javaで実装しており、Springフレームワークを用いて動作しています。
DBはPostgreSQLを使っており、ddlフォルダのsqlファイルにてDBを作成しています。
使用ポート番号は以下の通りです。
- Java: 8081, 48081
- PostgreSQL: 5432
A-1-3 航路予約
KDDI Smart Drone, Incが作成したソースになります。
ドローン航路を予約するモジュールです。
Docker Composeの環境にアプリケーションとDBが含まれています。
アプリケーションはGoで実装しています。
DBはPostgreSQLを使っており、sqlファイルを使ってDBの初期化を行っています。
使用ポート番号は以下の通りです
- GO: 8088
- PostgreSQL: 5432
A-1-4 安全管理
Intent Exchange, Incが作成したソースになります。
航路の安全管理を行うモジュールです。
Docker Composeの環境にアプリケーションとDBが含まれています。
Javaで実装しており、Springフレームワークを用いて動作しています。
DBはPostgreSQLを使っており、ddlフォルダのsqlファイルにてDBを作成しています。
使用ポート番号は以下の通りです。
- Java: 8082, 48082
- PostgreSQL: 5432
A-1-5 ポート・機体管理
Hitachi, Ltdが作成したソースになります。
ポートと機体の管理を行うモジュールです。
Javaで実装しており、Springフレームワークを用いて動作しています。
DBの環境作成については確認ができませんでした。
使用ポート番号は以下の通りです。
- Java: 8080
A-1-6 外部システム連携
NTT DATA Japan Corporationが作成したソースになります。
DIPS 2.0へのトークン発行や飛行禁止エリア情報取得など、外部システムへの情報取得や情報提供する機能群です。
環境作成はこちらのファイルを参考に作成します。
複数の機能を別のDockerfileにて作成し、言語はJavaが使用されています。
データベースはPostgreSQLを使用していますが、個別でインストールが必要です。初期化はDDLとDMLを実行することで実施。
他にMQTTブローカーとSMTPサーバーを作成ことが必要です。
A-1-7 共通GUI
Hitachi, Ltdと NEC Corporationが作成したソースになります。
共通のGUIを表示するためのアプリです。
環境構築はこちらのファイルを参考に作成します。
フロントエンドとしてVue.jsとNuxt3が使われており、Dockerの環境で動作するように作成されています。
データベースとしてPostgreSQLが使用されています。
A-2 API Gateway
NTT DATA Japan Corporationが作成したソースになります。
ユーザー認証システムへの認証・認可およびAPIゲートウェイに関する機能です。
環境構築はこちらのファイルをもとに作成します。
nginxをDockerの環境で動作してルーティングしています。
ポートは8081を使用しています。
以下のドメインをコンフィグファイルに記載することで、それぞれのAPIにルーティングしています。
- 空間デジタルツイン
- 航路画定
- 航路予約
- 安全管理
- ポート・機体管理
- 外部システム連携
- ユーザー認証システム
整理表
それぞれの機能ごとの環境を表に整理しました。
モジュール名 | 使用言語 | フレームワーク | データベース | ポート番号 | 備考 |
---|---|---|---|---|---|
A-1-1:空間デジタルツイン(SpatialId) | C++ | - | MySQL | 不明 | Visual Studio 2022 環境を想定 |
A-1-1:空間デジタルツイン(drone-web) | C++ | Laravel | MySQL | 不明 | APIサーバー |
A-1-1:空間デジタルツイン(spaceInfra-cpp) | C++ | - | MySQL | 不明 | バッチアプリ、DB初期化はCREATE文で実施 |
A-1-2:航路企画 | Java | Spring | PostgreSQL | 8081 / 48081 / 5432 | Docker Compose 構成 |
A-1-3:航路予約 | Go | - | PostgreSQL | 8088 / 5432 | Docker Compose 構成 |
A-1-4:安全管理 | Java | Spring | PostgreSQL | 8082 / 48082 / 5432 | Docker Compose 構成 |
A-1-5:ポート・機体管理 | Java | Spring | 不明 | 8080 | DB構築手順は未確認 |
A-1-6:外部システム連携 | Java | - | PostgreSQL | 8283 | MQTT, SMTPサーバー含む複雑構成 |
A-1-7:共通GUI | JavaScript | Vue.js / Nuxt3 | PostgreSQL | 不明 | フロントエンドアプリ、Dockerベース |
A-2:API Gateway | Nginx | - | - | 8081 | APIルーティング用 |
まとめ
ドローン航路システムは、複数企業が分担して構築した疎結合なコンテナベースのアーキテクチャで構成されています。実装言語やフレームワークが多様であり、かつ、それぞれをオーケストレーションするため、全体を把握・運用するには幅広い技術スタックへの理解が求められ、ます。
本システムはあくまで参照実装ですが、今後のドローン航路の商用・公共利用に向けた足がかりとして有用であり、OSSとして公開されていることでさらなる発展が期待されます。