Developer's Blog

RFC 7168 で広がる、スマート家電の世界

Fenrir Advent Calendar 2014

Web アプリケーション担当の本岡です。

「2014年にグッときたコレ」というお題で進められている Fenrir Advent Calendar 2014 の 8 日目の記事になります。

私にとって一番グッときたのは、2014年7月に発表となった オンラインデザインツール “Picky-Pics”(ピッキーピックス)であることに間違いありません。このブログをご覧の皆様の中にも、既に試された方は多いのではないでしょうか?

本当なら Picky-Pics について小一時間ほど語りたいところではございますが、これは弊社のプロダクトの一つでありますので、今後ともこのブログで紹介していく機会が沢山あることでしょう。ですので、この記事では弊社のプロダクト以外で一番グッときたものについて触れたいと思います。それはズバリ、スマート家電に関する動向です!

それでは、具体的にどのような点でグッときたのかをご紹介いたしましょう。

 

スマート家電の世界

スマート家電とは一般的に、ネットワークに接続されており、PC やスマートフォンなどから制御できるものを指します。例えば、寒い冬の日に、帰宅する10分前に外出先からスマートフォンの操作で暖房機器の電源をオンにするといったことがスマート家電によって実用化されています。しかしながら、こういった操作のためには、家電製品の製造元が提供する専用のアプリを使うのが一般的であり、私たち利用者が制御用のプログラムを開発したりすることは大変難しいものです。

RFC とは

話が少し変わりますが、皆さん RFC というものをご存知でしょうか? RFC とは Request For Comments の略であり、 IETF (Internet Engineering Task Force) という団体が発行している、インターネットやそれに関わる技術について標準を定めたり、BCP (Best Current Practice : 発行時点の最善の実践) を公開したりしている技術文書です。身近な例で言うと、Web ブラウザが Web サーバと通信する際によく使われている HTTP 1.1 という通信手順は RFC 2616 にて標準が定められています。
私たち Web アプリケーションのエンジニアは、何か困ったことがあれば 2616 やそれに関連する RFC を参照し、ここで定められた標準に可能な限り沿うようにアプリケーションの仕様を策定し、実装を進めて参ります。言わば “聖書” のようなものです。必要なときに RFC 2616(またはその日本語訳)を参照しない人物は、一人前の Web アプリケーションエンジニアであるとは言い難いものです。
お客様やユーザの皆様からご要望頂いた機能が RFC が定める標準と競合してしまう場合は、その機能が魅力的なものであったとしても、残念ながらその機能の実現をお断りさせて頂く場合もございます。それくらい重要なものなのです。

なぜ突然ここで RFC について語り始めたかと言いますと、スマート家電を操作するための API (Application Programming Interface : ここではスマート家電に指示を出すための窓口のこと) にも標準が必要だからです。
その標準化を進めようという運動の歴史は古く、1998年には RFC 2324 として、コーヒーメーカーを制御するための通信手順が標準化されました。この RFC 2324 は「Informational」として公開されており、厳密には標準ではないのですが、これに沿ってコーヒーメーカーの開発をしたり、制御用のプログラムを開発することには大きな価値があります。

今年グッときた RFC 7168

1998 年のコーヒーメーカー制御の通信手順の標準化から 16 年という長い歳月が過ぎてしまいましたが、今年 2014年4月には RFC 7168 が発表され、電気ティーポット(紅茶を淹れる機器)もネットワーク経由で制御することが現実的なものになって参りました。 RFC 2324 と同じく、厳密には標準ではないのですが、これに沿って開発していくことは当然のことであると言えます。
ここで簡単に、 RFC 7168 に沿った電気ティーポット制御について解説していきたいと思います。

RFC 2324 に定められたコーヒーメーカーがそうであったように、電気ティーポットもネットワークに接続されて、一種の HTTP サーバのように振舞います。 RFC 2324 も RFC 7168 も HTTP の拡張ですので、基本的に要求と応答との組み合わせで通信が行われます。
電気ティーポットに紅茶を淹れるように指示を出すには、BREW メソッドを使います。POST メソッドも利用可能であり BREW メソッドと同等の結果が得られますが、これは推奨されません。
次に重要なポイントは、要求を投げる先の URI です。/ に対して要求を投げると、電気ティーポットはステータスコード 300 (Multiple Options) を返し、紅茶の種類の選択肢を提示します。その時点で在庫のある茶葉の種類は、 Alternates というヘッダ項目に記されます。例えば /earl-grey という URI が有効であると述べられているのであれば、そこに対して改めて BREW メソッドの要求を投げることで、アールグレイを淹れてくれるのです。環境構築さえしっかりしていれば、 curl のコマンドをコンソールから適切に叩くだけで紅茶を頂くことができるのです。なんと素晴らしいことでしょうか!
これ以外にも、砂糖やシロップ、ミルクなどを加えるためのオプションも用意されています。

この、スマート家電の API を標準化していこうという世の中の流れは、もはや誰にも止めることはできないでしょう。皆さんもこの流れに乗り、 RFC 7168 に沿って、電気ティーポット向けの開発から始めてみませんか?

(注)RFC 2324 及び RFC 7168 は、ほぼ毎年 4月1日 のエイプリルフールに合わせて公表される、ジョークの RFC の一つです。即ち、この記事にもジョークが多数含まれます。

HomeKit

もう一つ、2014年に発表されたスマート家電関連で注目を浴びていたものとして HomeKit が挙げられます。 RFC により定義される “標準” とは少し離れた形態にはなってしまいますが、自分の書いたコードで家電製品を操作したい!!という欲望を満たすものとしては大きな期待を寄せています。
でも、まずはそうやって操作して幸福感を得られるような、立派な家を確保するところから始めたいですね!!!!!

 

フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!

Copyright © 2018 Fenrir Inc. All rights reserved.