きっかけ
Facebookをだらーっと見ながら朝通勤していたら、Funteractive代表の @imura_design さんが以下の記事を紹介していた。
Slackで簡単に「日報」ならぬ「分報」をチームで実現する3ステップ 〜 Problemが10分で解決するチャットを作ろう
http://c16e.com/1511101558/
これもまたざーっと読んでいたんですが、単純におもしろーってなりました。
実際
実際自分とちかしいことをしている人で常駐の人はいないわけで、上の記事の効果が実際発揮されるような環境でもないかなと思ったわけだけども、もしかしたら以下の2つの効果はあるかもしれないと思った。
- やるべきことをつぶやいていくことで、自分が外部から見られている感を演出できる
- ある程度リアルな感じでつぶやいていくことで、非エンジニアの人からの「あの人何やっているんだろ感」を減らせるかもしれない
というわけで早速今日から始めてみた。
やったこと
- slackのchannelに#times_nameを作った。
- とりあえずつぶやき続きてみた。
これだけ笑
集中するとき音楽を聞くことが許されるているので、聞いている音楽とかつぶやいてみた。
あとはやったことをとりあえずつぶやいてみた。
今後
記事にも書いてあったんだけど、やっぱりこのシステムはチームの人間関係がひどく大事な気がした。ひとりでも乱す人がいるだけで全部おじゃんになりそうな気させする。だから雰囲気作る人も同様に大事そうだ。
自分もたぶんtimesをみられて、圧っぽいのかけてくる人がいたら即効やめる。たぶん。
せっかくなので
思い立ったタイミングでslackにつぶやいていくと、一日何していたかがなんとなく掴めそうなデータになりそうだったので
このチャネルの発現をまとめて自分用の日報にすることにした(今のところ特に会社に日報はない)。
業務終了後にサササッと書こうと思ったら意外と時間かかってしまった。
require 'open-uri'
require 'json'
require 'time'
module Slack
class Times
def initialize(team, user, token)
@team = team
@user = user
@channel = "times_#{user}"
@token = token
end
# 今日一日のメッセージをコピペする形にするところ
def today
today = Date.today
from = Time.parse(today.to_s)
to = Time.parse((today + 1).to_s)
today_history = channel_history(from, to).sort
puts "今日の感じ"
puts "```"
today_history.each do |time, message|
puts time
puts "#{message['user']}: #{message['text']} nn"
end
puts "```"
end
private
# 特定期間のメッセージを抽出
# ※今気づいたけどfrom toの使い方間違えたAPIに投げる予定だったのに使っていない
def channel_history(from, to)
channel_id()
uri = "https://slack.com/api/channels.history?token=#{@token}&channel=#{@channel_id}"
responce = open(uri)
if responce.status[0] == '200'
json = JSON.parse(responce.read)
else
puts "HTTP STATUS ERROR. It is #{responce.status[0]}"
exit 1
end
messages = {}
json["messages"].each do |message|
user = convert_to_user(message["user"])
text = message["text"]
time = Time.at(message["ts"].to_i)
if (time > from and time < to)
messages[time] = {
"user" => user,
"text" => text,
}
end
end
messages
end
# メッセージをとった時にuserのidがでるんだけど、名前がほしいので取りに行く人
def convert_to_user(id)
uri = "https://slack.com/api/users.info?token=#{@token}&user=#{id}"
responce = open(uri)
if responce.status[0] == '200'
json = JSON.parse(responce.read)
else
puts "HTTP STATUS ERROR. It is #{responce.status[0]}"
exit 1
end
json["user"]["name"]
end
# channel名はしってるんだけど、idじゃないとhistoryを呼べないので変換
def channel_id
uri = "https://slack.com/api/channels.list?token=#{@token}"
responce = open(uri)
if responce.status[0] == '200'
json = JSON.parse(responce.read)
else
puts "HTTP STATUS ERROR. It is #{responce.status[0]}"
exit 1
end
json["channels"].each do |channel|
if channel["name"] == @channel
@channel_id = channel["id"]
else
"The channel is not found."
end
end
end
end
end
newしてtodayするとなんとなく雑な感じにだだだと文字列が表示されると思います。
明日になったら重複しているコードをまとめよう。
そんな感じで
今日から始まったこれですがどうなるかわかりません。
進展があったら報告しませう。