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

101
React Native 8 Yukiya Nakagawa #DevFest17 @Nkzn

Upload: yukiya-nakagawa

Post on 21-Jan-2018

15.047 views

Category:

Technology


0 download

TRANSCRIPT

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

React Native

8Yukiya Nakagawa

#DevFest17 @Nkzn

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

• @Nkzn /

• /

• React Native v0.17

• DroidKaigi

2018 CfP 15

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

• React Native 4

3 CI/CD

JS

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

16% 22%

2% 60%

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

98%

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

React Native

• React

• JS

• /PoC

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

16% 22%

2% 60%

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

React Native

• React

• JS

• /PoC

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

16% 22%

2% 60%

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

16% 22%

2% 60%

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

16% 22%

2% 60%

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

• React Native JSer

• RN create-react-native-

app Expo

JSer

• JS React npm android/ ios/

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

• init

• Android

• iOS

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

• React

• JS Redux

• AltJS TypeScript FlowType

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

/

React Native

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

Agenda

1.Getting Started

2.applicationId/Bundle Identifier

3.

4.[Android] buildType

5.Fabric

6.Fabric

7.Fastlane

8.Firebase

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

A

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

1. Getting Started

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

init

$ npm install -g react-native-cli$ react-native init MyAwesomeApp$ cd MyAwesomeApp

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

index.android.js

index.ios.js

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

• RN

”Write Once, Run Anywhere”

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

src

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

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);

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

index.(android|ios).js

// index.android.js import "./src";

// index.ios.js import "./src";

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

• Flux, Redux •

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

v0.49 Release Note

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

init @v0.49

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

index.js

import { AppRegistry } from 'react-native'; import App from './App';

AppRegistry.registerComponent('MyAwesomeApp', () => App);

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

App.js src

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

src

• JSer React UI

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

2. applicationId &Bundle Identifier

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

applicationId

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

Bundle Identifier

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

Bundle Identifier

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

init

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

android/app/build.gradle

android { defaultConfig { applicationId "com.myawesomeapp"

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

Xcode

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

init ID

• • Android

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

ID

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

• applicationId Google Play

• Bundle Identifier AppStore

• com.[ ]

• iOS

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

ID

info.nkzn.kitchentimer

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

• Android _

• iOS −

_

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

android/app/build.gradle

android { defaultConfig { applicationId "com.myawesomeapp"

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

Xcode

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

3.

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

is

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

android { defaultConfig { versionCode 1 versionName "1.0"

android/app/build.gradle

ios/MyAwesomeApp/Info.plist

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

• Android versionCode

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

• Semantic Versioning(vX.Y.Z)

• X(major) UI

• Y(minor)

• Z(patch)

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

• JS

• Git

• package.json version

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

versionCode

• Google Play versionCode

• 1,2,3…

• v1.1.3(100) 101

v1.1.4 v1.2.0

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

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

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

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

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

“version”: “2.1.3-build4”

android { defaultConfig { versionName “2.1.3” versionCode 2010304

node build.gradle Info.plist

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

4. buildTypeAndroid

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

• applicationId

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

applicationId

android { buildTypes { debug { applicationIdSuffix ".debug" } }

android/app/build.gradle

💪

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

App Icon

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

<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>

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

[debug] …

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

A

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

B

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

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

5. Fabric

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

Fabric

• https://get.fabric.io/

• Twitter

• Crashlytics

• Google Firebase

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

6. Fabric

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

• Google Play /

TestFlight

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

Beta

• Fabric

• Beta

• Fabric

• Android Studio Mac

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

7. Fastlane

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

• https://fastlane.tools/

• iOS/Android

• Google Play/iTunes

Connect

• CI GitLab CI

• Ruby 🤔

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

1. Git

2. CI Fastlane

3. Google Play/

iTunes Connect 🚀

4. 🎉

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

8. Firebase

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

• https://firebase.google.com/

AB

MBaaS

• React Native Firebase

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

B

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

○○

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

iOS

• iOS

• Schema Target

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

iOS CocoaPods

• CocoaPods iOS

• Google

• iOS※

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

JS

• Sentry https://sentry.io/

RN

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

• Android SDK, Android Studio

• iOS SDK, Xcode

• npm

• Ruby (Fastlane )

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

• React Native JS

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

JS

React Native

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