ゼロからはじめるぜ! Twilio – シーズン2 第1回

20140107-01.jpgあけましておめでとうございます。ネットワークエンジニアのまさです。
ご無沙汰でございました。せっかく新年ですから、本日よりゼロからはじめるぜ! Twilio シーズン 2 をお送りしようかと思います。
意外にこのシリーズ、読んでくれてる方が多く、サポートのお問い合わせで「ゼロからはじめるぜを読んで今、TwiML を書いているんですが」という内容で質問してくれるお客様もいらっしゃいます。

本当にありがとうございます。

この年末年始は 9 連休だった方が比較的多かったと思いますが、どうでしょう、しっかり太ってお戻りになられたでしょうか?
私、昨年 12 月の頭から 2 週間ほど、米国 Twilio 本社へ出張へ行ってきまして、見事 3kg のダイエットに成功したのです。が、この正月で完全にトントンに戻りました。
こんなもんですよヽ(`Д´#)ノ

さて、年始ということもありまして、まだ何かコードを書いたり勉強したりする気分でもない。なので、12 月の出張で Twilio 本社で発表した私のアプリを紹介したいと思います。

前シーズンの冒頭でも書いたのですが、私はネットワークエンジニアであり、プログラマやアプリケーションエンジニアではないので「コード書いて動くモノをつくる」というジャンルは丸っきし専門外です。
そんな畑違いのジャンルでも、Twilio は比較的導入しやすく簡単な仕組みでできているため、こういうものが作れちゃうんだよ、という紹介です。

是非、今回初めてこのシリーズを読まれる方も、シーズン 1 から読んで頂き、電話 API の楽しさに触れていただきたいなと思います。

プレゼン内容

20140107-02.jpg今回、Twilio 本社で行ったプレゼンはこういうものです。訪問して 3 日目でいきなり大勢の社員の前でやるプレゼンなので、この印象が 2 週間に渡る私のアメリカ生活にも掛かってくるわけです。

盛大にウケを取ろう、と。

日本独自の文化である尻洗浄便座を Twilio に繋げる、というコンセプトのものを作ってみました。なんだ、ウォシュレットのことかと思った方います?
ウォシュレットは TOTO の登録商標ですので、あれの一般名詞なら「尻洗浄便座」と呼ばなくてはいけないのです。ちなみに、INAX は「シャワートイレ」ふーん。

で、このように日本にはそれはもう素晴らしい発明品があるんだと。

20140107-03.jpgこの偉大なる発明品はさらに凄いモノになる。インターネットと Twilio の力をして、私がトイレを再発明した。それが「Twimllet トゥイムレット」であると。

ちなみに、Twimlets という名前で、Twilio が提供している、Twilio 機能をより簡単に使えるためのツールがあるのですが、ネーミングはそこに引っ掛けています。

ここで大爆笑を頂きました。この瞬間、私は日本人として勝ったと思った!!

20140107-04.jpgここからはどのようなものかの説明です。

Twimllet を使うと尻洗浄便座は、もはやトイレではなく強力な武器である、そしてそれらは完全にあなたのコントール下に入るんだと訴求します。

20140107-05.jpgTwimllet を遠隔で起動するには、このような Twimllet Agent と呼ばれる別のデバイスを開発する必要があります。このデバイスは、赤外線リモコンの信号をハックし、シャワー起動信号や、ヒーターの温度調節信号、温水の温度調整信号を好きなように出せる仕様です。

このデバイスを Wi-fi ネットワークに接続し、Twilio から電話をかけて敵を攻撃してやろうと。

残念ながら、このデバイスを開発するスキルは私にはなかったので、実際に尻洗浄便座を動かして見せつけるまでには至らず、電話をかけて Twimllet にコマンドを送るインターフェイスのシミュレーションを行うという内容に留めました。

20140107-06.jpg仕組みとセキュリティについて。

Twimllet を遠隔で操作させるインターフェイスを私は「Twimllet Commander Z」と名づけました。発音は「トゥイムレット コマンダー ズィー!」です。マジンガーゼッーーーーート! のようにゼットといってはいけません、英語では「ズィー!」です。

Twimllet Commander Z は、複数の PHP で構成され、このうち 1 つが Perl スクリプトを呼び出します。Perl スクリプトは MySQL に対しデータベース更新作業を行う役割を果たします。

Twimllet では全てのトイレ情報が MySQL のデータベースに格納されており、命令を出したいトイレのモードを Armed(武装モード)に切り替えることで、遠隔操作を実現します。
また、実際このデバイスを開発した場合だと、それぞれが IP アドレスを持ったり、TOTO や INAX 等、各トイレに対し、送る赤外線信号がきっと変わりますので、そういうのはデータベースで管理したほうがいいんじゃないかという発想で、データベースを組み合わせることにしました。

Twilio から電話を掛け、トイレのモード状態を確認したり、Armed モードの ON / OFF をしたり、噴水発射命令を出したり、そういうのを、自動音声応答システムで実現したのが Twimllet Commander Z です。

電話だけで遠くのトイレの噴水を発射できますので、当然セキュリティには配慮しないといけません。既にトイレではなく戦略兵器となった Twimllet ですから、誰でもかれでも噴水発射できたら非常に危険。
というわけで、この PHP に不正にアクセスできないよう BASIC 認証を採用、さらに、電話をかけた最初に認証コードをプッシュするようにしました。

最後は、実際にみなさんに電話をかけてもらい、Twimllet Commander Z の操作感を体験してもらいました。しばしの間、沈黙とざわめきが起こった後、盛大な拍手が起こり、あの時の私は輝いていた。

はい、というわけで新年早々、ちょっとした私事戯言からスタートしたシーズン 2 ですが、せっかくなのでシーズン 2 は、この Twimllet Commander Z を実際につくってみます。

実際にこれを製品化しようとする場合なら、高度なセキュリティ機構をもっと盛り込む必要がありますし、インジェクション対策やら色々あるのですが、このシリーズは簡単に Twilio をつかって頂くための内容ですので、その辺りは考慮にいれず、なるべく簡単なコードでシンプルに最低限のロジックだけで動くものを作っていきます。

題材としては、このようなことを体験するシラバスです。

  • Twilio への電話を PHP で受ける
  • Twilio から自分のサーバへのアクセスで BASIC 認証を使う
  • 多段構成の音声応答システムを作る
  • MySQL サーバを立てる
  • Perl から MySQL を操作する

複数回に渡り、この Twimllet Commander Z の全貌を公開してまいります。シーズン 1 に比べると少し敷居が高そうに見えるのですが、コーディングド素人の私が出来たのですから、一緒にやれば大丈夫!!

次回までに以下をご用意ください。

  • インターネットからアクセスできる Web サーバ
  • 上記 Web サーバに Perl と PHP が動作する環境をプラス
  • 実験用の MySQL サーバ

まだ無料トライアルアカウントの方でも大丈夫です。Web サーバと MySQL サーバは同じサーバ内に立てても構いません。
ただ、安全を考慮し、他の用途で使っている本番環境のデータベースとは同居しないでください。

インフラ周りに詳しい方は、安全のため、グローバルから直接アクセスできないネットワークに MySQL を立てて、Web サーバからはプライベートネットワークでアクセスできるようにすると尚いいでしょう。

なお、MySQL サーバを立てる回では、Cent OS(Redhat 系 Linux)に MySQL をインストールしてデータベースを立てるところまで詳しく書くつもりなので、先に立てられなくても OK です。

データベースなんて触ったことないよ、という方でも、MySQL の基本的なことも合わせて紹介するつもりです。
これを期にデータベースをちょっと触ってみようかなと感じてくれれば結構! 少なくとも MySQL のパッケージがインストールできるサーバ環境だけご用意くださいね。MySQL はオープンソースなので無料で手に入ります。

では、次回からお楽しみに!

この記事をシェア


最新記事

すべての記事へ