RAPIRO(ラピロ)をWebサーバにする
ラピロとコミュニケーションをとりたいと考えたとき、やり方はいろいろあると思います。
- ラピロに何かセンサを繋げて、それに対して人がアクションをとってそれをセンシングさせる
- ラピロにマイクを繋げて、音声認識させる
- スマートフォン経由でラピロと対話
1.と2.は直接ラピロとコミュニケーションをとることができますが、それ相応にハードルが上がります。3.はスマホを介するので間接的なコミュニケーションになりますが、一番簡単そうなので、まずはこれからやってみることにします。
スマートフォン経由でラピロと対話するにしても、これまたやり方は色々あると思います。AndroidアプリやiOSアプリをゴリゴリと書くのアリかもしれませんが、個人的には、ラピロをWebサーバにして、HTTPでアクセスできるようにするのが一番簡単なような気がします。これなら、ブラウザが動く環境なら、AndroidだろうがiPhoneだろうがPCだろうが、どれを通してもラピロと通信することができるので。
ということで、ラピロのRaspberry PiにWebサーバを実装することにします。これまたApacheやらlighttpdやら色々選択肢はあるのかもしれませんが、個人的に実装が簡単そうに思えるnode.js + Expressフレームワークで実装してみようと思います。
ではまず、node.jsのインストールから。node.jsは頻繁にバージョンアップがあるため、バージョン管理ツールを本体のインストールより先にイ ンストールするのが良いらしいです。ということで、node.jsのバージョン管理ツール”nodebrew”をインストール。
$ curl -L git.io/nodebrew | perl - setup
続いて、環境変数の設定。ホームフォルダの.bashrcの末尾に以下を追加。
export PATH=$HOME/.nodebrew/current/bin:$PATH
書けたら、有効にする。
$ source .bashrc
これでバージョンマネジャのインストールは完了。次にnode.jsの本体をインストールする。本家を見てみると、11/2時点ではv0.10.33が最新らしいのですが、ここを除いてみるとRaspberry Pi向けのバイナリファイルはv0.10.3が最新だった(=node-v0.10.3-linux-arm-pi.tar.gzが存在した)ので、これを入れることにします。
$ nodebrew install-binary v0.10.3
インストールしたら、これを利用するように設定。
$ nodebrew use v0.10.3
ちなみに、現在インストールされているnode.jsのバージョンと、現在利用設定しているバージョンを知りたい場合は、以下を実行。
$ nodebrew list
これで、node.js本体のインストールは完了。
次 に、Webアプリを簡単に作れるようにするためのフレームワークである、Expressをインストールします。express-generatorを使ってアプリの雛形をつくるやり方もありますが、自分の環境では何だかうまく動かなかったのと、あと勉強も兼ねて、雛形なしで作っていくことにします。
といっても、サンプルレベルならとても簡単です。node.jsの公式ページの”Getting Started”のやり方に従うだけです。
まず、適当に作業用のディレクトリを作って、そこに移動します。
$ mkdir Rapiro $ cd Rapiro
次に、package.jsonを作るために、以下を実行。
$ npm init
シェルが色々聞いてきますが、とりあえず全部enterしとけばOKです。
package.jsonができたら、expressをインストール。
$ npm install express --save
ここまでできたら、同じフォルダにapp.jsを作ります。app.jsの内容は、”Getting Started / Hellow World”の内容そのままでOK。
できたら、以下で実行。
$ node app.js Example app listening at http://0.0.0.0:3000
それでは、Webサーバが機能しているかチェックです。Raspberry Piの繋がっているローカルネットに手持ちのスマートフォンをWi-Fi接続し、スマートフォンのブラウザで以下のように入力。
http://192.168.xxx.xxx:3000/
(アドレスはRaspberry PiのIPアドレス。事前にifconfigか何かでチェック)
これで、画面に”Hello World!”が表示されればOKです。
あとはこのサンプルに対して色々ルーティング処理を入れていけば、ラピロへの問いかけに対して色々なリアクションをさせる、というのは作り込んでいけそうです。
ディスカッション
ピンバック & トラックバック一覧
[…] さて、次に、以前実装したnode.js+Express Webサーバと組み合わせたいと思います。VoiceText Web APIには便利なnode.js用のライブラリがあるので、それを使わせてもらいます。 […]
[…] これまで、自分がほんのちょっとだけ触ったことのあるnode.jsやtomcatでWebサーバを作ってきましたが、そういえばRaspberry Piの基本的なプログラミング環境はPythonだったっけ、と今更ながら […]
[…] dotinstall で node.js と express を以前やったこともあり 今回は RAPIRO(ラピロ)をWebサーバにする […]