投稿日

“現場で作る”カメラ× AI!ソラカメAPIとClaude Codeで定期巡回を自動化してみよう!!

こんにちは!クラウド型カメラサービス「ソラカメ」と、SORACOM Fluxの事業責任者を担当しております高見(ニックネーム:yuu)です。

これまでこのブログでは、ソラカメAIやSORACOM Fluxを使ったさまざまな「カメラ×生成AI」の活用方法をご紹介してきました。おかげさまで、実際に現場で活用いただくお客様の事例もどんどん増えています。

今回は少し趣向を変えて、ソラカメのもう一つの特長である「APIが標準で利用でき、仕様がWEB上に一般公開されている」点に注目した活用方法をご紹介します。使うのは、Anthropic社の生成AI「Claude Code」の定期実行機能です。なんと、プログラムを1行も書かずに、日本語の指示だけで「1時間ごとにカメラの画像をAIがチェックして、気になることがあればSlackに通知する」仕組みが作れてしまいます。

「カメラ×AI活用」の、もう一つの課題

「棚が空いてきたら教えてほしい」「閉店後に照明が消えているか確認したい」「駐車場が混んでいるか知りたい」などなど、現場ごとに見たいポイントは本当にさまざまです。

一方で、こうした現場ならではのニーズを形にしようとすると、「専用の機能がない」「作るにはエンジニアに頼まないといけない」という壁にぶつかりがちです。

SORACOM Fluxはローコードで柔軟にワークフローを組め、Developer planには無料枠があるので「すぐ試せる」、「画像を生成AIで解析するための豊富な前処理が選択できる」等の特徴がありますし、ワークフローを定義するので条件分岐やエラー処理を明示的に細かく制御できる点があり、商用展開する場合に最適なサービスです。

しかし、「なんとなくソラカメ×生成AIで、何ができるかもっと手軽に”当たり”をつけたい。」、「ドキュメント読めばすぐできるのはわかるけど、”当たり”をつけるために学習したくない」という声を頂くこともございます。

そこで「現場でDIY」のご提案

そこでご提案したいのが、ソラカメAPIと、Claude Codeの「定期実行機能(ルーティン)」機能を組み合わせて活用する方法です。

Claude Codeは、名前に「Code」と付いていますが、実は日本語で指示するだけで作業をこなしてくれるAIです。そしてRoutinesは、その指示を保存しておき、「毎時」「毎日」といったスケジュールで自動実行してくれる機能です。

ポイントは次の3つです。

  • 指示は日本語の「業務手順書」でOK:「画像を取得して、棚に空きがあればSlackに通知して」と書くだけで、Claudeが自分でソラカメのAPIを呼び、画像を見て判断してくれます
  • PCを閉じていても動く:処理はAnthropic社のクラウド上で実行されるので、パソコンを24時間起動しておく必要はありません
  • ソラカメはAPIが標準公開されている: ソラカメライセンスさえ契約していれば、公開されているAPIをそのまま使えます

では、実際にやってみましょう。まず、はじめにご確認を。

実現するために事前に準備が必要なものをご紹介します。

  • ATOM Cam 2 または ATOM Cam Swing (AI解析の場合、画角が固定している方が扱いやすいのでATOM Cam 2をオススメします)
  • ソラカメ クラウド常時録画ライセンス (保存期間はいずれでも問題ありません)
  • カメラを設置する場所でWi-Fi(2.4GHz帯)が利用できること
  • Claudeの有料プラン(Pro、Max、Team、Enterpriseのいずれか。Enterpriseの場合は、Claude Codeが使えるsuiteが必要です。(※))
  • GitHubアカウント(無料で作成できます。プログラミングの知識は不要です)
  • Slackのワークスペースと、通知を受け取るチャンネル(ご自身が参加しているチャンネル)

※Team・Enterpriseプランをご利用の場合、組織の管理者がRoutinesやクラウドセッションを無効にしていると利用できません。事前に社内の管理者の方にご確認下さい。

まずは完成形のイメージからご説明致します。

今回は例として、「倉庫の棚を1時間ごとにチェックし、空きスペースが半分以上になっていたらSlackに通知する」仕組みを作ります。

処理の流れは次の1〜6のとおりです。

  1. Claude Code Routinesが1時間ごとに自動で起動する
  2. ClaudeがSORACOMの認証キーを使って、APIキーとトークンを取得する
  3. ソラカメのクラウド録画から、5分前の静止画を切り出す(エクスポート) 
  4. 切り出しが完了したら、画像をダウンロードする
  5. Claudeが画像を見て、棚の空きスペースが半分以上あるかを判定する
  6. 空きが半分以上ある場合だけ、Slackに状況を投稿する

それでは、設定方法を順を追って解説させて頂きます。

手順① SORACOMで、Claude専用のSAMユーザーを作成する

まず、ClaudeがソラカメのAPIを使うための「専用アカウント」を作ります。SORACOMでは、この専用アカウントのことをSAMユーザーと呼びます。

SORACOMユーザーコンソールにて、SAMを作成します。手順詳細はこちらです。
メニューから「セキュリティ」を開き、SAMユーザーを新しく作成して下さい。

名前は任意で構いませんが、「claude-routine」とします。(キャプチャ画像は違う名前ですがご容赦下さい)

作成したら、SAMユーザーに権限設定をします。詳細手順はこちら。
作成したSAMユーザーを選択して下さい。皆さんは今回「claude-routine」にされているかと思います。

権限設定タブを選択し、下の直接指定のウィンドウに後述するJSONパーミッション構文(権限を規定するもの)をコピー&ペーストして下さい。
そして、必ず「保存」ボタンを押して下さい。

以下が今回利用するパーミッション構文です。
貼り付けたあとに、半角または全角スペースが入ってたりするとエラーになるので注意して下さい。
【補足】OAuth2:authorizeは、SAMユーザーでソラカメのAPIを使う際に必要な権限です。忘れずに追加して下さい。

{
  "statements": [
    {
      "effect": "allow",
      "api": [
        "SoraCam:listSoraCamDevices",
        "SoraCam:exportSoraCamDeviceRecordedImage",
        "SoraCam:getSoraCamDeviceExportedImage",
        "OAuth2:authorize"
      ]
    }
  ]
}

次に、認証キーを生成します。権限設定タブをおして、認証キーを生成ボタンを押して下さい。

表示される「認証キーID」と「認証キーシークレット」は、後の手順で使います。
認証キーシークレットは生成時にしか表示されないので、安全な場所に一時的に控えておいて下さい。

あわせて、対象カメラのデバイスIDも確認しておきましょう。デバイスIDは、ユーザーコンソール内のデバイス管理画面またはソラカメViewerで確認できます。
ユーザーコンソールでの確認方法はこちらです。
※デバイスIDの記載の横にメモアイコンがありますが、押すとクリップボードにコピーできます。こちらも安全な場所にメモ等で控えておいて下さい。


手順② GitHubで、Claudeの作業場所(リポジトリ)を作る

Claude Code Routinesは、実行のたびに「リポジトリ」と呼ばれるGitHub上のフォルダを作業場所として使う仕組みになっています。
今回はこのフォルダの中身は使わないので、空のものを1つ用意するだけでOKです。

GitHubにログインし、新しいリポジトリを作成して下さい。以下のとおりに設定します。
GitHubのアカウントを持っていない方は無料で作成できますので、GitHubの公式ガイドを参照して下さい。

  • Repository name:任意(ここでは「soracam-routine-demo」)
  • Choose visibility:「Private」

設定したら、「Create repository」ボタンを押して下さい。

なお、このリポジトリは、Claudeの作業用なので読者の皆さまが直接触れる必要はありません。

手順③ ClaudeとGitHubを連携する

ブラウザで https://claude.ai/code を開き、カスタマイズ>コネクタと進み、右上の検索窓で「github」と検索して、GitHub連携を選択して下さい。
そのまま、画面の案内に従ってGitHubを連携して下さい。既に連携済みの場合はskip頂いて結構です。
(Claude のデスクトップアプリでも出来ますが、認証連携等の際にWEBの方はスムーズなのでこちらでご説明します。)

途中でGitHubの画面に移動し、「Claude GitHub App」のインストールを求められます。インストール先にご自身のアカウントを選び、Repository accessでは「Only select repositories」を選択して、②で作成したリポジトリだけを指定して下さい。こうすることで、Claudeがアクセスできる範囲をこのリポジトリだけに限定できます。

なお、ここでの連携はブラウザ上で「許可する」ボタンを押していくだけで、GitHubの認証キーなどを自分で発行する必要はありません。

手順④ ClaudeとSlackを連携する

Claudeの画面左側のメニューから「カスタマイズ」を開き、「コネクタ」タブからSlackを選んで接続して下さい。
こちらも、ブラウザ上で許可するだけで完了します。

【注意】Slackへの投稿は、ご自身のSlackアカウントとして行われます。取扱いにはご注意下さい。

手順⑤ クラウド環境を作成して、認証キーを設定する

次に、Claudeが作業するクラウド上の環境を作ります。ここで、①で作成したSORACOMの認証キーを設定します。

初めてClaude Codeを使う場合は、「最初のクラウド環境を作成」という画面が表示されます。名前は任意で構いませんが、ここでは「soracam-demo」としています。ネットワークアクセスは「Trusted」を選び、「作成して完了」ボタンを押して下さい。

【補足】既にクラウド環境を作成済みの場合は、claude codeトップ画面の下の検索窓のところで、「クラウド環境を追加」を選択して新たに作成して下さい。

作成したら、続けて設定を編集します。左側のメニューの「新規」を押し、メッセージ入力欄の上にある雲のアイコン(「soracam-demo」と表示されている部分)をクリックして下さい。環境名にマウスを合わせると右側に設定アイコンが表示されるので、それを押して編集画面を開きます。

編集画面では、以下のとおりに設定して下さい。

ネットワークアクセス:「Custom」に変更し、許可するドメインに以下を入力します。あわせて、「デフォルトのリストも含める」旨のチェックボックスにチェックを入れて下さい(切り出した画像のダウンロード先が、このデフォルトのリストに含まれているためです)。

api.soracom.io
files.sora-cam.soracom.io

環境変数:以下を貼り付けて、「=」の右側(xxxxxxの部分)をご自身の値に書き換えて下さい。

SORACOM_AUTH_KEY_ID=keyId-xxxxxxxxxxxx
SORACOM_AUTH_KEY=secret-xxxxxxxxxxxx
SORACOM_API_ENDPOINT=https://api.soracom.io
SORACOM_DEVICE_ID=XXXXXXXXXXXX

セットアップスクリプト:空欄のままで問題ありません。

設定が終わったら、「変更を保存」を押して下さい。

【注意】環境変数の値は、この環境を使う人なら誰でも見られる状態になります。この環境は組織と共有せず(Claude TeamやEnterpriseで運用されている方)、ご自身専用で使って下さい。

手順⑥ まずは試運転! 画像が取れるか確認する

いきなり自動実行を設定する前に、まずは手動でソラカメの画像が取れるか確認しておきましょう。問題があったときに、原因を見つけやすくなります。

左側のメニューの「新規」を押し、メッセージ入力欄の上で、環境(雲のアイコン)が「soracam-demo」になっていることを確認して下さい。その隣の「リポジトリを選択」から、②で作成したリポジトリを選びます。

メッセージ入力欄に以下を入力して、送信して下さい。
【補足】「5分前」としているのは、録画がクラウドに保存されるまでに少し時間がかかるためです。

環境変数のSORACOM_AUTH_KEY_IDとSORACOM_AUTH_KEYを使ってSORACOM_API_ENDPOINTの/v1/authでAPIキーとトークンを取得してください。
次に、SORACOM_DEVICE_IDのカメラについて、現在時刻の5分前の録画から静止画をエクスポートし、完了するまで状況を確認してから画像をダウンロードして、何が写っているか教えてください。認証キーとトークンの値は出力しないでください。

Claudeがクラウド上で作業を始め、実行している内容が画面に順番に表示されます。
最後に、画像に何が写っているかの説明が返ってくれば成功です。

うまくいかない場合は、以下を確認して下さい。

  • 「403」「host_not_allowed」というエラーが出た場合:エラーに表示されたドメインを、⑤のネットワークアクセスの許可リストに追加して下さい。
  • 認証エラーが出た場合:①の権限設定(特にOAuth2:authorize)と、⑤の環境変数の名前が正しいか確認して下さい。

手順⑦ ルーティンを作成して、1時間ごとに自動実行する

試運転がうまくいったら、いよいよ自動実行の設定です。

ブラウザでhttps://claude.ai/code/routinesを開き、「新しいルーティン」ボタンを押して下さい。

以下のとおりに設定して下さい。

名前:任意(ここでは「陳列棚の定期チェック」としています。)

プロンプト:以下を入力します。[チャンネル名]の部分は、既に存在するチャンネル名に書き換えて下さい。判定の内容は、用途に応じて自由に変更できます。

あなたは倉庫の見回り担当です。以下を実行してください。

環境変数のSORACOM_AUTH_KEY_IDとSORACOM_AUTH_KEYで、SORACOM_API_ENDPOINTの/v1/authを呼び、APIキーとトークンを取得する
/v1/sora_cam/devices/{SORACOM_DEVICE_ID}/images/exports に、現在時刻の5分前(UNIX時間・ミリ秒)を指定してPOSTし、静止画のエクスポートを開始する
/v1/sora_cam/devices/{SORACOM_DEVICE_ID}/images/exports/{exportId} を数秒おきに確認し、statusがcompletedになったらurlから画像をダウンロードする。2分以上completedにならない場合はエラーとして扱う

画像を見て、棚に空きスペースが半分以上あるかを判定する
空きが半分以上あるかどうか、毎回Slackの #[チャンネル名] に状況の説明を投稿する。
画像が取得できなかった場合も、#[チャンネル名] にエラー内容を投稿する
認証キーとトークンの値は、どこにも出力・投稿しないこと。

リポジトリ:②で作成したリポジトリを選択

環境:「soracam-demo」を選択

トリガー:「Schedule」を選び、「毎日」とし、時刻を任意の時間に設定(本記事では、毎日 9:00に設定)

コネクタ:接続済みのコネクタがすべて含まれた状態になっているので、Slack以外はすべて外して下さい。Routineは実行中、含まれているコネクタを確認なしで使えるため、必要なものだけに絞っておくのが安全です。

設定したら、「作成する」ボタンを押して下さい。

手順⑧ 最後にテスト実行で正常に動作するか確認しましょう

作成したRoutineの詳細画面を開き、「今すぐ実行」ボタンを押して下さい。すぐに1回実行されます。

実行が終わったら、実行履歴から該当の実行を開いて、Claudeが何をしたかを確認しましょう。例えば私が試したときは、「上段はほぼ満杯、下段は右側に4割ほど空きがあるので、条件の『半分以上』には該当しない。ルールどおりSlackへの投稿はスキップした」という結果が返ってきました。判断の理由まで説明してくれるので、意図どおりに動いているかがとても分かりやすいです。
現在のプロンプトだと、毎回表示される内容に若干の揺らぎ(ブレ)がでます。もし、出力形式を揃えたい場合は出力形式についてもプロンプトで指定すると抑制できます。

以上で設定は完了です。お疲れ様でした!これで、設定したトリガーのタイミングでClaudeが棚をチェックしてくれるようになります。

ご利用にあたっての注意点

  • 動画の視聴可能時間について:ソラカメの録画から静止画を切り出すと、動画の視聴可能時間(デフォルトでは1か月72時間)が消費されます。1時間に1枚であれば、1枚あたり1秒換算ですので、影響はごくわずかです。
  • Claudeの利用量について:ルーティン機能の実行には、Claudeのプランの利用量が消費されます。また、ルーティン機能は1日に実行できる回数には上限があります。現在の利用状況や残り回数は、https://claude.ai/settings/usageで確認できます
  • 認証キーの管理について:SAMユーザーの認証キーは定期的に作り直し、①と⑤手順で環境変数を更新することをおすすめします
  • 画像の取り扱いについて:判定のため、カメラの画像がClaudeに送られます。人が映り込む場所で利用する場合などは、社内のルールをご確認のうえご利用下さい

まとめ

いかがでしたでしょうか?

ソラカメはAPIが標準で公開されているので、Claude CodeのようなAIエージェントと組み合わせることで、「現場の人が、DIYでカメラ×AIの仕組み」を作ることができます。今回は棚の空きチェックを例にしましたが、プロンプトを書き換えるだけで、さまざまな用途に応用できます。
「こんな使い方もできるかも」と思いついたら、ぜひ気軽にDIYしてみて下さい。

今回ご紹介した手順を試してみたけど途中で詰まってしまった、という方はぜひ「ソラカメAI」をご活用下さい。月額550円(税込)でclaude code等のツールがなくても同じ様にプロンプト設定し、定期実行させ、解析結果をメールで受け取ることができます。サーバー環境やClaude Codeなどの設定も不要です。一番手軽に使えますのでぜひご活用下さい。また、もっと高度な前処理(特定の画角の一部を解析したい、移動体なので細かいタイミングを制御して静止画を切り出したい)や、データベースへの解析結果保存、簡易ダッシュボード作成等をされたい場合は、SORACOM Fluxをご活用頂くことも出来ます。

また、ソラカメAIやSORACOM Fluxにチャレンジしてみたいが自分ひとりでは不安という方は、「SORACOMはじめてサポート」の活用をご検討下さい。月額11,000円(税込)で月2回×1時間のオンラインミーティングにて、ソラコムのテクニカルアドバイザーが個別にご相談を伺い、問題解決をご支援致します。

さらに、実際に現場で本格的に使うにあたってはプロにお願いしたいという場合は、弊社のパートナー企業による導入支援サービスをご紹介することも可能です。ご希望の場合は、お気軽にソラコムまでお問い合わせ下さい。

「カメラ×AI活用」の最初の一歩としていかがですか?ソラカメはAPIが標準搭載されてますので、AI時代には手軽に始められるのでおすすめです。ぜひ、ご活用下さい。

― ソラコム高見 (yuu)