IRKit 所感
IRKit を入手してからけっこう経つので、そろそろ感想を書いてみる。
IRKit とは?
IRKit とは WiFi 経由で操作する赤外線リモコン機器である。
iOS 端末のアプリや PC のブラウザから IRKit に WiFi で命令を送ると、それを赤外線として発信してくれる。既存の赤外線リモコンからデータ受信して解析可能なので家電量販店などで売ってる学習リモコン的なことも可能。たとえば手持ちの TV やエアコンのリモコン操作を記憶させて iPhone から実行できたりする。
ハードウェアと SDK がオープンなので拡張の余地もある。特に後者はアプリを作成するだけでなく他のプラットフォーム (Android やデスクトップ OS など) から IRKit を操作するための API 移植にも役立つだろう。
入手
IRKit は現在、Amazon またはスイッチサイエンスから購入できる。出荷状況については作者である maaash さんのブログ記事 IRKitリリース!そして再入荷予定について - maaash.jp で確認するのが確実であろう。
IRKit は少量生産のためか Amazon では品切れになりやすいようで私も長らく購入できなかった。
そんなおり、年初の飲み会で token さんに「IRKit が欲しいのですが品切れで入手できず」という話をしたところ、ありがたいことに廉価で譲っていただけた。この IRKit は初期ロットである。そのため現行品と異なる部分もあると思われるが、この記事は私の感想なのでそのまま書くことにする。
セットアップ
セットアップに際していくつかトラブルに遭遇したが Twitter 上で maaash さんから懇切丁寧にアドバイスをいただいた。以下はそれを踏まえた体験談。
私の入手した IRKit は初期ロットであるためか簡素な箱に緩衝材と本体だけ入っていた。現行品だと他に IRkit の mac アドレスやネットワークのパスワードなどを書いた紙が同梱されているらしい。下記の写真は iPod touch 第 5 世代と並べてみたところ。手のひらサイズである。重量も見た目どおりかなり軽い。
IRKit の電力はマイクロ USB から供給する。電源ボタンも存在せず USB 接続するだけで動作する。停止させる場合は USB を抜く...ということでよいのかな?動作状態は本体のランプと色で判断する。
初期状態では赤ランプが明滅するそうだが私の IRKit は譲り受けたものであるためか赤と緑の明滅であった。maaash さんによるとそれは既存の WiFi アクセス ポイントを探している状態とのことでリセットを勧められた。
リセットは本体背面のボタンを押すことで実行される。ボタンは奥まった位置にあるので細長い棒状のもの ( 例えばボールペンの先 ) で押すことになるだろう。リセットすると赤ランプの明滅に移行する。ランプの色は以下のようになるらしい。
ランプ | 状態 |
---|---|
赤明滅 | 初期状態。IRKit のセットアップ待ち。 |
赤と緑の明滅 | WiFi アクセス ポイントを探している状態。IRKit を準備中。 |
青点灯 | WiFi アクセス ポイントに接続された状態。IRKit を利用可能。基本は点灯したままだが、たまに明滅する。 |
次に iOS 端末へ IRKit シンプルリモコンをインストール。このアプリはリモコンだけでなく IRKit のセットアップも可能。
しかしどうにもセットアップが失敗する。シンプルリモコンで WiFi のアクセス ポイントを設定後 iOS の WiFi 設定に IRKit が接続先として表示されるはずなのだが、いっこうに見つからない。
かつてはシンプルリモコンからモールス信号で IRKit に WiFi 設定を送信できたそうだが 3rd ロットから廃止されている。現行品は IRKit 自体が WiFi のアクセスポイントになる方式なのだが私の利用している IRKit はファームウェアが古いためモールス信号による送信を待機してしまうのかもしれない。
maaash さんに Arduino を利用した手動ファームウェア更新を勧められたので試してみることにした。この手順とファームウェアは GitHub に公開されている。
私のマシンは MacBook Pro 15 Retina 2013 (OS X Mavericks に更新済み) である。これに IRKit を USB 接続してファーム更新を実行してみた。しかし Arduino IDE を見ると以下の例外が出力されていた。
processing.app.SerialException: Serial port '/dev/tty.usbmodem1421' already in use. Try quitting any programs that may be using it.
この例外は接続している USB ポートが他のプロセスによって使用済みであることを示すもの。maaash さんによるとこれはよくある問題で遭遇したときはマシンを再起動するのが安全とのこと。例外が起きているのに Arduino IDE の表示は書き込み中になっているので心配だったが再起動できるぐらいだから書き込みは止まっているのだろう。
その後、試しに USB を MacBook の別ポート (右で失敗したので左を選んだ) に繋ぎ直してから書き込みしてみようと実行したらファームウェア更新に成功したので再起動はやめた。とりあえずよしとしておく。
ファーム更新後、改めて IRKit シンプルリモコンからセットアップを実行。しかし iOS の WiFi 設定から IRKit がアクセス先として見つからない。maaash さんいわく IRKit として対応している WiFi の規格は IEEE 802.11b/g/n なので、それ以外になっているのかもしれないとのこと。
私は WiFi ルータとして WR8700N を利用しているのだけど接続規格の調べ方や設定が分からない。という感じのことを Twitter でつぶやいていたら makoto_kw さん (WR8500N を利用中とのこと) から接続先を 2.4GHz のみにすればよいのでは?とのアドバイスをいただいた。
なるほど 5GHz は a なのか。そしてこのルータなら 2.4GHz にすることで IRKit が対応していない a を隠せると。そういえばシンプルリモコンに設定していたアクセス ポイントは 5GHz 側の SSID を指定していたっけ。ならば 2.4GHz のみに設定する前に SSID の指定だけ 2.4GHz 側にしてみるか、と試してみたところセットアップに成功。
ここまで実行したセットアップ手順をまとめると以下のようになる。
- IRKit をリセットし、 ランプが赤の明滅状態にする
- iOS 上で IRKit シンプルリモコンを起動
- シンプルリモコンからセットアップ画面を開始
- WiFi 設定画面でアクセス ポイントを設定
- 名前 : WiFi ルーターで 2.4GHz の SSID
- セキュリティ : WPA/WPA2
- パスワード : 2.4GHz の SSID に設定されているもの
- IRKit の WiFi に接続する画面が表示される
- iOS の設定から WiFi 画面を開く
- WiFi 画面の接続先に IRKitXXX という感じのアクセスポイントが表示されるので、これに接続
- シンプルリモコンに戻る
- 家の WiFi に接続しなおせというアラートが表示される
- iOS の設定から WiFi 画面を開く
- WiFi 画面の接続先で IRKit に指定した 2.4GHz のアクセスポイントに接続...のはずなのだが、私の環境では WiFi 画面を開いたら自動的に接続先がこちらに変更された
- シンプルリモコンに戻る
- IRKit を発見したというアラートが表示される
- IRkit のランプが青点灯に変わり、セットアップ完了
面倒そうにみえるけど問題が起きなければ 3 分とかからない作業である。シンプルリモコンの画面にも次に実行すべきことが表示されるのでわかりやすい。
感想
IRKit とシンプルリモコンの使用感や気になった点などを書く。
デザイン
無駄のないデザインで機能美を感じる。必要最小のインターフェースで構成され冗長なものはない。代を重ねてもこの方針は維持してほしい。事前に白のプラスチック筐体であると聞いていたため実物は粗が目立つかも?と予想していたのだがバリもなく筐体と蓋の繋ぎも目立ちにくい。
各種インターフェースの名称は底面に書かれている。そのため通常は文字を見ることがない。これは必要な情報を網羅しつつ冗長さを避けるための工夫と理解した。製品としても筐体上部は言語依存せず共通化できるだろう。実によい設計。
筐体上部のロゴは立体ではなく印刷にしたほうがよいと思った。ホコリを払おうとする時にロゴの隆起が邪魔。できればひと拭きで掃除したい。IRKit としては角丸矩形の筐体とランプだけで十分に存在感があるので立体にしてまでロゴを目立たせなくてもよいのではなかろうか。
状態ランプをまぶしく感じる。部屋を消灯すると非常に目立つ。可能であれば光量を減らすかランプ自体のサイズを見なおしたほうがよさそう。セットアップに成功したら状態を気にする機会は滅多にないだろうからランプの大きさは極小でもかまわないと思う。
リモコン機能
IRKit シンプルリモコンは他のリモコンから赤外線を受信して操作をボタンとして登録できる。ボタンが多いと面倒かな?と思ったけど意外と作業は苦にならず楽しめた。
ひとつの画面へ収めるようにボタンを厳選するのが、あたかもパズルのようで面白い。昔 CD からお気に入りの曲だけ入れたカセットテープを作っていたことを思い出した。テープは時間の制約が厳しいうえ曲の切り替えも面倒なためなるべく通しで快適に聴けるよう、あれこれと曲順を工夫したものだ。リモコンのボタン選定と配置はこの感覚に似ている。
IRKit 経由のリモコン操作はタイムラグもなく反応がよい。実用十分。難点としては iOS 上で利用するとロック画面の解除が面倒なこと。iPhone 5s であれば指紋認証で簡単に解除できるのだが、それでも若干のタイムラグがある。
家電のリモコンと同等の使用感を実現するとしたら常時、操作を受けつけなければならない。しかしそれは難しいだろう。iOS の範疇で対応するとしたらアクセス ガイド機能でリモコン専用端末にするぐらいか。とはいえそれでは iOS 自体のアプリ多様性が犠牲になる。
私の場合、家にいる間は PC を常時起動しているので IRKit SDK をデスクトップ OS に移植してリモコンをデスクトップのウィジェット化したほうが実用的かもしれない。
RF
最近の家電リモコンは IR (赤外線) ではなく RF (無線) を利用するものがある。IRKit はその名のとおり IR 専用で RF は未対応のようだ。
私の手持ちリモコンでは電灯とエアコンが IR で TV は RF。TV は BRAVIA KDL-40NX720 である。Web を調べると IR 学習リモコンで操作している人もいるようなので、こちらのボタンをスキャンすれば代用できるのかもしれない。そこまでする気はおきないけど。
リモコンにおける IR と RF のシェアや将来性については、いまいち理解できてない。調べると RF は拡張性に富み IR のような通信の指向性もないため障害物に遮断されにくいなどの特徴がある。なんだか良いことずくめにみえるけど IR を置き換えるほど普及しているのだろうか。単純な機能しかもたない家電であれば IR で十分なのでは?とも思う。
手持ちのリモコンすべてを IRKit で代替できると嬉しいので、もし簡単であれば RF にも対応していただけると嬉しい。
プリセット
IRKit SDK を利用すると赤外線で送信された内容を取得できる。具体的な方法は以下の記事が参考になる。
いわゆる汎用リモコンにはあらかじめ主要なメーカーのリモコン設定をプリセットとして持っているものがある。これに該当する製品であれば学習させるまでもなく設定コードを選ぶだけですぐにリモコンとして利用できるようになる。
もし IRKit でキャプチャしたデータをサーバー公開する仕組みがあれば他のユーザがキャプチャした成果をプリセットとして流用できて便利かもしれない。
例えばプリセットの収集はリモコンの製品番号をファイル名とする JSON 形式で GitHub のプリセット用リポジトリに pull request する。はじめて登録する製品なら大抵そのまま merge されるだろう。あるボタンが抜けているなどプリセットの内容に不備がある場合は、そこだけ修正した JSON をパッチとして pull request してもよい。
プリセットの公開は GitHub リポジトリそのものを参照させるか専用の Web サーバーを用意する。後者なら Web API の形で柔軟にプリセットを提供できそう。データ更新は GitHub の Webhooks を利用してリポジトリ更新を自動反映する。
赤外線リモコン版の CDDB みたいなのを想定している。IRKit のユーザー数が増えてくれば需要あるかも?