見出し画像

「Hey Siri, おはよう」に憧れて というタイトルで iOSDC Japan 2021 に LT 登壇しました

今年も iOSDC でトークをさせていただきました。ご覧いただいた皆さま、ありがとうございました。

カバー画像が完全に出オチですが、先にトーク内容について書きますね。

トークについて

今年は初めての HomeKit 関連、というかほぼ SwitchBot と HomeBridge に関するトークでした。業務では年々 iOS 開発から離れ、今年はプロポーザルの提出が難しいなと思っていたのですが、締め切り1週間前くらいのプライムセールで衝動買いした SwitchBot を触ってみて、LT なら話せそうかなということでプロポーザルを出したというのがきっかけでした。

実際に触ってみると LT で話したように色々と大変で、仕様理解と動作不具合の調査・改修のために TypeScript (HomeBridge / プラグイン)と HAP の仕様書とのにらめっこが発表数日前まで続くという状態でした。iOSDC の発表のはずなのに……。

家電のステータスについて

発表の中で「リモコンにステータスという概念がない」という記載をしていたのですが、後で思い返してみるとあれは語弊がありました。
正しくは「リモコンが持つステータスと実際の家電の動作状況が一致するとは限らない」という表現になるかと思います。

特にエアコンの場合はリモコンもステータスを持っており、リモコンのボタンを押すとリモコンが持っている(ボタン操作によって変化した後の)状態をすべてエアコンに送信するという動作をするそうです(Webに詳しい方はCookieを思い浮かべると良いかもしれません、リクエストのたびに全ての状態をサーバーに送るようなイメージです)。

しかし、例えばリモコンの赤外線がうまくエアコンに当たらなかった場合、「リモコンでは消えているのにエアコンは動いている」という状況が発生したり、また自動モードなどではエアコン本体しか稼働モードを知らないという状態になります**。HomeBridge がアクセスできるのはあくまでリモコンのステータスまでなので、その先の家電の動作ステータスとは食い違う可能性がある、というのが言いたいことでした。

こうして頭が整理できたのは発表が終わって落ち着いたからかなと思いつつ、ここまで理解できていればもう少しわかりやすく説明できた気もしてきます。ううむ……。

Target Heating Cooling State とサーモスタット

上記スライドのおまけにも書いたのですが、「Target Heater Cooler State(エアコンの動作モード)」というパラメータにとてもよく似た「Target Heating Cooling State」という別のパラメータがあり、しかも取る値が両方同じで、しばらく両者を混同したまま沼にはまっていた記憶があります。

Target Heating Cooling State の方は、「サーモスタット」という部屋の温度を一定に保つための機器で扱うパラメータです。サーモスタットは基本的に壁に埋め込み、エアコン等と物理配線でつないで使うもののようでして(参考)、「暑くなった時に涼しくする」「寒くなった時に暖かくする」「暑い時も寒い時も動作し、室温を快適な範囲に保つ」という3つのモードから動作を選択できるため、このパラメータがそのまま HomeKit で扱えるというもののようでした。この機器のことを全く知らなかったため、動作イメージが全く湧かず大変でした(こちらの動画がとても参考になりました)。

Target Heater Cooler State はその名の通りエアコンの現在の動作モード(冷房/暖房/自動)です。似たようなパラメータとして「Current Heater Cooler State」があるのですが、こちらは(オフ/休止/冷房/暖房)がとりうる値となっており、動作モードに応じてエアコンが現在どんな動きをしているかを示すものとなっています。
そのためエアコンが動いている場合は「Target: 冷房, Current: 冷房」のように同じモードでの動作や、「Target: 自動, Current: 暖房」のように「自動モードで部屋が寒いので結果暖房が動いている」のようなステータスが表現されることになります。

こうして整理してみると理解できるのですが、似ているようで微妙に違う、エアコンがやりたいことで考えると同じなんだけど HomeBridge では実現できない、みたいな混乱がありました。そもそも HomeBridge でどう実装するかという方向からではなく、何を示すパラメータなのかという仕様から攻めていった方がよかったかもしれません。

エアコン2号

今回の発表準備で初めて知った、個人的に一番面白かった情報は、エアコン(リモコン)の2号機設定でした。

リモコンのボタンを押すと2機のエアコンが同時に反応してしまうという状況は、家の間取りによってはよく起こると思います。これを解消する方法があり、片方のリモコンを2号機用に設定*し、電源プラグをしばらく抜いた状態のエアコンを2号機のリモコンで起動することで、そのエアコンは2号機のリモコンのみに反応するようになるのです(機種によって異なります)。

これにより、うちの SwitchBot からの赤外線はリビングのエアコンのみが受信するようになりました。スマホからの操作で2機のエアコンが無駄に反応することがなくなり、利便性が飛躍的に向上しました。よかった。

発表スタイルについて

スクリーンショット 2021-09-22 3.05.14

iOSDC Japan 2021 の LT は Zoom を使ったリアルタイムでの発表という形式を取っています。あのシステムすごいですよね。側から見ても何がどう動いているのかはまだいまいちわかっておりません。

コアスタッフをやっていた私は当日配信会場におりまして、最初はほかの登壇者の方と同様、会場の隅っこから Zoom で参加するつもりでした。
しかし、どこから Zoom を繋ごうかという相談を実行委員長にしてみると、「せっかくならオープニングとかの形式で LT しちゃえば?」と提案していただきました。こんな機会も最後かもしれないし、何か今後の配信の糧になるかもしれないと思い、その提案に乗ることにしたのですが、いやー、それなりにドタバタしました。

ほかの参加者の方と違う形での配信設定となるため、最悪事故っても良いように順番を最後に回してもらったところまでは良かったのですが、直前のリハーサルは別の音声トラブルの解消がギリギリまで続き、ちゃんとした接続確認をしないままLT配信がスタート。もともと緊張しいなこと、練習段階で5分ギリギリだったことに加えて、チャレンジングな配信環境でLTをすることになり、直前30分くらい胃が強烈にキリキリしておりました。

LT前半のAsk the speakerの間に簡単な接続確認は(配信にテストが乗らないように構成を変えた上で)させてもらっていたのですが、いざ自分の順番に回ってくるとスライド画面がうまく配信画面に載らないトラブルが***。如何せんサブディスプレイが見えない状態で(見える状態 = 配信に乗ってしまう)操作していたこともあり、内心パニックです。

メインディスプレイの発表者画面を閉じることでなんとかスライドが共有できるようになり、グリーンバックの前に立って話し始めたわけなのですが、目の前には自分が映った見慣れない状態のスライドと、発表者ツールを閉じたまっさらなデスクトップが映ったMac。別のスタッフがタイマーを持ってくれていたのですが、そのスタッフの立ち位置を事前に確認するのを忘れていたため気づけず。残り時間が分からない中、まごついていた前半を取り戻すために後半少し説明を巻いたのですが、結果的には4分弱くらいのLTになったようでした。もう少し落ち着いて喋ってもよかったですね……。

ちなみに、カメラ目線ではなく少し上を向いて喋っているのですが、これは自分のスライドが上方の画面に表示されていたためです。そもそもカメラの位置をきちんと把握できていなかったというのもあるのですが、上を向くことで猫背がある程度隠せたので、これはこれで良かったなと思います。

後からコメントを見返す限り(配信スタイルを含めて)それなりにお楽しみいただけたようで良かったです。Ask the speaker でもご質問をいただいたりと、慣れない分野の発表ではありましたが、私も楽しく過ごすことができました。ありがとうございました。

最後に

仮に来年オフライン開催やオンラインとのハイブリッド開催をやるとしても、登壇者の方にグリーンバックの前に立ってもらうということはしないと思うので(普通にビデオカメラで撮ったものを映像に載せると思う)、今回のLTはある意味とてもレアな登壇体験だったと思います。今となっては良い思い出です。

トーク内容についてはこのブログをもって一区切りではあるのですが、今回見つけた明らかな不具合に関しては流石にPRを出さなきゃなと思っているので、まあ9月中くらいには……きっと……やると思います。

Siriに冷房を操作してもらう機会は減ってきたのですが、早くも暖房の季節が迫ってきているので、冬になったらまた動作確認をしようと思います。それまでは HomePod は音楽再生(と照明操作)に徹することでしょう。****

弊社について

私が所属するニフティライフスタイルは、今年のiOSDC Japan 2021もシルバースポンサーとして協賛しました。HomeKitは扱っていませんが、iOSエンジニアも絶賛募集していますので、ぜひお気軽にお声がけください。

--

* うちの機種の場合は「リモコンの電池を外して、出てきたジャンパー線をニッパーで切る」という超物理的な方法が据付工事説明書に書いてありました(下の画像は霧ヶ峰GVシリーズの据付工事説明書より引用)
https://www.mitsubishielectric.co.jp/support/index.html#kirigamine

画像2

** ちなみにうちのエアコンには自動モードがないので、自動モードの命令を飛ばした場合にどういう動作をしているのかは謎です。ピッという受信音は本体から出るので、何かしらの命令は受信しているのだと思いますが……。

*** Keynoteをウィンドウで再生した状態でサブディスプレイを外し、また繋げたことによって何かが変わったのだとは思うのですが、何が起きていたのかは未だによくわかっていません。そもそもウィンドウでやらずに、全画面で再生すれば良かった。

**** 以前別のブランドのスマートスピーカーを使っていたのですが、誤検知が多くて使わなくなってしまったことがあり、「HomePodは本当に必要なのか」と訝しげな妻を30分説得して買いました。頑張って値段分使います。

この記事が気に入ったらサポートをしてみませんか?