SlideShare a Scribd company logo
React Native
8
Yukiya Nakagawa
#DevFest17 @Nkzn
• @Nkzn /
• /
•
• React Native v0.17
• DroidKaigi 

2018 CfP 15
• React Native 4
3 CI/CD
•
JS
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
16% 22%
2% 60%
98%
React Native
• React
• JS
•
• /PoC
16% 22%
2% 60%
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Native
• React
• JS
•
• /PoC
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
16% 22%
2% 60%
16% 22%
2% 60%
16% 22%
2% 60%
• React Native JSer
• RN create-react-native-
app Expo
JSer
• JS React npm android/ ios/
• init
• Android
• iOS
•
• React
• JS Redux
• AltJS TypeScript FlowType
•
•
/
React Native
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
Agenda
•
1.Getting Started
2.applicationId/Bundle Identifier
3.
4.[Android] buildType
5.Fabric
6.Fabric
7.Fastlane
8.Firebase
A
1. Getting Started
init
$ npm install -g react-native-cli
$ react-native init MyAwesomeApp
$ cd MyAwesomeApp
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
index.android.js
index.ios.js
• RN 



”Write Once, Run Anywhere”
•
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
src
src/index.js
import React, { Component } from 'react';
import { AppRegistry, Text, View, StyleSheet } from 'react-native';
export default class App extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.center}>
Hello, World!
</Text>
</View>
);
}
}
const styles = {/* */};
AppRegistry.registerComponent('MyAwesomeApp', () => App);
index.(android|ios).js
// index.android.js
import "./src";
// index.ios.js
import "./src";
•
• Flux, Redux
•
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
v0.49 Release Note
init
@v0.49
index.js
import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('MyAwesomeApp', () => App);
•
•
App.js src
src
•
• JSer React UI
2. applicationId &

Bundle Identifier
applicationId
Bundle Identifier
Bundle Identifier
init
android/app/build.gradle
android {
defaultConfig {
applicationId "com.myawesomeapp"
Xcode
init ID
•
• Android
ID
•
• applicationId Google Play
• Bundle Identifier AppStore
• com.[ ]
• iOS 

ID
•
•
info.nkzn.kitchentimer
• Android _ 

−
• iOS − 

_
• 

React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
• ID
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
android/app/build.gradle
android {
defaultConfig {
applicationId "com.myawesomeapp"
Xcode
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
3.
is
android {

defaultConfig {

versionCode 1

versionName "1.0"
android/app/build.gradle
ios/MyAwesomeApp/Info.plist
•
•
• Android versionCode
• Semantic Versioning(vX.Y.Z)
• X(major) UI
• Y(minor)
• Z(patch)
• JS
•
•
• Git
• package.json version
•
versionCode
• Google Play versionCode
• 1,2,3…
• v1.1.3(100) 101
v1.1.4 v1.2.0
versionCode
def major = 2;

def minor = 1;

def patch = 3;



android {

defaultConfig {

versionName "${major}.${minor}.${patch}" // 2.1.3

versionCode major * 10000 + minor * 100 + patch * 1 // 20103
android/app/build.gradle
•
• Google Play 

def major = 2;

def minor = 1;

def patch = 3;

def build = 4;



android {

defaultConfig {

versionName "${major}.${minor}.${patch}" // 2.1.3

versionCode major * 1000000 + minor * 10000
+ patch * 100 + build // 2010304
“version”: “2.1.3-build4”
android {

defaultConfig {

versionName “2.1.3”

versionCode 2010304
node build.gradle Info.plist
4. buildType
Android
•
•
• applicationId
•
applicationId
android {

buildTypes {

debug {

applicationIdSuffix ".debug"

}
}
android/app/build.gradle
💪
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
App Icon
<resources>

<string name=“app_name”>[debug]MyAwesomeApp</string>

</resources>
android/app/src/debug/res/values/strings.xml
android/app/src/release/res/values/strings.xml
<resources>

<string name=“app_name”>MyAwesomeApp</string>

</resources>
[debug] …
A
B
•
•
5. Fabric
Fabric
• https://get.fabric.io/
• Twitter
• Crashlytics
• Google Firebase
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
6. Fabric
•
• Google Play /
TestFlight
•
Beta
• Fabric
• Beta
• Fabric
←
• Android Studio Mac
7. Fastlane
• https://fastlane.tools/
• iOS/Android
• Google Play/iTunes
Connect
• CI GitLab CI
• Ruby 🤔
1. Git
2. CI Fastlane
3. Google Play/
iTunes Connect 🚀
4. 🎉
8. Firebase
• https://firebase.google.com/
•
AB
MBaaS
• React Native Firebase
•
•
B
○○
iOS
• iOS
• Schema Target
iOS CocoaPods
• CocoaPods iOS
• Google
•
• iOS
※
JS
•
•
• Sentry https://sentry.io/
RN
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み
• Android SDK, Android Studio
• iOS SDK, Xcode
• npm
• Ruby (Fastlane )
• React Native JS
•
JS
React Native
React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み

More Related Content

PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
PDF
AzureDevOps ユーザーストーリーを作ってみよう - 201904
PDF
[AWSマイスターシリーズ] AWS CloudFormation
PDF
メルカリ・ソウゾウでは どうGoを活用しているのか?
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
分散トレーシング技術について(Open tracingやjaeger)
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
AzureDevOps ユーザーストーリーを作ってみよう - 201904
[AWSマイスターシリーズ] AWS CloudFormation
メルカリ・ソウゾウでは どうGoを活用しているのか?
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理

What's hot (20)

PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PPTX
Spring Integration 超入門
PDF
Unified JVM Logging
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PDF
Web開発者が始める .NET MAUI Blazor App
PDF
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
PPTX
Drone programming with ArduPilot
PDF
Dockerfile を書くためのベストプラクティス解説編
PPTX
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
PDF
MagicOnion入門
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
PPTX
オーバーエンジニアリングって何? #devsumi #devsumiA
PDF
オープンソースのAPIゲートウェイ Kong ご紹介
PDF
ストリーム処理勉強会 大規模mqttを支える技術
PPTX
Oracle Database (CDB) on Docker を動かしてみる
PDF
PHPの戻り値型宣言でselfを使ってみよう
PDF
xUnit Test Patterns - Chapter16
PDF
世界でいちばんわかりやすいドメイン駆動設計
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
Spring Integration 超入門
Unified JVM Logging
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Web開発者が始める .NET MAUI Blazor App
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
Drone programming with ArduPilot
Dockerfile を書くためのベストプラクティス解説編
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
MagicOnion入門
単なるキャッシュじゃないよ!?infinispanの紹介
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
オーバーエンジニアリングって何? #devsumi #devsumiA
オープンソースのAPIゲートウェイ Kong ご紹介
ストリーム処理勉強会 大規模mqttを支える技術
Oracle Database (CDB) on Docker を動かしてみる
PHPの戻り値型宣言でselfを使ってみよう
xUnit Test Patterns - Chapter16
世界でいちばんわかりやすいドメイン駆動設計
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
Ad

Similar to React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み (20)

PPTX
React nativebeginner1
PDF
Mobile Applications
PDF
移动端Web app开发
PPTX
Android 101 - Introduction to Android Development
PDF
From MEAN to the MERN Stack
PDF
Android Tutorial
PDF
What is Angular version 4?
PPTX
OWASP Nagpur Meet #3 Android RE
PDF
Head first android apps dev tools
KEY
Phonegap for Engineers
KEY
DevQuiz 2011 の模範解答 Android編
PPTX
Philly CocoaHeads 20160414 - Building Your App SDK With Swift
PDF
Mobile Testing with Selenium 2 by Jason Huggins
KEY
HTML5 is the Future of Mobile, PhoneGap Takes You There Today
PPTX
Android OS & SDK - Getting Started
PDF
Building Android games using LibGDX
PDF
Intro to Building Android Games using libGDX
PDF
Using Geoscript Groovy
PDF
Cross-Platform Desktop Apps with Electron (CodeStock Edition)
KEY
Bridge the gap
React nativebeginner1
Mobile Applications
移动端Web app开发
Android 101 - Introduction to Android Development
From MEAN to the MERN Stack
Android Tutorial
What is Angular version 4?
OWASP Nagpur Meet #3 Android RE
Head first android apps dev tools
Phonegap for Engineers
DevQuiz 2011 の模範解答 Android編
Philly CocoaHeads 20160414 - Building Your App SDK With Swift
Mobile Testing with Selenium 2 by Jason Huggins
HTML5 is the Future of Mobile, PhoneGap Takes You There Today
Android OS & SDK - Getting Started
Building Android games using LibGDX
Intro to Building Android Games using libGDX
Using Geoscript Groovy
Cross-Platform Desktop Apps with Electron (CodeStock Edition)
Bridge the gap
Ad

More from Yukiya Nakagawa (20)

PDF
Atomic Designは「マルチ」で真価を発揮する
PDF
Androidの入門書を書いたときに気にしたこと #NDS57
PDF
React Nativeの光と闇
PDF
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
PDF
React Native Androidはなぜ動くのか
PDF
CSS in JSの話 #friday13json
PDF
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
PDF
AndroidLint #DroidKaigi
PDF
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
PDF
僕らのデータ同期プラクティス
PDF
Android再入門 〜Eclipseのことは忘れろ〜
PDF
もう一度Kotlinの話をしよう #ndsmeetup4
PPTX
アグリノートを支える技術
PDF
NDS36 Kotlin Cute
PDF
NDS36 Java7&Java8
PPTX
Coworking Business Forum in NIIGATA 2013
PPTX
Niigata.rb#03
PPTX
PechaKucha Niigata #3 2013.7.27
PPTX
ぼくのかんがえたふつうのあんどろいどかいはつ
PPTX
Androidで使えるJSON-Javaライブラリ
Atomic Designは「マルチ」で真価を発揮する
Androidの入門書を書いたときに気にしたこと #NDS57
React Nativeの光と闇
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
React Native Androidはなぜ動くのか
CSS in JSの話 #friday13json
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
AndroidLint #DroidKaigi
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
僕らのデータ同期プラクティス
Android再入門 〜Eclipseのことは忘れろ〜
もう一度Kotlinの話をしよう #ndsmeetup4
アグリノートを支える技術
NDS36 Kotlin Cute
NDS36 Java7&Java8
Coworking Business Forum in NIIGATA 2013
Niigata.rb#03
PechaKucha Niigata #3 2013.7.27
ぼくのかんがえたふつうのあんどろいどかいはつ
Androidで使えるJSON-Javaライブラリ

Recently uploaded (20)

PPTX
Cloud computing and distributed systems.
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Big Data Technologies - Introduction.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPT
Teaching material agriculture food technology
PPTX
Spectroscopy.pptx food analysis technology
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
KodekX | Application Modernization Development
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
Cloud computing and distributed systems.
Digital-Transformation-Roadmap-for-Companies.pptx
Empathic Computing: Creating Shared Understanding
Big Data Technologies - Introduction.pptx
Network Security Unit 5.pdf for BCA BBA.
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
sap open course for s4hana steps from ECC to s4
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Teaching material agriculture food technology
Spectroscopy.pptx food analysis technology
Advanced methodologies resolving dimensionality complications for autism neur...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
20250228 LYD VKU AI Blended-Learning.pptx
NewMind AI Weekly Chronicles - August'25 Week I
KodekX | Application Modernization Development
Review of recent advances in non-invasive hemoglobin estimation
Diabetes mellitus diagnosis method based random forest with bat algorithm

React Nativeアプリをリリースし続けるために、最初に行う8つの取り組み