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
Nature での React Native アプリの運用について / React Nativ...
Search
soh335
September 03, 2020
Programming
1.6k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nature での React Native アプリの運用について / React Native App in Nature
soh335
September 03, 2020
More Decks by soh335
See All by soh335
React Native in Nature
soh335
1
1.5k
Carton を既存の環境に入れるまで入れてから
soh335
0
240
perl な web application のためのテスト情報
soh335
5
3.8k
Other Decks in Programming
See All in Programming
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
740
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
190
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.1k
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
630
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
160
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
継続モナドとリアクティブプログラミング
yukikurage
3
700
Foundation Models frameworkで画像分析
ryodeveloper
1
600
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
480
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
300
VibeCodingからAgenticWorkflowへ
starfish719
0
330
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
119
120k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Done Done
chrislema
186
16k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
330
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
790
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Thoughts on Productivity
jonyablonski
76
5.3k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
260
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
640
Transcript
厳秘:本資料の⼀部または全部を、Nature株式会社の許可なしに、複製、転載することを禁じます。 Nature Ͱͷ React Native ΞϓϦͷӡ༻ʹ͍ͭͯ Sep 4. 2020 Nature
Inc. soh335
• github.com/soh335 • Nature גࣜձࣾιϑτΣΞΤϯδχΞ About Me 2
• Nature Remo, νʔϜͷհ • Ҡߦ࣌ͷ • ࠷ۙͷ։ൃͷ • ࠷ۙߟ͑ͯΔ͜ͱ
Agenda 3
Nature Remo, チームの紹介
5
スマートデバイス Nature Remo 家電 How It Works
• ΞϓϦ: 2 • όοΫΤϯυ: 3 • ϑΝʔϜΣΞ: 2 •
߹ܭ 5 ਓ ιϑτΣΞΤϯδχΞνʔϜ 7
• https://employment.en-japan.com/ engineerhub/entry/2020/02/06/103000 • ࢀߟʹͳΔͱࢥ͍·͢ React Native ࣗମʹؔͯ͠ 8
Ҡߦ࣌ͷ
Ҡߦཧ༝ • ೋਓͰ iOS, Android ΛΞΫςΟϒʹ։ൃ͍ͯ͘͠ͷ͕͔ͬͨ͠ • ࣌ • React
Native 0.52.0 • TypeScript 2.6.2 • https://employment.en-japan.com/engineerhub/entry/ 2018/08/17/110000 • 2લʹΠϯλϏϡʔͯ͠Β͍·ͨ͠ 10
͜ͷλΠϛϯάͰσβΠϯ৽ • ೝূ෦ϚΠάϨʔγϣϯॲཧΛ༻ҙ • σβΠϯͷ੍͋Δ • iOS ʹ͋Δจࣈͷେ͖͞Λௐͯ͠٧ΊΔͭͱ͔ Android ʹͳ͔ͬ
ͨΓɺٯ͋ΔͷͰ • View पΓ΄΅ίʔυڞ௨Խ͞ΕͯΔ • ΞΫςΟϒʹϦϦʔεͰ͖ΔΑ͏ʹͳͬͨ 11
ڞ௨ԽͰ͖ͳ͔ͬͨͷ • ωΠςΟϒͷڍಈʹؔ࿈͢Δͷ • ύʔϛογϣϯपΓ • Geofence पΓ • ϝʔϥ։͘ͱ͜Ζͱ͔
• ࣌ͳ͔͕ͬͨ Bluetooth पΓ • Ͳ͔ͪΒ͚ͩڍಈ͕͓͔͘͠ճආࡦΛೖΕͯΔ߹ 12
ࠔͬͨϙΠϯτ • σόΠεͷηοτΞοϓ࣌ʹσόΠεࣗͷωοτϫʔΫʹεϚʔτϑΥ ϯ͕ܨ͙ඞཁ͕͋Δ • Ϛγϯʹىಈ͍ͯ͠ΔσόοΨͱͷଓ͕ΕΔ… • Today widget •
https://reactnative.dev/docs/app-extensions 13
࣌ݟक͍ͬͯͨIssue • ςΩετपΓ͕ଟ͍ҹ • CJKಛ༗ͳͷ • ωΠςΟϒଆͷϏϧυγεςϜ͕৽͞ΕΔͱେม
࠷ۙͷ։ൃͷ
• Visual Studio Code • Xcode • Android Studio •
Emulator ։ൃڥ 16
• React Navigation Λ͍ͬͯΔͷͰ Screen Component ༻ҙͯ͠ • ࠷ۙ hooks
ͬͯॻ͍ͯΔ • ෳࡶͳσβΠϯʹͨ͘͠ͳ͍ͷͰγϯϓϧʹ ৽͍͠ը໘ 17
࠷ۙՃͨ͠ը໘ • άϥϑपΓͷܭࢉ D3 • ඳը react-native-svg
React Native ͷ Version Λ͋͛ΔλΠϛϯά • ࣍ͷϝδϟʔΞοϓσʔτ͕ग़ͨΒͦͷલͷ࠷ޙ͋ͨΓΛݕ౼ • ຖճͦ͏͍͏Θ͚Ͱͳ͍͚Ͳ •
Expo SDK ࢀߟʹ 19
ϥΠϒϥϦपΓ • react-navigation • redux & redux-persist & immer •
react-native-maps • react-native-ble-manager • react-native-svg • react-native-vector-icons • react-native-linear-gradient • lottie-react-native • sentry 20
͋͑ͯͬͯͳ͍ͷ • Expo • OTA • Keychain पΓ • GeofenceपΓ
21
Expo • Native ͷίʔυΛॻ͔ͳ͍ͱ͍͏બࢶ͕ͳ͍ • Geofence, Siri ͱ͔ΞϓϦͷϩδοΫΛͦͷ··ॻ͘ඞཁ͕͋Δ 22
OTA • react-native ͷ version ʹґଘ͍ͯ͠ΔͷͰɺΞοϓσʔτͷᐫʹͨ͠ ͘ͳ͍ • ࣗͨͪͰίϯτʔϧͰ͖ͳ͍ͷΛ૿ͨ͘͠ͳ͍ •
࠷ۙ৹ࠪૣ͍ 23
Keychain पΓ • Keychain ͪΌΜͱॻ͘ͷ͕͍͠ • ৴པ͍ͯ͠ΔϥΠϒϥϦΛ͍͍ͨ • https://github.com/kishikawakatsumi/KeychainAccess •
ϥοϓͯͬͯ͠Δ 24
Geofence • ΞϓϦͷϩδοΫʹີ • iOS headless JS ͱ͍͏֓೦ͳ͍ͷͰωΠςΟϒͰී௨ʹॻ͘ • https://reactnative.dev/docs/headless-js-android
25
ଞʹ͍Ζ͍Ζ͋Δ • Native ʹߦॻ͚͍͍Α͏ͳͷࣗͨͪͰ༻ҙ͢Δ͜ͱ • ΦϑΟγϟϧ͕ϗετͯ͠ͳ͍ωΠςΟϒϥΠϒϥϦͷϥούʔϥΠϒϥ Ϧ͍͠ 26
React Native ʹύονૹͬͨΓ • Fix typescript constructor parameter properties •
https://github.com/facebook/metro/pull/262 • Fix some languages wrapped texts are cut off on android • https://github.com/facebook/react-native/pull/25306 27
Fix typescript constructor parameter properties 28 class Employee extends Person
{ constructor(public name: string) { super(); } }
Fix typescript constructor parameter properties 29 function Employee(name) { _classCallCheck(this,
Employee); return _possibleConstructorReturn(this, _getPrototypeOf(Employee).call(this)); } function Employee(name) { var _this; _classCallCheck(this, Employee); _this = _possibleConstructorReturn(this, _getPrototypeOf(Employee).call(this)); _this.name = name; return _this; }
Fix some languages wrapped texts are cut off on android
30 export default class App extends React.Component { render() { return ( <View style={{marginTop: 30}}> <Text>ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ</Text> <Text>͜ΕͰͪΐ͏Ͳेจࣈ͜ΕͰͪΐ͏Ͳेจࣈ͜ΕͰͪΐ͏Ͳेจࣈ͜ΕͰͪΐ͏Ͳेจࣈ</Text> <Text>͜ΕͰͪΐ͏Ͳेจࣈ͜ΕͰͪΐ͏Ͳेจࣈ</Text> <Text>㟬ૣ্㟬ૌഽ㟬ૣ্㟬ૌഽ㟬ૣ্㟬ૌഽ</Text> <Text>㟬ૣ্㟬ૌഽ</Text> </View> ); } }
Fix some languages wrapped texts are cut off on android
31
ύονΛͯͨReact Native Λ͏ • https://github.com/facebook/react-native/wiki/Building-from-source • 0.60 ͰऔΓࠐ·ΕͨͷͰɺͦΕ·Ͱ Patched React
Native Λͬͨ 32
iOSͷόά?Λݟ͚ͭͨΓ • iOS12 ͷຊޠڥͰӳޠ͚ͩͷγεςϜϑΥϯτ ͷ จࣈྻʹΧϯϚؚ͕·ΕΔͱṖͷleading ͕ൃੜ͢Δ ͱ͍͏όά • ଟ
iOS ଆ? iOS13 Ͱൃੜ͠ͳ͍ • https://twitter.com/soh335/status/ 1185552921049460737
Oppo A77 - Some texts gets cut-off • https://github.com/facebook/react-native/issues/ 15114
• One Plus, Oppo ͷσόΠεͰ༻ҙ͞ΕͯΔϑΥϯτ Λ͏ͱจࣈྻͷඳը͕͓͔͍͠
࠷ۙߟ͑ͯΔ͜ͱ
࣮ࡍ React Native Ͳ͏? • ී௨ʹ࡞ͬͯΕ iOS, Android, ͲͷαΠζͰಈ͘ͷͰྑ͍ •
ਖ਼ Android ਂ͘Θ͔Βͳ͍͚ͲΞϓϦ͕ී௨ʹ࡞ΕΔ • ͜ͷνʔϜنͰ1,2िؒʹҰͷΞοϓσʔτΈ͍ͨͳͷωΠςΟϒͦ ΕͧΕͩͱݫ͍͠ • TypeScript ͕ྑ͍ 36
࣮ࡍ React Native Ͳ͏? • Web ϑϩϯτΤϯυͬͯͳ͍͠ɺReact ʹڧ͍ݟ͕͋ΔΘ͚Ͱͳ͍ • ਖ਼ෳࡶͳ͜ͱͨ͘͠ͳ͍
• σβΠϯ͕Ͳ͔ͬͪʹدΓ͕ͪ (͏ͪ iOS ΑΓ) • ωΠςΟϒͷΞοϓσʔτͷΩϟονΞοϓ͕Ͱ͖ͳ͍ͱେม 37
ωΠςΟϒͷΞοϓσʔτͷΩϟονΞοϓ • ࠷ۙηΩϡϦςΟपΓͰݖݶपΓ͕ຖճมΘΔ • ඳը่͕ΕΔΈ͍ͨͳͷͦΜͳͳ͍ 38
React Native ͷόʔδϣϯΞοϓ • ຊମ͕ͦΜͳյΕΔҹͳ͍ • पลϥΠϒϥϦͷํ͕? • iOS, Android
ଆͷ OS ্͕͕ΔλΠϛϯάͷํ͕ͬͺΓؾʹͳΔ 39
ωΠςΟϒͰॻ͖͍ͨʁ • ϝϯόʔ૿͑ͨΒͦΕྑ͍͔ • ݁ہνʔϜͷߏʹΑΓͦ͏ • Ұ୴Ϗϧυͪ͠Ό͑ͬ͘͞ͱॻ͍ͯ֬ೝग़དྷΔମݧؾʹೖͬͯΔ 40
Hermes Ͳ͏ͳΜͰ͠ΐ͏ʁ • JSC ͷ 64bit ରԠ͋ͨΓ͔Βڍಈ͕एׯෆ҆ఆ • ύονͯͯ͘ΕͯΔͷ͕͋ͬͨΓ •
https://github.com/Kudo/jsc-android-buildscript 41
όοΫΤϯυʹؔͯ͠ • CTOͷڈͷొஃͷεϥΠυ͕͋Γ·͢ • https://blog.song.mu/entry/inside-nature-remo 42
࠾༻ͬͯ·͢ • εϚʔτϑΥϯΞϓϦΤϯδχΞ • όοΫΤϯυΤϯδχΞ • ΈࠐΈΤϯδχΞ • ػߏઃܭΤϯδχΞ •
ػցֶशΤϯδχΞ • SRE • https://nature.global/jp/careers 43