株式会社ビズリーチは、2020年から3つのAndroidアプリをリニューアルしてきました。その経験から、リニューアル時のアーキテクチャ選定やストアの評価を上げるグロース体制を、今年の5月にリニューアルした「ビズリーチ・キャンパス」の学生向けアプリと、リニューアルから1年半以上運用を続けている「ビズリーチ」の求職者向けアプリを例にお話しします。
Web開発からアプリ開発へ注力
即戦力人材と企業をつなぐ転職サイト「ビズリーチ」をはじめ、複数のプロダクトを運営する株式会社ビズリーチは、Webサービスから始まったプロダクトが多く、以前はスマートフォン用のネイティブアプリには注力できていない状況でした。アプリ自体は存在していたのですが、Webの開発者がWeb開発の傍らアプリを作成したような形になっており、保守・運用に十分な時間をかけられていませんでした。
しかし、転職活動や就職活動といった使用時期が限られるサービスであろうとも、近年スマホからサービスを利用するユーザーはとても多くなっています。そこで、2019年にスマホファーストへと舵を切り、これまでに3つのAndroidアプリ「ビズリーチ」、「キャリトレ」、「ビズリーチ・キャンパス」をリニューアルしました。これらは別々の時期にリニューアルを行ったため、現在ではそれぞれ異なるフェーズにあります。ここでは3つのアプリのうち、「ビズリーチ・キャンパス」と「ビズリーチ」をご紹介します。
5月にリニューアルした「ビズリーチ・キャンパス」アプリ
1つ目は今年の5月にリニューアルを行った、OB/OG訪問ネットワークサービス「ビズリーチ・キャンパス」の学生向けAndroidアプリです。このアプリはiOS、AndroidともにReact Nativeで元々開発されていました。しかし、長期的に事業を拡大することを考えたときに、品質向上を続けることが難しそうだという課題がありました。そこで前述のとおり、会社としてもピュアなネイティブアプリにスマホファーストの一環として注力していたことから、SwiftとKotlinでアプリを書き直す意思決定に至ります。
リニューアルを行うにあたって、大きく2つの設計思想がありました。1つはAndroidアプリの開発を属人化しないこと、もう1つは将来的にJetpack Composeへとスムーズに移行できることです。
まず、「ビズリーチ・キャンパス」チームでは、特定のプラットフォームだけを受け持つ専任のエンジニアは最小限にする方針です。そのため、各プラットフォームを実装するときにそれらの違いによる頭のスイッチングコストを減らすべく、iOSとAndroidでアーキテクチャをできるだけ合わせることを目指していました。先行してリニューアルが終わっていたiOSアプリでは、The Composable Architecture(TCA)を採用しています。このTCAと同じようにAndroidアプリでも実装できないかと検討した結果、Orbitというライブラリを選択し、アーキテクチャとしてはMVIになりました。
また、iOSアプリではSwiftUIという宣言的UIで開発していることから、将来的に主流になるであろう、同じく宣言的UIであるJetpack Composeで開発したいと考えていました。しかし、リニューアルの開発を行っている当時は、まだJetpack Composeの正式版がローンチされておらず、リスクなどを考慮して見送ったという事情があります。MVIアーキテクチャに限った話ではありませんが、今後の移行のためにView側にはなるべくロジックを書かないように気をつけました。
ビズリーチ・キャンパスAndroidアプリのフローの図
特に大変だったのはWebViewの扱いです。すべての画面をネイティブのコードで実装できるに越したことはないのですが、いつまでも時間をかけるわけにもいきません。ファーストリリースでは必要最低限の実装を行いながら、一部はWebViewで補いました。遷移に関してはNavigationコンポーネントを使用したのですが、状態管理やDeep Linkなどのことを考慮しながらネイティブのコードとWebViewのコードをシームレスにつなげられるように実装するのはとても苦労しました。しかし、苦労の甲斐あって、React Native時代に導入していたWebViewの複雑度合いと比較しても、ネイティブのコードへと非常に置き換えやすく実装できています。
Webの画面を流用できるようになった結果として、工数やスコープの調整にもなったため、ほぼ予定どおりにローンチすることができました。ローンチ後に大きな不具合もなく、個人的な今までの経験としても最も穏やかにリニューアルを完了できたと思います。
グロースフェーズの「ビズリーチ」アプリ
2つ目に紹介するのは、昨年1月にリニューアルを行った、「ビズリーチ」の求職者向けAndroidアプリです。こちらはすでにリニューアルして1年半以上経過しているため、リニューアル後のアプリのグロース(成長)やそれを支える体制についてお話しします。
サービスはローンチして終わりではなく、ローンチしてからが始まりとも言えます。サービスをグロースさせるためには、当然のことながら素早い改善サイクルを回しながらの開発が必要です。そこで、サービスとして追求すべき重要指標を定義し、その指標を伸ばすために企画から開発までを一貫して1つのチームで運用できるようにしました。
実際のリリースによる効果を測定するために、Firebaseの機能を使ってA/Bテストを実施しています。新しく追加した機能を一部のユーザーにだけ開放することで、その機能が重要指標にどのような影響をもたらしたのか、ユーザーの行動にどのような変化を与えたのか比較します。良い影響をもたらした機能だけをアプリの正式な機能として採用することで、効果的な改善を重ねていきました。以下の図は採用された機能の一例です。
A/Bテストの例
また、考案した企画を素早くリリースするために、PMやデザイナーも含めたアプリチームを編成し、API開発もできるだけアプリチーム内で完結できるようにしました。そうすることで職能を越えたコミュニケーションを取りやすくなり、企画段階からエンジニアの意見を取り入れたり、開発中に発生する細かな仕様のすり合わせに対応したりしながらチームで連携できます。Androidアプリ開発メンバー内では、Androidアプリ開発特有の課題や改善案について話し合う場を設けています。その話し合いの後半からは雑談の時間としており、フランクに近況を話しています。
グロースの途中で他のアプリのリニューアルプロジェクトによってメンバーが減るなど、体制をマイナーチェンジしながらも、リニューアル直後はGoogle Playのアプリの評価で3前後だったものが、今では4.3まで伸ばすことができました。
課題と今後の展望
これまで主に良い面を紹介してきましたが、実際には課題もまだまだあります。「ビズリーチ・キャンパス」アプリではこれから顕在化する課題もあるでしょうが、少なくともWebViewで実装している画面をネイティブ化する予定です。また、「ビズリーチ」アプリのリニューアル当時は短期的な目標を設定し開発をしていましたが、これから中長期の成長を見据えていくうえでは、新しい課題も生まれていきます。
それぞれのアプリで発生している課題はありつつも、それらを解決する手段やリニューアルの経験など、その多くが開発者個人の知見にとどまっていることもあります。そのため、アプリをまたいだ開発者間の横のつながりを強化することで、それらの知見を会社全体の形式知にする仕組みづくりに私としては取り組みたいと考えています。
おわりに
本記事では当社の2つのアプリ開発について紹介しました。当社でAndroidアプリがどのように開発・運用されているのか、イメージを持っていただけたならば幸いです。また、当社のVisional Engineering Blogでは、挑戦する20代の転職サイト「キャリトレ」のAndroidアプリリニューアルの記事も掲載しておりますので、ぜひご覧になってください。
今後実現したいこと、解決しなければならない課題はまだまだあります。そのためには共にプロダクトをつくる仲間が必要です。Androidエンジニアも募集していますので、ご興味をお持ちいただいた方は以下求人よりご応募ください。よろしくお願いいたします。
採用情報やテックブログなどの紹介
著者紹介
白濵 順哉/Junya Shirahama
2016年、九州大学大学院総合理工学府(物質理工学専攻)を卒業後、株式会社ビズリーチに新卒入社。即戦力人材と企業をつなぐ転職サイト「ビズリーチ」のサーバーサイドを担当。サービスの品質改善への取り組みで、全社新人賞を受賞。2020年3月からAndroid開発に転向し、「ビズリーチ」やOB/OG訪問ネットワークサービス「ビズリーチ・キャンパス」を担当した後、現在は「ビズリーチ」アプリ開発チームのマネージャーを務める。
Visionalについて
「新しい可能性を、次々と。」をグループミッションとし、HR Tech領域を中心に、産業のデジタルトランスフォーメーション(DX)を推進するさまざまな事業を展開。「ビズリーチ」をはじめとした採用プラットフォームや、人財活用プラットフォーム「HRMOS」シリーズを中心に、企業の人材活用・人材戦略(HCM)エコシステムの構築を目指す。また、事業承継M&A、物流Tech、サイバーセキュリティ、Sales Techの領域においても、新規事業を次々に立ち上げている。