ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
スマートホームAppへのMatterのサポートの追加
HomeKitで強化された新しいAPIにより、スマートホーム開発者は新しいMatterプロトコルを最も便利な方法でインテグレーションすることができます。Matterプロトコルの概要と、AppleプラットフォームとスマートホームAppにおいてMatterアクセサリを設定・管理する方法を紹介します。
リソース
-
ダウンロード
みなさん こんにちは 「スマートホームAppへの Matterのサポートの追加」の セッションにようこそ ホームエンジニアリングのSelinaです 今日は同僚たちとMatterサポートが 追加されたエキサイティングな 機能について説明します 月曜日の基調講演で述べたように MatterはAppleやその他の業界リーダーによって 開発されているスマート ホームアクセサリの新規格です すべてのスマートホームアクセサリがシームレスに 連携することを目指しています そのビジョンは世界中のホームオートメーションを 可能にしスマートホームの構築を開始 今後数年間それらを追加し続けることです Matterプロトコルはオープンソースの 取り組みとして開発されており HomeKitを含む実績あるテクノロジーを活用し スマートホームデバイスを幅広くサポート することを保証 メーカーによる製品への 統合を簡素化させます Matterを使用するとスマート ホームアクセサリメーカーは 複数のプロトコルを並行 サポートする必要がなくなり 製品の開発作業を大幅に簡素化 継続的なサポートが可能になります またApp開発者は独自の プロトコルを作成して維持するという 負担なしに 最高のApp開発と維持に 集中できます このようなアクセサリの統一 プロトコルを作成することで 顧客はスマートホームを簡単に楽しむことができ 確実に機能することが分かっているので 自信を持って家に製品を持ち込めます 人々多くのアクセサリを選べるようになり 建築業者も 標準として家に設置できるように なっていくでしょう これらに動機付けられて開発者が アクセサリやAppの開発にMatterを できるだけ早く使用できる ようにしたいと思っています MatterのサポートがiOSとiPadOSおよびtvOS15で 開発者プレビューとして 提供されることとなりました ご紹介したい素晴らしい機能が たくさんあります まず第一にHomeKitを介してMatterアクセサリと 統合する方法について説明します HomeKitプロトコルを実装するアクセサリが HomeKitフレームワークを介してApple Homeと統合 長年構築されてきた素晴らしい機能は HomeKit上への完全制御の提供や HAPアクセサリの管理などです MatterアクセサリのApple Homeへの統合を 検討した際HomeKitフレームワークの 可能性を拡大できるパラレルプロトコルとしての Matterのサポートは自然な流れでした アーキテクチャ的にはこれはHomeKitが CHIPフレームワークというオープンソースの Matter実装することでアクセサリと 通信することを意味します Matterプロジェクトの旧名は Connected Home over IPでした 略してCHIPの 参照をオープンソースプロジェクトと APIの両方でご確認いただけます APIの名称は今後の リリースで更新される予定です メイントピックに戻るとHomeKitが提供する カプセル化により既存のすべてのAppleHome機能は Matterアクセサリでシームレスに動作します たとえばHAPアクセサリの設定と同じフローにより Matterアクセサリを設定し 1回下にスワイプするだけでControl Centerの Matterアクセサリを制御 またSiri for Matterによる ハンズフリーな統合で Appleデバイスの制御が可能です HomeKitの機能は ファーストパーティ機能の サポートだけではありません App開発者がすぐにHomeKitを設計し HomeKitを活用してクリエイティブで楽しい スマートホームAppを通信プロトコルに 頼ることなくAppを創造そして実装 できるように初期から設計されています Matterアクセサリにもこれは当てはまります HomeKitで使用してきたようにAPIを継続 Matterアクセサリの使用開始は即時です コードを変更する必要はありません 例としてアクセサリのセットアップを見てみます このコードはHomeKit AppでAPIを 呼び出す方法を示しています iOS 15開発者プレビューでは このAPIによって呼び出される QRコードスキャナーがHAPQRコードのみでなく Matter QRコードの認識も開始して 顧客に使い慣れたアクセサリのセットアップで 一貫した体験を提供します 今年のSwiftのアップデートに細心の注意を 払っている方はSwiftのコンカレンスが 水面下でシフトしていることをご存知でしょう これまで使用していたAPIを新しい Swift async/awaitパラダイムを介して 呼び出し可能になりました セットアップに加えてiOS 15開発者プレビューでは HomeKitの既存APIを利用して Matterアクセサリの状態を読み書き可能です さらにMatterアクセサリのリモートアクセスと タイムリーな通知を自動的に取得し シーンAPIとオートメーションAPIにより HAPアクセサリ処理同様 Matterアクセサリを追加編集できます
未来を少し覗いてみることにしましょう Matterプロジェクトが発展し続けるにつれて ますます多くのカテゴリの サポートが期待されています 新しいMatterカテゴリが HomeKitに統合され続けるので 開発者はアクセサリを簡単に利用できます 次にプロトコルとしてのHAPは カスタム特性をサポート これによりメーカーはクリエイティブな カスタム機能を構築しHomeKitからアクセスできます Matterはプロトコルとしてカスタム機能もサポート そこでHomeKitフレームワーク経由で 点と点をつなぎMatterのカスタム機能への アクセスを提供します この機能は後のリリースで提供される予定です ご意見やご要望などお待ちしております MatterとHomeKitをシームレスに 統合することに取り組んでいます アクセサリ開発者やHomeKit App開発者 HomeKit利用者にかかわらず Matterは確実に機能します HomeKitを使用してMatterアクセサリと 統合する場合 安全なリモート操作や自動化などの機能が HomePodや AppleTVなどのAppleスマートホームハブの パワーとインテリジェンスにより 無料で利用できます 顧客がMatterアクセサリを他の スマートホームハブに接続する支援も ご自宅からiOS Appで簡単に 実行することが可能です Chrisから詳しく説明してもらいます ありがとうSelina 今年の開発者プレビューでは 概念的に新しくも馴染みのあるAPIを構築 Matterアクセサリとホームハブ間の 接続が簡単に確立できます ユーザー体験から見ていくことにしましょう ご覧のとおりこのフローはApple製品や HomeKitアクセサリのセットアップ方法と 非常によく似ています ユーザーがこのフローに慣れているので 開発者もその恩恵が受けられるように したいと思いました ここで重要なのはこれがシステムUIながら ユーザーが選択する家や部屋がAppから 入手可能であることです Appは新しいApp Extensionタイプを 設定するために必要な情報を 提供し必要な処理を完了します 段階的に見ていくことにします セットアップを開始する前にAppは管理する家を表す トポロジオブジェクトを作成します 次にこのオブジェクトを新しいAPIに渡します ここでセットアップが起動しMatter QRコードを スキャンする準備が整います 呼び出しのコード例を次に示します ご覧のとおりこのAPIはアクセサリの設定用の 既存のHomeKitAPIと概念的に似ています 主な違いは追加されたのが HMCHIPトポロジオブジェクトの追加で Appが管理する家に使用されることです ユーザーがMatter QRコードをスキャンすると セットアップは自動的に検出済みカードに進み 検出されたアクセサリのカテゴリを表示します これでAppにアクセサリを追加するオプションが ユーザーに提示され この例ではAutoHomeです ユーザーがアクセサリを ホームハブに接続することを 選択したら追加する家を指定する 必要がある場合があります 複数のホームで構成される トポロジでセットアップを 開始した場合にこの画面が表示されます トポロジが単一の家のみで構成されている場合は ユーザーの意図が既知のため このカードはスキップされます ユーザーが家を選択するとiOSは拡張機能に リクエストを送信してスキャンしたアクセサリの Matterペイロードとペアリングします あなたの拡張機能は原則として HMCHIPサブクラスに呼応します 呼び出されたらCHIPフレームワークAPIにより Matterアクセサリとホームハブとを安全に ペアリングします 次にiOSは対応する拡張機能から 選択した家の部屋のリストを 要求します 部屋はユーザーが選択できるようUIに表示 拡張機能でこのリクエストに応答するコードは 簡単なものです ペアリクエストと同じように拡張機能の 原則を中心に HMCHIPサブクラスで展開します あとはこの関数を実装してユーザーが選択した家に 一致する対応する部屋を返すだけ ユーザーが名称と部屋を選択したら アクセサリ用にその情報を提供 拡張機能に追加してアクセサリを設定するよう依頼 他のリクエストタイプと同様拡張機能は 設定リクエストに応答し CHIPフレームワークAPIにより アクセサリを直接設定します 最後にアクセサリがApp用に設定成された後 ユーザーにもHome Appの使用と Control CenterとSiriを 利用する機会が提供されます ここでも完全に収集されているのは 拡張機能に実装されると予想されるコードです 3つのシンプルな関数 部屋とペアするアクセサリのリクエストに アクセサリの構成のリクエストです HMCHIPハンドラをサブクラス化し メソッドをオーバーライド したら残りのセットアップ 体験は開発者の観点とは本質的に無縁となります UIプレゼンテーションや ステップ間の移行にエラー処理などが すべて処理されます これにより作成する必要のあるコードの量が 大幅に削減されると同時に ユーザーに一級の体験を提供します これまで既存のHomeKitAPIとMatterアクセサリを 統合して他のスマートホームハブを備えた アクセサリと接続する際 必要な新しいAPIについて これまでご紹介してきました Matterアクセサリの開発者として ファームウェア開発のためプロトコルへの 知識も必要になってくると言えます 次にサーガよりMatterプロトコルの MatterとHAPの類似点について 説明してもらいましょう
ありがとうChris Matterデータモデルから始めましょう すべてのMatterアクセサリは Matterデータモデルを介して その機能を公開します エンドポイントによりこれらの機能に 個別に対処できます エンドポイントは論理的に分離された機能と 考えることができます ほとんどのアクセサリには次の2つしかありません 名称やベンダーにモデルなどの情報用に1つ もう1つはアクセサリのプライマリである ライトなどになります 各エンドポイントには複数の クラスタを含められます 各クラスタはそのエンドポイントの 機能を表します ライトの例ではライトエンドポイントに 明るさや色に電力制御などの クラスタがあることになります HomeKitに慣れている場合は クラスタはHomeKitサービスと 同等であると考えられます
次にクラスタに何が内包 されているかを見ていきます クラスタは複数の属性を持つことが可能です 各属性はアクセサリの状態を表します ライトの例では明るさのクラスタには ライトの明るさを読み取り制御するといった 属性があることになります Matterの属性はHomeKitの特性と 同等であると考えることが可能です
ここで各属性が読み書きから レポートまでのアクションを サポートすることが分かります ライトがオンまたはオフになるたびに クラスタで通知を受信するには レポートを有効にする必要があります Matterは各機能に基づいて各属性と 通信するための幅広いAPIを提供します
これらの概念はAppleも貢献している オープンソースのCHIPフレームワークに 実装されています Selinaが先に述べたように CHIPはMatterに名称が変更されましたが 将来のリリースでフレームワークと コードは更新されます CHIPフレームワークに認定されたバージョンは iOSで配布されMatterアクセサリを 使用したHomeKitへの統合が 可能になり Appで使用する必要がある場合 オープンソースAPIへのアクセスも提供されます ライトアクセサリと通信するための CHIPフレームワーク使用例を見てみましょう これは先ほど説明したMatterの データモデルのコアコンセプトを実行します まず共有CHIPControllerにアクセスします このコントローラーは Matterへの主要なハンドルです 次にペアリング中に割り当てたDeviceIDで ライトへのハンドルを取得します 次にライトのエンドポイントオンオフクラスタへの ハンドルを初期化します このクラスタを使用して オンオフ属性で読み書きを実行できます まずライトの状態を切り替えるだけの オンオフ属性を切り替えるように要求します 次に同属性の状態を読み取るよう要求 次にアクセサリは属性のステータスを含む応答を 送信することでAppを更新します
これがCHIPフレームワークの概要です 今日のセッションを終了する前に Matterで導入された新しい概念について またそれを活用するホームAppに導入された いくつかの新機能もご紹介します Matterプロトコルでは複数の 管理者がアクセサリに同時に 接続できるようになっています これは顧客に選択肢を提供するための 優れた機能ですが同時に アクセサリ管理にとっては課題でもあります ホームAppがどのように 対処しているかを見てみましょう ホームAppはアクセサリに接続している すべての管理者のリストを 接続済サービスセクションに 表示できるようになりました ユーザーに接続済みの管理者を 管理するオプションも なおユーザーはペアリングモードを 再度オンにしてアクセサリに接続するための 新しい管理者を許可するオプションもあります ここでの目的は単純なもので 何が最善なのかを自由に 選択できるように することとスマートホーム アクセサリの管理を簡素化することです
そのためMatterのサポートはiOSとiPadOS tvOS15の開発者プレビューに適用 有効にするには開発者プロファイルを インストールする必要があります またHomeKitからMatterアクセサリを 制御するためのハブも必要です Matterは認定ベンダーIDと認定製品IDを 公開することが予想されますが サンプルのベンダーIDと製品IDの リストを提供しプレビューでの 開発を簡素化を目指しています これらのIDは事前に 開発者プレビューでサポートされている Matterアクセサリカテゴリで定義 APIに関する詳細はサイトから 入手可能となっています Matterオープンソース APIとMatterアクセサリ定義の 詳細についてはGithubをご覧ください
このようにアクセサリ開発者向けの HomeKitやAppユーザーへのサポートを シームレスにもたらします Matterアクセサリを他のスマートホームハブと 接続したい開発者向けに今後のシードに 新しいセットアップAPIが追加されます これらはすべてはiOSやiPadOSおよび tvOS15開発者プレビューから利用可能です
ご覧いただきありがとうございます [パーカッシブな音楽]
-
-
4:58 - Add a Matter accessory to your HomeKit app
home.addAndSetupAccessories() { error in if let error = error { print("Error occurred in accessory setup \(error)”) } else { print("Successfully added accessory to HomeKit") } }
-
9:12 - Invocation example
let homes = proprietaryHomeStorage.homes.map { home in HMCHIPServiceHome(uuid: home.uuid, name: home.name) } let topology = HMCHIPServiceTopology(homes: homes) let setupManager = HMAccessorySetupManager() do { try await setupManager.addAndSetUpAccessories(for: topology) print("Successfully added accessory to my app”) } catch { print("Error occurred in accessory setup \(error)") }
-
10:15 - Extension communication
class RequestHandler: HMCHIPServiceRequestHandler, CHIPDevicePairingDelegate { // . . . override func pairAccessory(in: HMCHIPServiceHome, onboardingPayload: String) async throws -> Void { // iOS is instructing the extension to pair the accessory via CHIP.framework } // . . . }
-
10:39 - Extension communication
class RequestHandler: HMCHIPServiceRequestHandler, CHIPDevicePairingDelegate { // . . . override func rooms(in: HMCHIPServiceHome) async throws -> [HMCHIPServiceRoom] { // iOS is querying for a room list that corresponds to the given home } // . . . }
-
11:03 - Extension communication
class RequestHandler: HMCHIPServiceRequestHandler, CHIPDevicePairingDelegate { // . . . override func configureAccessory(named accessoryName: String, room accessoryRoom: HMCHIPServiceRoom) async throws -> Void { // iOS is instructing the extension to apply configuration via CHIP.framework. } // . . . }
-
11:27 - Extension communication
class RequestHandler: HMCHIPServiceRequestHandler, CHIPDevicePairingDelegate { override func rooms(in: HMCHIPServiceHome) async throws -> [HMCHIPServiceRoom] { // iOS is querying for rooms that match the given home. These rooms will be shown in system UI and the selection will be vended back to your extension's `configureAccessory` function } override func pairAccessory(in: HMCHIPServiceHome, onboardingPayload: String) async throws -> Void { // iOS is instructing the extension to pair the accessory via CHIP.framework } override func configureAccessory(named accessoryName: String, room accessoryRoom: HMCHIPServiceRoom) async throws -> Void { // iOS is instructing the extension to apply configuration via CHIP.framework. } }
-
14:27 - Status and Control
let controller = CHIPDeviceController.shared() do { let device = try controller.getPairedDevice(accessoryDeviceID) let onOffCluster = CHIPOnOff(device: device, endpoint: lightEndpoint, queue: DispatchQueue.main) onOffCluster?.toggle({ (error, values) in // Error handling code here }) onOffCluster?.readAttributeOnOff(responseHandler: { error, response in if let state = response?[VALUE_KEY] as? NSInteger { updateLightState(state: state) } }) } catch { print("Error occurred in accessory control \(error)") }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。