Mercari 10years iOS Development
by
Motoki Narita
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
1 メルカリ10年間のiOS開発の歩み iOSDC Japan 2023 @motokiee
Slide 2
Slide 2 text
2 ● 株式会社メルカリ ● Director of Engineering ● 2016年入社 (在籍7年) ● メルカリ本体や新規事業の開発を経て 現在は Mobile, Web, Backend のArchitect チームを管轄 ● 現在 iOSアプリ開発はしていない ● 2016年〜2019年まで iOSDC の コアスタッフ @motokiee
Slide 3
Slide 3 text
3 10年で会社、サービス、iOS関連技術が どのように変化してきたか このトークで得られること 10年続くサービスのアーキテクチャや Tech Stack の変遷 エンジニアとしてこれからの変化にどう対応して いくかのヒント 02 03 01 04 温故知新、Connecting the dots
Slide 4
Slide 4 text
4 メルカリについて ミッション&バリュー
Slide 5
Slide 5 text
5 ミッション 「限りある資源を循環させ、より豊かな社会をつくりたい」。創業者である山田進太郎が世界一 周の旅で抱いた、そんな問題意識によって生まれたのがフリマアプリ「メルカリ」です。テクノロ ジーの力によって、世界中の個人と個人をつなぎ、誰もが簡単にモノの売り買いを楽しめる。 それにより資源を循環させる豊かな社会、個人がやりたいことを実現できる社会をつくってい きたいと考えています。 あらゆる価値を循環させ、 あらゆる人の可能性を広げる https://careers.mercari.com/jp/mission-values/
Slide 6
Slide 6 text
6 バリュー Go Bold All for One Be a Pro https://careers.mercari.com/jp/mission-values/
Slide 7
Slide 7 text
7 メルカリについて フリマサービスとして
Slide 8
Slide 8 text
8 https://about.mercari.com/press/news/articles/20230630_infographics/
Slide 9
Slide 9 text
9 https://about.mercari.com/press/news/articles/20230630_infographics/
Slide 10
Slide 10 text
10 https://about.mercari.com/press/news/articles/20230630_infographics/
Slide 11
Slide 11 text
11 https://about.mercari.com/press/news/articles/20230630_infographics/
Slide 12
Slide 12 text
12 Overview
Slide 13
Slide 13 text
13 年表
Slide 14
Slide 14 text
14 Build
Slide 15
Slide 15 text
15 Explore
Slide 16
Slide 16 text
16 Re-architecture and Foundation
Slide 17
Slide 17 text
17 Rewrite
Slide 18
Slide 18 text
18 Post Rewrite
Slide 19
Slide 19 text
19 2013年 メルカリの誕生
Slide 20
Slide 20 text
20 2013年のiOS周辺技術の主な出来事 ● iOS7が発表 ● iPhone 5s、iPhone 5c が発売
Slide 21
Slide 21 text
21 ● フリマアプリ「メルカリ」開始 ○ 2013年7月2日 にAndroid版スタート ○ 2013年7月23日 にiPhone版スタート ● 「App Store Best of 2013 今年のアプリ」を受賞 ○ https://about.mercari.com/press/news/articles/ 201312appstore/ サービスとしての主な出来事
Slide 22
Slide 22 text
22 https://about.mercari.com/press/news/articles/20230630_infographics/
Slide 23
Slide 23 text
23 2013年のプレスリリース https://about.mercari.com/press/news/articles/mercari_iphone/
Slide 24
Slide 24 text
24 v1.0.1のスクリーンショット(2013年7月リリース)
Slide 25
Slide 25 text
25 2013年: git log から見るメルカリiOS コミッター数 (重複あり) コミット数 diff 3 2,073 ++223,767 --123,973
Slide 26
Slide 26 text
26 メルカリiOSのイニシャルコミット JST だと 2013年03月15日(金) 21:17
Slide 27
Slide 27 text
27 このバージョンはステルスでリリースされていた模様 メルカリ最初のバージョンリリース
Slide 28
Slide 28 text
28 2013年7月18日、メルカリ v1.0.1 がストア公開される。対外的 には7月23日にプレスリリースを出している。 2013年3月の最初のコミットから約4ヶ月の開発期間を経ての リリースだった。 メルカリ最初のバージョンリリース
Slide 29
Slide 29 text
29 iPhone版リリース初日(7/23)は約2,000ダウンロード 年末までの半年弱で100万ダウンロードを突破する
Slide 30
Slide 30 text
30 ● Objective-C、MVC(Model-View-Controller)ベー スの開発 ○ iOS4~iOS7がサポート対象 ● UICollectionViewはiOS6以降サポートだったため、 iOS4, 5向けには PSTCollectionView を 使っていた ● AFNetworking, SVProgressHUDなどお馴染みの Libraryに加え、まだ Apple に買収される前の Testflight SDK も利用されていた 2013年の技術トピック1
Slide 31
Slide 31 text
31 ● スキューモフィズムUI ● 最初のPull Request(2013年3月18日)のassetを見 ると、スキューモフィズムでデザインされている 2013年の技術トピック2
Slide 32
Slide 32 text
32 2013年の技術トピック3 ● 最初期は WebViewベースのアプリを検討していた ● ベストな体験の提供が難しいと判断し、ネイティブでの 開発に切り替え
Slide 33
Slide 33 text
33 2014年 初のTV CM放映と急成長
Slide 34
Slide 34 text
34 2014年のiOS周辺技術の主な出来事 ● Swift 発表 ● iOS8 発表 ● iPhone 6, iPhone 6 Plus ● Apple Watch 発表 (9月、発売は2015年)
Slide 35
Slide 35 text
35 ● 初のテレビCM ● 500万ダウンロード突破(9月) ● カスタマーサービス(CS)拠点開設 ● メルカリUSがスタート 2014年のサービス・会社としての主な出来事
Slide 36
Slide 36 text
36 v3.0.0のスクリーンショット(2014年7月リリース)
Slide 37
Slide 37 text
37 2014年: git log から見るメルカリiOS コミット数 diff 5 2,627 ++334,919 --225,045 コミッター数 (重複あり)
Slide 38
Slide 38 text
38 ● 2014年7月にリリースされた v3.0.0 でデザインがリニューアルしフラット デザインっぽく ● 2019年のメルペイリリースまでv3系 が続くことになる長寿なバージョンに 2014年の技術トピック1
Slide 39
Slide 39 text
39 ● 引き続きObjective-C ○ 2014年にSwiftが発表されたものの、2014年内のソー スコードにSwiftのコードが入ることはなかった ● ReactiveCocoa が導入され、一部の画面で MVVM(Model-View-ViewModel)での実装がスタート ● CocoaPods でのライブラリ管理がスタート 2014年の技術トピック2
Slide 40
Slide 40 text
40 ● 日本とUSのサービスでソース コード共有されるようになる ● コードは共通だが、国ごとに ターゲットを分けて別バイナリ を配布するアプローチを採用 (後に見直される) 2014年の技術トピック3 https://speakerdeck.com/bricklife/iosban-gurobarudui- ying-falsemin-toji?slide=9
Slide 41
Slide 41 text
41 [オフトピック] 俺、お祈りされる ● 2014年初頭にメルカリに 応募していたが書類選考落ち ● 2016年に再チャレンジして入社
Slide 42
Slide 42 text
42 2015年 体験の磨き込み
Slide 43
Slide 43 text
43 2015年のiOS周辺技術の主な出来事 ● Swift 2 発表 ● iOS9 発表 ● iPhone 6s, iPhone 6s Plus ● Apple Watch 発売 (4月)
Slide 44
Slide 44 text
44 ● 1月に1000万ダウンロード突 破 ● らくらくメルカリ便の スタート ● 新規事業を手掛ける子会社 ソウゾウの設立 2015年のサービス・会社としての主な出来事 https://about.mercari.com/press/news/articles/20150202_infographic/
Slide 45
Slide 45 text
45 v3.3.1のスクリーンショット(2015年7月リリース)
Slide 46
Slide 46 text
46 2015年: git log から見るメルカリiOS コミット数 diff 11 3,123 ++545,784 --425,154 コミッター数 (重複あり)
Slide 47
Slide 47 text
47 2015年の技術トピック1 ● 一部の画面やExtensionがSwiftで実装される ● らくらくメルカリ便などフリマアプリとしての基本的な体験を 改善する施策が数多く実装
Slide 48
Slide 48 text
48 ● 前年導入したReactive Cococaに続き、新規事業で の RxSwift の導入がスタート ● 2015年後半から新規事業の準備が始まり、 Objective-Cではなく、フルSwift かつ RxSwift での 実装がスタートし、新しい技術の探索がはじまる 2015年の技術トピック2
Slide 49
Slide 49 text
49 2016年 USへのフォーカスと新規事業
Slide 50
Slide 50 text
50 ● iOS10 発表 ● iPhone 7, iPhone 7 Plus ● 第1回 iOSDC Japan 2016 が開催 2016年のiOS周辺技術の主な出来事
Slide 51
Slide 51 text
51 ● 参加者やスポンサーが集まるか不安なな かでのスタート ● 「誰も来てくれなかったら会場費用自腹で もくもく会をやる」と度々言っていた主催者 の長谷川さん ● メルカリは第1回から今回まで8年連続で iOSDC Japan をスポンサーとして応援し ています! 第1回 iOSDC Japan 2016 2016年1月 第一回スタッフ会議の様子
Slide 52
Slide 52 text
52 ● 匿名配送でより安心して取引できるように ● アメリカのApp Store で US版メルカリが Top3にラ ンクイン ● 新規事業である メルカリ アッテ がリリース (クローズ済み) 2016年のサービス・会社としての主な出来事 https://about.mercari.com/press/news/articles/20160317_mercariatte/
Slide 53
Slide 53 text
53 v3.6.0のスクリーンショット(2016年8月リリース)
Slide 54
Slide 54 text
54 2016年: git log から見るメルカリiOS コミット数 diff 16 5,040 ++2,087,799 --1,461,087 コミッター数 (重複あり)
Slide 55
Slide 55 text
55 ● メルカリ本体ではReactiveCococa、新規事業では RxSwift が採用され、リアクティブプログラミングの知 見が社内に溜まっていく ● メルカリ本体はObjective-C と Swift の併用、新規事 業はフルSwift ● Carthage が導入される 2016年の技術トピック
Slide 56
Slide 56 text
56 10年の調査に必要だったもの オフトピック インターネットサービスの考古学
Slide 57
Slide 57 text
57 バージョン管理ツールを使う ● コードはバージョン管理されているので 一番カンタン ● git, GitHubなどでログを見ればOK ● 複雑な条件のシェルスクリプトを ChatGPTに依頼
Slide 58
Slide 58 text
58 ● 昔からいる人に話を聞く ● 10年経過すると退職されている方が多い ● 直接に聞くのも憚れるためなんとか自分でデータを 発掘することに 先人に頼る
Slide 59
Slide 59 text
59 ● Slackで過去ログを検索 ● 10年経つとコミュニケーションツールも変わる ● Slack導入以前の情報を得るには別のツールに頼 る必要がある ● メルカリ社内の歴史はSlack以前、以後に分かれ る コミュニケーションツールを使う
Slide 60
Slide 60 text
60 ● プロダクトの情報としては信頼度が高い ● ただし途中で Redmine から JIRAに切り替わっている ● Redmineもまだ生きているが検索はもうできない ○ どちらにしろチケット多すぎて見きれない ○ Pull Request に書かれているチケット番号らしきものを 手がかりにして調査しながら当時の動きや流れを把握 チケット管理ツールの探索
Slide 61
Slide 61 text
61 デザインファイルの捜索 ● デザインファイルはコードのようにバージョン管理されない ● この10年でツールが目まぐるしく移り変わった ○ Photoshop, Sketch, Zeplin, Figma ● 管理する場所も Dropbox → Google Drive に ● 在籍歴の長いデザイナーに発掘を依頼しGet ● App Store Connect APIを駆使してスクリーンショットの発掘に 成功
Slide 62
Slide 62 text
62 ● git, GitHub を使う ● 先人に頼る ● コミュニケーションツールを使う ● チケット管理ツールで検索 ● デザインファイルをたどる → git 以外はいずれもなくなってしまう可能性が高い まとめ Tips
Slide 63
Slide 63 text
63 2017年 New Businesses
Slide 64
Slide 64 text
64 2017年のiOS周辺技術の主な出来事 ● iOS11 発表 ● iPhone X
Slide 65
Slide 65 text
65 ● 出品機能にAI導入 ○ 画像からタイトルやカテゴリを推測 ● ゆうゆうメルカリ便の提供開始 ● 1億ダウンロードを突破(12月) 2017年のサービス・会社としての主な出来事 1
Slide 66
Slide 66 text
66 ● USメルカリがリニューアル(iOS版は6月) ● イギリスでサービスローンチ(3月) ※終了済み ● メルカリ内新サービスや姉妹アプリが続々とリリース ○ メルカリ カウル(5月) ○ メルカリ メゾンズ(8月) ○ メルカリチャンネル (7月) ○ メルカリ Now(11月) ○ ※全てクローズ済み ● メルペイ設立 2017年のサービス・会社としての主な出来事 2
Slide 67
Slide 67 text
67 v3.25.0のスクリーンショット(2017年7月リリース)
Slide 68
Slide 68 text
68 2017年: git log から見るメルカリiOS コミット数 diff 24 6,057 ++401,142 --362,530 コミッター数 (重複あり)
Slide 69
Slide 69 text
69 ● USアプリのRewriteプロジェクト “Double” は ネイティブコードに加えて React Native を導入 ● ソウゾウから立ち上がった姉妹アプリは全てメルカリ アッテの 設計をベースとし、Swift, RxSwift, MVVM で 開発されていた ● メルカリ本体の新機能のメルカリNow、 メルカリチャンネルもSwiftでの開発 2017年の技術トピック1
Slide 70
Slide 70 text
70 2017年の技術トピック2 ● Objective-C と Swift 、新しい画面と古い画面が 混在するようになり少しずつ課題となってきていた ● 事業として重要なコンポーネントほど複雑になる一方、 複雑がゆえに改修が困難な状態 ● また複数人で同じ機能に改修を入れる際、コンフリクトが発生 しやすくなり、人数を増やしても開発の速度が 上がりづらくなっていた
Slide 71
Slide 71 text
71 2018年 Re-architecture
Slide 72
Slide 72 text
72 ● iOS12 発表 ● iPhone Xs, iPhone Xs Max, iPhone XR 2018年のiOS周辺技術の主な出来事
Slide 73
Slide 73 text
73 ● メルチャリのリリース(2月) ※事業譲渡済み ● マザーズ上場(6月) ● メルカリロゴのリニューアル (10月) ● メルカリ アッテ、メルカリ カウル、メルカリ メゾン ズ、メルカリNOW などがクローズ ● 海外からの採用が進む 2018年のサービス・会社としての主な出来事
Slide 74
Slide 74 text
74 2018年: git log から見るメルカリiOS コミット数 diff 93 22,522 ++1,006,104 --724,462 コミッター数 (重複あり)
Slide 75
Slide 75 text
75 2018年10月 ロゴリニューアル
Slide 76
Slide 76 text
76 v3.53.0のスクリーンショット(2018年7月リリース)
Slide 77
Slide 77 text
77 v3.60.0のスクリーンショット(2018年10月リリース)
Slide 78
Slide 78 text
78 2018年の技術トピック - Re-architecture ● アプリのフル書き換えは選択せず、少しずつ画面を書き換 えていく方針 ● コンポーネントベースで同時並行での開発を可能にする MicroViewController ● 複雑な画面の書き換えを目的とし、 テストや仕様書を充実させながらプロジェクト進行
Slide 79
Slide 79 text
79 2018年の技術トピック - Re-architecture https://fortee.jp/iosdc-japan-2018/proposal/ef7c210d-d4dc-4a91-9601-e9d1edba441a
Slide 80
Slide 80 text
80 ● ロールアウトプラン ○ 新旧画面で機能は変更せず、A/Bテストを実施してKPI に劣後が出ないかを確認しながらロールアウト実施 ○ Feature Flag で新旧画面を切り替え、BIチームと連携 して重要指標をトラッキング 2018年の技術トピック - Re-architecture
Slide 81
Slide 81 text
81 ● 結果1: 事業にも良い影響 ○ 主要画面(出品、商品詳細、検索)の書き換え完了 ○ 一部の画面ではパフォーマンスチューニングの結果、事 業KPIを大きく向上させたもの 2018年の技術トピック - Re-architecture
Slide 82
Slide 82 text
82 2018年の技術トピック - Re-architecture AB test started New ItemDetail Legacy ItemDetail
Slide 83
Slide 83 text
83 ● 結果2: 着実に進行したが一部課題も残る ○ 2018年7月にスタート以降、継続して取り組みが行われ 約1年後には全ての画面のリプレイスが完了 ○ テストは以前に比べてかなり充実 ○ 仕様書については継続的にアップデートが行われず課 題として残り続けることになった 2018年の技術トピック - Re-architecture
Slide 84
Slide 84 text
84 ● 結果3: エンジニアの人数と比例して生産性も向上 ○ コミッター数が 約4倍に ○ コミット数が 3倍以上に ○ コードの追加・削除も文字通り"桁違い"に ■ 2017: ++401,142, --362,530 ■ 2018: ++1,006,104, --724,462 2018年の技術トピック - Re-architecture
Slide 85
Slide 85 text
85 開発速度が急加速
Slide 86
Slide 86 text
86 ● チームとしての変化 ● プロダクト開発を行うチームとは別に横断的な改善の 重要度が上がり、“iOS Core” チームが組成 ● 2023年現在も Mobile Architect と Mobile Platform と名称を変更して継続している 2018年の技術トピック
Slide 87
Slide 87 text
87 ● バックエンドで Microservice Migration がスタート ● gRPC がバックエンドで使われ始め、 クライアントで Protocol Buffers が利用され始める 2018年の技術トピック
Slide 88
Slide 88 text
88 2019年 メルペイスタート
Slide 89
Slide 89 text
89 ● メルペイローンチ(2月) 2019年のサービス・会社としての主な出来事
Slide 90
Slide 90 text
90 ● SwiftUI発表 ● iOS13, ダークモード 発表 ● iPhone 11, iPhone 11 Pro, iPhone 11 Pro Max ● iPadOS が iOS から独立 2019年のiOS周辺技術の主な出来事
Slide 91
Slide 91 text
91 v4.0.0のスクリーンショット(2019年2月リリース)
Slide 92
Slide 92 text
92 ● スマホ決済機能をメルカリアプリに組み込むための “Merpay Integration” プロジェクトが2018年から進行 ● Merpay はSDKとしてモジュール化して提供、 2018年から進行していたRe-architecture と並行して開 発が進んでいた 2019年の技術トピック1
Slide 93
Slide 93 text
93 ハンバーガーメニューから下タブUIへ 2019年の技術トピック2
Slide 94
Slide 94 text
94 2019年: git log から見るメルカリiOS コミット数 diff 130 35,602 ++1,176,271 --2,225,962 コミッター数 (重複あり)
Slide 95
Slide 95 text
95 2019年の技術トピック2 ● Re-architecture が約1年を掛けて完了 ○ 主要画面以外のRe-architectureも完了 ○ 下タブ化 = Merpay Integration が完了
Slide 96
Slide 96 text
96 ● Re-architectureによって大部分が Swift に書き換えられた ● Re-architecture 前後での比較 (2018年→2019年) ○ Swift: 約20% → 約85% ○ Objective-C: 約75% → 約15% 2019年の技術トピック3
Slide 97
Slide 97 text
97 ● Design System プロジェクトがスタート ○ スケーラブルな開発を実現しながら、 一貫したデザインと体験を実現するための PM/Designer/Software Engineerの共通言語が必 要だった ○ Re-architecture された画面をベースに Design System コンポーネントを適用 2019年の技術トピック4
Slide 98
Slide 98 text
98 2020年 GroundUp Appプロジェクト始動
Slide 99
Slide 99 text
99 ● iOS14 ● iPhone 12, iPhone 12 mini, iPhone 12 Pro, iPhone 12 Pro Max ● Apple Silicon 発表、M1 MacBook 発売 2020年のiOS周辺技術の主な出来事
Slide 100
Slide 100 text
100 v4.33.0のスクリーンショット(2020年7月リリース)
Slide 101
Slide 101 text
101 2020年: git log から見るメルカリiOS コミット数 diff 134 29,186 ++436,644 --323,477 コミッター数 (重複あり)
Slide 102
Slide 102 text
102 ● アプリ開発周辺基盤強化が本格化 ○ Design System (2019年から継続) ○ Test Automation (UI Test 強化) ○ Weekly Release ○ Client Event Logging 2020年の技術トピック - アプリ開発周辺基盤強化
Slide 103
Slide 103 text
103 2020年の技術トピック - アプリ開発周辺基盤強化 ● アプリ開発周辺基盤強化の背景 ○ 2018年からメルカリ・メルペイなど グループ会社をまたぐ活動が増加 ○ スケーラビリティを実現しつつ、機動力を 維持するシステムやメカニズムの 需要が高まった
Slide 104
Slide 104 text
104 ● GroundUp App プロジェクトの開始 ● アプリをゼロから書き換えるプロジェクト ● 大規模リファクタリングではなく、 "GroundUp" でベースから書き直すことを選択 ● “式年遷宮” を行う意思決定 2020年の技術トピック - GroundUp App 始動
Slide 105
Slide 105 text
105 ● 方針 ○ 宣言的UI (Swift UI, Jetpack Compose) をベースに iOS/Androidアプリをゼロから作り直し、Platform が提 供する新機能に素早く対応していけるようベースから書き 直す ○ レガシーアプリ開発チームとは別に専属チームが 独立して開発をスタート 2020年の技術トピック - GroundUp App 始動
Slide 106
Slide 106 text
106 GroundUp App / Micro Modular Architecture https://fortee.jp/iosdc-japan-2020/proposal/28a29ff0-37e1-41fd-82d4-74f20c4df864
Slide 107
Slide 107 text
107 2020年: git log から見るメルカリiOS (GroundUp) コミット数 diff 24 2,187 ++103,972 --39,064 コミッター数 (重複あり)
Slide 108
Slide 108 text
108 2020年: git log から見るメルカリiOS (レガシー) コミット数 diff 134 29,186 ++436,644 --323,477 コミッター数 (重複あり)
Slide 109
Slide 109 text
109 2021年 再チャレンジ
Slide 110
Slide 110 text
110 ● iOS15 発表 ● iPhone 13, iPhone 13 mini, iPhone 13 Pro, iPhone 13 Pro Max 2021年のiOS周辺技術の主な出来事
Slide 111
Slide 111 text
111 v4.62.0のスクリーンショット(2021年7月リリース)
Slide 112
Slide 112 text
112 2021年: git log から見るメルカリiOS (レガシー) コミット数 diff 121 16,020 ++433,319 --482,194 コミッター数 (重複あり)
Slide 113
Slide 113 text
113 2021年: git log から見るメルカリiOS (GroundUp) コミット数 diff 60 2,099 ++242,034 --70,667 コミッター数 (重複あり)
Slide 114
Slide 114 text
114 ● Weekly Release スタート ● アプリの更新サイクルが2週に1 度のリリースから週1リリースへ ● 自動化によりリリース判定テス トを1日に短縮するなどこれまで の取り組みを土台として実現 2021年の技術トピック1 https://engineering.mercari.com/blog/entry/20211210-b5d0a7dc9c/
Slide 115
Slide 115 text
115 ● メルカリShops をフルスクラッチで開発 ● WebViewベースでメルカリアプリ内に提供がスタートする 2021年の技術トピック2 - メルカリShops
Slide 116
Slide 116 text
116 ● USメルカリでは、React Native で フルスクラッチでアプリを書き直す プロジェクト “Denali” が4月にス タート ● USでは2017年以来、2回目のリラ イトプロジェクト 2021年の技術要素 - 3 https://medium.com/mercari-engineering/why-we-de cided-to-rewrite-our-ios-android-apps-from-scratch-i n-react-native-9f1737558299
Slide 117
Slide 117 text
117 2022年 GroundUp App
Slide 118
Slide 118 text
118 ● iOS16 発表 ● iPhone 14, iPhone 14 Plus, iPhone 14 Pro, iPhone 14 Pro Max ● PassKey 2022年のiOS周辺技術の主な出来事
Slide 119
Slide 119 text
119 2022年のサービス・会社としての主な出来事 ● Mercari India 設立 (6月) ● メルカリアプリのリプレース完了 (9月) ● メルカード提供開始 (11月)
Slide 120
Slide 120 text
120 v4.106.0のスクリーンショット(2022年7月リリース)
Slide 121
Slide 121 text
121 v5.17.1のスクリーンショット(2022年9月リリース)
Slide 122
Slide 122 text
122 2022年: git log から見るメルカリiOS (レガシー) コミット数 diff 58 1,536 ++24,061 --34,238 コミッター数 (重複あり)
Slide 123
Slide 123 text
123 2022年: git log から見るメルカリiOS (GroundUp) コミット数 diff 91 4,803 ++807,010 --163,386 コミッター数 (重複あり)
Slide 124
Slide 124 text
124 ● Legacy リポジトリ のコードフリーズを実施 ● iOSエンジニアも全て GroundUp App の開発に移り、 2022年9月に GroundUp App の v5系がリリースされプ ロジェクト完了 ● GroundUp App を前提に進んでいたプロジェクトもあった ため、全社を挙げてのプロジェクトとなった GroundUp App リリース
Slide 125
Slide 125 text
125 1. TestFlight でベータテスト(4月-7月) ○ バグリポートを集め修正 2. App Store への部分的リリース(7月-9月) ○ Weekly Release は維持 ○ Legacy App(v4系) リリースは停止 ○ GroundUp App (v5系) 段階リリースで徐々にロールアウト 3. Full Public Release (9.20にv5系を100%公開) GroundUp App ロールアウトプラン
Slide 126
Slide 126 text
126 Post GroundUp App Objective-C のコードがなくなる
Slide 127
Slide 127 text
127 ● Merpay のような本体アプリとは別に管理されていた iOSアプリ関連リポジトリを、全てGroundUp リポジトリに統合する “monorepo” 化を実施 ● USアプリを React Native で書き換える “Denali” も 4月にリリース 2022年の技術トピック
Slide 128
Slide 128 text
128 https://mercan.mercari.com/articles/36183/, https://mercan.mercari.com/articles/35887/
Slide 129
Slide 129 text
129 2023年 10年
Slide 130
Slide 130 text
130 ● iOS17 発表 ● Apple Vision Pro, visionOS 発表 2023年のiOS周辺技術の主な出来事
Slide 131
Slide 131 text
131 2023年のサービス・会社としての主な出来事2 ● ビットコイン取引サービス提供開始(3月) ● PassKey対応 (4月) ● Mercari ChatGPTプラグイン提供開始(7月) ● アプリローンチ10年(7月)
Slide 132
Slide 132 text
132 2023年: git log から見るメルカリiOS (レガシー) コミット数 diff 0 0 0 コミッター数 (重複あり)
Slide 133
Slide 133 text
133 GroundUp App 後もメンテナンスのためアーカイブされてい なかった 初代メルカリiOSアプリのリポジトリが2023年5月23日にアーカ イブ。 2013年3月の “Initial Commit” から 10年を経て幕を降ろし た。 R.I.P レガシーiOSリポジトリ
Slide 134
Slide 134 text
134 メルカリiOS (レガシー) 通算記録 通算コミット数 213 通算Pull Request 152,456 35,969 通算コミッター数 (重複あり, Bot 含む)
Slide 135
Slide 135 text
135 2023年: git log から見るメルカリiOS (GroundUp) コミット数 diff 79 3,830 ++307,551 --127,080 コミッター数 (重複あり)
Slide 136
Slide 136 text
136 v5.57.0のスクリーンショット(2023年7月リリース)
Slide 137
Slide 137 text
137 2013 2023
Slide 138
Slide 138 text
138 ● Architecture v2 ● PassKeys ● Performance Observation Platform ● Release cycle stabilization いま取り組んでいること
Slide 139
Slide 139 text
139 Conclusion
Slide 140
Slide 140 text
140 ● 変化は徐々に起こることも、突然表れることもある ○ 技術の変化 ○ プロダクト、ビジネス、組織の変化 ● どのように適応していくか? Conclusion
Slide 141
Slide 141 text
141 ● Apple プラットフォームでは、新しい技術要素も2-3年後に はスタンダードに変化していくサイクル ● メルカリの場合 ○ Swift 発表 (2014年) ■ → フルSwiftアプリ登場が2016年 (メルカリ アッテ) ○ SwiftUI 発表 (2019年) ■ → SwiftUIへの書き換え完了(2022年) 技術変化への適応
Slide 142
Slide 142 text
142 プロダクト、ビジネス、組織による環境の変化への適応 ● メルカリでの組織的な取り組み ○ Re-design (2014, 2019) ○ Re-architecture(2018-2019) ○ Re-write(2020-2022) ○ US Re-write (2017, 2021-2022) ○ Core/Architectチームの設立(2018年〜) ○ アプリ開発周辺基盤強化(2019年〜)
Slide 143
Slide 143 text
143 ● メルカリは様々な変化に対してプロアクティブに対応してきてい る ● ただし、振り返ってみると当たり前のように感じるターニングポ イントも、その瞬間は確信を持って意思決定が行われたわけで はない ○ Q. Re-architecture が終わって間もなくゼロから書き直す 判断ができるか?すべきか? ○ Q. いま Cross Platform や WebView を選択すべきか? Conclusion
Slide 144
Slide 144 text
144 Conclusion ● 完璧な答えはないものの、それでもエンジニアとして最善と 思える答えを出さなければならない ● そんなとき、この10年の振り返りが力になれば嬉しい
Slide 145
Slide 145 text
145 メルカリはこれからもチャレンジを続けます Go Bold All for One Be a Pro
Slide 146
Slide 146 text
146 ARIGATO!