Blogブログ

Discordで社内業務快適ツール!?HLC-Botを作ってみた。

こんにちは、HLCのいろいろエンジニアの掛橋です。

担当しているアプリは様々で、SNSのフロント、バックエンド、Androidアプリ開発、Webサイトの速度改善(コアウェブバイタル)などなど。

自分は何エンジニアなのか自問自答した結果、フルスタックエンジニア!と堂々と言えるほどでもないので、いろいろエンジニアと名乗ることにしました。
よろしくお願いします🙋‍♂️

弊社は現在、勤務開始時にDiscordの勤怠連絡チャンネルで「おはようございます、出社しています」など報告してから業務を開始しています。
そして、出退勤の時間をGoogleスプレッドシートで管理しています。

出社の報告後に勤怠のスプレッドシートをぽちぽち入力….
毎日数分の作業時間をかけていた….

とある日、掛橋気がついた。
「Discordで勤怠報告したら、自動でスプレッドシート記載してくれるツール作れば楽できるんじゃね!?」

ということで作ってみた🧑‍💻

HLC-Bot!

HLC-Botとは?

実装済み機能(表)

Discordの勤怠連絡チャンネルにて特定の文字を入力すると、Botが勤怠のスプレッドシートを記載してくれます。
文言に応じて、記載するスプレッドシートの箇所を変更します。

・【おはよう】【お早う】→出勤時間を記載
・【おつかれ】【お疲れ】→退勤時間を記載
・【出社】【出勤】【会社】→勤務ステータスを出勤
・【始めます】【はじめます】→勤務ステータスを在宅

動作の動画はこちら

以上です。

 

 

と言いたいところですが、

実装済み機能の後ろをよくご覧ください。

 

 

おわかりいただけただろうか…?

 

(表)

 

 

表があれば、裏が….あるんです!

 

ということでHLC-Bot裏機能のご紹介!!

 

 

実装済み機能(裏)
【コード:Homete】

文言に【褒めて】【ほめて】という単語があれば、Botが褒めてくれます!
褒められて嫌な気持ちになる人はいませんからね。自己肯定感を高めましょう。
ランダムで褒め言葉で言ってくれるので、みんながBotに飽きないようにしています。

実装済み機能(裏)
【コード:The Beast】

文言に【犬】【イヌ】【いぬ】【ワン】【わん】があるとBotが犬のgif画像をプレゼントしてくれます!
癒されて生産性をアップしましょう。(画像はランダムで取得します)

 

文言に【猫】【ネコ】【ねこ】【ニャ】【にゃ】があるとBotが猫のgif画像をプレゼントしてくれます!
癒されて生産性をアップしましょう。(画像はランダムで取得します)

エヴァンゲリオン大好きなので、このコード名称にしました…()

実装済み機能(裏)
【コード:Homete ✖️ The Beast】

さらに上記2つの裏コードを組み合わせると…
まるで、ワンちゃんが褒めてくれてるかのように!!!

すみません、ふざけすぎましたので、
ここからは技術寄りな真面目なお話をします。

技術について

botが動作するイメージ

HEROKUというアプリの実行環境上にBotをデプロイしてます。今回、BotはPythonで書きました。
GoogleCloudPlatform上でGoogleDriveAPIやGoogleSheetsAPIを利用し、認証とスプレッドシートの記載ができるようにしました。
(実装方法を詳しく紹介したいのですが、書くと1記事では収まりきらない量になるため、また次の機会に…!)

HEROKUについて

HEROKUを使ってみて、いいなと思ったことは

・かかる費用は毎月550時間(アプリの稼働時間)まで無料

Botを稼働するには足りないのでは?と思うかもしれませんがHEROKUには一定時間アクセスがないとスリープする機能があります。
スリープ期間中は稼働時間には含まれません。またアクセスがあると再び稼働する仕組みだそうです。
小規模なアプリでしたら、無料枠で収まると思います。

・多種類の言語に対応
Node、Ruby、Java、PHP、Python、Go、Scala、Clojureなどに対応してます。
今時のアプリだったらHEROKUで十分かな

Pythonについて

今回初めて、Pythonを使用しました。(botを実装する方法を探していた時に、目についた記事がPythonで書かれたので選びました)

Pythonについて少し驚いたことがあったのでご紹介。

・switch文がない
言語の仕様でSwitch文がなく、全部if文で実装しないといけない。
条件によってはコードを書く量が少し増えそうですね。

・スコープはインデントで決まる

JavaScriptや、PHPなどif文を書くときは

if(条件){
     実行する処理
}

というようにif文は {} でスコープが決まります。

 

ですが、Pythonでは

if 条件 :
     実行する処理

というように if文の次の行のインデント(スペース)でスコープが決まります。

 

仮に

if 条件 :
実行する処理

というように、実行する処理の前にインデントがないとエラーになります。
(インデントを開けてくださいって怒られます)

 

また、以下の例では

if 条件 :
      処理1
処理2

処理1はifの条件がTrueの時に実行され、
処理2はif文のスコープの外側なので、どんな時でも実行する動作になります。

 

少しだけクセがるよう思えましたが、機械学習なりAIなりでよく使用される言語らしいので
ちょいちょい触って、Python得意マンになりたいですね。(MAGIを作りたいな

その他

実装にかかった時間

・丸2日くらい
コードを書いた時間 <<< 環境構築の時間

今後HLC-Botに実装したい機能

・誕生日通知機能
・ちょっとした会話機能(OK,GoogleならぬHey,Happy?)

PS

HLC-Botを社内勉強会で紹介した、翌日の朝。
勤怠連絡チャンネルが にゃ、わんで溢れました。

(みんな癒されたかったんですね🐶)

掛橋

執筆者

Developer

掛橋