1
/
5

エンジニア的お遊びをしてみた!(Pythonとサーバーレスのお話)

自己紹介

こんにちは!estieでソフトウェアエンジニアをしています えりりん です。
現在はソフトウェアエンジニアという肩書で何でもしていますが、どちらかと言うとサーバーサイド側が得意な人間です。
これまで、C#、Ruby on Rails、Pythonなどを使って仕事してきました。

概要

さて、今回はPythonとサーバーレスのお話をしようと思います!
ソフトウェアエンジニアであるという点と、弊社の「エンジニア成長タイム」を活かして、皆のランチ体験を快適にする取り組みを勝手に行いました。

(エンジニア成長タイムについてはこちらの記事をご覧ください)

estie inside blog
estie inside blog
https://inside.estie.co.jp/

ランチ体験を快適にするとは?

弊社オフィスがある東京大学の敷地内には ネオ屋台村 が出店しています。
いろいろなお店が週替り、曜日ごとに、敷地内を周っています。
出店場所を把握するための資料がこちら↓

「この表の見方を理解するのが意外と難しい」という声が社内で上がっていました。
そこで!これを元に毎日のランチメニューをSlackに流したら、この表を見なくても良くなるのではないかと考えました。

何をしたか

上記カレンダーの中で今日はどこに当てはまるのかというのを算出する関数を作りました。
そのソースコードはこちら。
https://github.com/ericgpks/kitchen_car/blob/main/main.py

上記カレンダーからわかるとおり、5週間ごとに同じ組み合わせが回ってきます。
Pythonの datetime 型には isocalendar() という日付から年・週番号・曜日を返す関数が存在しています。
これを利用して、今日が年内の何週目なのか、何曜日なのかを取得しています。ここの実装です。

1枚目のメニュー表を辞書オブジェクトで定義しておいて、

groupを週番号から特定、曜日番号とメニュー表を対比させています。
これで、各場所のお店が特定でき、Slackに流したい文字列ができました🎉

Slackに通知する方法は、公式ドキュメントを見ながら設定しました。

これで、ローカルから関数を実行すると指定したWorkSpaceの指定したChannelに流れます。

やった!!
これで表を見る必要はなくなりました。

しかし、毎日ローカルから関数を実行するのは辛い!関数の実行も自動化したい!
と思ったので、AWSのLambdaを使って関数を実行するようにしました。

まさにやりたいことと一致していたので、この記事を参考にさせていただきました。
https://qiita.com/yokoc1322/items/553ad147b82277b2beca
この記事にたどり着くまで、Lambdaから特定のURL(今回で言えばSlackのWebhookのURL)に対してデータをPOSTする方法がわからずに苦労しました💦

Lambdaの関数からTEST実行でSlackに流れるようになりました!

さあ!最後のひと押しです。
平日の11:25にこの関数を実行してほしいのでトリガーを追加します。

タイムゾーンがUTCなので−9時間してCronで設定します。

これで意図した時間に流れるようになりました🎉🎉

まとめ

関数を書くところまでは比較的順調にできました。
そこから、Lambda経由でSlackに投げるところの実装で少し時間がかかりましたが、弊社エンジニアチームが毎週火曜日に行っている「エンジニア成長タイム」を使って実現することができました! Lambdaを使ったことはあっても、APIから叩かれる関数しか作ったことがなく、EventBridgeを設定した関数を作ったのが初めてだったので楽しかったです。

今回使った技術はPythonでしたが、弊社ではRailsエンジニアを大募集しています!!
ぜひ一緒にお仕事しましょう!


株式会社estieでは一緒に働く仲間を募集しています
2 いいね!
2 いいね!
今週のランキング
株式会社estieからお誘い
この話題に共感したら、メンバーと話してみませんか?