twitterのようにslackチャネルを使うを読んで
Date:2016-02-13 00:39:44 +0900
Categories: ETC
Categories: ETC
きっかけ
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するとなんとなく雑な感じにだだだと文字列が表示されると思います。
明日になったら重複しているコードをまとめよう。
そんな感じで
今日から始まったこれですがどうなるかわかりません。
進展があったら報告しませう。