クラウドサービス

Pub/Sub for IoT Ingestion

少数の集約ゲートウェイからRESTまたはgRPCでPub/Subへ送るIoT取り込み構成。大規模端末群には別途MQTT基盤と端末管理が必要。

中級信頼性パフォーマンス効率運用上の優秀性セキュリティ
最終更新: 2026-07-29公式ドキュメント
3つの要点
TL;DR
  1. 少数の集約機なら、RESTやgRPCでPub/Subへ直接送れる。
  2. 標準は少なくとも1回配信で、順序・重複排除は明示設定する。
  3. 大規模端末群には、別途MQTT基盤と端末台帳を用意する。

解決する課題

Pub/Subへ直接つなぐ構成は、工場や拠点内の多数のセンサーを 数十〜数百台程度の集約ゲートウェイへまとめられる場合に向きます。各ゲートウェイが REST または gRPC でテレメトリを発行し、後段の分析・保存・通知へ疎結合に渡します。端末ごとのMQTT接続や台帳管理が必要な大規模フリートには、別途ブローカまたはIoTプラットフォームが必要です。

  • デバイス台数や送信頻度が読めず、バックエンドが詰まる → サブスクリプションがバッファして処理側のペースで捌く
  • 一斉に起動した端末からの バースト送信 を取りこぼさず受け止めたい
  • 1 件のテレメトリを リアルタイム分析・長期保存・アラート など複数系統へ同報したい
  • デバイスは MQTT や HTTP しか話せない → プロトコルブリッジで Pub/Sub に橋渡しする
  • リージョンをまたぐ広域デバイス群でも 同一エンドポイント で受けたい(グローバルサービス)

主要概念と用語

  • テレメトリ(Telemetry): デバイスが定期送信するセンサー値や状態などの計測データ
  • 取り込み(Ingestion): デバイスからのデータをクラウド側の入口で受け止める工程。ここを Pub/Sub が担う
  • トピック(Topic): テレメトリの発行先。デバイス種別や用途ごとに分けることが多い
  • サブスクリプション(Subscription): トピックに紐づく受け取り口。1 トピックに複数付けるとファンアウトになり、分析・保存・通知へ同報できる
  • プロトコルブリッジ(Protocol bridge): MQTT や HTTP で送るデバイスと Pub/Sub の間を仲介する層。パートナー製 IoT プラットフォームや自前のゲートウェイで構成する
  • デバイス認証: 端末ごとの資格情報(証明書やトークン)で送信元を識別する仕組み。Pub/Sub 手前のブリッジ層で行うのが一般的
  • 確認応答(ack)と ackDeadline: 取得したメッセージを処理し終えたら ack。期限内に ack しないと 再配信 される
  • デッドレタートピック(Dead-letter topic): 規定回数失敗したメッセージの退避先
  • Pub/Sub サブスクリプション直送: サブスクライバーのコードを書かずに、BigQuery / Cloud Storage へメッセージを直接取り込む形式

仕様・制限・クォータ

  • 少なくとも 1 回(at-least-once)配信 が基本。まれに重複 するため処理は 冪等 に作る
  • 1 メッセージのデータは最大 10 MB、属性は最大 100 個。小さなメッセージでもスループットは 1 kB 単位で計測されるため、必要に応じてバッチ化する
  • 未確認メッセージの保持は既定 7 日、設定範囲は 10 分〜31 日。31 日間利用されないサブスクリプションは既定で期限切れになる
  • ackDeadline は既定 10 秒、設定範囲は 10〜600 秒。期限内に処理できなければ再配信されるため、クライアントライブラリで期限を延長する
  • 正確に 1 回は Pull / StreamingPull で明示的に有効化し、購読処理を単一リージョンへ固定した場合に限る。Push・BigQuery・Cloud Storage の各サブスクリプションは少なくとも 1 回配信
  • グローバルサービス: トピック/サブスクリプションは単一エンドポイントを持ち、配信はメッセージストレージポリシーに従う
  • 1 トピックに 多数のサブスクリプション を付けてファンアウトできる
  • 属性(attribute) にデバイス ID やリージョンなどのメタデータを載せ、後段のルーティングに使える
IoT Core は終了している

GCP の旧 Cloud IoT Core は2023年8月16日に停止しました。Pub/Sub 単体には MQTT、端末台帳、端末単位の認証・設定配布がありません。少数の集約機はPub/Subへ直接接続し、大規模・双方向の端末群はGKE/Compute Engine上のMQTTブローカまたは外部IoTプラットフォームを選びます。

内部の仕組み

横にスクロール

現場センサーを集約ゲートウェイへまとめ、短期認証またはサービスアカウントでPub/Subへ送り、分析と保存へ分岐する経路図
Pub/Sub直結は少数の集約ゲートウェイ向けです。端末管理と現場バッファは利用側、受理後の保持と各購読への配信はPub/Subが担います。

現場のセンサーはローカルプロトコルで集約ゲートウェイへ送り、ゲートウェイが REST または gRPC で Pub/Sub トピックへ発行します。外部IdPが使える場合はWorkload Identity連携で短期資格情報を取得し、使えない場合だけサービスアカウント鍵を安全に保管します。受理されたメッセージは各サブスクリプションへ分岐し、後段が Pull、Push、BigQuery直送、Cloud Storage直送で処理します。

  • 処理に成功して ack すると、そのサブスクリプションからメッセージが削除される
  • ackDeadline 内に ack できなければ 再配信(少なくとも 1 回配信。冪等処理が前提)
  • 規定回数失敗すると デッドレタートピック へ退避される。ただし試行回数は概算で、5〜100 回の範囲を設定しても転送はベストエフォート
  • BigQuery / Cloud Storage サブスクリプションを使うと、サブスクライバーのコードなしで取り込み先へ直送される
二重処理に備える

Pub/Sub は基本「少なくとも 1 回」配信なので、同じテレメトリが まれに重複 します。 デバイス ID とタイムスタンプなどで一意化し、処理を 冪等 に作るのが鉄則です。

設計パターン / ベストプラクティス

  • ブリッジ → Pub/Sub → 分岐: ブリッジで受けたテレメトリを 1 トピックに集約し、複数サブスクリプションで分析・保存・通知へファンアウト
  • ストリーミング処理: リアルタイム集計や異常検知は Dataflow(Apache Beam) を Pub/Sub の後段に置く
  • 長期保存: 生データは Cloud Storage サブスクリプション、構造化分析は BigQuery サブスクリプション で直送し、中継 ETL を省く
  • コマンド送信(下り): デバイスへの制御指示は、別トピック経由でゲートウェイへ配り、ブリッジから端末へ届ける
  • 属性でルーティング: デバイス種別やリージョンを属性に載せ、後段で振り分ける
  • デッドレタートピックで取り込み失敗を退避し、形式不正や権限エラーを調査・再投入

運用・監視

  • Cloud Monitoring のメトリクスで滞留を監視:
    • 未配信メッセージ数(バックログの増加はサブスクライバー不足やダウンストリーム障害の兆候)
    • 最古の未 ack メッセージの経過時間(処理遅延の指標)
  • バックログ急増 → サブスクライバー不足ダウンストリーム障害ack 失敗を疑う
  • デッドレタートピックに溜まる → メッセージ形式 / 権限(IAM)/ 処理ロジック を確認
  • デバイス側の 送信成功率やブリッジの可用性 も併せて監視し、入口での取りこぼしを防ぐ
  • シーク(Seek) はスナップショットまたは保持範囲内の時刻を指定して巻き戻す。確認済みメッセージを時刻指定で再処理する場合は保持設定も有効にする

コスト

課金はおもに メッセージのスループット量(取り込み・配信・保持のデータ量) に対して発生します。IoT では小さなメッセージが高頻度で届くため、最小課金メッセージサイズの考え方と総件数が効いてきます。

コスト要素課金の考え方節約のポイント
テレメトリ取り込み転送データ量で課金送信頻度を最適化しバッチ化を検討
ファンアウトサブスクリプションごとに配信量が加算本当に必要な購読者だけ接続する
メッセージ保持保持データ量と期間で課金必要な保持期間に絞る
BigQuery/GCS 直送Pub/Sub 配信料と取り込み先の料金中継 ETL を省き運用コストも削減
ブリッジ層ゲートウェイやパートナー基盤の費用デバイス規模に合う方式を選ぶ

セキュリティ

  • デバイス認証はブリッジ層で: 端末ごとの証明書やトークンで送信元を識別し、Pub/Sub には認証済みの経路だけ発行させる
  • IAM でトピック/サブスクリプション単位の権限を最小化(発行はブリッジ、購読は後段サービスに限定)
  • ブリッジや後段サービスには サービスアカウント を使い、鍵のハードコードを避ける
  • 転送中は TLS、保存時は Google 管理鍵で既定暗号化。要件次第で CMEK(Cloud KMS の顧客管理鍵) を指定
  • VPC Service Controls で境界を作り、データの持ち出しを防止
アンチパターン

すべてのデバイスに 同一の資格情報 を配って Pub/Sub へ直接発行させるのは NG。 1 台漏えいすると全体が偽データを送れてしまいます。デバイスごとの認証情報をブリッジ層で検証し、Pub/Sub への発行権限はその経路だけに絞ってください。

関連サービス・比較

Pub/Sub Lite は廃止予定で、新規利用はできません。既存利用者も 2027 年 1 月 31 日までに通常の Pub/Sub または Google Cloud Managed Service for Apache Kafka へ移行します。新しい IoT 取り込みで事前確保型の Lite を選ばないでください。

観点Pub/Sub(取り込み)Managed Service for Apache Kafka
接続APIREST / gRPCApache Kafka互換API
運用自動スケールするサーバーレスクラスタ容量とKafka設定を管理
配信モデルトピックと購読パーティションと消費者グループ
向く構成Google Cloud中心の疎結合配信Kafka互換性が必要な既存基盤
端末接続MQTT・端末台帳は別途MQTT・端末台帳は別途
使い分けのまとめ

Google Cloud の REST / gRPC と自動スケールを使うなら Pub/Sub を選びます。 Kafka のクライアント互換性が必須なら Managed Service for Apache Kafka を評価します。どちらにも MQTT と端末台帳は含まれません。

ハンズオン / CLI例

# テレメトリ用トピックを作成
gcloud pubsub topics create device-telemetry

# デッドレター転送先も先に作成
gcloud pubsub topics create telemetry-dlq

# 分析用サブスクリプション(Pull、ack 期限とデッドレターを設定)
# 実運用ではPub/Subサービスエージェントへ必要な転送権限も付与する
gcloud pubsub subscriptions create telemetry-analytics \
  --topic=device-telemetry \
  --ack-deadline=30 \
  --dead-letter-topic=telemetry-dlq \
  --max-delivery-attempts=5

# 長期保存はもう 1 本サブスクリプションを生やしてファンアウト
gcloud pubsub subscriptions create telemetry-archive --topic=device-telemetry

# デバイスからの 1 件を擬似的に発行(属性にデバイス ID を付与)
gcloud pubsub topics publish device-telemetry \
  --message='{"temp":24.5}' \
  --attribute=device_id=sensor-001,region=asia

# 取り込んだメッセージを取得して即 ack(確認)
gcloud pubsub subscriptions pull telemetry-analytics --auto-ack --limit=10

Google Cloud Service

Pub/Sub for IoT Ingestionを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

IoT

比較で見る軸

クラウド: Google Cloud / カテゴリ: IoT / 難易度: intermediate

導入後に効く点

標準は少なくとも1回配信で、順序・重複排除は明示設定する。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
IoT
難易度
intermediate
関連資格
設計柱
reliability / performance / operational / security

判断チェックリスト

  • 自社の用途が「IoT / reliability」に近いか確認する。
  • 強みである「少数の集約機なら、RESTやgRPCでPub/Subへ直接送れる。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

IoTreliabilityperformanceoperationalsecurity