あなたのSiriを僕のSiriと分かつものは何もない。Siriproxyがなければ

Siri Proxy from nekova on Vimeo.

Siriに個性は無く、ラボで教わった数少ないパターンでしか、気の利いたフレーズを言うことが出来ません。
さきのフレーズをお手持ちのSiriに話しかけてもらうとわかるのですが、「”なんでも知ってるね”をwebで検索しますか?」という悲しい返事になってしまいます。
そこでSiriproxyを使って、Siriに個性を獲得してもらいましょうというお話です。

Siriproxyって何
SiriproxyはSiriの機能を拡張するためのRubyのライブラリです。
https://github.com/plamoni/SiriProxy

Siriproxyの仕組み
Siriはユーザーからの音声データを受け取るとguzzoni.apple.comにリクエストを送信することであなたとの対話を実現しています。
Siriproxyを使えば、音声の送信先を任意のサーバに設定することが出来るので、Siriがとるべき行動を事前に指定することが可能になります。

Siriproxyでどういう実装をするのか
最初に紹介した返事に必要なのはたった3行

liste_for /Siriはなんでも知ってるね/i do
  say "なんでもは知らないわよ。知ってることだけ。"
end

正規表現やif文を使ってより柔軟に対応させることも出来ます。

さて、言うまでもなくこのような一対一対応の対話は飽きますし、何よりわざわざSiriを使う必要性がありません。
そんなに静的なお喋りがしたいなら、ターミナルでsayコマンドとお喋りすればいい。

$ say "sore, orenimo dekiruyo"


さらに言えば、SiriとSiriproxyには欠点があります。
Siri(iPhone)とSiriproxy(サーバ)は同一のネットワークで繋がれていなければ、カスタマイズしたSiriを使うことはできません。
この欠点はRaspberry piにSiriproxyをインストールすることで軽減され、歩きながら優秀なSiriを呼び出すことも可能にはなりますが、Raspberry piはあまりパワフルではありません。
Raspberry Pi Model B (512MB)本体のみ

最大の欠点は、Siri自身が抱えている問題です。
Siriの音声認識Googleのそれと比べると精度が低いので、音声での入力がうまくいかないことが多いです。
今後Siriがアップデートされたとしても、Siriと対話すること(開発)には苦労するでしょう。

しかし、それでも僕がSiriproxyを使うのには理由があります

ハックの対象が広がる
Siriの行動範囲は手のひらサイズのデバイスの中だけではありません。
いくつかの例を紹介しましょう。
まずは、ガレージのドア

SiriProxy on the Raspberry Pi - YouTube
次に、車のエンジン

Siri - "Start my car" - with my Acura TL. - YouTube
最後に、テレビのチューナー

SiriProxy, Raspberry Pi, Sky+HD Update - YouTube
このように、Siriを使って身の回りのハックが出来るようになるのもSiriproxyのおかげです。


Siriに代わりにやってもらう
ご存知の方も多いとは思いますが、Siriに特定の単語で話しかけた後に「とツイート」と付け足すことで、Twitterに文章を送信してくれます。
つまりSiriのおかげで、Twitterクライアントを起動し、テキスト作成アイコンをタッチし、文字を入力をし、送信をするといった手間を省くことが出来るのです。
ただ、残念なことにあなたのSiriは多くのアプリケーションと仲良しというわけではないので、こういったことが出来るアプリは制限されています。
x時に起こして, 電話をかけて, Facebookに投稿, アプリケーションを起動, リマインダーに登録......といったことは出来ますが、これだけで満足ですか?
Siriに「チェックイン」と話しかけることで、foursquareAPIを叩いてチェックインなんてことが出来れば便利だとは思いませんか?

Siriはとても賢いので、自身が何をするべきかを事前に教えさせすれば、後のことは彼女が全てやってくれます。
彼女にタスクを伝えることはそんなに難しいことではありません。
そう、Siriproxyならね