Android 用 Home API の概要

Android 向けの Google Home API は、デベロッパーがユーザーの家のエンティティの状態を操作できるようにする統合 API サーフェスを提供します。これらのエンティティは、ユーザーの構造と部屋に関連付けられたデバイスとデバイス以外の情報を記述できます。

Home API は、ユーザーが操作できる次のエンティティを定義します。

  • ストラクチャは、部屋とデバイスを含む家を表します。
  • 部屋はストラクチャの一部であり、デバイスが含まれています。
  • デバイスは、属性を含むトレイトを実装し、タイプに準拠し、イベントを発行し、コマンドに応答します。
  • 自動化は構造の一部であり、家のメタデータとデバイスを使用して家のタスクを自動化します。

図 1 は、このアーキテクチャを示しています。

Android アプリの Home API アーキテクチャを示す図
図 1: Android アプリの Home API のアーキテクチャ

Home API デバイスタイプは、スマートホームのオープン スタンダードである Matter によってサポートされている場合もあれば、Google Home エコシステムの Cloud-to-cloud デバイスである場合もあります。一部のデバイスタイプでは、両方の機能が組み込まれている場合があります。詳しくは、Android でサポートされているデバイスの種類をご覧ください。

Matter では、デバイスの機能はクラスタごとにグループ化され、Home API では Matter 標準トレイトとして表されます。Home API は、現在の Matter 仕様で定義されている標準の Matter クラスタをサポートしています。

Google Home エコシステムでは、デバイスの機能はスマートホーム トレイトごとにグループ化され、Home API では Google スマートホーム トレイトとして表されます。Home API は、Cloud-to-cloud プログラムで定義されているスマートホーム トレイトのセットをサポートしています。

メーカー固有のクラスタやプラットフォーム トレイトなどの他のトレイトも利用できます。詳しくは、Android のデータモデルをご覧ください。

エコシステム

Google Home エコシステムは、スマートホーム エクスペリエンスの構築、管理、保護、統合のための合理化された基盤を提供します。図 2 は、コンポーネントが連携して動作する様子を示しています。

Android アプリの Home API エコシステムを示す図
図 2: Android アプリの Home API エコシステム

このエコシステムには、家のタスクとデバイスの設定を自動化する方法を提供する自動化を保存して実行する Google Automation Engine が含まれています。

Home API は、OAuth 2.0 を使用して、構造内のデバイスへのアクセス権を付与します。OAuth を使用すると、ユーザーはログイン認証情報を公開することなく、アプリやサービスに権限を付与できます。

Google Home Developer Console は、ブランドの確認から、開発、テスト、認証、最終的なリリースまで、Home APIs プロジェクトのすべての段階を管理するために使用されます。開発プロセスを効率化しながら、Google Home エコシステムを通じて堅牢なツールと配信を提供します。

言語

Android 向けの Home API は Kotlin で記述されており、Flow を使用して状態とサブスクリプションを管理する Kotlin 固有のインターフェースを提供します。これにより、標準のサブスクリプション API よりも多くのメリットが得られます。

コルーチン、フロー、Jetpack Compose に関する Kotlin のドキュメントをまだお読みでない場合は、お読みになることをおすすめします。

エンティティ ID

Home API の各エンティティには、そのプライマリ識別子を表す ID があります。この ID は、エンティティの存続期間中は変更されない一意の安定した識別子です。この ID は、エンティティのメタデータが変更される可能性があるため、オブジェクトのキャッシュ保存や等価性のチェックに使用できます。

ID を持つエンティティについては、HasId インターフェースをご覧ください。

用語マッピング

Home API のエンティティは、次のように MatterCloud-to-cloud のコンセプトにマッピングされます。

Google Home の API Matter Cloud-to-cloud
トレイト クラスタ トレイト
属性 属性 属性、状態
コマンド コマンド コマンド
イベント イベント フォローアップの回答、通知