投稿日

ソラコムのサマーインターンで挑んだ Flux アプリテンプレート開発

こんにちは!ソラコムのインターンのminerinです!

2025年夏、ソラコムのインターンに参加し、いくつかのテーマに取り組みました。本記事ではその中から Flux アプリテンプレート「GPS マルチユニットで位置情報を判定して通知」の開発を取り上げ、内容と学びについて紹介します。記事の後半では、他に手がけた成果についても簡単に触れます。

インターン参加の背景と目的

今回のインターンでは、ローコードIoTアプリケーションビルダー「SORACOM Flux」を使って、IoT ユースケースを作成・実装することを目的としています。単なる試作にとどまらず、一般公開されるテンプレートとして誰でも利用できる成果物として仕上げることにも取り組みました。

私は今回のインターンにほぼフルリモートで参加させていただきました。ソラコムでは多くの方々がリモートで働かれています。最初は対面と違うコミュニケーションの取りづらさなどに不安がありましたが、社内コミュニケーションツールなどの利用、メンターの方をはじめとするチームの方々の支えのおかげで無事インターンを終えることができました。本当にありがとうございます。このようにソラコムでは非同期コミュニケーションで柔軟な働き方ができました。

Flux アプリのテンプレートを作成するにあたってインターン期間の前半で様々なデバイスと Flux アプリで使えるアクションを学ばせていただきました。そんな中で自分が興味を持ったデバイスの一つが GPS マルチユニット SORACOM Edition です。

手のひらサイズのデバイスでありながら、ソラコムの IoT SIM を挿入することで LTE-M 通信により SORACOM のクラウド上に経緯度や温度、湿度、加速度データを送信できます。今回はこちらのデバイスを用いて作成したテンプレートについて紹介させていただきます。

GPS マルチユニットで位置情報を判定して通知 テンプレートの開発

位置情報を活用した範囲判定とは

位置情報の範囲判定とは、GPS 等の位置情報技術を用いて、地図上にあらかじめ設定したエリア(範囲)を基準にして、対象となるデバイスがその境界を出入りした際に特定のアクションを自動実行する技術です。

主な特徴・用途:

  • 見守りサービス: 子供や高齢者の安全確認・行動範囲監視
  • 物流・配送管理: 車両が配送エリアを逸脱した場合のアラート
  • IoTデバイス管理: 機器の移動監視・盗難防止

GPS だけでは可視化された地図を見ていなければ異変に気づけませんが、Flux アプリと組み合わせることで危険にいち早く反応できます。

図1.円形エリアと位置情報の移動の軌跡

GPS マルチユニットを用いた座標・半径指定

今回開発したテンプレートでは、 GPS マルチユニット SORACOM Edition を活用して位置情報の範囲判定と通知機能を実装しました。

実装要素

  • 座標指定: 緯度・経度による中心点の設定
  • 半径指定: メートル単位での判定範囲の定義
  • 進入・退出検知: リアルタイムでの境界出入り判定
  • 通知機能: Webhooksを通じたアラート送信

テンプレートを用いて Flux アプリを作成する際に中心の経緯度と半径を指定することで、地図上に判定用のエリアを設定できます。加えて、Webhooks と呼ばれる http リクエストを用いたエンドポイントへのデータ送信の仕組みを用いて通知を行います。簡単に言うと GoogleChat に URL を介して通知を送れるような仕組みです。Slack や LINE WORKS でも同じようなことができます。

アプリ概要

以下に Fluxアプリの様子を示します。

図2.Fluxアプリの様子

Fluxアプリでは、シンプルで視覚的にわかりやすいローコード環境でシステムを構築できます。

データの流れが非常にわかりやすく、コーディングなどによる開発の経験がなくてもシステムを構築することができます。

  • GPS マルチユニット SORACOM Edition から座標情報が入ってきます。
  • ② 座標データの取得に失敗していた場合はWebhooksに通知を送信します。
  • ③ 座標データの取得に成功していた場合は局所平面座標系への変換、境界の内外の判定を行います。
  • ④、⑤ 最後に、判定結果によってWebhooksへの通知内容を変えて通知を送信します。

※局所平面座標系とは、本来球体である地球を一部だけ平面であるかのように扱うものです。範囲が広くなってしまうと、境界付近での誤差が大きくなってしまいます。今回のテンプレートでは円形の境界の中心を原点としています。半径が大きすぎる(数百km)場合は使用が難しいです。

複雑なエリア判定ツールの紹介

今回のテンプレートでは中心座標と半径を指定して、円形の範囲指定を行いましたが、当初の予定ではもっと複雑なエリアにも対応することを考えていました。判別式が複雑になりすぎるため、テンプレートとしては実装を見送りましたが、こちらに紹介させていただきます。

判別方法

判別方法としては、レイキャスト法と呼ばれるものでエリアの境界と現在地を適当に決めます。(下図)

図3.レイキャスト法の例

現在地から適当な方向に半直線を引いた時、境界線との交点の数を数えます。

  •  → それが奇数ならば、境界の中に現在地はあります。
  •  → それが偶数ならば、境界の外に現在地はあります。

実装

ChatGPT に html 形式でツールを作らせました。以下の画像のように、頂点指定、四角、円形の三種類でエリアの境界を作ることができます。

( -33483.683481 > payload.y ) != ( -34832.366746 > payload.y )のような不等式の集合のような形で判定式を出力してくれます。

こちらの判定式を先ほどのFluxアプリの”定領域の内外判定”という名前のRepublishアクションの設定部分にコピー&ペーストで書き込むことで、複雑な凹凸を持った図形でも位置情報の範囲判定ができるようになります。

{
  "inside": ${<ここにそのままペースト>},
  "lon":${payload.lon},
  "lat": ${payload.lat},
  "cen_lon":${payload.cen_lon},
  "cen_lat":${payload.cen_lat},
  "radius":${payload.radius}
}

その他、取り組んだ成果の概要

ここには書ききれませんでしたが、今回のインターンを通して本当にたくさんのことを学ばせていただきました。その他の成果物についてもここに列挙させていただきます。

RTSPカメラを用いたAI人数カウントテンプレート

SORACOMにはソラカメと呼ばれるクラウド型カメラサービスが存在します。それを用いてさまざまな現場のDXを行えるのですが、既存のRTSPカメラ(*)でもFluxアプリを用いて同じようなことができるようになるテンプレートを作成しました。

(*) RTSPとはReal-time Streaming Protocolと呼ばれるストリーミングメディアの配信を制御するプロトコルです。

パーソナルお天気レポーターテンプレート

こちらはその名の通り、貴方のためだけの天気レポートを考えてくれるシステムです。今回紹介した GPS マルチユニット SORACOM Edition と同じものを用いて、GPS で取得した位置情報をもとに、ウェザーニュースの天気予報 API を呼び出して周辺の天気予報を取得します。それだけでなく、GPS マルチユニットで取得した温湿度をともにデータとして取り入れ、AIが個人に向けた天気レポートを行います。プロンプトを修正することで、小さなお子さんや高齢者など自分で温度管理が困難な方への参考情報として活用できます。

熊警報システム

ソラカメと Flux アプリ、ラズベリーパイとスピーカーを用いて、熊がカメラに写った時に音を鳴らして警告するシステムです。北海道のスーパーでは食料品目当てで搬入口などに熊が出現することが度々あるようです。そんな時、従業員の方と鉢合わせになってしまった場合のリスクを低減するためにこのようなものを考案しました。こちらのシステムは、実際にスーパーの担当者の方と打ち合わせをさせていただく機会を設けていただきました。自分の考案したシステムを提案させていただく貴重な経験ができました。

インターンを通して学んだこと

インターンで業務に携わる中で毎日が新しい体験や発見、学びの連続でした。2025年夏は間違いなく大きな成長の夏だったと思います。技術的な部分での学びでは以下の3点が自分の中で大きかったと思います。

  • IoT機器のデータ取得・送信の実装方法を習得
  • ネットワーク設定や通信の仕組みを実体験で理解
  • クラウド基盤の様子を知る

開発環境の学び

  • GitHubを使った環境管理・チーム開発フローを経験

全体的な気づき

  • 個人開発では触れられない規模・仕組みを体験できた
  • 実際の業務で必要とされる技術のつながりを把握できた

課題と今後の展望

課題

ユースケースは作成できた一方で、レシピやブログとしての紹介が十分にできず、『作って終わり』になってしまったものがあります。また、個人的な課題としてシステムやコード、仕組みなどに対して質問する際に概念的な理解を持っていても、説明できなければ理解とは言えず、言語化能力の不足を痛感しました。

今後の展望

今回学んだことを余すことなく研究やキャリアにも活かしていきたいと考えています。特に情報・通信系の分野で、社会に役立つ応用につなげたいです。

ソラコム インターン minerin