9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI IoT サービスについて簡単に調べてみた

9
Last updated at Posted at 2025-12-25

本記事は、Oracle Cloud Infrastructure Advent Calendar 2025 シリーズ3の18日目の記事となります。(記事執筆は24日ですが、18日空いてたので埋めてみようかなと。)
なお、本記事は 2025/12/24 現在の内容を基に記載しており、今後予告せず内容が変更されることがあります。

目的

こちらの記事は、OCI (Oracle Cloud Infrastructure) に関する knowledge 系の記事です。
この記事を読むことで、OCI IoT サービスの概要について理解できることを目的とします。

はじめに

OCI IoT サービスが 10 月からリリースされ、11月に日本でも利用可能になりました。

OCI - Internet of Things

Internet of Things (IoT)が新しいリージョンで使用可能

oci-iot-samples リポジトリ

ただ、出たばかりのサービスということもあり事例があまりないので、どんなサービスなのか少しこのあたり触れてみたいと思います。

OCI IoTサービスの概要

OCI IoTサービスは、さまざまなIoTデバイスやセンサーからのデータを安全にクラウドへ収集・蓄積し、可視化や分析、外部システム連携までワンストップで実現できるクラウドネイティブなIoTプラットフォームのようです。

特徴・できること

  • MQTT/HTTP/WebSocketなど複数プロトコル対応でセンサーデータを安全に集約
  • 各デバイスを「デジタルツイン」として仮想管理
  • データは Autonomous AI Database に自動保存
  • APEX/Analytics Cloud/REST API活用によるデータ可視化・業務アプリ構築も容易

上記の通り、OCI IoT サービスをデプロイすると Autonomous AI Database を腹持ちした状態でリソースが作成されるので、デバイスのテレメトリ情報などの分析がしやすいメリットがあります。

一方で、ここで重要になってくるのが、どうやらこのサービスはMQTTブローカーじゃないみたいです。

Note: The OCI IoT Platform is not an MQTT broker; you will not be able to listen for messages from your devices.

また、デバイス証明書なども管理が出来ません。OPC-UA も対応しておりません。このあたりは AWS IoT Core を利用している方からすると仕様が異なるので少し意識しておかないといけないポイントかと思います。

OCI IoTサービスで出てくる用語

公開情報を読んでて、このあたりの用語を理解しておく必要がありそうです。

用語 説明
IoTドメイングループ 1つ以上のIoTドメインをまとめた入れ物。専用データベースが自動で用意される。
IoTドメイン デバイスやデジタルツインなどを管理する単位。各ドメインに専用エンドポイントが付与される。
デジタルツインモデル IoT管理対象(機器・設備など)のデータ構造を定義するもの。現実世界の「モノ」(例:機器・センサー・設備など)を、コンピュータ上に“そっくり再現した仮想モデル”。
デジタルツインインスタンス 現実世界の“1つ1つのデバイス”を仮想的に表す分身。各物理機器ごとに1つ対応。
デジタルツインアダプタ 生データ(RAW)をデジタルツインモデルに沿った形に正規化・変換する仲介部品。
デバイスエンドポイント デバイスがデータを送信するためのIoTドメインのURL。

特にデジタルツインの概念は結構重要そうです。
image.png

個人的にソフトバンクさんの記事が分かりやすかったです。
image.png

多分このサービスのコンセプトとしては、「OCI IoT で DB もエンドポイントも用意するのでストリーミングサービスとかFunctionsとか使わなくてもすぐ使えるよー」っていうとこかなぁと思いました。
(デバイスからの情報を簡単に管理、分析できるところに特化してる感。)

少しハンズオン

さて、少し触ってみる。

このシナリオを実施。
シナリオ: HTTPを使用した非構造化データの送信

ナビゲーション・メニューから「開発者サービス」開いて右の方にメニューがあります。
image.png

何かシンプル。ドメインとドメイングループのメニューしかない。
image.png

シナリオ的にはコマンドでリソース作っていくようなのでそれを基にやっていく。

ステップ1: IoTドメイン・グループの作成

oci iot domain-group createコマンド、<compartment-OCID>および<domain-group-name>の必須パラメータを使用して、特定のコンパートメントにIoTドメイン・グループを作成します。<compartment-OCID>を、ドメイン・グループを作成するコンパートメント用のOCIDに置き換えます。<domain-group-name>をドメイン・グループ名に置き換え、オプションで<your-sample-description>を説明に置き換えます。

ドメイングループ作成
oci iot domain-group create --compartment-id <compartment-OCID> --display-name <domain-group-name> --description <your-sample-description>

ドメイングループ作成。これでIoTドメインを作成できる。
image.png

ステップ2: ドメインの作成

Internet of Thingsドメインを作成するには、oci iot domain createコマンドおよび必要な<domain-group-OCID>および<compartment-OCID>パラメータを使用します。<domain-group-OCID>を、このIoTドメインに関連付けるドメイン・グループのOCIDに置き換えます。<your-sample-description>を、IoTドメインの説明に置き換えます。

ドメイン作成
oci iot domain create --compartment-id <compartment-OCID> --iot-domain-group-id <domain-group-OCID> --display-name <your-iot-domain-name> --description <your-iot-domain-description>

これでデジタルツインの作成ができる。
image.png

ステップ3: デジタル・ツイン・インスタンスの作成

oci iot digital-twin-instance createコマンドおよび必要な<iot-domain-OCID>パラメータを使用して、関連するIoTドメインのデジタル・ツイン・インスタンスを作成します。デジタル・ツイン・インスタンスを作成する場合、必須および認証ID。証明書またはシークレットのいずれかを使用します。シークレットの作成を参照してください。<iot-domain-OCID>を、デジタル・ツイン・インスタンスのIoTドメインのOCIDに置き換えます。この例のコマンドには、オプションの表示名が含まれ、<display-name>をデジタル・ツイン・インスタンスのわかりやすい名前に置き換えます。この例では、オプションの--external-keyパラメータを使用してデバイス名を指定せず、レスポンスに生成された一意IDが外部キーとして含まれます。

デジタル・ツイン・インスタンスの作成
oci iot digital-twin-instance create --iot-domain-id <iot-domain-OCID> --auth-id <vault-secret-OCID> --display-name <display-name>

ここで--auth-idにvaultのOCIDの指定が必要なので、前段でVaultのサービスを構築しておく必要があります。

リソース作ったものの、デジタルツインインスタンス自体はGUIから見れなさそう。
image.png

ステップ4: データの送信

前の手順の device host URLを使用してデータを送信します。

送信するデータをいくらでも送信できます。この例では、2つのプレーン・テキスト・データ・メッセージの送信を示します。最初の例は、このシナリオの値を使用するコマンドを示しています。詳細は、cURLの使用に関する項を参照してください。

このcurlコマンドの例では、デバイス・ホストURLが含まれ、このシナリオに基づく値を示します。
およびを環境の値に置き換えます。
digital-twin-instance-external-key を、前のステップ3の「デジタル・ツイン・インスタンスの作成」からのデジタル・ツイン・レスポンスの外部キーに置き換えます。
シークレットをbase64デコードしてから、curlリクエストのシークレット・コンテンツを使用する必要があります。詳細は、シークレットのコンテンツの取得を参照してください。

ってあるので、ステップ3のコマンドのレスポンスの中にあるdigital-twin-instance-external-key が必要になります。

データ送信(HTTP)
curl -u '9K7F8Y3HJGX1FA1GFG9QVV9E2C:<vault-secret-contents-decoded-Base64-digit>' https://<domain-short-id>.device.iot.us-phoenix-1.oci.oraclecloud.com/sampletopic -H 'Content-Type: plain-text' -d "sample data 1"

ステップ5: APEXへのIoTドメインのアクセスの構成

ここで APEX に接続するための事前設定を実施しておきます。パスワードとかここで設定しとく感じですね。

APEXへのIoTドメインのアクセスの構成
oci iot domain configure-apex-data-access --iot-domain-id <iot-domain-OCID> --db-workspace-admin-initial-password <your-inital-apex-password>

ステップ6: APEXでのIoTデータへのアクセス

ここまで来たらAPEXに接続してテレメトリ情報の確認です。
まずは以下のように接続します。

―――――――――――――――――――――――――――――
APEXにログインするには、デバイス・ホストのドメイン短縮IDを使用します
たとえば: device-host:.device.iot..oci.oraclecloud.com

  • ワークスペース: __WKSP
  • ユーザー名:__WKSP

―――――――――――――――――――――――――――――

URLはドメイングループですが、ユーザーはドメイングループじゃなくてドメインの方のIDなので注意です。

image.png

そしたらオブジェクトブラウザに切り替えます。
image.png

ここで __WKSP を __IOT に切り替えます。
image.png
image.png

そしたら VIEWS の中に RAW_DATA があるので確認します。
image.png

image.png

CONTENT の中身が BLOB なのでDatabase Actions 経由で SQL 発行して確認してみます。ちゃんと送信したデータを受信できたことを確認しました。
image.png

課金体系

2025/12/25 現在、課金体系は以下のようです。
https://www.oracle.com/jp/cloud/price-list/#pricing-dev-services
image.png

まとめ

まだまだどんなことが出来るサービスか見えてない所はありますが、OCI でも IoT サービスが出てきたことで OCI のアーキテクチャ構成の幅を広げることが出来そうです。
これからどんどん事例が増えていってやれることが見えてきたらいいなと思います。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?