やりたいこと
ソラカメを使って日々の情報発信を行っていますが、今回は2台のソラカメを使い分ける方法を試してみたいと思います。
- ある日は カメラ A を使う
- 別の日は カメラ B を使う
具体的には、奇数日ならカメラ A、偶数日ならカメラ B といった切り替えを行いたい、というものです。
SORACOM Flux での条件分岐
SORACOM Flux アプリで処理を分岐させたい場合、
一般的なプログラミングのように
- if 文
- switch 文
で「条件を評価して一つの処理に進む」というイメージとは少し異なります。
Flux アプリの場合は、
あらかじめ複数の処理ルート(アクション)を並べておき、それぞれに“実行条件”を設定しておく。実際の実行時には、条件を満たすアクションだけが実行される。
という考え方の方がしっくりきます。
公式ドキュメントは以下を参考
Flux の条件分岐は「1本のルートを選択する」ものではなく、複数アクションのうち実行条件を満たすものだけが動くという仕組みになっていると考えると理解がしやすいです。
実装例:奇数日/偶数日でソラカメを切り替える
ここでは、実際に SORACOM Flux アプリで実装した “奇数日/偶数日で使用するソラカメを切り替えるフロー” を紹介します。
今回の仕様は次のとおりです:
- インターバルタイマーで 1 日に 1 回トリガーが発生
- 奇数日なら ソラカメ A の静止画を取得
- 偶数日なら ソラカメ B の静止画を取得
- 取得した画像は 生成 AI 解析アクションに渡して処理
- 出力(通知など)は 共通の後続処理へ合流
Flux では「条件で処理を切り替える」ではなく、
2 つのソラカメ静止画取得アクションを並べ、実行条件だけで動く方を選ばせる構造になります。
それぞれのアクションに "アクションの実行条件" を記述します。
偶数日の条件
getUTCDate(now()) % 2 == 0
奇数日の条件
getUTCDate(now()) % 2 == 1
これにより、片方のアクションだけが実行されるようになります。ソラカメ A/B のアクション自体は同じ静止画の取得ですが、実行条件をそれぞれ設定することで、日付ベースの制御が簡単に実現できます。
共通のアウトプット設定
今回の実装では、使用するカメラは切り替えますが、後段の処理は共通となります。そのため、アウトプットチャネルを一緒にしておくことで、後段処理は共通化が可能でした。
今回の実装では
- どちらのカメラを使うかは日付で切り替えたい
- しかし 後段の処理(画像解析・通知・保存)は共通化したい
という要件がありました。
Flux ではアクションの最後を 同じアウトプットチャネル にしてしまえば、どちらのカメラ経由でも同一の処理フローに合流できます。これにより、後続処理は単一のロジックで保守が可能になります。
まとめ
今回は、日付による処理の切り替えの実装方法を紹介しました。
自分自身はじめはどうやるのか少し戸惑ったのですが、
- 複数のアクションを並べておく
- アクションごとに“実行条件”を設定する
- 条件を満たしたアクションだけが実行される
という Flux アプリの仕組みを活かすことでシンプルに実装できました。
また、一部の処理は条件で切り替えたいが、あとの処理は共通化したい場合なども一般的によく見るケースなので、さまざまな場面で応用がかのうになると思います。

