2021年8月24日

プログラミング

rakeタスク+ slack-notifierでslack通知を作成してみた!

目次

  1. はじめに
  2. rakeタスクとは
  3. slack-notifierとは
  4. 実際に通知を作成してみた!
  5. まとめ

はじめに

今回はrakeタスクとslack-notifierを使ってRailsでslackに通知する機能を作成したいと思います!

背景

こちらのテーマを選んだ背景として、私自身が日々生活する中でslackで通知してくれるものを作ったところとても便利で、同じようにslack通知できるものを作ってみたいと考える人の一助になればと考えたためです!

rakeタスク+slack-notifierで通知を作ることにしましたが、rakeタスクを作成することにした理由としては通知を定期的に行うことも見据えたためです。

この記事ではrakeタスクの作成方法とslack-notifierの導入方法、そして実際のslackで通知する方法を順を追って説明していきます!

rakeタスクとは

rakeタスクとはターミナルなどのコマンドライン上で処理を実行することのできる機能です。今回は取り上げませんが、rakeタスクは定期的に処理を行うことができるので、決まった時間に通知を行ったり、DBと連携しているアプリケーションであればDBのデータを更新したりすることなどが可能になります!

rakeタスクの作成方法

ここからはrakeタスクの作成方法について順を追って説明していきます。

まずはターミナルで以下のコマンドを入力し、rakeタスク用のファイルを作成します。

rails g task task_notifier(任意のタスク名)

するとlib/tasks配下にtask_notifier.rakeが作成されますのでこちらに処理を記述していきます!

namespace :task_noifier do
task greeting: :environment do
puts 'こんにちは'
end
end

この後にも実行方法は記述しますが、namespace名:タスク名でコマンドを実行するため、namespace内であれば複数のtaskを設定することができます。そのため同じような用途のタスクを複数設定したい場合は、同じファイルのnamespace内にまとめた方が良いかもしれません。

設定したタスクは
rails task_notifier:greetingとターミナル上で入力すれば実行されます。

$ rails task_notifier:greeting
こんにちは!!

以上がrakeタスクの作成方法になります!

slack-notifierとは

slack-notifierとはslack通知をrailsで行うためのGemになります。簡単にメッセージを送信することができるだけでなく装飾を加えることもできますが、今回は簡単にメッセージを送信する方法を説明していきます。

WEBHOOK_URLの取得方法

通知を行うにあたって、まずはWEBHOOK_URLを取得する必要があります。公式にある方法に沿って取得を行なっていきます!

設定ページに移動する

公式に記述されているリンクより設定ページに移動し、slackに追加ボタンを押します。
スクリーンショット 2021-08-19 18.40.06.png (350.0 kB)

チームとチャンネルの選択

右上のプルダウンからチームを選べるのでそちらから通知を行いたいチームを選択します。するとチャンネルの選択ができるようになります。選択ができたらIncoming Webhookインテグレーションを追加ボタンがクリックできるようになります。
スクリーンショット 2021-08-19 18.43.36.png (473.1 kB)

Webhook URLを控える

Incoming Webhookインテグレーションを追加ボタンをクリックするとWebhook URLが表示させるので、こちらをメモしておきます。これで下準備は完了です!

slack通知の方法

ここからは先ほど選択したチャンネルに対して通知を実際に送ります。

gemのインストール

まずはgemのインストールになります。以下をGemfileに記述します。

gem 'slack-notifier'

記述ができたらインストールしましょう。

bundle install

通知用の処理を記述

ここからは通知用の記述を行います!今回はDBに紐づいていないため、app/models配下にnotifier.rbのみを作成し、notifierクラスを作成しました。作成後公式のExampleを参考に以下のように記述を行います。

class Notifier

def self.greeting
notifier = Slack::Notifier.new('先ほど取得したWEBHOOK_URL')
notifier.ping "こんにちは!"
end
end

なんとたったこれだけの記述で簡単な通知が可能になります!記述ができたらコンソール等で試してみてください。成功すると以下のように表示がされます!
以上が

スクリーンショット 2021-08-20 16.58.03.png (29.5 kB)

補足

第三者にWEBHOOK_URLを知られてしまう危険性があるため、WEBHOOK_URLはそのまま記述せず、環境変数で設定するようにしましょう。

実際に通知を作成してみた!

最後にrakeタスクを使って通知を行います。ここまで来れば9割は終わっています。

rakeタスク内に作成したメソッドを追加する

最後はこれだけです。先ほどNotifier.rb内に作成したクラスメソッドをrakeタスクに記入します。

namespace :task_notifier do
task greeting: :environment do
Notifier.greeting
end
end

記述できたら再びrakeタスクを実行してみましょう。

rails task_notifier:greeting

成功すると無事slack上で通知されます!
スクリーンショット 2021-08-20 17.25.35.png (31.0 kB)

まとめ

今回はrakeタスク+slack-notifierでslack通知を作成する方法を説明しました。
rakeタスクは定期的に実行できるとさらに効果的になります。私自身は生活の中でゴミ出しの日を定期的に通知してくれるものや、趣味の競馬で通知してくれるものを作成したりと日々の生活で役立ってくれています。

日々の仕事や生活をより快適にするために何か作ってみたい!と思いましたらぜひ試してみてください!

Rubyのお仕事に関するご相談

Bageleeの運営会社、palanではRubyに関するお仕事のご相談を無料で承っております。
zoomなどのオンラインミーティング、お電話、貴社への訪問、いずれも可能です。
ぜひお気軽にご相談ください。

無料相談フォームへ

0

0

AUTHOR

shogokubota

kubota shogo

サーバーサイドエンジニア。Ruby on Railsを使った開発を行いつつ月500kmほど走っています!

アプリでもっと便利に!気になる記事をチェック!

記事のお気に入り登録やランキングが表示される昨日に対応!毎日の情報収集や調べ物にもっと身近なメディアになりました。

簡単に自分で作れるWebAR

「palanAR」はオンラインで簡単に作れるWebAR作成ツールです。WebARとはアプリを使用せずに、Webサイト上でARを体験できる新しい技術です。

palanARへ
palanar

palanはWebARの開発を
行っています

弊社では企画からサービスの公開終了まで一緒に関わらせていただきます。 企画からシステム開発、3DCG、デザインまで一貫して承ります。

webar_waterpark

palanでは一緒に働く仲間を募集しています

正社員や業務委託、アルバイトやインターンなど雇用形態にこだわらず、
ベテランの方から業界未経験の方まで様々なかたのお力をお借りしたいと考えております。

話を聞いてみたい

運営メンバー

eishis

Eishi Saito 総務

SIerやスタートアップ、フリーランスを経て2016年11月にpalan(旧eishis)を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。

sasakki デザイナー

アメリカの大学を卒業後、日本、シンガポールでデザイナーとして活動。

yamakawa

やまかわたかし デザイナー

フロントエンドデザイナー。デザインからHTML / CSS、JSの実装を担当しています。最近はReactやReact Nativeをよく触っています。

Sayaka Osanai デザイナー

Sketchだいすきプロダクトデザイナー。シンプルだけどちょっとかわいいデザインが得意。 好きな食べものは生ハムとお寿司とカレーです。

はらた

はらた エンジニア

サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています

kobori

こぼり ともろう エンジニア

サーバーサイドエンジニア。SIerを経て2019年7月に入社。日々学習しながらRuby on Railsを使った開発を行っています。

sasai

ささい エンジニア

フロントエンドエンジニア WebGLとReactが強みと言えるように頑張ってます。

damien

Damien

WebAR/VRを中心に企画・マークアップ・開発をやっています。森に住んでいます。

ゲスト bagelee

ゲスト bagelee

かっきー

かっきー

まりな

まりな

suzuki

suzuki

taro

taro

xR界隈のビズをやっています。新しいガジェットとか使うのが好きです。あとお寿司は玉子のお寿司が好きです。

miyagi

ogawa

ogawa

雑食デザイナー。UI/UXデザインやコーディング、時々フロントエンドやってます。最近はARも。

いわもと

いわもと

kobari

taishi kobari

フロントエンドの開発を主に担当してます。Blitz.js好きです。

shogokubota

kubota shogo

サーバーサイドエンジニア。Ruby on Railsを使った開発を行いつつ月500kmほど走っています!

nishi tomoya

aihara

aihara

グラフィックデザイナーから、フロントエンドエンジニアになりました。最近はWebAR/VRの開発や、Blender、Unityを触っています。モノづくりとワンコが好きです。

nagao

SIerを経てアプリのエンジニアに。xR業界に興味があり、unityを使って開発をしたりしています。

kainuma

Kainuma

サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています

sugimoto

sugimoto

CONTACT PAGE TOP