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
700
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
500
アプリ内課金 リジェクトとAppleとのやり取りのお話
hayatan
1
1.7k
Other Decks in Technology
See All in Technology
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
200
AIと融ける人間の冒険
pujisi
0
100
AgentCore BrowserとClaude Codeスキルを活用した 『初手AI』を実現する業務自動化AIエージェント基盤
ruzia
7
2.2k
The State of AI Agent Security:2025年の総括と2026年の宿題
pict3
0
110
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.6k
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
250
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
130
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.3k
Authlete で実装する MCP OAuth 認可サーバー #CIMD の実装を添えて
watahani
0
300
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
240
ハッカソンから社内プロダクトへ AIエージェント「ko☆shi」開発で学んだ4つの重要要素
sonoda_mj
6
1.9k
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
140
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
200
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
150
Information Architects: The Missing Link in Design Systems
soysaucechin
0
730
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
ラッコキーワード サービス紹介資料
rakko
0
1.9M
Building the Perfect Custom Keyboard
takai
1
670
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
99
Darren the Foodie - Storyboard
khoart
PRO
0
2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
47k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
180
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Faster Mobile Websites
deanohume
310
31k
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
おわり