業務の中で必要になってちょっとしたツールを開発

籏野拓氏(以下、籏野):『社内の"面倒くさい"をServerlessでスマートに解決した話』を籏野が話します。よろしくお願いします。

まずは自己紹介です。私は、籏野拓と申します。今新卒3年目の終わりで、これから4年目になります。社内の福利厚生ユニットで、私は一応技術リーダーをやっています。

職種はエンジニアです。最近はWebアプリケーション開発がメインですが、TypeScript、React、Reduxあたりをメインで触っています。社内に技術系のチームがいくつかあって、Ansibleやecflowなどのテストに主に参加しています。

そのほかに、これは業務というよりは業務の中で必要になったから勝手に自分で作っているという感じですが、ちょっとしたツール開発をしています。今日は、このちょっとしたツール開発で作ったものの1つを紹介できればなと思っています。

Serverlessのサービスを使って「勤怠チェックボット」を開発

実際に何を作ったんですか? という話からしていきます。「勤怠チェックボット」というものを作りました。今日はこれを紹介したいなと思います。

勤怠チェックボットと言われても何かわからないと思うので、どんなものなのかを簡単に紹介します。フォルシアでは、社内のコミュニケーションツールとして「Slack」を使っています。さらにGoogleの「スプレッドシート」で勤務表があって、そこに勤務の開始終了の時刻を記入するという運用に、今はなっています。

今回私が作った勤怠チェックボットは、毎朝こういう勤怠チェックというボットがSlackに飛んでくるので、例えば在宅勤務というボタンを押すと、実際の勤務表のステータスが在宅勤務中に変わって、在宅勤務の開始時刻が自動的にスプレッドシートに記入されるというものです。

これはServerlessのサービスだけで実現しました。登場人物はここに書いてある4つです。ボットなのでSlackから始まって、中にAWSのLambda、正確に言うとAPI Gatewayを使っているのですが、そちらを経由してGASからスプレッドシートに書き込みを行なっています。

EventsAPIというSlackのサービスなんですが、スタンプをクリックしたときにAPIにリクエストを送ることができるので、それを使って、まずSlackでスタンプが押されたときにAWSにリクエストを送ります。

API Gateway / Lambdaを使って、AWSがこのリクエストを受け取ったら、ここに保存しているGoogleへの認証情報を持っているので、それを持ってGASにリクエストを送ります。GASは今のリクエストが来た時刻はいつなんですか? とデータを取得して、実際にスプレッドシートに時刻を記入します。

このようなかたちで、基本的に自分でサーバーや実行環境をあまり用意せずに、Lambda、GASというServerlessのサービスを使ってこれらの流れを実現しています。

開発から運用開始までかかった工数はわずか2日

開発にどのくらいかかったかについてお話しします。みなさんもご存知のとおり、3月25日に東京都からできるだけ仕事は自宅でという要請がありました。これに伴って、フォルシアでも昨年度は在宅勤務がメインになっていました。

在宅勤務に伴って、最初に紹介した勤務表に時間を記入しましょうという運用が2020年3月31日に始まったのですが、それから2日後の2020年4月2日には勤怠チェックボットの運用が実際に始まりました。実質設計から開発、運用開始まで2日で用意できました。

なかなかスピーディーに作れたのではないかなと思っているのですが、やはりServerlessというサービスが強いなと今回さらに強く実感しました。

Serverlessなので、実行環境をどうするかということは考えずに、コードを組むところにかなり集中して取り組めたのが、やはり開発から運用まですごくスピードが出せた原因なのかなと思っています。

運用開始してすでに1年近く経ちますが、運用開始後からはメンテナンスはほぼ発生せずにやれてきているので、かなりリーズナブルにやれていると思います。

料金がかかるとしたらAWSの部分ですが、そこもリクエスト数や実行時間によるので、実際に自分でサーバーや環境を用意してというところと比べれば低くやれていると思います。

Serverlessを使うことで、かなりスピーディーにツール開発が行えると思っています。

「面倒くさい」にはチャンスが隠れている

次に、なんで作ったの? というところをお話できればなと思っています。最初に「勤務表に時刻の入力をしてください」と言われたときに、私は何を考えたのか。ぶっちゃけ面倒くさいなと思いました。

ここで言うのもアレですが、毎日入力するので、絶対に入力を忘れてしまうし、毎回時刻を確認して入れるのも面倒くさいなぁと感じました。

この「面倒くさい」という感情って、自分のこれまでの経験から見ても、意外とスルーされがちな感情なんじゃないかなと思っています。「記入して」って言われているし、これまでもこの方法でやってきましたよね、とか。だから面倒だけど、やらないといけないよねというところで。

面倒くさいなと思っても、そのまま受け入れてしまうことってよくあるなと。自分も振り返ってみると、そう思うことがあります。

ただ、この面倒くさいときこそチャンスかなと思っています。実際、今回作成したツールも面倒くさいなぁと思って、まずは自分1人で使おうと思って作ったんですが、作ってみると意外といろいろな方に使ってもらえて導入までにかなり支援してもらいました。

そういったときこそ、やっぱりチャンスは隠れているんじゃないかなと今回の件を通して感じました。

今回のタイトルはServerlessですが、私が伝えたかったことはこの1点です。面倒くさいと感じたときこそ改善のチャンスがあるのではないでしょうかということですね。そして、それはもしかしたらServerlessを使えば手軽に改善できるかもしれません。

面倒くさいときこそ改善のチャンスなので、これを聞いているみなさんもそう感じたときがあれば、この話を少し思い出して改善に取り組んでもらえたらなぁと感じています。

私からの発表は以上です。ご清聴ありがとうございました。

司会者:籏野さんありがとうございました。

質問者:私から質問いいでしょうか?

司会者:はい、お願いします。

質問者:フォルシアの高橋です。この勤怠ボットはとても便利でいつも非常に助かっています。2日でできたということだったんですが、その中でも行き詰まったポイントはあったりするんですか?

籏野:この仕組みで行き詰まったポイントは、実はAWSが登場してくるところが1つ肝にはなっています。会社でSlackとGoogleアカウントを使っている方は、1回は経験したことがあるかなと思うんですが、認証が必要なので、SlackからGASに直接リクエストを送ることができないんですよね。認証を通すためにAWSを用意するということを思いつくまでがけっこう大変でした。

質問者:なるほど、気づき的なところですね。

籏野:その後の運用に関しても、結局AWSなので、実際にみんなが使えるようにするには大変になるかなと最初は思ったんですが、フォルシアの場合だとAWSの環境もけっこう使っていたので、そこにちょっと置かせてもらってすごくスムーズにやらせてもらえました。

質問者:ありがとうございます。これからも使わせていただきます。

籏野:お願いします(笑)。

司会者:「こういった細かいところで全社員がちょっとずつ損をすると、チリツモでけっこうな損失になるので会社としても得が大きそう」「この面倒くさいの気持ちがわかりすぎる」などのコメントをもらっています。

籏野:面倒くさいことは、ふだんの仕事の中でもよくあることだと思います。

司会者:ありがとうございます。では籏野さんのLTは以上にしたいと思います。ありがとうございました。

籏野:ありがとうございました。