こんにちは、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を社内勉強会で紹介した、翌日の朝。
勤怠連絡チャンネルが にゃ、わんで溢れました。
(みんな癒されたかったんですね🐶)