Android 向け Google Home API は、デベロッパーがユーザーの家のエンティティの状態を操作できるようにする、統合された API サーフェスを提供します。これらのエンティティは、ユーザーのストラクチャと部屋に関連付けられたデバイスとデバイス以外の情報を記述できます。
Home API は、ユーザーが操作できる次のエンティティを定義します。
- ストラクチャは、部屋とデバイスを含む家を表します。
- 部屋はストラクチャの一部であり、デバイスが含まれます。
- デバイスは、属性を含むトレイトを実装し、タイプに準拠し、イベントを生成して、コマンドに応答します。
- デバイス グループは、ストラクチャ内のデバイスのユーザー定義コレクションです。
- 自動化はストラクチャの一部であり、家のメタデータとデバイスを使用して家の中のタスクを自動化します。
図 1 は、このアーキテクチャを示しています。
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 は、コンポーネントがどのように連携して動作するかを示しています。
このエコシステムには、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 のドキュメントをまだご覧になっていない場合は、一読することをおすすめします。
- Kotlin で Android アプリを開発する
- Android 向け Kotlin を学ぶ
- Android での Kotlin コルーチン。以下の Codelab が役立つ場合があります。
- Android での Kotlin Flow、特に StateFlow。
- 状態と Jetpack Compose、特に
collectAsStateWithLifecycle()関数。この関数は、その状態を表示する UI が実際にフォアグラウンドにあるかどうかに基づいて、フローのサブスクライブとサブスクライブ解除を自動的に管理します。 - Automation API を使用する場合は、Kotlin のタイプセーフ ビルダーについて読むと、Automation DSL の仕組みを理解するのに役立ちます。
エンティティ識別子
Home APIs の各エンティティには、プライマリ識別子を表す ID があります。この ID は、エンティティの存続期間中に変更されることのない、一意で不変の識別子です。この ID は、エンティティのメタデータが変更される可能性があるため、オブジェクトのキャッシュや等価性の確認に使用できます。
ID を持つエンティティについては、HasId インターフェースをご覧ください。
用語マッピング
Home API のエンティティは、次のように Matter と Cloud-to-cloud のコンセプトにマッピングされます。
| Google Home の API | Matter | Cloud-to-cloud |
|---|---|---|
| トレイト | クラスタ | トレイト |
| 属性 | 属性 | 属性、状態 |
| コマンド | コマンド | コマンド |
| イベント | イベント | フォローアップの回答、通知 |