VOOZH about

URL: https://qiita.com/katsumata_ryo/items/f3ed4745b636ccbffff3

⇱ 「Slackで簡単に「日報」ならぬ「分報」をチームで実現する3ステップ」を読んで #Ruby - Qiita


👁 Image
46

Go to list of users who liked

42

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 5 years have passed since last update.

@katsumata_ryo(Ryo Katsumata)

「Slackで簡単に「日報」ならぬ「分報」をチームで実現する3ステップ」を読んで

46
Last updated at Posted at 2016-02-12

きっかけ

Facebookをだらーっと見ながら朝通勤していたら、 @imura_design さんが以下の記事を紹介しているのをみた。(全然関わりはないんですけど、いろいろ参考にさせていただいています)

■Slackで簡単に「日報」ならぬ「分報」をチームで実現する3ステップ
〜 Problemが10分で解決するチャットを作ろう
http://c16e.com/1511101558/

これもまたざーっと読んでいたんですが、単純におもしろーってなりました。

実際

実際自分と近しいことをしている人で常駐の人はいないわけで、上の記事の効果が発揮されるような環境でもないかなと思ったわけだけども、もしかしたら自分の環境でも以下の2つの効果はあるかもしれないと思った。

  • やるべきことをつぶやいていくことで、自分が外部から見られている感を演出できる
  • ある程度リアルな感じでつぶやいていくことで、非エンジニアの人からの「あの人何やっているんだろ感」を減らせるかもしれない、なんかゆるい感じがすごくいい。

というわけで善っぽいことは急げ、早速今日から始めてみた。

やったこと

  • slackのchannelに#times_を作った。
  • とりあえずつぶやき続きてみた。

これだけ笑

集中するとき音楽を聞くことが許されるているの環境なので、聞いている音楽とかつぶやいてみた。
あとはやったことをとりあえずつぶやいてみた。
もともと書くの好きだからそんなに手間じゃないのと、なんとなく上記記事とは違う良い効果がありそうな気がした。
ディレクションの人にもさらっとこんなこと勝手にやってますよーって伝えて、みてもらうことにした。

今後

記事にも書いてあったんだけど、やっぱりこのシステムはチームの人間関係がひどく大事な気がした。ひとりでも乱す人がいるだけで全部おじゃんになりそうな気がする。だから雰囲気作る人も同様に大事そうだ。

自分もたぶんtimesをみられて、圧っぽいのかけてくる人がいたら即効やめる。たぶん。

せっかくなので

思い立ったタイミングでslackにつぶやいていくと、一日何していたかがなんとなく掴めそうなデータになりそうだったので
このチャネルの発言をまとめて自分用の日報にすることにした(今のところ特に会社に日報はない)。

業務終了後にサササッと書こうと思ったら意外と時間かかってしまった。

times.rb
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']}\n\n"
 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するとなんとなく雑な感じにだだだと文字列が表示されると思います。
明日になったら重複しているコードとかまとめよう。

例えば

run.rb
$LOAD_PATH << __dir__
require 'class/times'

TEAM = "teamname"
USER = "name"
TOKEN = "xoxp-0000000-00000000000-00000000000"

times = Slack::Times.new(TEAM, USER, TOKEN)
times.today

exit 0

みたいな。

そんな感じで

今日から始まったこれですがどうなるかわかりません。
進展があったら報告しませう。しませう。

46

Go to list of users who liked

42
0

Go to list of comments

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
46

Go to list of users who liked

42