Slackとtogglで頑張らない情報共有

Diver Downで開発者をしているen30と申します。

Diver Downでは
各自が頑張ることなくチームとしていい状態が維持できること
を理想として仕組みを模索しています。

今回はそのなかでも

  • 誰が今何をやっているかが明確であること
  • 各自が生産性をあげるためのフィードバックを得られること

のためにやっているtogglSlackの連携について紹介したいと思います。

toggl

toggl

  • 何を
  • どれだけの時間

やったかということを記録できるシンプルなWebアプリです。

名前の通りコアの機能は時間の計測中している状態、していない状態を切り替えるトグルスイッチといった感じです。 toggl上で使う場合には何をやるかを入力して計測を開始するという形で使えますが、Chrome拡張を入れると

todoistであればタスクの横に f:id:en30:20170911002641p:plain

githubであればIssueのサイドバー等に f:id:en30:20170911002708p:plain

といった形で色んな所にトグルスイッチを置かれて、それを押すとコンテキストに応じたタスク名を自動で入れておいてくれます。便利!
Diver Downでは短期のタスク管理にはtodoistを使っているので、基本Chrome拡張でtodoistを通して使っています。

何にどれだけの時間を使ったかがきちんとログに取られていると、自分の生産性が振り返りやすくなります。 「文面の微妙な調整でこんなに時間を使ってしまっていたのか…」みたいに。

難点はタイマーの回し忘れが時々起きることですね。いっそ自動で何やってるかを全部トラッキングしたい…

Slackでの分報

分報自体についてはこちら c16e.com

分報自体は以前から使っていて、頑張らない情報共有手段としてすごく良いなと思っていました。
ですが少し前にチームで使うツールと使い方を整理することになり

を使うようになってみると、todoistやtogglを使って、その内容を分報に書いて、というのはやってられなかったので自動で分報に送ることにしました。

todoistでは一人ひとりが自分用のプロジェクトを持つ形で運用していて、

  • そのプロジェクト内にタスクを作ると自動でアサイ
  • そのプロジェクト内にタスクの作成、完了、削除をすると対応するSlackの分報チャンネルに通知

されるようになっています。またtogglとの連携に関しては

  • togglのタイマー開始、終了をSlackに通知
  • todoistで完了すると自動で対応するtogglのタイマーが止まる

という状態になっています。

todoistでタスクを作ってtogglを回してタスクを完了すると分報はこんな感じ

f:id:en30:20170908200732p:plain

todoist周りは今のところ再利用可能な形では切り出せていないのですが、toggl周りはGoに触ってみるがてらdiverdown/toggl2slackとして切り出してみたので紹介させてください。

toggl2slack

基本togglのタイマー開始、終了をSlackに通知するというだけのプログラムです。

github.com

にバイナリが置いてあるのでlinuxであれば

$ wget https://github.com/diverdown/toggl2slack/releases/download/v0.1.1/toggl2slack_0.1.1_linux_amd64.tar.gz
$ tar zxfv toggl2slack_0.1.1_linux_amd64.tar.gz
$ toggl2slack init
$ $EDITOR config.json
$ toggl2slack start

で使い始められます。 Diver Downでは適当にsystemd unit fileを書いてlinuxサーバ上に置いてます。

config.json

{
  "interval": 10,
  "toggl_token": "TOKEN",
  "dashboard_id": ID,
  "webhook_url": "SLACK_INCOMING_WEBHOOK_URL",
  "templates": {
    "started": "「{{.Description}}」を開始",
    "finished": "「{{.Description}}」を終了({{div .Duration 60}}分{{mod .Duration 60}}秒)"
  },
  "log_file": "toggl2slack.log",
  "users": {
    "TOGGL_USER1_ID": {
      "channel": "#log_user1"
    },
    "TOGGL_USER2_ID": {
      "channel": "#log_user2"
    }
  }
}

のようなものです。
togglには今のところWebhookやStreaming APIがないのでpollingしています。intervalはその間隔です。
toggle_tokenhttps://toggl.com/app/profileで、 dashboard_idhttps://toggl.com/app/#dashboard でのurl等からわかります。

おわりに

Diver DownでのSlackとtoggl(とtodoist)連携について紹介しました。
よければdiverdown/toggl2slackを使ってみてください。
うちではこんな工夫をしているというものがあれば是非聞かせてください!