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
Native Module入門記録
Search
Spice-Z
October 08, 2022
Technology
3
940
Native Module入門記録
React Native Matsuri 2022の登壇で使用した資料です
Spice-Z
October 08, 2022
Tweet
Share
More Decks by Spice-Z
See All by Spice-Z
stand.fmにGraphQLを導入して、半年。〜導入経緯や技術選択、現状や将来について〜
spicez
3
2.3k
NuxtでSSR時にGoogleOptimize(ABテストツール)を使いたい
spicez
1
1.1k
"transform" Why do we have to use it in CSS animation
spicez
0
5.2k
Other Decks in Technology
See All in Technology
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
350
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
140
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
200
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.5k
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
250
SRE Enabling戦記 - 急成長する組織にSREを浸透させる戦いの歴史
markie1009
0
110
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
230
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
300
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
140
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
Featured
See All Featured
A better future with KSS
kneath
240
18k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
82
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
140
Documentation Writing (for coders)
carmenintech
77
5.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
420
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
ラッコキーワード サービス紹介資料
rakko
1
2.3M
Statistics for Hackers
jakevdp
799
230k
Technical Leadership for Architectural Decision Making
baasie
1
240
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
260
Transcript
Native Module入門記録 〜心を燃やせ!俺はNative Moduleなんかに負けない!〜 2021/10/08 React Native Matsuri Yugo Ogura
/ a.k.a spice
自己紹介 spice (Yugo Ogura) @rabspice Webフロントエンドエンジニアとして生まれ stand.fmで色々触るエンジニアになった 2022年6月頃にReact NativeのNative Moduleに入門
ジャルジャルが好きです
ジャルジャルはすごい 毎日更新! 平日毎日更新! 1週間で13本の動画! 生活リズムに取り入れよう!
今日話すこと ・Native Module入門の背景 ・入門して感じた5つの「壁」 ・ざっくり具体的な実装話と学び 今日話さないこと(懇親会場で話しましょう!) ・具体的なコードとか ・詳細な事情とか
Native Module入門の背景
stand.fmの技術スタック ・React Native 製 ・音声再生/音声収録 ・端末のスピーカー/マイクを使用する
stand.fmの技術スタック ・React Native 製 ・音声再生/音声収録 ・端末のスピーカー/マイクを使用する ・React Native Track Player
・React Native Video ・自前で書いたり ・etc...
https://react-native-track-player.js.org/
いいかんじ! 色々やってくれてる! ・JavaScriptの操作だけで音が流れる ・Android/iOSの差を意識する必要はない ・通知欄から音楽の操作ができる! ・バックグラウンドでの再生もしてくれる!
しかし・・・ 細かいバグにパッチをあてるため、forkしたものを使っていた
しかし・・・ 細かいバグにパッチをあてるため、forkしたものを使っていた ⇨本家アップデートへの追従が大変なので、forkやめよう! ⇨動かしてみたら、Androidクラッシュ!
Androidでクラッシュ! React Native Track Player 依存 Exo Player 依存 (ネイティブライブラリ)
React Native Video Exo Player
Androidでクラッシュ! React Native Track Player 依存 Exo Player 依存 (ネイティブライブラリ)
React Native Video Exo Player アップデート
Androidでクラッシュ! React Native Track Player 依存 Exo Player 依存 (ネイティブライブラリ)
React Native Video Exo Player 依存バージョン違った!
Androidでクラッシュ! React Native Track Player 依存 Exo Player 依存 (ネイティブライブラリ)
React Native Video Exo Player 依存バージョン違った! アプリを動かすと、 存在しないAPIを呼んで 終了:smile:
なんとかして解決しました! なんとかして解決しています
なんとかして解決 React Native Track Player 依存 Exo Player 依存 (ネイティブライブラリ)
React Native Video Exo Player 自作ライブラリ Exo Player
なんとかして解決 React Native Track Player 依存 Exo Player 依存 (ネイティブライブラリ)
React Native Video Exo Player 自作ライブラリ Exo Player バージョン合わせた アップデート
なんとかして解決 React Native Track Player 依存 Exo Player 依存 (ネイティブライブラリ)
React Native Video Exo Player 自作ライブラリ Exo Player バージョン合わせた✖2 アップデートした いつのまにか Native Module 入門!
入門して感じた5つの 「壁」
壁 Native Module 自体 エディタ 言語 ドキュメント 常識
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 Native Module
自体
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 Native Module
自体 ドキュメント読めばOK
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 ドキュメント
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 ドキュメント デザインの認知負荷
数をこなして慣れさせる
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 言語
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 言語 Java/Kotlin
Objective-C/Swift スポットで調べれば何とかなる Objective-Cがむずい
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 エディタ
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 エディタ 都度調べる
Android Studioは カスタマイズで使いやすい Xcodeとは友達になれていない
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 常識
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 常識 OSにまつわる汎用的な知識
壁 Native Module 自体 エディタ 言語 ドキュメント 常識 常識 OSにまつわる汎用的な知識
何が分かっていないのか、分からない ので、調べ始めることもむずかしい
実際の経験 - 1. ひとまず音楽再生したい!
実際の経験 - 1. ひとまず音楽再生したい! Native Module 自体 ドキュメント読んで解決
実際の経験 - 1. ひとまず音楽再生したい! Native Module 自体 言語 ドキュメント読んで解決 ロジックは何となくわかる
Objective-Cむず
実際の経験 - 1. ひとまず音楽再生したい! Native Module 自体 ドキュメント 言語 ドキュメント読んで解決
ロジックは何となくわかる Objective-Cむず Android Developer 読めん Apple Developer 読めん
実際の経験 - 1. ひとまず音楽再生したい! Native Module 自体 ドキュメント 言語 エディタ
ドキュメント読んで解決 ロジックは何となくわかる Objective-Cむず Android Studioのカスタマ イズむずい Xcode使いにくい Android Developer 読めん Apple Developer 読めん
実際の経験 - 1. ひとまず音楽再生したい! Native Module 自体 ドキュメント 言語 エディタ
ドキュメント読んで解決 ロジックは何となくわかる Objective-Cむず 常識 Android Studioのカスタマ イズむずい Xcode使いにくい Android Developer 読めん Apple Developer 読めん そもそも調べるべき単語分からん 他のライブラリを見てなんとなく必要そうな知識を把握 して調べる
実際の経験 - 2. バックグラウンドでも再生! 言語 細かい型とか文法への理解が必要になってきた 細々とドキュメントを読むけどむず・・・
実際の経験 - 2. バックグラウンドでも再生!
実際の経験 - 2. バックグラウンドでも再生! 言語 細かい型とか文法への理解が必要になってきた 細々とドキュメントを読むけどむず・・・
実際の経験 - 2. バックグラウンドでも再生! ドキュメント 言語 Google Developer 慣れてきたかも Apple
Developer 慣れてきたかも? 細かい型とか文法への理解が必要になってきた 細々とドキュメントを読むけどむず・・・
実際の経験 - 2. バックグラウンドでも再生! ドキュメント 言語 エディタ Google Developer 慣れてきたかも
Apple Developer 慣れてきたかも? 細かい型とか文法への理解が必要になってきた 細々とドキュメントを読むけどむず・・・ Android Studio 使いやすいかも! Xcodeはむずい
実際の経験 - 2. バックグラウンドでも再生! ドキュメント 言語 エディタ Google Developer 慣れてきたかも
Apple Developer 慣れてきたかも? 細かい型とか文法への理解が必要になってきた 細々とドキュメントを読むけどむず・・・ Android Studio 使いやすいかも! Xcodeはむずい 常識 他のライブラリを見てなんとなく必要そうな知識を把握し て調べる(2回目) 一応書けたけど、他にもっと良さそうな気がしてならない
実際の経験 - 3. 通知欄からの操作も必要だ!
実際の経験 - 3. 通知欄からの操作も必要だ! 言語 細かいところ何も分からんくてむずー!
実際の経験 - 3. 通知欄からの操作も必要だ! ドキュメント 言語 慣れたと思ったけど どこに何が書いてあるか分からん むずー! 細かいところ何も分からんくてむずー!
実際の経験 - 3. 通知欄からの操作も必要だ! ドキュメント 言語 常識 慣れたと思ったけど どこに何が書いてあるか分からん むずー!
細かいところ何も分からんくてむずー! 他のライブラリを見てなんとなく必要そうな知識を把握して調べる 分からないことだらけでむずー!
学び
5種類の壁何度も衝突する ってだけ
分からないことにぶち当たった時の 消費HPをなるべく減らせると良い
• 分からない前提を受け入れる
• 分からない前提を受け入れる • 壁にぶち当たるパターンを理解する
• 分からない前提を受け入れる • 壁にぶち当たるパターンを理解する • 解決した過去を思い出して自分を褒める
• 分からない前提を受け入れる • 壁にぶち当たるパターンを理解する • 解決した過去を思い出して自分を褒める • (全てを理解するのを諦める)
気持ちがだいじ Native Module負けない!
具体的な話は、直接話しましょう! Spatial Chatで待ってます!
余談 を支える労力を理解した ⇨stand.fmはReact Native Track Player のスポンサーになりました! 色々やってくれてる!
credits image: Freepik.com
Thank you ! Follow me ! @rabspice