Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

#MerpayTechFest 株式会社メルペイ Android Engineer Yoshihito Hanada 2016年にBackend Engineerとしてメルカリに入社。その後 Android Engineerにジョブチェンジ。 メルカリとメルペイ両方の開発を経験していること から、メルペイ機能をメルカリアプリに組み込むためのインテグレーションなどが 主な担当。

Slide 3

Slide 3 text

#MerpayTechFest 2021年4月に投稿されたこの記事に関連して、 実作業者として関わった経験をお話します https://note.com/techbookfest/n/na7fe68ab889e

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

#MerpayTechFest アップデートプロジェクト概要 ● Kotlin 1.3.31から1.3.72 / kotlinx.serializationは0.10.0から0.20.0 ● 修正ファイル数は255 ● commit数は137(merge commit含む)

Slide 6

Slide 6 text

#MerpayTechFest メルカリAndroidリポジトリ ● 開発者が多い ● 機能が多い(=モジュールも多い) ● 依存関係が複雑

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

#MerpayTechFest 解決すべき問題 ● 開発者が多い ● 機能が多い(=モジュールも多い) ● 依存関係が複雑 誰にレビューを依頼したらよいかわか らない...

Slide 9

Slide 9 text

#MerpayTechFest 解決すべき問題 ● 開発者が多い ● 機能が多い(=モジュールも多い) ● 依存関係が複雑 次から次へと新機能などがマージさ れ、developからのマージ時に多くの コンフリクト、対応すべきファイルが発 生する

Slide 10

Slide 10 text

#MerpayTechFest 解決すべき問題 ● 開発者が多い ● 機能が多い(=モジュールも多い) ● 依存関係が複雑 機能が多いため検証に時間がかか り、また依存関係も複雑なのでテスト パターンもその分増える

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

#MerpayTechFest レビューチェックリスト ● 修正されたファイルの一覧 ● すでにレビューされたか、担当者は誰か、などを一覧にしたもの ● 全体で何%くらいレビューが終わったかを誰でも確認できる ● developからのマージで対象ファイルが増えた場合には都度手動で追加 ● 主にレビュー担当者向け

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

#MerpayTechFest Unit Test ● 新しく修正が必要なファイルが追加されたときにもUnit Testで発見できるように したい ● 一見影響なさそうな部分でも渡す側/受け取る側でのテストを追加 ● チームのテストを手厚く書くという方針にも合致した

Slide 17

Slide 17 text

#MerpayTechFest 今後の課題:検証時間の短縮 ● 新しい機能が追加され続けるため検証にも時間がかかる ● 検証時間を短縮した ● 今回は年末の審査休止期間に一気に検証した

Slide 18

Slide 18 text

#MerpayTechFest 今後の課題:組織的な対応(Client Platform Group) ● Clientに共通の問題を解決するためのVirtual Group ● メルカリやメルペイのClient Engineer(iOS, Android)が参加している ● 参加は任意 ● 2020年5月頃から活動開始 ● いくつかのチームに分かれる ○ Build / Tool ○ Test / CI ○ Release / CD

Slide 19

Slide 19 text

#MerpayTechFest まとめ ● 現場レベルではいくつかの工夫が生まれた ● 組織をまたがる共通の課題を解決するための組織を作った ● 自動テストなど検証のさらなる効率化を進めていく必要がある