新卒研修で作ったWebサービスで社内のバックオフィスオペレーションを効率化した話

こんにちは、freeeに2022年度新卒入社したエンジニアの「チーム強欲な壺」です。チーム強欲な壺はエンジニア向けの新卒研修の際に結成したチームで、メンバーはShaka、Narita、WaTTson、Yokoの4人です。

freee の新卒研修

ハイブリッド出社時代の Web サービス

freeeの2022年度の新卒研修は、4月の中旬まで全体研修をやった後、6月中旬までの約2ヶ月間、エンジニア向けの研修を行う形でした。エンジニア研修は前半と後半に分かれていて、前半ではデータベース管理システム(DBMS)を作るというもの、後半では他チームが作ったDBMSを使ってWebサービスを作る、というものに取り組みました。


後半研修のお題はこのようなものでした:

「ハイブリッド出社時代に必要なWebサービス」を作ってください
※ハイブリッド出社の定義:最低週2回はオフィスに出社する働き方

コロナ禍が始まってからリモート勤務が広まり、今ではオンライン/オフラインの入り交じった出勤形態があちこちで見られるようになりました。freeeも現在はそのような形で業務が行われており、それに伴って様々な課題が生じています。

ハイブリッド出社時代に必要なwebサービスを作って下さい
研修のお題

Shall We ランチ? に着目

チーム強欲な壺では、ハイブリッド出社での問題点を洗い出して分類・整理を行った結果、問題点として特に「コミュニケーションのやりづらさ」に着目しました。

freeeでは、Culture Developmentヨット(通称カルデブ)と呼ばれる部署を中心として、様々な社内コミュニケーション施策が行われています。私たちは、新たに何かを立ち上げるよりは、既存のものを活かそう!と考え、カルデブが行っているコミュニケーション施策を発展させるという方針を決めました。

コロナ禍になってリモート勤務が増えてから、カルデブのコミュニケーション施策の中心となっているのは「Shall We ランチ?」という制度でした。これは、チームの垣根を越えたランチに補助金を出すことでコミュニケーションを促進しようというものです。補助金はレシートからの経費精算もできますが、リモートでの使いやすさを重視して、Uber EATSのバウチャーを配布するという形式も選べるようになっています。

しかし、当時のShall We ランチ?は、かなり運用に手間がかかる形でした。Shall We ランチ?利用の申請はGoogleスプレッドシートで管理していたのですが、Uber EATSのバウチャー配布が、

  • Uberのサイトからバウチャーのリストをダウンロードして、スプレッドシートに転記する

  • 申請の一覧から、バウチャーが必要な人を探す

  • スプレッドシートに転記したバウチャーの中から、条件に合うものをピックアップする

  • 社内チャットでバウチャーを送信する

といった流れになっていました。人が手作業でやるのは単純に大変ですし、ミスの原因にもなるので、こうした部分はできるだけ自動化して改善していきたいところです。

開発・成果発表

Webアプリ開発の研修期間は1ヶ月しかないので、開発する内容はその中でできる範囲に絞る必要があります。当初の案では社内チャットと連携してリマインダーを送るとか、ランチ以外のコミュニケーションスタイルにも拡張できるようオプションを増やすとか、いろいろなアイデアを出していましたが、優先順位を付けて6つの段階に整理し、そのうち3段階目までを実際に開発することになりました。

開発は、UXデザインに長けたメンバーがいなくて難航したりもしましたが、最終的にはほぼスケジュール通りに進めることができて、成果発表会では全機能がきちんと動いた状態でアプリケーションのデモができました!


完成した Web アプリ swift "Shall We!""
完成した Web サービス

新卒研修を終えて

Web サービスを本番稼働させることに

成果発表を終えた後、配属発表があり 4人ともバラバラな部署へと散っていきました。そして翌週各々の部署で業務に励んでいたところ、カルデブから早速連絡がありました。「成果発表を見ました!是非使ってみたい!」とのこと。頑張って作ったものを使いたいと言ってくれる人がいたのはとても嬉しかったです。早速、カルデブのメンバーとミーティングをして本番稼働に向けて頑張っていこうと話がまとまりました。

リリースまでの長い道のり

しかし、本番稼働への道は簡単なものではありませんでした。当時は、freee 内部において社内サービスをどのように扱うべきかというポリシーは存在せず、どのような状態になったら本番稼働してもよいかは不明確でした。
そこで僕たちは PSIRT を巻き込んで本番稼働を目指すことにしました。PSIRT は freee が公開しているプロダクト(会計、人事労務、etc…)のセキュリティを守るチームですが、社内サービスの管理についても協力してくれることになりました。このあたりは、WaTTson が PSIRT 配属だったこともあり、かなりスムーズに進みました。

そして相談の結果、以下の条件が満たされれば社内向けに本番運用してOKの許可を頂きました。
①DBMSを研修で作成したものからMySQLに置き換える
②自動デプロイを導入する
③社内サービス専用のAWSアカウント上でアプリケーションを動かす
④ログを収集し、監視体制を整える
⑤PSIRTによる脆弱性診断を受ける

これらの条件を満たすべく早速改修がスタート。
もちろん各々配属先での本業も大事なので、一週間に一度ミーティングを設け現状とTODOを整理し、スキマ時間にタスクを進めるという形を取りました。ここからはリリースまでの取り組みについていくつか紹介します。

特に大変だったのはインフラの整備です。
研修時は作成した Web アプリを検証用の AWS アカウントで動かしており、本番稼働にあたって別のアカウントに載せ替える必要がありました。AWS アカウントは PSIRT に用意してもらい、そのアカウントの上にアプリケーションを動かすためのリソースを terraform で作成していきました。振り返るとこのステップはかなり苦戦しました。数ヶ月かけて、実際にWebアプリが動き始めて使えそう!となったときは嬉しかったです。

また、PSIRTによる脆弱性診断でも色々な脆弱性が見つかりました。予算の上限を無視して補助金額を設定できたりと色々な悪さが出来る状態になっていて、対応する必要がありました。同時に自ら脆弱性を見つけられるように PSIRT からサービスに「攻撃」を仕掛ける方法を伝授されました。実際に自分たちで攻撃をしながら、自サービスの思い掛けない脆弱性を見つけ出した時は驚きでした。(ここで身につけた知識はもちろん悪用厳禁です)

リリース!

こうして様々なハードルを乗り越え、10月3日から Web アプリからの Shall We ランチ?受付がスタートしました。
開始直後から様々な方に使ってもらえて、一ヶ月で 100件弱の申請もあり、早々に予算上限に到達。現在は受付を一時休止しています。
申請してくれた社員の方やカルデブの方からは、こうしたらもっと使いやすくなりそう!とフィードバックをいただけるのでスキマ時間に改修したりもしています。
1月から再度 Shall We ランチの予算が割り当てられる予定なので、それまでに更に使いやすいアプリケーションにできるように頑張っています!


現在は受付を一時休止中

まとめ

以上が新卒研修で作った Web サービスを社内で本番運用した話です。配属先の部署でキャッチアップを進めながら、研修で作った Web サービスを本番稼働させるのはとても大変でした。しかし、Webサービスを本番運用する上で必要なことや freee 社内で使われている技術について広く深く学ぶ良い機会となり、その知識が配属先に役立ったこともありました。新卒研修で作るだけでなく実際のリリースを経験できたことは非常に有意義でしたし、これからも頑張って運用していきたいと思います。

最後に宣伝を2つ。

YouTube で公開している freee Tech Night でも新卒研修〜Webサービスリリースについて話しました。よかったら見て下さい。

また、freeeは「あえ共freee」というマガジンから、freeeの事業や組織に関する情報を発信しています。フォローしていただけたら嬉しいです。


この記事が気に入ったらサポートをしてみませんか?