iBitzEdge

Raspberry PiをSlackでbot化させてみた

お久しぶりです。ところで、Raspberry Piをご存知でしょうか?ちょうど手のひらぐらいの大きさの可愛いパソコンです。これを使って、botを作ってみたのでご紹介したいと思います!

Raspberry Piを買ってみた!

5Sとの比較

僕はRS Components製を買いました。

まず「Raspberry Piって何だ?」といった方のために、ちょっと説明をしておきます。

Wikipediaだとこんな説明が。

Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。

日本ではラズパイとも呼ばれる。(Wikipedia内「Raspberry Pi」より引用

写真を見てもらうとわかると思うのですが、これパソコンなの?!ってなる方が多いと思います。パソコンといえば、画面があって、キーボードがあって…って感じですよね!

そういう類を省いて、必要なものだけ詰め合わせてとにかく小さい…それがRaspberry Piです!

購入に至った理由

夏休みだからです。時間は山のようにあるので、何かしようと思って買いました。あと可愛い。

Slackの導入

Slack – Team Communication
カテゴリ: ビジネス
現在の価格: 無料

かなり少数意見になるとは思うんですが、僕はLINEが嫌いです。タイムラインがとにかく要らない。あと既読。

というわけで、Slackという面白そうなチャットツールを使ってみることにしました。よく会社内とかで使われるものだそうで、まあでもいけるのではと。

そして、Slackを選んだ確たる理由があります。それが、botを作れるということ。

Raspberry PiをSlackのbot化させる

さて、ここからが本題です。

hubotのインストール

GitHubのhubotというフレームワークを使って、Raspberry Piをbot化することができます。ここら辺は「hubot インストール slack」で調べればかなり出てくるので、割愛させて下さい。

Slackにbotを常駐させる

こちらも割愛させて下さい。僕の場合、こちらのサイトがとても参考になりました!

botを作る

こちらは割愛させません。Raspberry Pi上の

/home/pi/[botのユーザー名]/scripts

内にCoffeeScriptのコードを置くことで、botの言動を作ることができます。とは言っても、形はある程度決まっています。

module.exports = (robot) ->
    robot.hear /[反応させたい単語]/, (msg) ->
        msg.send "[返したい単語]"

例えば、こんな感じ。

module.exports = (robot) ->
    robot.hear /^おはよう$/, (msg) ->
        msg.send "おはよう"

これは、botが「おはよう」を聞いた時に、「おはよう」と返すコードです。

ちなみに、[反応させたい単語]のところには正規表現を使うことができます。正規表現には色々あるので、ネットで調べたり、本を買ったりして勉強するといいかもです。

そして、ここからが問題

CoffeeScriptって何?!

いやほんとに、なんでCoffeeScriptで作ったのかな。今まで聞いたことない言語ですよ。しかも書き方なんかおかしいし、あーもう慣れん!!!!

始めたての僕ですね。ネットで調べてもイマイチよくわかんないし、本もないし。後々はAPIとか使って電車の遅延情報とか返すようにしたいのに…。

もうじゃあ、CoffeeScriptで書かなければいいんじゃないか?!

CoffeeScriptを使わずにbotを動かす

 

もう極論ですね。

hubotはCoffeeScriptでしか動いてくれません。でも、CoffeeScriptで全てのコードを書く必要はないのです。

つまり、データの取得などのデータ加工は他の言語にやらせて、それをCoffeeScriptのファイルに戻せばいいのでは、ということです。言ってみれば迂回。

こうすれば、CoffeeScriptを実質使わずにbotは動かせますよね!

これで作ってみる

今回僕は、CoffeeScriptからコマンドでRubyを実行して、帰ってきたメッセージ形式の出力結果をbotに渡すという流れでやってみました。

例として、アニメの放送予定表を返すコードを簡単に書いてみました!GitHub上にあげておくので(こちら)、ご自由にお使い下さい(一度に多くのリクエストを送るとDoS攻撃になりかねないので注意してください)!

ちなみに、botの返しはこんな感じです!

終わりに

Raspberry Pi可愛いんですよねー。値段も6000円と、PCにしてはかなり安めの価格設定なので是非!

最近けん玉にハマってます。けん玉にも色々あるんですが、僕のオススメはこの欅のけん玉です!独特の香りはもちろん、球が皿に乗った時の音がもう…!!!!

少々値は張るんですが、こちらもオススメ!僕は当日中に欲しかったので秋葉原のシャフトギアまで行っちゃいました…!