Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Merpay Tech Fest 2021_モバイルアプリの大規模開発における組織的なソフトウェア改善から得た学び / What we learned from systematic software improvements in large-scale mobile app development

Merpay Tech Fest 2021_モバイルアプリの大規模開発における組織的なソフトウェア改善から得た学び / What we learned from systematic software improvements in large-scale mobile app development

Merpay Tech Fest 2021は5日間のオンライン技術カンファレンスです。

IT企業で働くソフトウェアエンジニアおよびメルペイの技術スタックに興味がある方々を対象に2021年7月26日(月)から7月30日(金)までの5日間、開催します。 Merpay Tech Festは事業との関わりから技術への興味を深め、プロダクトやサービスを支えるエンジニアリングを知れるお祭りです。 セッションでは事業を支える組織・技術・課題などへの試行錯誤やアプローチを紹介予定です。お楽しみに!

■イベント関連情報
- 公式ウェブサイト:https://events.merpay.com/techfest-2021/
- 申し込みページ:https://mercari.connpass.com/event/215035/
- Twitterハッシュタグ: #MerpayTechFest

■リンク集
- メルカリ・メルペイイベント一覧:https://mercari.connpass.com/
- メルカリキャリアサイト:https://careers.mercari.com/
- メルカリエンジニアリングブログ:https://engineering.mercari.com/blog/
- メルカリエンジニア向けTwitterアカウント:https://twitter.com/mercaridevjp
- 株式会社メルペイ:https://jp.merpay.com/

92cdcff298e89e2fcd2fb705155c2d4b?s=128

mercari
PRO

July 27, 2021
Tweet

Transcript

  1. #MerpayTechFest Session Title モバイルアプリの大規模開発における 組織的なソフトウェア改善から得た学び Yoshihito Hanada 株式会社メルペイ Android Engineer

  2. #MerpayTechFest 株式会社メルペイ Android Engineer Yoshihito Hanada 2016年にBackend Engineerとしてメルカリに入社。その後 Android Engineerにジョブチェンジ。

    メルカリとメルペイ両方の開発を経験していること から、メルペイ機能をメルカリアプリに組み込むためのインテグレーションなどが 主な担当。
  3. #MerpayTechFest 2021年4月に投稿されたこの記事に関連して、 実作業者として関わった経験をお話します https://note.com/techbookfest/n/na7fe68ab889e

  4. #MerpayTechFest はじめに • Kotlinバージョンアップデートに約9ヶ月かけて学んだことをお話します • どういう問題が起きたか • 工夫したこと • 残課題

  5. #MerpayTechFest アップデートプロジェクト概要 • Kotlin 1.3.31から1.3.72 / kotlinx.serializationは0.10.0から0.20.0 • 修正ファイル数は255 •

    commit数は137(merge commit含む)
  6. #MerpayTechFest メルカリAndroidリポジトリ • 開発者が多い • 機能が多い(=モジュールも多い) • 依存関係が複雑

  7. #MerpayTechFest 解決すべき問題 • 開発者が多い • 機能が多い(=モジュールも多い) • 依存関係が複雑 人数が多いため、共通部分への責任 感が薄くなり、共通ライブラリのアップ

    デート作業が他人任せになっていた
  8. #MerpayTechFest 解決すべき問題 • 開発者が多い • 機能が多い(=モジュールも多い) • 依存関係が複雑 誰にレビューを依頼したらよいかわか らない...

  9. #MerpayTechFest 解決すべき問題 • 開発者が多い • 機能が多い(=モジュールも多い) • 依存関係が複雑 次から次へと新機能などがマージさ れ、developからのマージ時に多くの

    コンフリクト、対応すべきファイルが発 生する
  10. #MerpayTechFest 解決すべき問題 • 開発者が多い • 機能が多い(=モジュールも多い) • 依存関係が複雑 機能が多いため検証に時間がかか り、また依存関係も複雑なのでテスト

    パターンもその分増える
  11. #MerpayTechFest 解決すべき問題 • 開発者が多い • 機能が多い(=モジュールも多い) • 依存関係が複雑 初期の手動検証で発覚したが、 直接関係なさそうな部分でクラッシュ

    発生
  12. #MerpayTechFest いろいろ試して役に立ったもの • 修正事例集 • レビューチェックリスト • マイルストーン • Unit

    Test
  13. #MerpayTechFest 修正事例集 • 事前の調査や初期の修正作業により、パターンがあることがわかった • それぞれのパターンによる修正方法をgithubのPullRequestに記述 • 修正が必要になった場合には誰でも対応可能に Ex.) ▪

    Before JsonUtil.parse<SomeClass>(str) ▪ After JsonUtil.parse<SomeClass.serializer(), str)
  14. #MerpayTechFest レビューチェックリスト • 修正されたファイルの一覧 • すでにレビューされたか、担当者は誰か、などを一覧にしたもの • 全体で何%くらいレビューが終わったかを誰でも確認できる • developからのマージで対象ファイルが増えた場合には都度手動で追加

    • 主にレビュー担当者向け
  15. #MerpayTechFest マイルストーン • どこまで終わっており、今何をしているか • 定期的にシェアして関係者に状況を知らせていた • 主にマネージャやQAチーム向け

  16. #MerpayTechFest Unit Test • 新しく修正が必要なファイルが追加されたときにもUnit Testで発見できるように したい • 一見影響なさそうな部分でも渡す側/受け取る側でのテストを追加 •

    チームのテストを手厚く書くという方針にも合致した
  17. #MerpayTechFest 今後の課題:検証時間の短縮 • 新しい機能が追加され続けるため検証にも時間がかかる • 検証時間を短縮した • 今回は年末の審査休止期間に一気に検証した

  18. #MerpayTechFest 今後の課題:組織的な対応(Client Platform Group) • Clientに共通の問題を解決するためのVirtual Group • メルカリやメルペイのClient Engineer(iOS,

    Android)が参加している • 参加は任意 • 2020年5月頃から活動開始 • いくつかのチームに分かれる ◦ Build / Tool ◦ Test / CI ◦ Release / CD
  19. #MerpayTechFest まとめ • 現場レベルではいくつかの工夫が生まれた • 組織をまたがる共通の課題を解決するための組織を作った • 自動テストなど検証のさらなる効率化を進めていく必要がある