スマホアプリをReact Nativeで開発したワケ
スマホアプリの開発を行うことになったのは、「『Airシフト』をよりよいサービスにするためだった」と辻さん。『Airシフト』にはスタッフからのシフト調整依頼や欠勤連絡をするためのメッセージ機能が提供されている。「シフト管理者は常にパソコンの前にいるわけではありません。そのため『スタッフからの連絡を見落としてしまう』『連絡が遅くなる』という課題がありました。それを解決するため、メッセージ機能にフォーカスしたスマホアプリ版を開発することになりました」
これまで『Airシフト』の開発に携わっているメンバーの多くはフロントエンドを得意としているWebアプリ開発のエンジニア。スマホアプリの開発経験のあるエンジニアはいなかった。そこで辻さんはWebアプリと近い感覚で開発できるReact Nativeを採用した。「『Airシフト』のWeb版はReactで開発されています。React NativeならReactとの差分を学習すれば、すぐに開発に着手できると考えました」と辻さんは話す。
だが当時、React Nativeを採用してスマホアプリを開発した事例はほとんどなかった。「確かに海外に少しあるぐらいで、それも社内用の事例がほとんどでした。そのためリリースしてからの運用がうまくいくか、そこが不安でした」と辻さんは明かす。
その不安を払拭するため、まずは簡単なモックアップアプリを作成した。特に注力して調査したのがアプリの肝であるプッシュ通知機能をReact Nativeで実現できるか、運用時に困ることが起きないかという点だった。
React Nativeの内部はスマホ本来の機能とカメラやGPSなどフロントエンドの技術で開発できるものに分かれており、bridgeという機能を使って実現する。それを使えばプッシュ通知は実現できる。「bridgeを多用すると、バージョンアップへの追従やネイティブの機能を実装できる人が少なくなるなど、大変さが予想できました。今回のアプリではプッシュ通知さえできればよいので、bridgeの活用に制限を設け、フロントエンドの領域だけで運用できるように工夫しました」
開発時の苦労はこれだけではなかった。「Webとスマホアプリでは履歴の管理の方法が異なります。スマホアプリのルールにのっとって開発しなければならない点に苦労しました」
2019年9月27日、『Airシフト』スマホアプリは無事リリースされたが、まだ多少の苦労は続いている。「アプリに問題が発生した場合やネイティブ側に問題があった場合は、知見が多くないのでまだまだ対応が難しい場合もあります」と辻さんは言う。だが、苦労してリリースしただけあって、スマホアプリの評判も上々だ。実はこれには理由がある。
「課題は顧客が持っている」ためヒアリングを重視
『Airシフト』のようなB2B向けSaaSサービスは、クライアントの業務に密着しているものが多い。日々、継続して活用されるものなので、「どれだけストレスなく店舗運営業務をサポートできるかという点」を常に意識してサービス開発に取り組んでいる。そのため、『Airシフト』を開発するエンジニアは実際に活用している店舗に赴き、使い方の確認をする。
「私も『Airシフト』に配属されてすぐ携わったのが、クライアントさんへのヒアリングに同行するという仕事でした。『Airシフト』チームでは『課題は顧客が持っている』という考えが浸透しています。個人的にはこの文化も『Airシフト』チームの良いところだと思っています」と辻さんは当時を振り返る。実際、辻さんも何度も協力してもらえる店舗に足を運んだ。
「僕は使っている様子を観察してマウスの動きや待ち時間などをチェックするようにしています。例えば表彰案件となったパフォーマンス改善は、最初にヒアリングに訪れた花屋さんで見つけた非機能要件がきっかけです。その花屋さんではバックヤードにある古いノートパソコンで『Airシフト』を動かしていました。ボタン一つクリックすると、マウスカーソルが長い間ローディングするんです。これは解決しなければいけないなと」と辻さんは当時の状況を話す。
というのも、開発現場では常に良い通信環境で高スペックなパソコンを使っているため、そのようなことが起こりうることに気づかなかったという。
「実際の店舗では高スペックなパソコンを使うことは稀であるため、ユーザーと直接コミュニケーションをとることがなければ絶対に気づくことがないことでした。このような非機能要件を見つけ、改善するのはエンジニアが得意な分野だと思います」
スマホアプリの開発においても、デザインだけの画像で紙芝居的に披露して意見を聞いたり、プロトタイプを見せて触ってもらったりした。現在は特定のプロダクトではなくて、領域を横断して技術面でサポートするチームで活動している辻さん。今後、どんなエンジニアになっていきたいと思っているのか。
「『Airシフト』の開発で得た知見や技術をリクルートの他のサービスにも還元したいと思っています。特にサービスの品質を技術で上げていきたい。そのためには機能要件だけではなく、非機能要件に注目することも大切だと思います。そして非機能要件を満たすことで、事業に与えるインパクトを定量的に説明できるようになりたい。それもこれからの課題だと思っています」