みなさまこんにちは。
ソラコムでソフトウェア開発エンジニアをしている ogu です。
本日 SORACOM Flux(フラックス) のリリースを皆様にお伝えできることを大変うれしく思います。
![](/ja-jp/wp-content/uploads/2024/07/flux-logo-1024x468.png)
SORACOM Flux がどんなものなのか、どうやって使うのかというのは公式のドキュメントに譲り、ここでは私が開発に関わった SORACOM Flux がどうして生まれたのか、どのようにして作られたのかといった、裏話を書かせていただきたいと思います。
SORACOM Flux が生まれたきっかけ
私自身はここ数年はソラカメの API の開発に携わっていた関係で自宅にもソラカメを数台設置して活用していて、その中で「こんなことができたらいいのにな」と思うことがありました。裏を返せば、今のソラカメと SORACOM ではまだ機能が不足していることに気が付いたのです。こういうところに新規サービスの種が埋もれているものです。
そこで私はソラカメと SORACOM を使ってそれを実現するためにはどんな機能が足りていないんだろう?どんな機能を実装すればそれが実現できるのだろう?と考えました。そのアイディアを膨らませて社内のプレスリリースコンテストに応募しました。
ソラコムでは社員が架空のプレスリリースを書いてアイディアを競い合うコンテストが定期的に行われます。そしてそのコンテストの中から実際のサービスにつながったものもたくさんあります。例えば 2020 年に発表した SORACOM Orbit など
私が今回提出したそのアイディアは、社員による投票で惜しくも 2 位でしたが、将来の SORACOM にとって必要だという CTO の判断で開発が正式にスタートしました。そして私自身もその開発に関わらせていただきました。
さて、私がソラカメを使っていて「こんなことができたらいいのにな」と思ったのは具体的には以下のようなことです。
私は自宅のベランダに置いてある複数のプランターをソラカメを使って見守っています。ある朝、プランターに水やりをしに外へ出てみると、サツマイモを植えていたプランターが何者かに掘り返されて半分以上食べられてしまっていました。害獣のしわざに違いないと思ってソラカメの映像を確認してみると、そこにはタヌキのようなアライグマのような動物がプランターを掘り返している映像が残っていました。犯人はわかったものの、次は録画するだけではなくその動物を追い払ってプランターの植物を守りたいと思いました。ただ、ソラカメに標準で備わっているモーション検知機能だけですと、風で周りの草木が揺れただけでも反応してしまいますし、家族や害獣ではない動物が通りかかっただけでも検知してしまいますので、それをいちいち人間がチェックするわけにもいきません。
そこで、ソラカメで撮影した映像を AI で判定し、プランターに悪さをしようとしている動物を検出したら家族のスマホに通知したり、可能なら音や光で動物を追い払う、というようなことができたらいいなと思いました。そのためには、映像を外部の AI サービス(ChatGPT など)に送り、害獣がいるかどうかを判定させた結果を元に何らかの方法でスマホに通知したり、ベランダに設置する別のデバイスを駆動して音を出させたり光らせたりする必要があります。
このような一連の動作の流れ、ワークフローのようなものを作るには、何かしら SORACOM 外部のサービスを利用する必要がありそうでした。しかし外部にデータを送ってしまうと、SORACOM のプラットフォームはただの通過点となり、価値を提供できないのでは、とも考えました。一方で、本職のエンジニアである私達でも、画像とAI、そして通知やアクションを連携するためには AWS 等にプログラムをデプロイして、AI サービスを呼び出して、通知は、といった仕組みを調べて作る必要がありますし、さらに保守するのは結構大変です。SORACOMのプラットフォームがAIをはじめとする外部のサービスと連携を容易にして、スピーディに IoT アプリケーションを作れるようにする。これこそがプラットフォームで解決すべき課題なんじゃないか、と私は考えました。実際には、ソラコムが独自の LLM を作るというのはちょっと難しそうですし、SORACOM の外の世界には便利なサービスが他にもたくさんあるのは事実です。そんな外の世界のサービスと IoT デバイスをうまく連携させられるような、IoT の世界のハブ (Hub) になれるようなサービスを作れないだろうかと考えました。そしてその思いを架空のプレスリリースという形にして提案したのです。
なお、サービス名の SORACOM Flux は、データの「流れ」を意味する Flux という語から来ています。ユーザーの皆様が、データの流れを自在に制御して目的を達成していただきたいという思いを込めています。
🔱 SPEARs(スピアーズ)による開発
ソラコムの開発組織の中には SPEARs と呼ばれるチームがあります。私もそのチームの一員ですが、CTO 直属で新サービスの開発をしたり既存のアーキテクチャの大規模な改修をしたりといったことを手掛けるチームです。ちなみに SPEARs の名前は Study / Prove / Enable / Architect / Realize の頭文字を取った名称で、新技術の調査や実証を率先して行い、他のチームがその技術を使えるようにイネーブルメントし、SORACOM 全体のアーキテクチャを考え、そして机上の空論にとどまらずちゃんと製品として実現してリリースするところまで責任を持って取り組もうという心意気を表しています。
今回、SORACOM Flux の開発はこの SPEARs が総力を上げて取り組みました。まず初期の段階では moto (CTO of Japan)、akira (次世代のスーパーエース)、nori (エンジニアをモチベートするのがうまいチアリーダー)、そして私 ogu の 4 名で集中して議論を重ね、コンセプトを固めたり、技術要素の検証をしながらアーキテクチャを決めていきました。
ある程度アーキテクチャが決まってきたところで分担して作業できるようにコンポーネントを分割しました。そして moto は Gen AI 周り、akira はコア部分と UI、ogu はそれ以外の周辺パーツ(Harvest Files との連携やタイマー、通知など)、nori はプロジェクト管理やさまざまな調整などと担当を決めました。途中で機械学習や画像処理のスペシャリストの koki が Join し、サクッと物体検知アクションを Rust で実装してくれたときは鳥肌が立ちました。(機械学習による簡易的な物体検知を活用すれば、LLM に渡す前に画像の簡単なふるい分けができ、コスト効率がよくなります。たとえば人物が写っていない画像は LLM で高度な判定をする必要がないので LLM には渡さないといったようなことができます)
そうして各自が少しずつ動くコードを積み重ねて行き、常に結合して動作確認しながら、みんなで忌憚なくフィードバックをするというサイクルを繰り返しました。データを AI に渡して AI からの答えをまた別のアクションにつないだ時、UI のプロトタイプが動いた時、タイマーが動いたとき、Harvest Files との連携がうまくいったとき、、、いろんな瞬間にみんなで喜び合いました。
作りながら、「このサービスは使ってて本当に便利だし、なにより楽しい!」と思うようになってきました。この感覚は、私たちがソラコムを立ち上げた当初、API やユーザーコンソールや SORACOM Beam といったサービスを作っていたあの頃の感覚に近いものがあったと思います。いや、あの頃以上にすごい仲間が増えて、あの時よりもすごいことが出来ているというワクワク感があったといったほうが正しいかもしれません。
ソラコムでは、そんなふうにサービスを一緒に作り上げてくれる仲間を大募集中です!
ご興味のある方はぜひこちらをご覧ください。
いきなり採用面接じゃなくても、エンジニアとカジュアルに話をしてみたいといったご要望も大歓迎ですのでぜひご連絡ください。
SORACOM Flux であなたもワクワクを
SORACOM Flux は「ローコード」と謳っていますので、簡単なアプリであればユーザーコンソールの Web UI でポチポチしていくだけで作成できてしまいます。ぜひみなさんも SORACOM Flux でみなさん自身のアイディアを試してみてください。そして私達が感じたワクワク感をぜひ感じてみてください。
Try! SORACOM Flux キャンペーン
SORACOM Flux のリリースにあわせて、Try! SORACOM Flux キャンペーンを開催します!
今なら(2024年7月末まで限定で)Gen AI の実行に必要なクレジットを追加でプレゼントする「Try! SORACOM Flux キャンペーン」を実施中ですので、この機会にぜひ SORACOM Flux を試してみてください。
- 7月中に SORACOM Flux を試した方(*1) に、もれなく200クレジット(*2)をプレゼントします。
- さらに、SORACOM Flux に関するブログ記事を執筆していただけた方に、追加で400クレジットをプレゼントします! (*3)
(*1): 7月31日 23:59 UTC の時点で1つでもFlux アプリがあること
(*2): SORACOM Fluxから利用できる外部サービスのリクエスト数の上限は「クレジット」により管理されます。たとえば、Amazon Bedrock Anthropic Claude 3 Haiku では 1 リクエストごとに 1 クレジットを消費します。Azure OpenAI GPT-4o では 1 リクエストごとに 10 クレジットを消費します。AIモデルと消費するクレジットは「利用できるモデルと消費するクレジット」を参照してください。
(*3): 応募フォームは別途、当ブログでお伝えします。
そしてもし SORACOM Flux に「こんな機能があったらいいのに」「こういうことをしたい」といったことに気づかれましたら、フィードバックをお寄せいただけたら幸いです。
私達自身も、すでに「あんな機能がほしい」「こんな機能が足りていない」というところにたくさん気づいています。これからも SPEARs のメンバーで継続的に開発を続け、怒涛の追加機能リリースを予定していますのでぜひお楽しみになさってください。