非エンジニアだけど無事ようやくSlackにHubot導入できた話
社内コミュニケーションにはSlackが使われているのですが、入社した頃からやりたいやりたいと思っていたことがあるんですね。それがHubotとの連携でした。
Hubotで西木野真姫bot作ってSlackに呼ぶ - MEMOGRAPHIX
Slack で Hubot を使えるようにする - Qiita
こんな僕でも30分でSlackのbotを作れた。 - アラタナエンジニアブログ
前職はこういったことはエンジニアの方々が色々やられていて、IRCからおじいちゃん(Jenkins)に鞭打ったりとかしていました(たしか)。
今はエンジニアのいない会社にいるのでそういった方面の仕組みは今のところ必須ではないのですが、せっかくエンジニアのいない環境に変わったのだから自分ができるようになればあとあと役立つかも!あと面白そうだし!という理由でまず目についたのがBotの作成であり、Hubotの導入でした。
……と思いついたのが約半年前。どんだけ前なんだ。
いや何度か導入しようと頑張ったんですよ。
「やりました……やったんですよ!必死に!!その結果がこれ(半年)なんですよ!」
でもエンジニアの文化に浸かっていなければ文脈も理解できていない身にはこれがなかなか難しくて。
でも無事に、ようやくついに、自力で導入まで持っていけたので、自分と同じ境遇……SlackにBotを入れてみたいけど非エンジニアだからよくわからない、でも入れてみたい、そんな人の役に少しでも立てればと思って書き残します。
エンジニアの方から見れば「そんなとこで躓いてたの!?」と驚かれるでしょうし「そのやり方はよくない!」と思われる箇所もあるかと思います。そういった場合はぜひご指摘を頂けますと幸いです。。
なお記事内ではポイントポイント(自分が躓いたところ)しか書いてないので全体の流れ知りたい方は文中の参考記事をご覧になってくださいまし。
前提
・SlackのIntegrationsがどういうものか知ってる
・Hubotがどういうものか知ってる
・GitHubがどういうものか知ってる
・黒い画面は苦手じゃないけど、どう使うかまではよく知らない
・Heroku使うやり方を試す
自分はこんな状況でした。
Hubotのインストール
とりあえず、はじめに書いた参考サイトさんや
slackにHubotを導入(Heroku経由) - Qiita
あたりを参考にHubotがローカルで動くようになるまでやってみます。
実はここまで、割とすんなりいけました。ちょっと手順を忘れてしまったのですが、
・まずは http://nodejs.org/download/ でnodeを入れる
・npm install -g hubot coffee-script がエラーになる場合は最初に sudo を入れる
らへんでうまくいった記憶があります。
Herokuにdeployする
ここ!ここね!自分がハマったところです。正確には『Herokuの登録まではできたがdeployができない』でした。
Herokuの登録まわりはそこまで難しくないはずです。登録ができたらToolbeltも入れます。
さてここからです。ほとんどの記事ではこの後ターミナルからgitにcommitするといった手順になるかと思います。
$ git init
$ git add --all
こんな感じのな。
はい、自分はここで挫けました。どうすればいいの!?どうなると正解なの!?と。まーったくもってわかりませんでした。知ってる人からすれば「そこ!?」と思われるかもしれませんが、そこなんです。
単純すぎる解決方法
ふとした時に気付いたのですが、別にこれってターミナルからやらなくてもいいんですよね。
SANOGRAPHIXさんの記事には『GitHubにリポジトリを作る』て書かれてあるわけですし。
あれ?ていうことはHubotインストールしたときに出現したファイルまるまるクライアントアプリからpushすればいいんじゃね?
いけた。(いけたかどうか実際に分かるのはHerokuにdeployしてからだけど)
makibotちゃんの構成見れば何をpushすればいいか大体わかります。
というわけで、ここまでHubotをGitHubにpushしたところまでできたとします。
(改めて)Herokuにdeployする
Herokuにdeployするぞー!となった時も大抵の記事ではターミナルから行っているかと思います。
これもふとした時に気付いたのですが、
……ターミナル経由じゃなくてもできるんじゃねーか!!!
というわけでGitHubアカウントと繋げてあげてdeployしてあげることで無事にHubot→Herokuができました。以降はpushするたびに反映されるはずです。
Slackと連携させる
というわけでいよいよ最後の砦、Slackとの連携です。
と言ってもこれは全然難しくなくて、SlackのIntegrationsからHubotをAddしてあげてAPI TokenをHerokuで作ったApp内のSettings → Config Variables に入れてあげる、のとHEROKU_URL( http://◯◯.herokuapp.com )も入れる。
……というところまでうまくいけば、Botが反応してくれるようになるハズです。
結局どうやって自分なりに解決したのか
自分がやったことはただひとつ、
・分からないところは普段自分が慣れているやり方でできないか試す
だけでした。ターミナル、やっぱり慣れてるものじゃないし何が書かれているのか、どういう文脈でコマンドを入れると正解なのかがわからないんですよね。
そういう時は無理にターミナルで解決しようとするんじゃなくて、普段自分が慣れている方法でもできないか立ち止まって考えてみる、そうしてみたことでなんとか無事導入することができました。
いやホントこうやって記事として残すのもチョー恥ずかしいんですけどね。分かる人から見たらほんとなんでそこなの!?と思われるかと思います。
ちなみにBotは現在
大活躍でございます
(同じ画像を出すためのやり方は上述のアラタナさんのエンジニアブログを参考……というかモロパクリさせて頂きました)
いい言葉も言ってくれるぞ!