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 をブログのソースにも追加しました。
が、docs
配下しかサポートしてないので、使えませんでした。
よかったら対象ディレクトリと拡張子 (このブログは .md.erb
を使っています) を設定できる様にしていただけると嬉しいです。