#はじめに
この記事はなんとなくJSとかを勉強している学生がメモ代わりに書いているものです。内容は期待しないでください。
#1.仮想環境を開く
今回はUbuntuで行うのでiTerm2で仮想環境を起動する。
起動したところで
1.Virtual Box(バーチャルボックス)
2.Vagrant(ベイグラント)
という2つのソフトウェアを使った仮想環境でUbuntuを使用します。
cd ~/vagrant/ubuntu
vagrant up
vagrant ssh
Ubuntuがインストールされたディレクトリに移動。vagrant upは仮想的なPCにインストールされたUbuntuを起動するコマンドで,vagrant sshはVagrantの仮想マシンがセットされている状態でSSHに接続します。
#2.botを作る上で必要なモジュールをインストールする
yoとはYeomanという雛形作成ツールです。
generator-hubotはHubot のためのYeomanジェネレーター(generator-hubot)です。
coffeescriptはhubotをJSで扱うために必要なためインストール。
#3.botを作る
上記した内容はyo hubot
というコマンドでボットを作成し,それ以降はslackをアダプターとする内容です。
複数の質問に答えることができたらボットのプロジェクトが作成されます。
と出てきたら成功です。
#3.Hubotを動かすプログラムを書く
'use strict';
module.exports = (rbot)=> {
rbot.hear(/hello>/i, msg => {
msg.send(`Hi`);
});
1行目はJSをstrictモードで利用するための記述です。
2行目はmodule.exportsを使ってrbotという変数に値を直接格納できしています。module.exportsを使うと、指定した値を他のjsファイルから読み込んで再利用することができるようになります。少し似ているexportsとの違いはプロパティを設定せずに値を直接格納できます。記述方法は以下参照。
3行目以降はモジュールの関数で,helloというワードに反応してhiと返す記述です。特定の内容に反応させるには,Robotクラスのメソッドhearやrespond(用途はほぼ同じ)を使用します。記述方法は以下参照。
また,チャットに発言を投稿するにはsendとreply(用途はほぼ同じ)を使います。記述方法は以下参照。
```send(文字列
);
引用元(https://gihyo.jp/dev/serial/01/hubot/0004)
#4.hubotを動かしてみる
以下コマンドでボットを動かしてみて,先ほどに指定した文字列に正しく反応できたら成功です。お疲れ様でした!!!!
```bin/hubot
以下引用(https://gihyo.jp/dev/serial/01/hubot/0001)
###botとは
チャットツールに常駐してチャット経由でコマンドを待ち受けて実行したり,決められた条件に従ってチャットに発言してチャットの参加者に通知したりするようなプログラムのことをbotと呼びます。
###hubotとは
世の中には,開発言語やチャットツールごとにbotを作成するための様々なフレームワークが存在します。たとえば,PerlでIRCのbotを作るならikachan,WebサービスでTwitterのbotを作るならtwittbotが有名なところでしょうか。Hubotは,GitHub社が開発しMITライセンスで公開しているNode.jsでbotを作り動かすためのフレームワークです。
Hubotの大きな特徴に,様々なチャットツールに対応している点があります。たとえば,先ほど取り上げたikachanは,IRC用のbotを作るためのフレームワークであり,Twitterのbotを作る目的には使えません。一方でtwittbotはTwitter専用であり,IRC用のbotを作ることはできません。しかし,Hubotは,Hubotとチャットツールをつなぐモジュールである「Adapter」を切り替えることで様々なチャットツールに接続することができます。
###アダプターとは
Adapterは,チャットツールからRobotに誰かが入力した発言などチャットの状況を入力し,スクリプトなどによって作られた出力をチャットツールに伝える役割をします。初期状態では,シェル上でHubotと対話できるshell adapterと,Campfireというチャットツールに接続するCampfire AdapterいうAdapterが付属しています。
様々なAdapterがサードパーティーから提供されているため,大抵の場合は自分が使っているチャットツールに対応したAdapterが見つかると思います。