はじめに
こんにちは、freee で認証認可基盤の開発をしている okarin です。最近の休日は QR コードを実装して遊んでます。意外と仕組みが複雑で数学的にも難しいのですが、いろんな知識が身について楽しいのでオススメです。
先日、メールアドレスを持たないアカウントでも freee 人事労務というプロダクトを利用できるになりました。現在、freee 人事労務では、メールアドレスまたはログイン ID でのログインが可能となっています。本記事では、メールアドレスを持たないアカウントで freee 人事労務にログインする機能の開発の課題などをまとめました。
課題
これまで freee ではメールアドレスを持たないアカウントでログインすることができませんでした。そうしたなかで、 freee 人事労務で勤怠を管理したいけれども、従業員に対するメールアドレスの発行は行わないため、 freee 人事労務を利用できないケースが多い、ということが分かりました。ユーザーからの要望も多く、freee としても早く実現したい機能の1つでしたが、認証認可のデータモデルに技術的な負債があり、大きな課題となっていました。具体的にいうと、アカウントを一意に識別できる値をメールアドレスにしていたため、そのままではメールアドレスなしで freee を利用することはできない状態でした。そこで、認証認可基盤をマイクロサービス化してデータモデルを整理することで、メールアドレス以外の値でユーザーを一意に識別できるようになり、今回の開発に着手できるようになりました。認証認可基盤のマイクロサービス化の詳細に関しては、先日記事が公開されましたので、ぜひご覧ください。
開発で良かったこと
新認証認可基盤に移行したことで新機能が開発しやすくなった
やはり認証認可基盤を移行した影響は非常に大きいなと思います。先日、バックアップコードによるログイン機能をリリースしたばかりなのですが、メールアドレスを持たないアカウントで人事労務にログインする機能をこんなに早くリリースできたのも、認証認可基盤の移行が完了したおかげです。新認証認可基盤は、データモデルが整理されているだけでなく、コードのアーキテクチャも整理されていて既存のコードを理解しやすいようになっており、効率良く開発できたと思います。
ちなみにバックアップコードによるログイン機能も先日記事が公開されていますので、ぜひご覧ください。
UX チームとの連携
いままで認証認可基盤の移行をメインに開発していたため、これまではあまり UX チームと連携することが少ない状況でしたが、今回の開発からは UX チームと強く連携しながら開発を進めることができました。私たちのチームは毎週レビューを行っており、1週間でどのくらい開発が進んだかを共有して、認識の相違がないか、もっとこうしたいという意見はないかなど話し合っています。このレビューに UX チームの方にも参加いただくことで、毎週 UX の観点から意見をもらうことができるようになりました。それだけでなく、フロントエンドの開発時に困ったときに UX チームに相談しやすい雰囲気もできて、非常に良かったなと思います。これは今後も継続していきたいです。
開発で苦労したこと
開発メンバーが大きく入れ替わり、認証認可基盤のキャッチアップが大変だった
メールアドレスを持たないアカウントのログイン機能を開発し始める時期と、異動の時期が重なり、開発メンバーが大きく入れ替わりました。認証認可基盤を熟知しているメンバーが少ない状態からのスタートとなり、認証認可基盤の仕様が分からないことが多々あり、当初は苦労しました。この課題に対しては、作業内容を見積もるときに、複雑なタスクはコードを見ながら作業内容の認識をチーム内で合わせるようにするなど、試行錯誤しながら開発を進めることができました。
慣れないフロントエンドの開発
これはチームというより個人的な課題なのですが、フロントエンドの開発にも苦労しました。これまで、認証認可基盤の移行をメインに開発していたため、フロントエンドを実装することはほとんどありませんでした。今回は新しい機能を提供するため、フロントエンドもがっつりと開発することになり、どのように実装すれば良いのか困ることも多々ありました。この課題に関しては、フロントエンドが得意なメンバーに助けられたと思います。フロントエンドのアーキテクチャやアクセシビリティなど、多くの方に相談に乗ってもらいながら開発を進めることができました。次からはフロントエンドもスムーズに開発が進められるよう学習を進めたいと思います。
今後に向けて
ここまで述べてきたように、freee 人事労務でメールアドレスを持たないアカウントでログインできるようになりました。今後は、freee のプロダクトをより安全に利用できるようセキュリティを高める開発や、新しい認証方式の開発を進めていく予定です。ユーザーにとって非常に価値の高い開発になると思うので、今後の開発がとても楽しみです。