Hubotを初代ラズパイにぶち込んだ
最近なぜか艦これを再開したにょろんです。
イベントとかは全く関係なく、「天ちゃんとRJちゃんと比叡ちゃんに会いてぇなぁ」とかそんなくだらない理由です。
んで、それ用のAPIのSDKとかDocs作れねぇかなぁと妄想中に、Botのフレームワーク(というかライブラリかAPI?)であるHubotさんの話題がTwitterに出てきて見事脱線。
脱線ついでのGWの暇つぶしに、HubotさんをRaspberry Pi(以下RasPi)に生息させてみます。
Hubotさんの生息予定地
まずRasPiですが、手持ちはRasPi 1 Bしかないので、こいつを使います。
RAMが512MBで、USB端子が2個で、microSDじゃなくてSDカードをつかうあの子です。「+」ですらありません。
CPU性能で言えば5ドルのRasPi Zeroに負けてます。僕の8,000円はいずこへ。
OSはArch Linux ARMを使ってます。GUIすら入れてないので超軽量。超おすすめ。みんな使って(露骨な布教)
下準備
公式のGetting Startedを参考にして下準備をします。
必要なパッケージのインストール
Node.jsと、npm(Node.jsのパッケージマネージャー)をインスコします。
# pacman -S nodejs npm
Fedora等々のRHEL系だったら下記で。バージョンによっては --enablerepo=epel
しないとダメかもです。
# yum install nodejs npm
Raspbianだと下記の方法かと思います。Debian系はまださっぱりですが。
# apt-get install nodejs
Archだと、インストールが終わったらだいたい最新版です。
[nyoron@nyoropi ~]$ node --version
v7.10.0
[nyoron@nyoropi ~]$ npm --version
4.5.0
他のディストリだと、Node.jsのバージョンがv6系とかv5系になるかと思いますが、Hubotさんはその辺を気にせず動いてくれるので大丈夫です。v7のほうが動かない罠があったりしますし。
もし「意地でも最新版にしたい」という方がいれば、この辺を参考にするとアップデートが楽です。
使うかもしれないパッケージのインストール
Redisをインスコします。Hubotがなんか記憶するときに使うインメモリDB(Brain)になります。
# pacman -S redis
プラグインによってはBrainをガンガン使ったりするので、インストールしておいて損はないでしょう。
ただあんまり使われると困るんですけどね。RasPiのRAMが512MBですし。
Hubotの下準備
次に、npmをつかってHubotさんをインスコします。
コマンドは下記。公式ドキュメント通りです。
# npm install -g yo generator-hubot
npm installはもともと早くないので、RasPiのCPUだとアニメ1本見れる程度には時間がかかります。
インストールに失敗する場合は、もしかしたらGCC等の開発系パッケージのインストールが必要かもです。
よくやらかすのは権限不足ですね。 sudo
を忘れたばっかりにくっそくっそ。
くっそくっそ。 pic.twitter.com/1Ckav3aO2Y
— 三毛田 にょろん (@MiketaNyoroN) 2017年5月5日
Hubotのインストール
やっと本体というかテンプレートのインストールです。
下記コマンドで、Botの名前をつけたディレクトリを作成して、テンプレート的なものを作成します。
$ mkdir nyorobot
$ cd nyorobot
$ yo hubot
yo hubot
すると、Hubotさんになんかいろいろ聞かれます。
僕はとりあえずTwitterBotっぽいものが欲しかったので、下記のように答えました。
? Owner User <user@example.com>
? Bot name NyoroBot
? Description etc etc ...
? Bot adapter twitter
Bot adapterについては、この辺を探すと使いそうなのが見つかると思います。
僕の場合はTwitterしか使いそうになかったので、 hubot-twitter の twitter
の部分をBot adapterに入力しました。
もちろんあとで追加も可能なので、面倒な場合はEnter連打でもいいです。たぶん。
質問に答え終わるとまたインストールタイムです。アニメの感想をTwitterにつぶやいて時間を潰しましょう。
エラーこわい
インストールも終わって、RasPi上でひとまず実行可能な状態になりました。…が、実行してもエラーが出てきて鬱陶しいので直します。
まずは、将来的に消え去ってしまう、不要なファイルを消しておきます。
$ rm hubot-scripts.json
その次、さっぱり使わないプラグインが external-scripts.json
に書いてあるので消します。
僕は下記のようになりました。
[
"hubot-diagnostics",
"hubot-help",
"hubot-redis-brain",
"hubot-rules"
]
各プラグインの詳細については解説しませんが、ひとまず上記のプラグインがあれば、ローカルでのテストには困りません。
やっと実行
bin/hubot
を実行するとプロンプトが出てきます。
[Botの名前] help
とか [Botの名前] ping
とか話しかけてみましょう。無機質な返事が返ってきます。
$ bin/hubot
[Fri May 05 2017 16:45:06 GMT+0000 (UTC)] INFO hubot-redis-brain: Using default redis on localhost:6379
NyoroBot> nyorobot help
Shell: NyoroBot adapter - Reply with the adapter
NyoroBot echo <text> - Reply back with <text>
NyoroBot help - Displays all of the help commands that Hubot knows about.
NyoroBot help <query> - Displays all help commands that match <query>.
NyoroBot ping - Reply with pong
NyoroBot the rules - Make sure hubot still knows the rules.
NyoroBot time - Reply with current time
NyoroBot> nyorobot ping
PONG
NyoroBot>
個人的に好きなのは the rules
です。ロボットらしく3原則を答えてくれます。教育(スクリプト)によっては触るもの全てに害を及ぼしてくれるので、さっぱり当てになりませんけどね。
ちなみに、起動直後に「Redisつかうべ〜」と言われますが、Redisサーバーを起動しなくても大丈夫です。Brainを使うプラグインがさっぱり入っておりませんので。
インストール終わり
以上でインストールはおわりです。あっさりでしたね。
正直なところ、RasPiにHubotをぶっこむメリットはそんなに無いです。LAN内に生息してることを活かして、「NAS生きてる?」とか「RTX再起動して」とか「AP再起動して」お願いするのが精一杯でしょうか。
それはそれでちょっと便利か。
アイディアとかがあれば、ちょっと実装してみます。