LoginSignup
20
18

More than 5 years have passed since last update.

分報をSlackにCLIで投稿する

Last updated at Posted at 2017-02-04

はじめに

分報という文化が定着してきているようですね。

私も始めてみたのですが、作業を随時投稿するという目的の割に、わざわざSlackの画面に移動しなければいけないという面倒臭さがあるのはちょっと納得がいきません。やはりターミナル上から投稿できるべきです。

Slackを操作するコマンドラインツールはいくつかありますが、今回は slackcat を使ってみましょう。基本的にGoで書かれているようです。クロスプラットフォーム、良いですね。

インストール&設定

Macではおなじみの brew コマンドでインストールできます。

$ brew install slackcat

Linuxではバイナリをダウンロードして配置します。Goはシングルバイナリを生成するので簡単ですね。

$ wget https://github.com/vektorlab/slackcat/releases/download/v1.1/slackcat-1.1-linux-amd64 -O slackcat
$ sudo mv slackcat /usr/local/bin/
$ sudo chmod +x /usr/local/bin/slackcat

Slackとの通信に必要なtokenを設定します。下記のコマンドを実行してください。

$ slackcat --configure

デフォルトのWebブラウザが起動し、権限を求めてきます。

権限確認画面

承認すると slackcat のページに遷移します。

Token表示画面

デカデカとtokenが表示されているので、これを指示通りにファイルに保存します。内容はだいたい下記のようなものです。

~/.slackcat
xoxp-0123456789-0123456789a-0123456789ab-0123456789abcdefghijklmnopqrstuv

ここで発行されるtokenはWebhookのtokenとは違いパーソナルなものです。このコマンドを使って投稿した際には、 BOT ではなく自分自身として記録されます。

コマンドをラップする

分報を投稿する際にはこのようなコマンドを実行します。

$ echo -e "山田さんのレビューを始めマックス" | slackcat --channel "times_artifactsauce" --tee --stream

slackcat はテキストの投稿はもちろんファイルをアップロードしたりもできるのですが、分報の投稿を簡略化したいというのが今回の目的ですので、むしろテキストの投稿しかできないように制限してしまいましょう。また、分報を投稿するチャンネルは固定されているはずですので、これも制限してしまいましょう。これらの条件を考慮したラップスクリプトが下のようになります。

~/local/bin/slack
#!/usr/bin/env bash

set -eu

: ${POST_CHANNEL:="times_artifactsauce"}

if [[ $# -eq 0 ]]; then
    echo "[ERROR] Nothing has been entered." >&2
    exit 1
fi

echo -e $1 | slackcat --channel $POST_CHANNEL --stream

こんな感じで実行します。簡単ですね。

$ slack "山田さんのレビューを始めマックス"
slackcat connected to HOGE-TEAM as artifactsauce
slackcat starting stream
slackcat flushing remaining messages to Slack...
slackcat flushing remaining messages to Slack...
slackcat posted 1 message lines to times_artifactsauce

slackcat は実行結果をsnippetにして投稿したり、出力されたファイルを投稿したりすることが、主目的なんじゃないでしょうか?オプションを眺めている限りはそのように感じます。

終わりに

コマンドラインから簡単に分報を投稿できるようになったのは良かったのですが、簡単になったせいで分報の内容がだんだんTwitter化してきて、それはそれでどうなのかなと思っています。

また注意点として、コマンドラインから投稿しているだけでは他の人が自分のチャンネルに投稿してくれたことに気づけないので、SlackアプリのDesktop notificationsを必ず "Activity of any kind" にしておきましょう。

20
18
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18