友人のくまが主催のHackathonに行ってきたのでレポートです。詳細はこちら。会場はリクルートライフスタイルさんの部屋をお借りしました。ありがとうございます。
第一回Hackathon + 魚会 | 集客ならイベントアテンド

 テーマが「ChatOpsで有用なbot作成」だったので、IRCを起点に何かをしてくれるするbotを考えました。今回はIRCログについて考えてみます。
・全部のログは取得している
・実際に後で使うのはその一部分だけ
・なので、直近のログだけを保存するコマンドを作れば便利では?
という訳で、IRCから部分的にログを残すbotを考えます。コマンドのイメージは以下のようにしました。また保存先としては社内gistを想定しています。
(ユーザー) log_bot: 3つ前までログ取って
(bot) 保存しました https://社内githubのgist/username/123

 なんとなくやる事が決まったので開発に入ります。普段使わない言語とかが推奨なので、HubotにCoffeeScriptで何かすることにします。まずはどこで開発するかですが、こちらもVagrantを使ってみたかったのでこれも導入します(今回chefまではさわってません)。
VagrantをMacで使ってみる - Qiita [キータ]
 もろもろgitなどをyumで入れつつ、Pythonのバージョンを2.7.3に上げます。
CentOS6.3にnode.jsをインストールする | Snippets
 Hubotのデータを永続化する場合はredisが必要です。必須ではありませんが入れます。
さくらVPS(CentOS6.3)へのredisインストールとchkconfigへの登録 - えんたつの記録

 環境ができました。ここからはHubotを準備します。suでrootにならないと通らない作業があったりいまいちわからないのですが、とりあえず作ります。
 github社製ボットフレームワーク、hubotをIRCボットとして導入した話(修正あり - id:anatooのブログ
 nandub/hubot-irc

 動いたので色々botで遊んでみつつ、次は外部APIを叩いてみます。まずは単純にjsonを取得して表示してみます。ここで書いたスクリプトは/scripts以下に置く、というルールを知るまで無駄に色々悩んでいました。
module.exports = (robot) ->
  robot.respond /trend/i, (msg) ->
    robot.http("http://pipes.yahoo.com/pipes/pipe.run?_id=e95077516313fad645233d42e25efae4&_render=json")
      .get() (err, res, body) ->
        trends = JSON.parse(body)
        msg.send trends.value.items[0].title
        msg.send trends.value.items[0].link

このyahoo pipes自体はtwitterトレンドを出力するものです。サーバー側は別のプログラム用に作ってあったので、それを流用しています。

 ここまででHubotでIRCに接続し、APIを叩く事ができました。次はgithub側の認証やAPIを調べていきます。とりあえずOauthのようなので、githubのAccess tokenを取得します。
OAuth認証でGitHub APIのアクセストークンを取得する - F.Ko-Jiの「一秒後は未来」
 この辺りの使い方を調べいる所でタイムアップしました。
Gists | GitHub API

 最後にお互いの成果物を発表。facebookの通知などを使ったbotや、githubのpullリクエストの組み合わせ、地図データとの連携など、特徴の出た成果物でした。