Slack と Qiita:Team を使って気楽に日報 #qiita_hackathon

Hubot Advent Calendar 2014 14日目の記事です。

2014/12/13、リクルート本社で行われた Qiita API v2 Hackathon で、Chat 日報 なるワークフローを発表しました。

ありがたいことに、優秀賞をいただき、Kindle Voyage がいただける様です。

Hackathon のテーマ

今回の Hackathon のテーマは、Qiita APIv2を利用して毎日の開発が楽しくなるツールの開発 とのことでした。

開発は、ほっておいても楽しい ので、開発に当てる時間をより多く取れる様に、日報の作成を楽にする、という目的で開発しました。

作ったもの

Qiita API v2 が発表されてすぐ、Hubot スクリプト hubot-qiita 開発に着手したのですが、業務内では別業務、業務外では CI2Go を作成していたので、未完成のまま塩漬けになっていました。

今回、前半は、これをリリースまで作りきり、その後、本題の機能追加を行いました。

Qiita:Team に登録されているテンプレートの、タイトル、タグ、本文から、%{} で囲われた変数名を取り出し、その内容を Hubot が質問する、というものです。

実際のやりとり

me > hubot qiita list templates
hubot > Listing templates:
        1. 日報
        2. Daily standup minutes
        3. Sales meeting minutes
me > hubot qiita new item with template 1
hubot > ngs: 本日の作業内容?
me > - Qiita Hackathon に参加した。
     - [hubot-qiita](https://github.com/ngs/hubot-qiita) なるものを開発した。
hubot > ngs: 発生した問題?
me > - 作業完了までご飯を我慢してたら、空腹で倒れるかと思った。
hubot > ngs: 明日の作業予定?
me > - 子守をします。
hubot > ngs: 所感?
me > **hubot-qiita, Code snippet も貼れて便利。**

     ```swift
     public func resetViews() {
      let windows = UIApplication.sharedApplication().windows as [UIWindow]
      for window in windows {
        let subviews = window.subviews as [UIView]
        for v in subviews {
          v.removeFromSuperview()
          window.addSubview(v)
        }
      }
     }
     ```
hubot > ngs: 見出し?
me > Chat 日報ができる様になった

上記の様に、Hubot と対話することで、Qiita に以下の様な投稿が作成されます。

テンプレート

この例での、テンプレートは以下です。

タイトル: %{hubot:user} 日報 %{Year}/%{month}/%{day} %{見出し}

本文:

# 本日の作業内容

%{本日の作業内容}

# 発生した問題

%{発生した問題}

# 明日の作業予定

%{明日の作業予定}

# 所感

%{所感}

---

%{hubot:room} より投稿

hubot:user, hubot:room は、対話が行われたユーザー名、チャットルーム名が勝手に埋まります。

作成途中、キャンセルしたくなった場合には、cancel! と発言してください。

インストール方法、その他、詳しい使い方は README を参照してください。

エイリアス

毎回、テンプレート ID を探して、長いコマンドを打つのは面倒だと思うので、同僚の @dtaniwaki が公開している、hubot-alias を使うと便利です。

参照: hubot-scriptのエイリアス on Qiita

me > hubot alias 日報=qiita new item with template 43

これで、hubot 日報 と発言するだけで、日報の作成を開始できます。

QiitaButton

今回の Hackathon で発表され、同じく、優秀賞を獲得された、QiitaButton をブログのソースにも追加しました。

ngs/sources.ngs.io

が、docs 配下しかサポートしてないので、使えませんでした。

よかったら対象ディレクトリと拡張子 (このブログは .md.erb を使っています) を設定できる様にしていただけると嬉しいです。