こんにちは、エンジニアの杉本です。 マネーフォワードではRailsエンジニアとして働いています。
エンジニアはパソコンに向かっている時間が比較的長いため、一日のメリハリがなくなりがちです。
そこで今回は、APIを使ってSlackに時報を流す方法をご紹介しようと思います。
今回はHubot等は利用せず、Rubyを使った方法をお伝えします。
初期設定
まずはスクリプトの置き場所を作ります。
ディレクトリを作成してGemfile
を生成します。
mkdir local_bots cd local_bots bundle init
SlackAPIを動かす
Gemの導入
次にAPIを動かす為のGemを導入します。
今回はslack-ruby-gem
というGemを利用します。
早速Gemfile
に設定を追加してインストールします。
Gemfile
source "https://rubygems.org" gem 'slack-api'
bundle install
slack-ruby-gem の動作確認
次にSlackAPIを実際に動かしてみます。 事前にこちらでSlackAPIのtokenを取得しておいて下さい。
local_bots以下にtime_signal.rb
を作って実行してみます。
「自分のTOKEN」と「発言したい部屋」は自分の環境に合わせて書き換えて下さい。
time_signal.rb
#!/usr/bin/env ruby require "slack" Slack.configure do |config| config.token = '自分のTOKEN' end Slack.chat_postMessage(text: 'TEST!', channel: '発言したい部屋')
以下のコマンドで自分の指定した部屋への発言がされるかと思います。
chmod 755 time_signal.rb ./time_signal.rb
スクリプトを定期実行させる
定期実行にはWhenever
というGemを利用します。
Wheneverはcrontabの設定をRubyで記述できるGemです。
Whenever
のインストールと初期設定をします。
Gemfile
source "https://rubygems.org" gem 'slack-api' gem 'whenever'
bundle install
mkdir config
wheneverize
wheneverizeを呼ぶとconfigフォルダにschedule.rb
というファイルが生成されます。
そこにcrontabの設定を記述していきます。
schedule.rb
# 平日の10時〜18時に実行 every '0 10-18 * * 1-5' do command '~/Documents/local_bots/time_signal.rb' end
設定が終わったらcrontabに反映させます。
whenever --update-crontab
時報処理を作る
最後にtime_signal.rb
に時報処理を記述していきます。
今回は下のように書きました。
time_signal.rb
#!/usr/bin/env ruby require "slack" Slack.configure do |config| config.token = '自分のTOKEN' end text = case Time.now.hour when 10 then '10時: 今日も頑張りましょう' when 11 then '11時: 午前中もうひと踏ん張り!!' when 12 then '12時: ++ ランチタイム ++' when 13 then '13時: 午後も頑張りましょう' when 14 then '14時' when 15 then '15時: ++ おやつの時間 ++' when 16 then '16時: 午後も3時間経過、今日の目標の達成具合を確認しよう' when 17 then '17時' when 18 then '18時: 一日もあと少し、集中しましょう!!' end Slack.chat_postMessage(text: text, channel: '発言したい部屋')
これで時報が流れてくれるはずです。
最後に
マネーフォワードでは様々な技術を使って仕事環境を改善していけるエンジニアを募集しています。 みなさまのご応募お待ちしております!