2014年12月19日

iOS

IoTはプログラミングの夢をみるか?- HomeKitからの妄想

  • このエントリーをはてなブックマークに追加

Yahoo! JAPAN Tech Advent Calendar 2014の19日目の記事です。一覧はこちら

写真:アフロ

写真:アフロ

システム統括本部アーキテクト室 今野です。

今回は、スマートフォン関連のネタとして、AppleのHomeKitを題材にいろいろ(ダラダラ?)と妄想をしてみようと思います。

IoT ≠ ユビキタス?

最近は、IoT(Internet Of Things)というキーワードが世の中を席巻しています。「第4次産業革命」や「インターネットの第3の波」とまで表現されるほどの大流行ぶりだそうです[1]

概念的には一昔前からある「ユビキタスでしょ?」という感もありますが、最近では日本国内でも「モノのインターネット」と直訳した呼称も定着しつつあるようです。

ユビキタス(コンピューティング)とIoTの違いを強いて言えば、前者のモノが少なからず自律的な(CPUが搭載されネットワークに接続されている)前提があったのに対して、後者のモノは必ずしも自律的は必要性はないところでしょうか[19]

自律的ではないモノについては、スマートフォンなどのブリッジ(ゲートウェイ)の介在が必須となります。AppleのiBeaconやRFIDなどがその典型でしょう。

HomeKitとは?

Appleは毎年、開発者向けのベントであるWWDC(Worldwide Developer Conference)を主催しています。WWDCでは、毎回話題性の高い発表がありますが、HomeKitは今年のWWDC 2014で発表さたものの一つです。

端的に言えばHomeKitはAppleがホームネットワークに注力したIoT分野を狙った新規の独自規格です。今回はHomeKitを題材に、AppleのIoT分野への狙いと今後の展望を妄想してみます。

HomeKitの世界観

AppleのホームネットワークにおけるIoTの取り組みは自体は古く、2002年のBonjourが起源となります。Bonjourは現行のHomeKitでも基盤となるプロトコルとして存続しています。

Bonjourは登場以来からiTunesやAppleTVなどのApple社独自製品で活用されているプロトコルです。その一方、他社でのBonjourの利用は一部のプリンターやAirPlay対応のオーディオ製品での採用に留まっています[7]。Apple製品のプロトコルが非公開な要因もあり、独自にプロトコルを解析した非公式な実装が公開[8]されるなどの状況も長らく続いてきました。

しかし、今回のHomeKitの仕様には、従来のAppleの戦略から大転換したとも言えるほどの積極性が感じられます。まずは、現時点で一般公開されている関連資料[2][3][4][5][6]から、HomeKitでの特徴的な機能と概念をリストアップしてみます。

機能的な世界観

最初に、HomeKitの機能的に特徴的なものを列記します。

  • 多様な機器の標準プロファイルの規定
    • 照明、ドア、温度計、監視カメラ、スイッチ、ガレージなど
  • 単機能なアクション(HMAction)
    • 現状は単機能なHMCharacteristicWriteActionのみ定義
  • 時間軸ベースなイベント(HMTrigger)
    • 現状は時間軸ベースなHMTimerTriggerのみ規定
  • その他
    • RestFul(HTTP+JSON)なAPI
    • NonIPベースのブリッジ(BluetoothLEのみ規定)
    • 暗号化や独自のセキュリティ機能あり

従来Appleでは、標準プロファイルは自社製品以外はプリンター程度の規定に留まっていました。しかし今回のHomeKitでは、家庭に存在するIoT機器を中心に幅広い標準プロファイルが規定されています。

標準プロファイルの詳細な仕様についてはMFi[9]の契約が必要で、一般には非公開な仕様であることは相変わらず。しかしながら、今回のHomeKitでは数多くのIoT機器の標準プロファイルが規定された点が大きな進歩です。正直なところ自社製品以外の標準プロファイルの規定を怠った点が、後述するUPnPなど現在業界標準的な他のIoT関連仕様に遅れをとった一番の原因でしょう。

また、現状規定されているアクションが非常に単機能なのも特徴的です。この単機能な要因はUIガイドライン[6]の記述にもあるように「Siriによる音声操作がユースケースとして想定」されているためです。

概念的な世界観

次に、HomeKitの概念的に特徴的なものを列記します。

  • アクションセット(HMActionSet)の概念
    • 複数のアクション(HMAction)の組み合わせ。リモコン的。
    • 名称が設定できる。Siri対策。
  • 家庭内でのゾーンの概念
    • 家(HMHome)、部屋(HMRoom)、その他(HMZone)に分類。
  • 家庭内のサービスグループ(HMServiceGroup)の概念
    • 家(HMHome)に紐付けるアクセサリ(HMAccessory)の集合体
  • 複数の家を管理する(HMHomeManager)の概念
    • 家(HMHome)の集合体。遠隔操作が想定されている。

概念的には、各種のグルーピングがHomeKitの特徴的で、AppleのIoTの世界観を表すものです。

HomeKit以外のIoT仕様

UPnP

HomeKitが華々しくWWDC 2014で発表された一方、ホームネットーク系のIoT系プロトコルとしては、1998年に発表されたUPnP (Universal Plug&Play)が業界標準的なプロトコル」の位置を占めています。今日ではUPnPベースのIoT機器が存在しないホームネットワークを見つけるのは困難なほどです。

DLNAという言葉はご存じの方もいるかもしれません。UPnPは一般的にはなじみが薄い仕様かもしれませんが、DLNAも代表的なUPnPベースの製品です。DLNAは、日本でもネットワーク対応のデジタルテレビやハードディスクに標準で搭載されている機能ですので、多くの家庭でも動作しているUPnP機器の一つです。

また、近年の無線LANなどの家庭向けルーターには、UPnPベースのゲートウェイ仕様[12]が、ほぼ100%搭載されています。Appleは前述のBonjourが基本であることに間違いはありませんが、UPnPにも対応[7]しています。HomeKitでも遠隔操作時に、この仕様が利用されるものと推測されます。

UPnP仕様との比較

UPnP ForumではIoT機器の標準プロファイルとして40種類程度を規定されています[12]。また、HomeKitと比較すると多機能な反面、各種グルーピングの概念はありません。以下にHomeKitと対比させたUPnP機能の対応表を示します。

HomeKit/UPnP比較表

UPnP陣営の動向

UPnP Forumは、UPnP関連仕様の策定および機器認証の主団体です。UPnP Forumでも、HomeKitの登場に前後する形でUPnP+を発表しています[10][11]

UPnP+は、IoT機器とクラウド環境の連携強化を重視したものであり、HomeKitから見ると以下に示すような多くの機能や概念を取り込んでいます。

  • ホームネットワークのクラウド経由の遠隔操作(XMPP)
  • クラウド環境でのIoT機器の情報共有(iCloud的なもの)
  • 非IPベースネットワークのIoTデバイスブリッジ機能(ZigBee, Z-Wave, Bluetooth, ANT+など)
  • (ようやく)RestFul+JSONなインターフェースにも対応(現行仕様はSOAPのみ)
  • セキュリティ(家のゲストの概念の導入など)

UPnP Forumが公式な仕様に先行して、このようなドラフト仕様を一般に公開するのは異例なことです。最近はUPnP+のドラフト実装としてGitHubでの公開も開始されるほどで、UPnP Forumの慌てぶりが多少なりとも垣間見られる出来事となりました。

日本国内のIoT仕様

デジタルテレビ情報化研究会

DLNA以外の主要なIoT機器としては、2003年にデジタルテレビ情報化研究会が策定した規格に準拠している製品があります。IoT機器レベルで細分化され標準プロファイルとして50種類程度に規定されています[13]。対応する製品としては、デジタルテレビプリンタードアホン監視カメラなど、多種多様な製品がこの仕様に準拠して出荷されています。

現在、デジタルテレビ情報化研究会は2011年に発展的に解散し、規定作業中であった一部の活動は後述するエコーネットコンソーシアムに引き継がれています。

エコーネットコンソーシアム

エコーネットコンソーシアムは、日本国内のHEMS(Home Energy Management System)標準化団体です。2011年にはECHONET LiteがIoT仕様として公開されています。IoT機器はセンサーレベルまで細分化されており、標準プロファイルとしては70種類程度が規定されています[14]DLNAのような認証制度もあり、認証済みのIoT機器については公開されています[15]

IoTとプログラミング

今日、HomeKit対応製品を待たずとも、多くのIoT機器がホームネットワークに溢れている状況です。また、これらのIoT仕様はほとんどのものがオープンスタンダードであり、日本国内で流通しているIoT機器についても、前述の通り誰でも仕様書を入手可能な状況です[12][13][14]

このオープンスタンダード性を背景に「IoT機器はプログラマがアルゴリズムが投入できるプログラミングの対象」でもあり続けています。日本国内の状況としては、2003年に登場した「コクーン」の登場を契機にプログラマの注目が集まり[16][17]、それ以降もオープンスタンダードなIoT機器が数多くホームネットワークに存在する、恵まれた環境であると言えます。

ただし、今日までのIoT機器のプログラミングは「仕様書を理解しプログラミング言語ができる熟練したプログラマだけの閉じられた世界」であったのも事実です。HomeKitは、「Appleからのプログラミング未経験者への新しいプログラミングモデルの提言」で、この現状を打破しうる存在であるとの見方もできます。

HomeKitとプログラミング

今まで見てきたHomeKitの仕様を要約すれば、AppleのIoTの世界観は「利用者の音声操作などによるリモコン的な能動的」な操作と「タイマー的な動作を想定した限定的な自動的」な操作を主体としたものです。

HomeKitは家庭内のIoT機器の自律的な動作というよりは、「利用者に家庭内でプログラミングをしてもらう」前提の世界観に見受けられます。利用者がHomeKitを利用するには、事前に利用者が以下プログラミング的な設定をする必要がありそうです。

  • 家や部屋などの空間の設定
  • イベントとアクションを関連づける
  • 単機能なアクションを複数にまとめる

IoTとビジュアルプログラミング

HomeKitは端的に言えば「リモコン的なプログラミングモデル」を前提とした限定的なものです。その一方、世間一般的なIoTの世界観の多くが、自律的なM2M(Machine to Machine)を前提としています。M2M的な世界観では、近年「データフロー的なプログラミングモデル」を採用したビジュアルプログラミング言語を採用する潮流が見受けられます。

日本国内の代表的な例としてはソフトバンクのPepperが「誰でもかんたんに未来のロボットクリエーターに[18]」と、データフロー型のビジュアルプログラミング言語を提供しています。

また、「どこでもコンピューター」で元祖ユビキタスで有名な坂村教授の研究室では、「家に住んでいる人が自分でプログラミングして不便を解決する」スタイルを提唱しています[19]。「組み込み機器にはUIは入らない」と提言していて、こちらもデータフロー型のビジュアルプログラミング言語をタブレットで操作する形態をとっています。

Siriは足枷にはならないのか?

HomeKitSiriによる音声認識を前提としたUX(User Experience)です。SiriでのHomeKitの操作は、正規表現的には「(対象)* アクション名」といった感じでしょうか。

想定される最も複雑なユースケースとしても、外出先からSiriで「自宅(対象)の寝室(対象)のエアコン(アクション名)」といった程度に留まるでしょう。このような制約はSiriが世界中の自然言語への対応や音声認識制度などの技術的要因に起因している恐れもあり、今後将来の足枷にならないかは気になるところです。

HomeKitとビジュアルプログラミング

HomeKitの現状公開されている仕様の範囲からは、例えば「アクショングルーピング(HMActionSet)が登録順でアクションが実行されるのか、直前のアクションの挙動からトランザクション的な制御が可能なのか」などの詳細な挙動までは判断できません。断定はできませんが、HomeKitが想定しているプログラミングモデルは「逐次処理のみの(分岐や反復がない)単純なもの」である可能性があります。

限定された逐次処理のみのプログラミングモデルであれば、データフロー型の言語はオーバースペックな選択であるとも言えます。またHomeKitが想定しているIoT機器は受動的な印象も受けます。言い換えれば、HomeKitで想定されているのは「赤外線の学習リモコン的」な単純な世界なのかもしれません。

IoTのビジュアルプログラミングに未来はあるか?

ビジュアルプログラミング言語は、IoTの世界だけに登場したものではありません。歴史的には「プログラミング未経験者にプログラミングのニーズがあると思われる黎明期の市場」には必ず登場するものです。ロボット市場におけるPepperの取り組みも前述した通りです。

最近はGoogle GlassOculus Riftなどを筆頭とする第2次のVR(Virtual Reality)ブームが再燃しています。第1次VRブームは1990年代前半にさかのぼります。第1次VRブームではVPL ResearchのMicroCosmを筆頭に数多くのVR向けビジュアルプログラミンング言語が開発されました[20][21]。これらのビジュアル言語は、形式的にはいずれもデータフロー型で「誰にでも自分好みの仮想空間を創造してもらう」意欲的かつ熱狂的なものでもありました。

残念ながら、第1次VRブームのビジュアル言語はいずれも商業的に成功せずに終焉を迎えています。この終焉からの教訓としては、ビジュアル言語は、利用者と開発者の垣根が高い市場での成功は難しいと言うことです。熟練した開発者はビジュアルプログラミング言語などの中途半端なものは使わないものなのです

ある意味、クラウド環境でのYahoo! PipesPlaggerも同じような傾向がある市場での挑戦なのかもしれません。前述のGoogle GlassOculus Riftでは、現状は開発者向けのSDK(Software Development Kit)のみの提供に留まっているようです。現状の第2次VRブームでは開発者と利用者に分かれた世界ですが、個人的には今後の動向が気になるところです。

最後に

いずれにしろ、HomeKitはIoT分野でプログラマに限定されていた「家もプログラミングする」体験を、一般利用者にも簡単に利用できる機会を提供してくれる、画期的なものとなるでしょう。

HomeKitの世界観は、利用者にIoT機器をまるで「パズルを組み合わせる」ような感覚でプログラミングを楽しませてくれます。「リモコン的なプログラミングモデル」より複雑なプログラミングのニーズの高まりや、今後多くの「自律的なイベントを発生するIoT機器」が登場してくれば、かつてのデータフロー型のような高度なビジュアル言語の復権もあるのではないでしょうか。

ホームネットワークには多くのIoT機器が存在しています。この記事があなたが「家をプログラミングする」契機となれば幸いです。これからは「アルゴリズムが形作る世界」です。あなた自身のプログラミングで世界を変えていきましょう!!

※ なお、次回は一転して、分散システム分野で寄稿予定です。お楽しみに。

参考資料

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加