×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 まとめ ● 現場レベルではいくつかの工夫が生まれた ● 組織をまたがる共通の課題を解決するための組織を作った ● 自動テストなど検証のさらなる効率化を進めていく必要がある