こんにちは、2019年度新卒でメルカリ入社したiOSエンジニアの東原秀亮です。
今回は、僕がサイドプロジェクトとして関わっているWIASというサービスの話をさせていただきます。
まず、新たに開発した「WIAS」について。WIAS(Wi-Fi Attendance System)とは、社内Wi-Fiを利用した打刻システムです。登録したスマートフォンの社内Wi-Fiへの接続状況に応じて、勤怠システムに出退勤を記録してくれます。ほかにも、Slackコマンドによる打刻の機能を提供しています。
例えば、Webブラウザ、Excelシート、カードリーダなどによる打刻をする必要がなく、オフィスに入退室するだけで自動的に打刻が完了している点がメリットとして挙げられます。つまり空気のように、打刻を意識せず毎日の勤怠記録をすることを目標にしたサービスです。
実はすでにWi-Fi打刻システムは存在していた
WIASを開発する前から、Wi-Fi打刻システムはすでに存在していました。しかし、システム開発から年月が経っており、大胆な仕様変更や機能追加をしにくいというような問題点・改善点を抱えていたのです。
それらを解決するために考えた結果、新たにつくり直す方が良いと引き継ぎのタイミングで判断しました。よりメンテナンスのしやすいコードにして、新規機能を実装したり、実装チームが変わったりしても今後も改善し続けていけるようにするためです。
そのため、当初の目標は従来の打刻システムと同じクオリティ、そして既存の問題をすべて解決したうえで無事リリースし、メルカリメンバーに一切の負担を強いることなくアップグレードすることでした。
超えろ! 旧打刻システム
WIASとして新規に開発することを決めた僕たちですが、通常の新規サービス立ち上げとは決定的に違う点がありました。それは、メンバーからするとWIASは新規サービスではなく、既存サービスのアップデートである認識という点です。つまり、既存サービスが持っていた機能がWIASに存在してなかったり、動いてなかったりすると、それは「不具合」として感じてしまうのです。
僕たちにとっては既存の問題点を解決したい気持ちでスタートした新規プロジェクトでしたが、「既存サービスの仕様を満たすのは当たり前」という高いハードルをまず超えなければなりませんでした。すでに存在する高い期待値を満たすという守りの開発と、今までにない機能をつくっていく攻めの開発。この板挟み状態を乗り越えることが求められました。
そこで守りの開発をこなすために、まず関係者にヒアリングを行いました。
まずは労務のチームとの調整です。「打刻」なので、もちろんその記録を労務メンバーが使い、勤怠を管理しています。以前はWi-Fi打刻システムのオペレーションの一部も担っており、それらを自動化したいのに加え、これからWIASとして開発していくプロジェクトが彼らの業務を妨げないようにすり合わせる必要がありました。
もう一点は、前任者とのコミュニケーションです。
既存システムにある機能はすべて満たさなくてならず、それらのキャッチアップが必要なため、前任者と密にコミュニケーションをとって仕様を決めていきました。上記に加え、Wi-Fi打刻システムは単なるWebサービスではないので、簡単にテストができないなどの状況を乗り越えていく必要がありました。
リリース後の「やっちまった」データベースマイグレーション
その後、WIASは既存の問題を解決しつつ開発を続け、リリースまでたどり着きました。
その過程で、
・テスト用環境の構築
・チームのタスクをGitHub Issuesで管理
・SlackにQAチャンネルを設置
・WIAS利用者のみにお知らせできる仕組みを用意
・WIAS用Slackコマンドの実装
などを行い、リリースに向けて開発・運用体制を充実させていきました。
ただ、すべてが順調だったわけではありませんでした。
リリースを無事に終えた後、次のステップとしてデータベース移行を行いました。これは、旧Wi-Fi打刻利用者が新しいシステムに登録しなくても良いように、こちらでユーザー情報の移行したのです。この際に、一度に多くのマイグレーションを行ったため、外部APIの制限に引っかかってしまい、一部のメンバーを移行できませんでした。これにより、そのメンバーが打刻できなくなる問題が発生したのです。
加えて、月末は勤怠締めがあるために多くのメンバーが当月の打刻ができているかを確認・申請するタイミングでした。そのため、多くのお問い合わせが生まれてしまい、その対応に追われていた時期がありました。QAチャンネルを設置していたことで、問題を可視化できるようにしておいたのは不幸中の幸いだったと思います。このときの反省は、デプロイのスケジュールを変更したり、あらゆるリスクを考慮してリリースすることの重要性を学んだり、その後の開発に活かしています。
メルカリという会社で開発すること
社内メンバー向けサービスですが、WIASには普段開発しているメルカリと同じようにきちんとお客さま(=メンバー)が存在しています。
個人的に、旧Wi-Fi打刻サービスのころから利用しており、非常に便利なサービスだと感じていて、より良くしていきたい気持ちが強いです。その気持ちから生まれた施策の一つとして、SlackにQAチャンネルを設置しました。これにより、今まで知らさせることがなかった不満や「どこに問い合わせたらいいかわからない相談」などを拾い上げることができました。
さらに、WIAS利用者専用のブロードキャスト機能も実装しています。先のマイグレーションでもQAチャンネルとブロードキャスト機能により問題を迅速に特定・共有・解決することに役立ちました。
より「お客さま」に寄り添うサービスへ
打刻で重要視すべき点は、いくつかあると思います。正確さや自動であるか、もしくはメンバーが勝手に書き換えられないかどうかなど、会社によって重要視している点は異なります。
そして、打刻をするための工夫はたくさんあります。例えば、「打刻の手入力を支援するツールをつくる」「ゲーミフィケーション要素を追加して毎日の打刻を楽しくする」などです。しかし、僕らの場合は「いかにメンバーを本質的でない雑務から解放するか」ということにフォーカスして、このプロジェクトを進めています。
メルカリという会社自体は上記の考えを受け入れてくれる組織なので、開発に関わった僕たちが本当に良いと思うアプローチで問題に取り組むことができました。それに加え、新卒エンジニアたちが手を挙げて、新規プロジェクトを立ち上げられることにも、この会社の自由度の高さを感じました。
写真右から、木藤裕太郎、東原秀亮、山下慶将。開発に関わったメンバーで、WIASリリースの瞬間を見守る。リリースのお祝いにちょっとしたケーキも用意した
一つのプロジェクトを通して、ゼロからチームを組み、リリースし、多くの人に使ってもらい、改善するというフローを経験できていることに非常に感謝しています。そして、自分がやったことのない領域に取り組むことができているのも、エンジニアとして成長を感じられています。障害が起きたとき、それらのお問い合わせ対応をするときやチームの開発、コミュニケーションがうまくいかないときなど、苦しく感じる瞬間もありましたが、今後も必死で乗り越えていきたいと思っています。
そして、Wi-Fi打刻を使うメルカリメンバーの方だけでなく、このサービスに関わってくれたメンバーが幸せになるようにチームで力を合わせて今後も開発していきます。
最後にWIASを日頃利用してくれている方々、フィードバックをいち早くくれる方、今回の記事作成をサポートしてくれた方、何よりWIASチームメンバーに感謝を述べたいです。本当にありがとうございます、これからもよろしくお願いいたします!
-
東原秀亮(Hideaki Touhara)
2019年に新卒入社。学生時代は複数の会社でUnity, VR, AR, iOSなどの開発インターンを経験。メルカリにはiOSエンジニアとしてジョイン。リアーキテクチャチームから始まり、お問い合わせ導線、出品周りの新機能開発、UX改善などの業務に携わる。Twitterアカウントは@HideakiTouhara。