私たちはスマートテクノロジーの時代に生きており、スマートテクノロジーは家庭にも入り始めています。この講演では、Appleが提供しているスマートアクセサリのためのフレームワークであるHomeKitと連携する方法について解説します。この講演を聞いた後、家に帰ってすぐにスマートアクセサリを触りたくなるかもしれませんよ?
スマートホーム、ホットですね! 非常に多くのホームシステムが有ります。ただし、すべての家電が共通プロトコルで通信したりはしません。
今日はHomeKitというAppleのフレームワークの話をします。

具体的な事例として照明を取り上げます。どういうコードを書くと照明をコントロールできるのかがテーマです。 専門家ではありませんが、私がどうやって入門したかの紹介になります。

基本的なオブジェクトを理解しましょう。今日は、ユーザーは一つの自宅を持つと仮定します。
サービスには特性(Charasteristic)があります
読書両方できるとは限りませんがこうしたプロパティを持っています。
照明なら電源、色相、再度などを持っています
きょうは電源を取り上げます。
2つの主要なオブジェクトがあります。HomeManagerとHomeDelegate

変更の通知を受けて情報を更新します。
他にも今日カバーしない豊富な機能があります


Bridgeを介して通信が行われます。
サンプルアプリです。電源がオンかオフか。

リアルタイムにON/OFFを反映する必要があります。そしてONにしようとしてONに出来たかどうかを確認したい。電源状況と、コネクションの死活監視。

ホームデータにアクセスするにはアクセス権が必要です。

ここが最初のエントリポイントです

すべての特性が同じように書き込まれていて、文字列で特性が入っています。ここはたまたまBoolですが、他のKeyなら別のオブジェクトかもしれません。


電球がONになったかチェック
返り値を把握しておく必要があります。
読み込みでエラーが出ました。通信障害が起きる場合があります。
必ずしもコールバックではないがcompletionHandlerを使える。
ON/OFF死体タイミングで出来なかったというエラーが渡しの場合は発生しました。 通信障害が発生したら通信を無効化する(破棄?)するようにした。
電球の状態そのものの確認をしてみます

通知がサポートされている場合にはNotificationを登録します。

Delegateにこうした実装をします

これで最新データを確認できます

このコールバックはどんな機能の変更に対しても飛んで来るので注意が必要です。
次に重要なのがこれです

Wi-Fiが落ちた時とか、なにか事象が発生したことを検知できる

操作、最新状態の取得ができるようになりました。

DEMOをお見せしましょう、でも電球をにほんまで追ってこられませんでした 自宅の動画をお見せします。その後でアクセサリシミュレータの使い方を説明しましょう。
デモ:コードサンプルに入っていなかった機能も入っています。自分のアプリを使ってリビング手前の証明を見て、明るさを調整し、スイッチでON/OFFして、電球の色を変えて、TableViewCellの色が変わって、リアルタイムに照明の色を羽井します。
アクセサリシミュレータ:Apple Developer Toolsからダウンロードできます。操作したり、アクセサリの変更がリアルタイムにシミュレータで実行中のアプリに伝わったりします。
HomeKitDatabaseが既にアプリに入っており、パーミッションを許可するだけで利用することが出来ました。
Resource

まとめ

まだ数がありませんが、アプリが出ているので是非試してみてください。そしてアプリを作ってみてください。 メーカー提供APIやスタンドアロンのものもあったり、オープンソースもあったり。 ぜひOpenSourceHomeKit対応アクセサリにコントリビュートしてください。 ホームセキュリティシステムと連携して光で知らせるようなことも出来るでしょう。
沢山の人が利用するようになればいろんな事ができるようになるでしょう。皆さんが作ったアプリを利用するのを楽しみにしています。 クリエイティブなアプリをぜひ作ってみてください。
QA
将来こういったものがHomeKitで出れば良いというものはありますか?
結構豊富は機能を持っていますが、いろんなタイプを追加して欲しいですね。AppleがTypesを決めている。特性はデベロッパも決められますが、カスタムタイプなアクセサリができたらクールだと思います。
HomeKitの設定の仕方、Philippsを使ったとのことですが、照明も設定したと思いますが、セキュリティは?他の人は使えないのでしょうか? アクセサリの組み合わせは可能でしょうか。携帯をずっと稼働させてアクセサリを操作しているのでしょうか
iCloudのアカウントに紐付いています。シェアをリクエストして共有は可能です。
プログラムがiCloudで実行されていて火災報知機などから情報は取得できるのか、脳はどこにあるのか?
いろんなツールがあって、独自のコードがサーバーで走るものもあるようです。iOSだけでやる場合には何らかの形で常に稼働させる機能が必要になると思う。デベロッパが、Philipsの場合では、SDKを持っていて、継続して機能するものを提供しています。
#tryswiftconf アクセサリーとアプリ間はエンドツーエンドで暗号化が必須のはず
— nori (@nolili) 2016年3月2日
.@steph_shupe さんのHomeKitアプリのデモはよかった。Siriにライトを赤くしてといったら、すぐに赤くなった! コードを読んでみたい。#tryswiftconf
— すてィーろ (@stilo) 2016年3月2日
HomeKitのアクセサリサーバをエミュレートするhomebridgeってツールがある https://t.co/IkCkxTJWwL #tryswiftconf
— iyuto (@iyuto_) 2016年3月2日
動画によるデモ(を動画撮影) #tryswiftconf pic.twitter.com/IvIkpfzTLZ
— アオヤマ ミント (@MintoAoyama) 2016年3月2日
「【動画あり】スマートホームの実現はすぐそこ! HomeKit超入門 #tryswiftconf」をトゥギャりました。 https://t.co/nKNWtOcoyZ
— トゥギャッター開発まとめ (@tg__dev) 2016年3月2日
気に入った記事は はてなブックマーク
はてなブックマークアプリiOS開発チームから来ました! はてなブックマークにはSwift特集があります! 良い記事を見逃さないように、ご利用ください! http://b.hatena.ne.jp/hotentry/it/Swift
そして良いまとめ記事があったらはてなブックマークでブックマークしましょう! try! Swift の記事で盛り上がると嬉しいです!
