プログラミング奮闘記

難しいと評判!初心者がN予備校でプログラミングを学んだ感想と備忘録!
No.19:SlackとHubotについて

N予備校 プログラミングコース 第19回

あなたは2019年の目標って立てましたか?
どんな目標を立てたか覚えていますか?

私は2018年末に2019年の目標を立てました。
その一つにプログラミングを学び仕事として使えるようにすることをあげました。
そして、思い立ったが吉日と「N予備校のプログラミングコース」を申し込みました。

そして受講と同時に自身の振替と、これから始めようと考えている人の参考になればとブログを書き始めました。
今回ブログの移設にともない、再度そのブログを読み返しながら、今思うことを加えて記載していきたいと思います。

また私が受講したのは【2018年度】で、現在公開されている【2019年度】との違いについても書いていきたいと思います。

このブログは、初心者が学びながら書いているため、間違っている場合があります。
分かり次第修正していくつもりです。

そのあたりも含め楽しんでいただければと思います。 

最後に進めていてわからなかったところや気になったところをまとめています。

プログラミング入門 webアプリコース 第19回

 今回は、チャットコミュニケーションツールであるSlackで動かすことのできるボットをHubotを使って作成します。

  • 今回の内容まとめ(第3章 05~06)
    ・Slackについて
    ・Hubotについて

  • 今回の目標
    Hubot を使ってボットを作成し、ボットをSlack上で動くようにします。

  • 今回新しく扱っているコマンド等
    ・Slack
    ・mention
    ・/remind
    ・yo
    ・generator-hubot
    ・Hubot
    ・CoffeeScript
    ・send

Slackについて

Slack(スラック)とは、チャットができるコミュニケーションツールで、ソースコードを表示する機能や他のサービスとの連携、各デバイスへの通知など機能が充実しています。
授業では、前回学んだライブラリ機能を使ってチャットコミュニケーションできるボットを開発します。

テキストに従って、Slackのユーザー登録をします。

 

メンション

mention(メンション)は、英語「言及」という意味で、Slackでは、ユーザー名を含めてチャットの発言内に含めることをいいます。

自分にメンションすること際は、下記コマンドを使用します。

/remind me in 〇 minute 時間です
上記のコマンドで、〇分程度後に「時間です」と通知されます。

Hubotについて

Hubotは、Slackのボットを簡単に作るためのライブラリです。
まず、必要なモジュールをインストールします。

<npmの場合>
npm install -g yo@2.0.0
npm install -g generator-hubot
npm install -g coffeescript@1.12.7

<yarnの場合>
yarn global add yo@3.0.0
yarn global add generator-hubot
yarn global add coffeescript@1.12.7

上記コマンドで、「yo」「generator-hubot」「coffeescript」をインストールします。
yo@の後ろはバージョンです。

yo

yoは、Yeoman(ヨーマン)いうひな形作成ツールで、Google社が作成しています。

generator-hubot

Yoemanを利用したHubotというボットのジェネレーターで、Hubotを使うための必要な設定を行ってくれます。

Hubot

GitHub社が作成した、ボットを作成するためのフレームワークです。

CoffeeScript

JavaScriptを便利に書くために作られた言語の一種で、内部でJavaScriptに変換されます。
 

hubotを作る

hubotのボットを作成するためコマンドを実行します。

yo hubot
上記のコマンドを入力すると、「Owner名」「ボット名」「説明」「アダプター」について聞かれます。今回はSlackと連携を取るので「アダプター」については「Slack」と入力します。

ボットのプログラムを作成する

ボットを動かすためのプログラムを作成します。

module.exports = (○○) =>{
robot.hear(/hello>/i, (××) => {
const username = ××.message.user.name;
××.send(‘Hello, ‘ + username);
});
};
1行目で、モジュールを○○という引数を持つ関数としています。
2~4行目で、hello>という文字にマッチした場合に適用する××関数を設定します。
このとき「i」をつけることで大文字と小文字の区別をしない設定になっています。して
その中身が、3行目で発言者の名前を取得し、それをusernameに設定し、4行目で、Hello, の後ろに先ほどのusernameを付けた文章を送信するようになっています。

hubotを動かす

hubotを起動するには以下のコマンドを実行します。

bin/hubot
上記のコマンドでボットを起動します。

ここで

hello>
入力しEnterキーを押すと

□□>Hello, shell
と表示されます。ここで□□には、先ほど設定したボット名が入ります。

終了する時は、Ctrl+cキーで終了させることができます。

Slackでhubotを動かす

上記の作業で、ボット自体が出来たことが確認できます。

次に、作成したボットをSlackと連携させます。

① テキストに従って、開発用のワークスペースを作成します。

② ワークスペースが作成できれば、SlackにHubotをインストールします。

Hubotの設定が終わると、TOKENという文字列が表示されます。これは、SlackとHubotを連携するために必要になりますので、どこかに保存しておきます。

③その後、SlackのチャンネルにHubotoを招待することで先ほど作成したボットを利用することが出来るようになります。

④hubotを起動
コンソール上でHubotを起動することでSlackでHubotを動かせるようにします。

env HUBOT_SLACK_TOKEN=×××× bin/hubot –adapter slack
上記のコマンドで、Slack上でHubotを動かせるようになります。ここで、××××には先ほど保存しておいたTOKENという文字列を入力します。

⑤SlackでHubotに話しかける。

SlackのHubotと連携したチャンネルで

hello>
と入力し、

Hello, ○○
と表示されれば成功です。ここで、○○には自分のSlackでのユーザー名が入ります。

ここで、うまく行かなかったりしてプログラムを変更した時は必ずHubotを再起動する必要があります。

私はここで、それをせずにプログラムを修正しても動かず非常に苦労しました。


今回は、チャットコミュニケーションツール(Slack)について知り、ボットを作るためのライブラリであるHubot について学びました。
そして、Hubotを使うことでボットを作成し、ボットをSlack上で動くようにしました。
次回以降、ボットに処理させる内容を設定していきます。

ABOUT ME
GoodAmbition
オンライン塾経営者(大阪大学工学部出身の元開発技術者) 自身も家庭教師や塾講師として働きつつ、後輩の育成やオンライン塾を経営しています。 私自身も約10年にわたり家庭教師や塾講師として100人以上の受験生と向き合ってきました。 色々な学生、保護者の方とかかわる中でよく質問される内容や、受験に必要な内容について書いています。 独学で頑張っている人たちへ勉強計画や悩み相談なども受け付けていますので気軽にお問い合わせください。 就職活動や資格の勉強などで悩んでいる方もご連絡ください。 教育・就活、書籍、食べ歩きに関するお話がメインです。 最近取り組んでいること プログラミング、筋トレ、マラソン、ライティングスキル向上etc. 苦手なことを克服しようと頑張っています。