Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ReactNative のアプリを Swift に置き換えてます
Search
hayatan
February 24, 2021
Technology
0
710
ReactNative のアプリを Swift に置き換えてます
DMM meetup #26 〜とある事業が抱える課題と改善に向けた取り組み〜
https://dmm.connpass.com/event/203927/
hayatan
February 24, 2021
Tweet
Share
More Decks by hayatan
See All by hayatan
DMMオンラインサロンアプリのSwift化
hayatan
0
520
アプリ内課金 リジェクトとAppleとのやり取りのお話
hayatan
1
1.7k
Other Decks in Technology
See All in Technology
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
630
Cosmos World Foundation Model Platform for Physical AI
takmin
0
800
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
920
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
180
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
620
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
160
What happened to RubyGems and what can we learn?
mikemcquaid
0
280
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
110
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
370
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.3k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
120
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
So, you think you're a good person
axbom
PRO
2
1.9k
Producing Creativity
orderedlist
PRO
348
40k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Deep Space Network (abreviated)
tonyrice
0
47
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Transcript
DMM MEETUP #26 React Native Swift ⼤⾨弘明 で書かれたアプリを で書き直しています
⾃⼰紹介 About me ⼤⾨弘明 合同会社DMM.COM エンターテインメント本部 オンラインサロン事業部 2014年: 新卒⼊社 いくつかのiOSアプリの保守や新規開発をするなど
2020年: オンラインサロン事業部にジョイン 主にiOSアプリを担当している
⽇ すこと A brief outline 僕にとって React Native はつらい React
Native to Swift は つらいが 理ではない ↑のような気持ちと の
僕にとってReactNativeはつらい
ライブ オーナーから 知 タイムライン Product 専⽤コミュニティアプリ 「DMM オンラインサロン専⽤コミュニティ」 を⽤いたサロンの 員専⽤のiOS
アプリ。
つらいこと React Native が負債に アップデートがしんどい
アップデートがしんどい そもそもしんどい Apple に従う ( OS, ATS, UIWebView...) これはどのみちつきまとう ReactNative
のアップデートがしんどい Xcode, RN, ライブラリ すべて動作するように 性のなくなるライブラリがある 式じゃないからRN ⾃体が いで、ライブラリはさらに そもそも僕は React Native がわからない Web フロントの技 は専⾨ アロー , スプレッド構 を ⽤した の羅列つらい
React Native が負債に iOS / Swift / JS / React
Native すべての い理 が必 当 はフロントエンドエンジニア主 で開発 iOS エンジニアがいなかった当時としてはベストな 択 iOS エンジニアを れてスピード/ 品 Up るが・・・ 度は JS, React Native が⾜かせに 得 野を⽣かせずつらい React Native を利⽤している 味はあまりない iOS のみ このまま使い けていくとデメリットの に苦しめられる
つらいこと React Native のアップデート もするからしんどい iOS エンジニアがJOIN したが スピードを し切れない
→Swift化して負債脱却しよう! React Native が負債に アップデートがしんどい
React Native → Swift は つらいが 理ではない React Native →
Swift
Swift の流れ Xcode, React Native を に Swift 基 を作る
的に Swift する
Swift の流れ Xcode, React Native を に Swift 基 を作る
的に Swift する
Xcode, React Native を に まずはビルドできるように Xcode と React Native
を にしてビルドが るまでエラーを り いていく → ひたすらトライアンドエラー npm のライブラリが していない場 npm の ライブラリがアップデートできない場 がある アップデートすると動作が保 できないやつ のXcode, React Native に していないやつ PR 状 でマージされてないやつ → patch-package を利⽤する
patch-package npm でインストールしたライブラリに パッチを当ててくれるツール https://github.com/ds300/patch-package ネイティブ にも利⽤可 Objectice-C(.m) ファイル や
podspec ファイル等も 正できる
patch-package 例: Podspec のReact だけ 正したい場 Xcode12 でビルドするために React を
React-Core に 更する必 があった。
Swift の流れ Xcode, React Native を に ビルドが るまでエラーを り
いていく npm のライブラリが していない場 patch-package を利⽤して 正 Swift 基 を作る 的に Swift する
Swift の流れ Xcode, React Native を に ビルドが るまでエラーを り
いていく npm のライブラリが していない場 patch-package を利⽤して 正 Swift 基 を作る 的に Swift する
内 奨アーキテクチャ VIPER ライクの 内 奨アーキテクチャを採⽤して 技 の流動 を る
React Native も1 つのモジュールとして利⽤ マルチモジュール で いずれ消えゆく React Native も1 つのモジュールとして、 ネイティブに ⾏した や ⾯からは しないように で る
Presenter⾃体は 状態を持たない Interacterは機能の呼び出しや ドメインの取得を⾏う
None
画⾯や機能のまとまりごとにFeatureモジュールを作る 画⾯や機能のまとまりごとにFeatureモジュールを作る ReactNative部分は1つのFeatureとしてモジュール化する ReactNative部分は1つのFeatureとしてモジュール化する
None
RN と Swift 間のやりとり Pub/Sub メッセージングモデル イベントを 知するSubject(Combine) 流れるのはイベントのオブジェクト(enum) Swift
へのメッセージ ⽤のメソッドはRN 側に 開 RN へのメッセージ ⽤のメソッド イベントオブジェクト(enum) を Dictionary に してRN に 知 処理 にI/F を やしていくのは けたい I/F を やすには ObjC のコーディング ( マクロ 義) も必 メソッド に やしていくのはしんどい
None
コードの⼀ receivedEvent(受信⽤) notifyToRN(送信⽤) Swift側からは、 を意識すればよい
Swift の流れ Xcode, React Native を に ビルドが るまでエラーを り
いていく npm のライブラリが していない場 patch-package を利⽤して 正 的に Swift する Swift 基 を作る 内の 奨アーキテクチャで技 の流動 マルチモジュールで を る Pub/Sub で RN <-> SWift を簡 に
Swift の流れ Xcode, React Native を に ビルドが るまでエラーを り
いていく npm のライブラリが していない場 patch-package を利⽤して 正 的に Swift する Swift 基 を作る 内の 奨アーキテクチャで技 の流動 マルチモジュールで を る Pub/Sub で RN <-> SWift を簡 に
的に Swift する 範囲の ない末 の ⾯からSwift 中で中 して の開発とかもあるかもしれない
Swift が に ⾏せずともアプリはリリースできる状 に Swift → RN → Swift → RN となる はしない 単 にコントロールが しい が になる
None
第2弾 第3弾 ... 第1弾
Swift の流れ Xcode, React Native を に ビルドが るまでエラーを り
いていく npm のライブラリが していない場 patch-package を利⽤して 正 Swift 基 を作る 内の 奨アーキテクチャで技 の流動 マルチモジュールで を る Pub/Sub で RN <-> SWift を簡 に 的に Swift する 範囲の ない末 の ⾯からSwift
まとめ 僕にとって React Native はつらい アップデートがしんどい ReactNative が負債 React Native
→ Swift はつらいが 理ではない patch-package を利⽤して未 のライブラリ 正 マルチモジュール で を に Pub/Sub メッセージングモデル で RN<-> Swift 間のを簡 に 範囲の ない末 の ⾯からSwift
おわり