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
900
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
AWSで始める実践Dagster入門
kitagawaz
1
710
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
580
2つのフロントエンドと状態管理
mixi_engineers
PRO
3
110
はじめてのOSS開発からみえたGo言語の強み
shibukazu
3
940
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.3k
Evolución del razonamiento matemático de GPT-4.1 a GPT-5 - Data Aventura Summit 2025 & VSCode DevDays
lauchacarro
0
210
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
190
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
170
共有と分離 - Compose Multiplatform "本番導入" の設計指針
error96num
2
1.1k
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
120
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
7
870
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
280
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
580
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Making Projects Easy
brettharned
117
6.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Producing Creativity
orderedlist
PRO
347
40k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Typedesign – Prime Four
hannesfritz
42
2.8k
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