Android 向け Google Home API は、統合された API サーフェスを提供し、デベロッパーがユーザーの家のエンティティの状態を操作できるようにします。これらのエンティティは、ユーザーの構造と部屋に関連付けられたデバイスとデバイス以外の情報を記述できます。
Google Home の API は、ユーザーが操作できる次のエンティティを定義します。
- 構造 は、部屋とデバイスを含む家を表します。
- 部屋 は構造の一部であり、デバイスが含まれています。
- デバイス は、属性を含むトレイトを実装し、タイプに準拠し、イベントを生成し、コマンドに応答します。
- 自動化 は構造の一部であり、家のメタデータとデバイスを使用して家でのタスクを自動化します。
図 1 はこのアーキテクチャを示したものです。
Google Home API のデバイスタイプは、 Matterによってサポートされている場合もあれば、 スマートホームのオープン スタンダードである Cloud-to-cloud デバイスである場合もあります。Google Home エコシステム。一部のデバイスタイプには、両方の機能が組み込まれている場合があります。詳しくは、Android で サポートされているデバイスタイプ をご覧ください。
Matter では、デバイスの機能はクラスタごとにグループ化されます 。これは、Google Home の API では Matter 標準トレイトとして表されます。Google Home の API は、現在の Matter 仕様で定義されている Matter クラスタの標準セットをサポートしています。
Google Home エコシステムでは、デバイスの機能はスマートホーム トレイトごとにグループ化されます。これは、Google Home の API では Google スマートホーム トレイトとして表されます。 Google Home の API は、 Cloud-to-cloud プログラムで定義されているスマートホーム トレイトのセットをサポートしています。
メーカー固有のクラスタやプラットフォーム トレイトなど、他のトレイトも利用できます。詳しくは、 Android のデータモデルをご覧ください。
エコシステム
Google Home エコシステムは、スマートホーム エクスペリエンスの構築、管理、保護、統合のための合理化された基盤を提供します。図 2 は、コンポーネントがどのように連携しているかを示しています。
このエコシステムには、家でのタスクとデバイスの設定を自動化する方法を提供する自動化を保存して実行する Google 自動化エンジン が含まれています。
Google Home の API は OAuth 2.0 を使用して、構造内のデバイスへのアクセスを許可します。OAuth を使用すると、ユーザーはログイン認証情報を公開することなく、アプリやサービスに権限を付与できます。
Google Home Developer Console は、Google Home の API プロジェクトのすべての段階(ブランドの確認から、開発、テスト、認定、最終的なリリースまで)を管理するために使用されます。Google Home エコシステムを通じて堅牢なツールと配信を提供しながら、開発プロセスを効率化します。
言語
Android 向け Google Home API は Kotlin で記述されており、 Flow を使用して状態とサブスクリプションを管理する慣用的な Kotlin インターフェースを提供します。これにより、標準のサブスクリプション API に比べて多くのメリットがあります。
まだお使いでない場合は、コルーチン、Flow、Jetpack Compose に関する Kotlin のドキュメントをよく理解することをおすすめします。
- Kotlin で Android アプリを開発する
- Kotlin for Android について学ぶ
- Android での Kotlin コルーチン。次の Codelab が役立ちます。
- Android での Kotlin Flow、特に StateFlow。
- 状態と Jetpack Compose、特に
collectAsStateWithLifecycle()関数。この関数は、その状態を表示する UI が実際にフォアグラウンドにあるかどうかに基づいて、Flow のサブスクライブとサブスクライブ解除を自動的に管理します。 - Automation API を使用している場合は、 Kotlin のタイプセーフ ビルダー について読むと、Automation DSL の仕組みを理解するのに役立ちます。
エンティティ ID
Google Home の API の各エンティティには、プライマリ ID を表す ID があります。この ID は一意で安定した ID であり、エンティティの存続期間中に変更されることはありません。この ID を使用して、エンティティのメタデータが変更される可能性があるため、オブジェクトをキャッシュに保存したり、等価性を確認したりできます。
ID を持つエンティティについては、HasId インターフェースをご覧になり、
どのようなエンティティが ID を持つかをご確認ください。
用語マッピング
Google Home の API のエンティティは、次のように Matter と Cloud-to-cloud のコンセプトにマッピングされます。
| Google Home の API | Matter | Cloud-to-cloud |
|---|---|---|
| トレイト | クラスタ | トレイト |
| 属性 | 属性 | 属性、状態 |
| コマンド | コマンド | コマンド |
| イベント | イベント | フォローアップの回答、通知 |