Slide 1

Slide 1 text

minneを通じて感じた歴史とそ の先を見据えた取り組みや挑戦 に触れて 酒井文也(fumy) / GMO PEPABO inc. 2023.09.03 iOSDC Japan 2023 スポンサーセッション 1

Slide 2

Slide 2 text

2 自己紹介 minne事業部 プロダクト開発チーム シニアエンジニア 2023年 中途入社 酒井 文也 Sakai Fumiya 現在はminneのiOSアプリ開発を中心として携わってお ります。(時々Androidを書いたりBackend側のコードを 読んだり。)毎日が刺激的&勉強です。 ● 2021年振りのiOSDC登壇になります。 ● 今年はパンフレット原稿を2本寄稿しました! ● Twitter & GitHub : @fumiyasac

Slide 3

Slide 3 text

読み方 ジーエムオーペパボ 設立 2003年1月10日 証券コード 3633(東京証券取引所プライム市場 ) 売上高(連結) 105億3,125万円(第21期 2022年1月~2022年12月) 従業員数 475名(2022年12月末時点) もっとおもしろくできる 企業理念 ミッション 人類のアウトプットを増やす

Slide 4

Slide 4 text

4

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

6 本日お話すること 1. minne iOSアプリの概要紹介 2. 11年という歴史があるアプリから見えるコト 3. 先人達が築いた歴史から学ぶ知見 4. その先を見据えた取り組みに関する事例紹介 1. MVVM + SwiftUIへリプレイスする取り組み 2. iOSアプリの基盤部分の変化へできる限り追従する挑戦 3. 施策や調整時のWebエンジニアとの積極的な関わりや共同作業 5. 私が自発的に挑戦していることの例

Slide 7

Slide 7 text

1. minne iOSアプリの 概要紹介 7

Slide 8

Slide 8 text

8 1. minne iOSアプリの概要紹介 minne(ミンネ)は、ハンドメイド作品を「買いたい人」と「売りたい人」をつなぐ国内最大のハンドメイドマー ケットです。パソコンやスマートフォンを使って、簡単にハンドメイド作品を販売・購入できます。

Slide 9

Slide 9 text

9 1. minne iOSアプリの概要紹介 海外配送 アクセス解析機能 多様な決済方法 minne ギフトチケット minneは作品を販売する作家・ブランドやお買い物をする購入者など、すべての人が使いやすいサービス を目指し、新機能の開発や拡充を行っています。 作家・購入者双方の皆様に愛されるプロダクトを更に目指した取り組み

Slide 10

Slide 10 text

10 1. minne iOSアプリの概要紹介 作品の閲覧や購入を行う導線の画面の中で心地良いアニメーションを散りばめています。 ✨ 作品を更に生かす動きや表現 作品写真が 浮かび上がる Transition お気に入り 追加時の Animation カートタブへ 吸い込まれる Animation

Slide 11

Slide 11 text

2. 11年という歴史がある アプリから見えるコト 11

Slide 12

Slide 12 text

2. 11年という歴史があるアプリから見えるコト 12 Webエンジニアとの 積極的なコラボレー ションの実践 仕組みや自動化の 推進や手順等のパ ターン化ノウハウ 機能開発や施策を実 施した際の取り組み と過程 12 👍 歴史のあゆみと共に得られた知見 これまでの大小様々な機能に関する開発&運用ノウハウに留まらず、外部サービス連携・膨大なデータ・そ の他関連する技術に関する知識等もミックスされている。

Slide 13

Slide 13 text

2. 11年という歴史があるアプリから見えるコト 13 開発時点に加えて その先を見越した 設計や実装が必要 修正や開発内容が 及ぶ影響範囲への 意識が必要 歴史的な経緯を 理解した前提で 進めていく必要 13 規模がまだ小さかったり、データがまだ少ない場合には「気にしなくても問題ない」と思っていた部分が大規 模になった途端に落とし穴となってしまうなケースには要注意! 💦 歴史が長いが故の大変さ

Slide 14

Slide 14 text

3. 先人達が築いた 歴史から学ぶ知見 14

Slide 15

Slide 15 text

3. 先人達が築いた歴史から学ぶ知見 15 以前学んだことや、昔の事柄を今また調べなおしたり考えなおしたりして、新たに新しい道理や知 識を探り当てること。 故きを温ねて新しきを知る GitHub上に残っているIssueやPull Request内に残されている実装と関連する議論の軌跡、 コード内の実装やテストコード、ドキュメント等の内部資料は偉大な財産。 現状を正しく把握した上でその先を見据えた取り組みをする 🧠✨私はこう解釈しました

Slide 16

Slide 16 text

3. 先人達が築いた歴史から学ぶ知見 16 例1. Architectureに関する全体方針

Slide 17

Slide 17 text

3. 先人達が築いた歴史から学ぶ知見 17 例2. 過去検討していた技術例 参考: https://www.pointfree.co/collections/composable-architecture 「The Composable Architecture」 Reduxに近い構造を有する単一方向 のデータフローで管理するアーキテク チャを検討した経緯が過去にありまし た。 結果的には検討&一部画面で試験導 入までではあったが、その過程はとて も勉強になりました。 1. カート画面 2. 注文確認画面 3. 認証画面 状態管理が 複雑になる 画面例 確かにMVVM でも大変💦

Slide 18

Slide 18 text

3. 先人達が築いた歴史から学ぶ知見 18 例3. ドキュメント文化と聞き易さ 平素はもちろんドキュメントも交えた活 発なコミュニケーション。 Wiki記載ノウハウ&Notion活用

Slide 19

Slide 19 text

4. その先を見据えた 取り組みに関する事例紹介 19

Slide 20

Slide 20 text

4. その先を見据えた取り組みに関する事例紹介 例1. MVVM + SwiftUIへリプレイスする取り組み • View要素関連処理のSimple化ができるメリット とはいえ、iOS14以降はUICollectionView関連処理の恩恵もあるので、画面に応じてはこちらの方がより良さを生かせる場合もあります。 ScrollView LazyVStack Listをベースとした画面 SwiftUI + Combine + MVVMを利用した処理へ統一 画面表示内容によっては UICollectionViewを利用 UICollectionViewCompositionalLayout DiffableDataSource + Combine + MVVM

Slide 21

Slide 21 text

4. その先を見据えた取り組みに関する事例紹介 Question. この画面のうちSwiftUI製のものはどれでしょう? 口座情報 検索結果 カート 注文内容確認

Slide 22

Slide 22 text

4. その先を見据えた取り組みに関する事例紹介 Answer. 正解はこちらになります! 口座情報 検索結果 カート 注文内容確認 ❌ ⭕ ❌ ❌

Slide 23

Slide 23 text

4. その先を見据えた取り組みに関する事例紹介 余談. 私が実装した画面における事例紹介 ※内容詳細はPepabo Tech Blogに詳細を記載しています。 https://tech.pepabo.com/2023/05/24/minne-ios-refactoring-swiftui/

Slide 24

Slide 24 text

4. その先を見据えた取り組みに関する事例紹介 例2. iOSアプリの基盤部分の変化へできる限り追従する挑戦 • 今後も施策と並行しながら導入中の OSSはバージョンアップに追従する • fastlane等の自動化のベースをなす様な物については動向等を定期的に確認する 「Apollo iOS (Ver0.x 👉 Ver1.x)」 - 追加要素への新規対応 - apollo-ios-cliへの対応 - コード自動生成 - Schemaのダウンロード - npm関連部分の削除 ※Apolloについては導入方法から内部処理まで全体的に及ぶ破壊的な変更がありました。対応して頂いた先輩社員の方には本当に感謝しております!

Slide 25

Slide 25 text

4. その先を見据えた取り組みに関する事例紹介 例3. 施策や調整時のデザイナー・Webエンジニアと積極的な関わりや共同作業 Designer Mobile Engineer Web Engineer • 活発であること&専門領域外でも知見を持つメンバーもいる点は助かっています

Slide 26

Slide 26 text

4. その先を見据えた取り組みに関する事例紹介 その他. ChatGPTを活用したPullRequestのサマライズ • 昨今のChatGPTやAIの進化に乗っていく様な動きも試験的に導入 ※Bitrise内ワークフロー抜粋 BitriseでBuild実行前にPreBuildDangerファイル内記載内容を実行 既存のCI機構の中でPullRequest作成時 にBuild前にGitHub Actionsでdangerを 実行し内容確認をするフローに追記。

Slide 27

Slide 27 text

5. 私が自発的に 挑戦していることの例 27

Slide 28

Slide 28 text

自分が過去に6年程Backend側の開発経験があったので、ブランクはあれどもその際の経験も生かしてみ たいと思った点や、数年前に Android開発に携わった経験も今後は生かしたいと思う所存です。 5. 私が自発的に挑戦していることの例 28 Ruby (Rails + GraphQL) 現在はまだまだコードを読む段階 までですが、今以上に Webエンジ ニアの皆様との共同作業ができる 様にしていきたいです。 Android + Kotlin こちらもiOSアプリ開発の経験に 比べると拙いですが、見比べる際 や簡単な機能開発の機会にはコ ミットしていきたいです。 28

Slide 29

Slide 29 text

まとめ&告知事項 29 • 歴史が長いアプリならではの良い所&改善に繋がる所に目を向けてみる • 開発の歴史の中には現在の開発に繋がるヒントがある • これまでの先人が培ってきた知見が財産になる • 新しい技術を活用できそうな部分への積極的なアプローチをしてみる • これまでの自分の経験から活用できそうな部分を見出してみる 本発表のまとめ これからもユーザーへの価値提供&良き歴史を残していく「やっていき 🍊」

Slide 30

Slide 30 text

30 GMOペパボでの取り組み&アウトプット紹介 Pepabo Tech Portal ペパボHRブログ ペパボ研究所

Slide 31

Slide 31 text

31 Thank You! Thank You!