こんにちは。メルペイ Engineering Managerの@masamichiです。
この記事は、Merpay Advent Calendar 2023 の18日目の記事です。
この記事では私がマネージャーを務めているMerpay Enabling Clientチームの役割や今後進めていくことについて紹介します。
Merpay Enabling Client Team
メルペイの組織構造は現在Program型組織となっており、その中でもEnabling ProgramはArchitectやSRE、Data Platformなど、横断的な技術課題の解決や生産性向上など開発全体を支援する組織です。Program型組織の詳細については2日目の@keigow さんの記事をご覧ください。
Merpay Enabling Clientチームはその中でWeb/Android/iOSから構成されるチームで、Client領域の横断的なプロジェクトを推進しています。
2023年の10月まではClient領域のチームはWeb/Android/iOSのプラットフォームごとに分かれており、私はMerpay iOSチームのマネージャーを担当していました。Program組織体制への移行を経て、現在はMerpay Enabling Clientチームのマネージャーを担当しています。
チームのVisionは
“Enable continuous product improvement through client engineering excellence”
“クライアントの卓越したエンジニアリングを通じて、プロダクトの継続的な改善を可能にする”
としており、チームとしてプロダクトの成長に貢献することを意識しています。Excellenceという言葉には、2009年に前Apple CEOの故Steve Jobs氏が療養中に、現Apple CEOのTim Cook氏が述べた言葉
“We don’t settle for anything less than excellence in every group in the company — and we have the self honesty to admit when we’re wrong and the courage to change.”
“社内のどのグループについても卓越未満で満足するつもりはありませんし、間違っている時にはそれを自分に対して正直に認める勇気と、間違いを正す勇気も我々にはあります”
からチームでも同じマインドを持とうという意図を込めました。
チームの責務は
- メルペイ内のClient技術方針の検討, および規律の構築
- メルカリグループで最適化されたArchitctureの構築
- メルペイプロダクトチームへのベストプラクティスのインストール
としており、プロダクトの成長に貢献すべく横断的な技術課題の解決に取り組んでいます。
現在は少人数の体制ですが日本語・英語話者が混在していて、チームの言語ポリシーはニュートラルになるように心がけています。例えば週次でのチームミーティングは週ごとにメインの言語を日本語と英語で切り替えるようにしています。メルカリグループには多様なメンバーがいるので、横断的なプロジェクトを進めるには言語も中立である必要があると考えています。
Projects
現在は中期のロードマップとして Zero Legacy & Group Optimized Architectureを掲げていくつかのプロジェクトを進めています。
1つめは認証基盤のアップデートです。これはメルカリグループ全体で推進しているプロジェクトで、アプリで使っている認証の仕組みの刷新に取り組んでいます。Mercari Mobile Architect チームリードのもと、Merpay Enabling Clientチームでは特に メルペイ関連の機能を提供するAPIとアプリのやりとり、およびアプリ内WebViewやiOSのApp Extensionsの認証方式のアップデートに取り組んでいます。
2つめはiOS/AndroidアプリのUI Frameworkのアップデートです。
昨年メルカリアプリはGroundUP Appプロジェクトによってフルスクラッチで書き換わり、全面的にSwiftUI/Jetpack Composeの宣言的UI Frameworkで作られた内製のDesignSystemを採用しています。
- メルカリの事業とエコシステムをいかにサステナブルなものにするか?かつてない大型プロジェクト「GroundUp App」の道程
- これからメルカリのエンジニアリングはもっと面白くなる──iOS&Androidのテックリードが振り返る、すべてがGo Boldだった「GroundUp App」
メルペイの領域の機能についてはある程度ポータブルな設計になっておりプロジェクト進行中も並行して機能開発を続けていたことから、GroundUP App プロジェクト後の新アプリでも既存の機能はUIKit/Android Viewベースの技術スタックとなっていました。
メルカリグループ全体での技術スタック統一とアプリ全体のユーザーエクスペリエンス統一を目指して、現在メルペイでも全社横断的に既存機能や新規開発機能へのDesignSystemの適用を進めています。私自身、本プロジェクトのリードを担当しており、全体の進捗管理やスケジューリング、 VPへのレポートなどプロジェクトの達成に向けて尽力しており、すでに新しいDesignSystemが採用された機能もいくつかリリースされています。
新しいDesignSystemを適用することでSwiftUIやJetpack Composeといった宣言的UI Frameworkによる開発の恩恵に加えて、これまでは対応していなかったダークモードへの対応やアクセシビリティへの対応も容易になりました。まだ適用されていない機能もありますが、今後より適用率を高めていくことで最終的には全ての機能がマイグレーションされた状態を目指しています。
- 【書き起こし】Merpay iOSのGroundUP Appへの移行 – kenmaz【Merpay & Mercoin Tech Fest 2023】
- 【書き起こし】段階的Jetpack Compose導入〜メルペイの場合〜 – Junya Matsuyama【Merpay Tech Fest 2022】
3つめはWeb Frameworkの更新です。
メルペイではカスタマーサポート用のツールや加盟店さま向けのツール、各種キャンペーン用のページなどさまざまなWebサービスを運営しています。
それらのWebサービスではVueとNuxt.jsをメインのFrameworkとして使っていますが、Vue2は2023年12月, Nuxt2は2024年6月にそれぞれサポート終了が計画されています。セキュリティ対策やブラウザの互換性を維持しながらプロダクト開発を継続するためには、End of Lifeまで次のバージョンにアップグレードする必要があり、既存サービスのVue3, Nuxt3への移行を進めています。
移行後は各種サービス内のVue技術スタックの標準化や、メルカリグループの技術アセットを活用してReactのような他の技術も取り入れていくなど新しいチャレンジをしていきたいと思っています。
それ以外にもWebViewの最適化や新しいArchitectureへの移行など、いくつか横断的なプロジェクトを今後進めていく予定です。プロジェクトの進め方やプロジェクト内で得た技術的な知見については今後個別に紹介していく機会を設けていきたいと思っています。
おわりに
Merpay Enabling ClientチームではFintechドメインでの規律を保ちつつ、Mercari Mobile & Web Architectチームとも連携をしながら、Zero Legacy & Group Optimized Architectureを目指していきます。
同じように横断的な技術課題の解決や生産性向上など開発全体を支援するチームをリードされている方の参考になれば幸いです。
明日の記事は同じチームの @kenmaz さんの “モダリティを考慮したiOSアプリのナビゲーションの再設計” です。引き続きお楽しみください。