12FF5B8

hico_horiuchiの技術系な覚え書き.

Hubotでボット開発はじめてみた

先日のJANOG34 Meetingで「情報共有ツールの情報共有」というセッションを聞いてきた.

「メールだけじゃなくてチャットも使おう.」
「ChatOps(チャットでオペレーション)しよう.」

という話で,サークルや研究室でChatWork使ってる自分にとって,凄く楽しい内容でした.

ChatOpsに関連して,HubotというGitHub社が開発したチャットbotフレームワークが紹介された.
「これ,研究室で使えるんじゃね…」ということで,Hubot開発はじめてみました.

使っているチャットサービス

昨年の11月末からChatWorkを使い始めた.
ただ,未実装のAPIがあり,Hubotを使うのに問題があった.

そこで,先輩の勧めもあり,APIが充実している「Typetalk」に移行することにした.

botの擬人化

セッションの中で「botを女の子に擬人化するとモチベーションが上がる」という話があったので,
まずキャラクターを考えてみた.

f:id:hico_horiuchi:20140804150130p:plain
(from In Spirited We Love Icon Se by Raindropmemory)

ボスも居るチャットルームなので,萌え過ぎないフリーアイコン探した.
名前はHubotをもじって「Huboco(ひゅぼ子)」に.語呂が悪いのは御愛嬌で.

欲しい機能

じゃあ,実際に研究室で使うに当たり,どんな機能が欲しいか考えてみた.

  • ping,tracerouteなどのネットワーク関連コマンド
  • サーバの死活監視
  • GitHub/GitLabの更新を通知(WebHook)
  • ゼミの議事(書記)をランダムに決める機能
  • アニメ情報(今期のアニメ,今日放送のアニメ)を教えてくれる機能

実装してみる

Hubotで実装に使うCoffeeScriptは,Rubyに近いので抵抗なく始められた.
(Railsで少し書いたことがあったし…)

ただ,最初に実装しようとしたpingで詰まった.
Coffeeだけでは厳しそうで,からpingコマンドを使うしかないみたい.
結局,以前書いてたRubypingスクリプトを呼び出すことにして解決.

その後は,標準のスクリプトを見たりググったりしながら,なんとか実装中.

これまでに完成した機能

1週間弱かけて,以下の機能が実装できた.

  • pingコマンド
  • GitLabの更新を通知
  • ゼミの議事をランダムに決める機能
  • アニメ情報(今期のアニメ,今日放送のアニメ)を教えてくれる機能

GitHubにも上げてます!
コードレビュー,プルリクお願いしますm(_ _)m

hico-horiuchi/huboco · GitHub

これから

今週のゼミでお披露目して,メンバーの意見を聞きながら改良・機能追加していく予定.
サーバの死活監視については,nagios,zabbix,sensu辺りを使って,アラートをチャットに流すようにしたい.