STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

モバイルエンジニアが役割を超えて開発に挑戦している話

こんにちは。 STORES ブランドアプリ のチームで iOS エンジニアをしている榎本(@enomotok_)です。

今日は、私の所属しているブランドアプリのチームで、モバイルエンジニアがバックエンドの開発に取り組んでいる事例について紹介します。

チームの状況

現在、私たちのブランドアプリチームはバックエンドエンジニアとモバイルエンジニアで構成された混成チームです。開発はスクラムで行なっていて、チーム共通のバックログで実装するアイテムを管理しています。

通常、アプリの機能追加を行う際は、バックエンドエンジニアが Web API の実装を担当し、アプリエンジニアが該当する Web API にリクエストを行なうアプリの実装を行なうことがほとんどでした。

課題

開発を進める中で、いくつかの課題に直面しました。ブランドアプリのプロダクトはまだまだ発展途上にあるため、多くの新しい施策を実装する必要があります。これに伴い、緊急度の高いタスクが生じ、バックエンドエンジニアに負荷が集中しました。そのためモバイルチームとバックエンドチームが共同で取り組むべきタスクにおいても、必要なバックエンドエンジニアを割り当てることが困難になる状況が発生してしまいました。

どのように解決したか

この問題を解決するために、モバイルエンジニアがバックエンドの一部のタスクも担当することにしました。このアプローチにより、バックエンドエンジニアが多くのリソースを割かずに済み、効率的に施策を実装することが可能になりました。

ブランドアプリのモバイルバックエンドは Ruby on Rails で開発されています。チームメンバーの間で Ruby on Rails の経験レベルに差はありましたが、幸いなことに全員が何らかの形で Ruby on Rails の経験を持っていたため、比較的スムーズにバックエンド開発を進めることができました。

実際に行ったタスクの一例として、これまで WebView を用いて提供されていた画面をネイティブの画面へと置き換えました。この変更は、ユーザー体験の向上を目的としています。

バックエンドと Web フロントエンドのコードリーディングを行ない、新たに必要となる Web API を精査しました。

私たちのチームでは、 Web API のインターフェース定義を OpenAPI で管理しています。そのため、モバイルチームのメンバーが新しい Web API のインターフェースを Pull Request として提案し、バックエンドエンジニアのレビューを経て、仕様を策定しました。

実装段階では、バックエンドチームのメンバーが一部参加するモブプログラミングを実施して、変更箇所やユニットテストについての知識を共有しながら、実装をすることができました。

開発環境の構築に際して障壁となった部分についても、バックエンドチームのサポートを受けつつ、モバイルエンジニアが各自で環境を整えました。

最終的には、コードレビューを実施してもらい、実装した機能を無事にデリバリーすることができました。

学びとこれから

この開発を通じて、バックエンドのコードベースへの理解が深まりました。例えば、バックエンドの仕様に関する疑問がある際に、直接コードを調査することで解決策を見出せるようになりました。

また、モバイルエンジニアがバックエンドエンジニアのタスクを担うことが一つの選択肢として定着しました。クロスファンクショナルな働き方を取り入れることで、よりプロダクト開発を加速させる、アジリティのあるチームになってきている手応えを感じています。

バックエンドの実装が求められる開発テーマであっても、モバイルエンジニアが中心となって設計やプロジェクトリードを行ない、バックエンドチームのフィードバックを取り入れながらプロジェクトを進めることが、当たり前にできるようになってきています。

モバイルアプリ開発にとどまらず、役割を超えてサービス開発に挑戦したいモバイルエンジニアの方がいらっしゃいましたら、ぜひ私たちと一緒に開発に取り組みましょう。