SlideShare a Scribd company logo
React Native Android
2018.2.9 DroidKaigi 2018
Yukiya Nakagawa / @Nkzn
Room2 12:50-13:40
#droidkaigi_room2
Who are you?
• Yukiya Nakagawa / @Nkzn
• @
•
• Android 2009
• React Native v0.17
React Native
•
• Hello World
• Production
Target
• React Native 

Android
• Android React Native
Best Match
•
• JavaScript
• React Native
Agenda
Overview
React
React is
React
2017
React
https://facebook.github.io/react/
•
• JSX
•
Reactive
JSX
<div>
<Header />
<LeftPane />
<RightPane
name={myName}/>
</div>
React
import React from 'react';
import ReactDOM from 'react-dom';
const styles = {
container: {display: 'flex', flexDirection: ‘row', …}
};
class App extends React.Component {
render() {
const myName = /* props or state */;
return (
<div style={styles.container}>
<Header />
<LeftPane />
<RightPane
name={myName} />
</div>
);
}
}
ReactDOM.render(
<App />,
document.getElementById('app')
);
Virtual DOM
<ccc
style={{
width: 200,
color: "red"
}}
enabled={true} />
React
VirtualDOM
DOM
React
VirtualDOM
DOM
React
VirtualDOM
DOM
React
VirtualDOM
DOM
https://tylermcginnis.com/an-introduction-to-life-cycle-events-in-react-js/
https://developer.android.com/reference/android/app/Activity.html
React is
• Facebook JS
• https://facebook.github.io/react/
•
•
• View
View View
React Native
React
import React from 'react';
import ReactDOM from 'react-dom';
const styles = {
container: {display: 'flex', flexDirection: ‘row', …}
};
class App extends React.Component {
render() {
const myName = /* props or state */;
return (
<div style={styles.container}>
<Header />
<LeftPane />
<RightPane
name={myName} />
</div>
);
}
}
ReactDOM.render(
<App />,
document.getElementById('app')
);
import ReactDOM from 'react-dom';
div
div
ReactDOM.render(
<App />,
document.getElementById('app')
);
import React from "react";
import { View, AppRegistry } from "react-native";
const styles = {
container: {display: 'flex', flexDirection: ‘row', …}
};
class App extends React.Component {
render() {
const myName = /* props or state */;
return (
<View style={styles.container}>
<Header />
<LeftPane />
<RightPane
name={myName} />
</View>
);
}
}
AppRegistry.registerComponent(
"MyReactNativeApp",
() => App
);
React
ReactDOM
React
UI
React Native
React is not
React
• React DOM
• React View Web
• React Native
• React View UI
React
• View props
•
•
• DOM
• UI
•
• View
• UI
GUI
Virtual DOM
React
React DOM 

React is not
• React
• React View
• React View
React Native Android
React Native
React Native
• JavaScript
• JS Java
• React Android View
•
Activity
ReactRootView
(FrameLayout) JS
Activity ReactRootView JS
Activity ReactRootView JS
Activity ReactRootView JS
JavaScript
Activity ReactRootView JS
JS
• JavaScriptCore
• WebKit(Safari) JS
• Facebook Android NDK


https://github.com/facebook/android-jsc
• ReactRootView God FrameLayout
• ReactInstanceManager JS
• CatalystInstance JNI
• ReactInstanceManager
• JSC
• JS
• CatalystInstance
• JNI Java
• Java JSC IF
startReactApplication()
JS
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(
mReactInstanceManager,
"MyReactNativeApp",
null);
setContentView(mReactRootView);
}
Java
Activity RN
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(
mReactInstanceManager,
"MyReactNativeApp",
null);
setContentView(mReactRootView);
}
Java
ReactRootView FrameLayout
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(
mReactInstanceManager,
"MyReactNativeApp",
null);
setContentView(mReactRootView);
}
Java
ReactInstanceManager
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(
mReactInstanceManager,
"MyReactNativeApp",
null);
setContentView(mReactRootView);
}
Java
RootView InstanceManager
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(
mReactInstanceManager,
"MyReactNativeApp",
null);
setContentView(mReactRootView);
}
Java
setContentView
import React from "react";
import { View, AppRegistry } from "react-native";
const styles = {
container: {display: 'flex', flexDirection: ‘row', …}
};
class App extends React.Component {
render() {
const myName = /* props or state */;
return (
<View style={styles.container}>
<Header />
<LeftPane />
<RightPane
name={myName} />
</View>
);
}
}
AppRegistry.registerComponent(
"MyReactNativeApp",
() => App
);
MyReactNativeApp
ReactInstance
• React JS Java
• React
React
JSC JS
ReactInstanceManager
↑
View
ReactRootView
ReactRootView#startReactApplication()
Java
JavaScript
NDK
JS Java
Activity ReactRootView JS
Native Modules
Native Modules
• Java Swift
JS
• RN Android Java JS
•
Native Modules
3
const ToastAndroid = require('ToastAndroid');
ToastAndroid.show(" ",
ToastAndroid.SHORT);
JS Toast
JS
@ReactModule(name = "ToastAndroid")
public class ToastModule
extends ReactContextBaseJavaModule {
@ReactMethod
public void show(final String message,
final int duration) {
UiThreadUtil.runOnUiThread(() -> {
Toast.makeText(
getReactApplicationContext(),
message,
duration).show();
});
}
}
Toast
Java
@ReactModule(name = "ToastAndroid")
public class ToastModule
extends ReactContextBaseJavaModule {
@ReactMethod
public void show(final String message,
final int duration) {
UiThreadUtil.runOnUiThread(() -> {
Toast.makeText(
getReactApplicationContext(),
message,
duration).show();
});
}
}
ReactContextBaseJavaModule
Java
@ReactModule(name = "ToastAndroid")
public class ToastModule
extends ReactContextBaseJavaModule {
@ReactMethod
public void show(final String message,
final int duration) {
UiThreadUtil.runOnUiThread(() -> {
Toast.makeText(
getReactApplicationContext(),
message,
duration).show();
});
}
}
Native Module
Java
※name
@ReactModule(name = "ToastAndroid")
public class ToastModule
extends ReactContextBaseJavaModule {
@ReactMethod
public void show(final String message,
final int duration) {
UiThreadUtil.runOnUiThread(() -> {
Toast.makeText(
getReactApplicationContext(),
message,
duration).show();
});
}
}
JS @ReactMethod
Java
@ReactModule(name = "ToastAndroid")
public class ToastModule
extends ReactContextBaseJavaModule {
@ReactMethod
public void show(final String message,
final int duration) {
UiThreadUtil.runOnUiThread(() -> {
Toast.makeText(
getReactApplicationContext(),
message,
duration).show();
});
}
}
Android not UI Thread
Java
ReactInstanceManager
JS
public class ToastPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(
new ToastModule(reactContext));
}
}
ReactPackage
Java
public class ToastPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(
new ToastModule(reactContext));
}
}
ReactPackage
Java
public class ToastPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(
new ToastModule(reactContext));
}
}
createNativeModules
Java
ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.addPackage(new ToastPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
ReactInstanceManager
Java
ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.addPackage(new ToastPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
Java
ReactInstanceManager
JSC
JS
const ToastAndroid = require('ToastAndroid');
ToastAndroid.show(" ",
ToastAndroid.SHORT);
JavaScript
JS
Great!
@ReactMethod
Readable/Writable Map/Array
• JS
Java/C++
+ hasKey(name: String): boolean
+ isNull(name: String): boolean
+ getBoolean(name: String): boolean
+ getDouble(name: String): double
+ getInt(name: String): int
+ getString(name: String): String
+ getArray(name: String): ReadableArray
+ getMap(name: String): ReadableMap
+ getDynamic(name: String): Dynamic
+ getType(name: String): ReadableType
+ keySetIterator(): ReadableMapKeySetIterator
+ toHashMap(): HashMap<String, Object>
+ putNull(key: String)
+ putBoolean(key: String, value: boolean)
+ putDouble(key: String, value: double)
+ putInt(key: String, value: int)
+ putString(key: String, value: String)
+ putArray(key: String, value: WritableArray)
+ putMap(key: String, value: WritableMap)
+ merge(source: ReadableMap);
+ size(index: int): int
+ isNull(index: int): boolean
+ getBoolean(index: int): boolean
+ getDouble(index: int): double
+ getInt(index: int): int
+ getString(index: int): String
+ getArray(index: int): ReadableArray
+ getMap(index: int): ReadableMap
+ getDynamic(index: int): Dynamic
+ getType(index: int): ReadableType
+ toArrayList(index: int): ArrayList<Object>
+ pushNull()
+ pushBoolean(value: boolean)
+ pushDouble(value: double)
+ pushInt(value: int)
+ pushString(value: String)
+ pushArray(array: WritableArray)
+ pushMap(map: WritableMap)
JSC++Java
{
name: "nkzn",
age: 30
}
[
"cupcake",
"donut",
"eclair"
]
Promise
Promise
• ReactMethod Promise
JS Promise
•
promise.resolve() promise.reject()
JS
@ReactMethod
public void getString(Promise promise) {
try {
ClipboardManager clipboard = getClipboardService();
ClipData clipData = clipboard.getPrimaryClip();
if (clipData == null) {
promise.resolve("");
} else if (clipData.getItemCount() >= 1) {
ClipData.Item firstItem = clipboard
.getPrimaryClip()
.getItemAt(0);
promise.resolve("" + firstItem.getText());
} else {
promise.resolve("");
}
} catch (Exception e) {
promise.reject(e);
}
}
Clipboard#getString
Java
@ReactMethod
public void getString(Promise promise) {
try {
ClipboardManager clipboard = getClipboardService();
ClipData clipData = clipboard.getPrimaryClip();
if (clipData == null) {
promise.resolve("");
} else if (clipData.getItemCount() >= 1) {
ClipData.Item firstItem = clipboard
.getPrimaryClip()
.getItemAt(0);
promise.resolve("" + firstItem.getText());
} else {
promise.resolve("");
}
} catch (Exception e) {
promise.reject(e);
}
}
JS
RxJava
onNext, onError
※ Clipboard
Java
// Promise Style
Clipboard.getString()
.then(str => {
// use string
});
// async/await Style
async function getClip() {
const str = await Clipboard.getString();
return str;
}
JS
JS
Java JS
EventEmitter
Android Broadcast
// JS
class RCTDeviceEventEmitter extends EventEmitter {
emit(eventType) {...}
addListener(eventType, listener, context) {...}
removeAllListeners(eventType) {...}
removeSubscription(subscription) {...}
}
JS
RCTDeviceEventEmitter.js
※ emit EventEmitter
// interface
// ReactInstanceModule
public interface RCTDeviceEventEmitter
extends JavaScriptModule {
void emit(String eventName,
@Nullable Object data);
}
Java
DeviceEventManagerModule.java
// JS
public void emitHardwareBackPressed() {
getReactApplicationContext()
.getJSModule(RCTDeviceEventEmitter.class)
.emit("hardwareBackPress", null);
}
JS emit
Java
DeviceEventManagerModule.java
C++
JS→Java ReactModule
Java→JS JavaScriptModule
ReactModule
React
🤔
React Android 

View
Activity ReactRootView JS
React DOM
Android
Android View
React
Native UI Components
3
public class PhotoView extends ImageView {
public PhotoView(Context context) { ... }
// Android
}
Java
public class PhotoViewManager
extends SimpleViewManager<PhotoView> {
@Override
public String getName() {
return "PhotoView";
}
@Override
protected PhotoView createViewInstance(
ThemedReactContext reactContext) {
return new PhotoView(reactContext);
}
@ReactProp(name = "uri")
public void setUri(PhotoView view,
@Nullable String uri) {
view.setUri(uri);
}
}
React
Java
public class PhotoViewManager
extends SimpleViewManager<PhotoView> {
@Override
public String getName() {
return "PhotoView";
}
@Override
protected PhotoView createViewInstance(
ThemedReactContext reactContext) {
return new PhotoView(reactContext);
}
@ReactProp(name = "uri")
public void setUri(PhotoView view,
@Nullable String uri) {
view.setUri(uri);
}
}
SimpleViewManager
Java
public class PhotoViewManager
extends SimpleViewManager<PhotoView> {
@Override
public String getName() {
return "PhotoView";
}
@Override
protected PhotoView createViewInstance(
ThemedReactContext reactContext) {
return new PhotoView(reactContext);
}
@ReactProp(name = "uri")
public void setUri(PhotoView view,
@Nullable String uri) {
view.setUri(uri);
}
}
React
Java
public class PhotoViewManager
extends SimpleViewManager<PhotoView> {
@Override
public String getName() {
return "PhotoView";
}
@Override
protected PhotoView createViewInstance(
ThemedReactContext reactContext) {
return new PhotoView(reactContext);
}
@ReactProp(name = "uri")
public void setUri(PhotoView view,
@Nullable String uri) {
view.setUri(uri);
}
}
Android View
Java
public class PhotoViewManager
extends SimpleViewManager<PhotoView> {
@Override
public String getName() {
return "PhotoView";
}
@Override
protected PhotoView createViewInstance(
ThemedReactContext reactContext) {
return new PhotoView(reactContext);
}
@ReactProp(name = "uri")
public void setUri(PhotoView view,
@Nullable String uri) {
view.setUri(uri);
}
}
props
Java
//
@ReactProp(name = "uri")
public void setUri(PhotoView view,
@Nullable String uri) {
view.setUri(uri);
}
//
<PhotoView
uri="http://example.com/hoge.png" />
Java
JS
public class MyLibraryPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext) {
return Arrays.<ViewManager>asList(
new PhotoViewManager()
);
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
ReactPackage
Java
public class MyLibraryPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext) {
return Arrays.<ViewManager>asList(
new PhotoViewManager()
);
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
createViewManagers
Java
ReactInstanceManager
Native Modules
import PropTypes from “prop-types”;
import {
requireNativeComponent,
View
} from "react-native";
const name = "PhotoView";
const photoViewInterface = {
name: name,
displayName: name,
propTypes: {
...View.propTypes,
uri: PropTypes.string.isRequired
}
};
export default
requireNativeComponent(name, photoViewInterface);
JS PhotoView.js
JS
Java
Java
import PhotoView from "./PhotoView";
//
<PhotoView
uri="http://example.com/hoge.png" />
JS
• JS UI
props interface
•
ViewManager
React Android View
Native Module
UIManagerModule
UIManagerModule
• React
React Native React DOM
Java
• createView updateView
ReactMethod
@ReactMethod
public void createView(
int tag,
String className,
int rootViewTag,
ReadableMap props) {
mUIImplementation.createView(
tag, className, rootViewTag, props);
}
@ReactMethod
public void updateView(
int tag,
String className,
ReadableMap props) {
mUIImplementation.updateView(
tag, className, props);
}
UIManagerModule.java
React
ReactMethod
View
• React View Java
ReactShadowNode Java View
Yoga
• UIManagerModule React Java
View
• View View
Yoga
https://facebook.github.io/yoga/
• Flexbox
Yoga Android
• borderColor
ViewManager Android
setBorderColor
React
• Java C++ JS
• ReactInstanceManager
• ReactInstanceManager Native
Module JavaScript Module
• UI Native Module
React
Native Modules
Android
• Android
APK
•
APK
Application Sources
import
$buildDir/intermediates
/assets/release /res/merged/release
iOS
require("path/to/awesome.png")
iOS
React Native Android
• API View Android
•
• JS JS
• Android SDK iOS SDK
• Web
• JS
• React Native


http://tomoima525.hatenablog.com/entry/2017/12/19/180523
• Android 

7 

https://peaks.cc/Nkzn/architecture_patterns
@tomoaki_imai
React Native Androidはなぜ動くのか

More Related Content

What's hot

入門ClojureScript
入門ClojureScript入門ClojureScript
入門ClojureScript
sohta
 
Rust
RustRust
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Akira Inoue
 
使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務
升煌 黃
 
State management in react applications (Statecharts)
State management in react applications (Statecharts)State management in react applications (Statecharts)
State management in react applications (Statecharts)
Tomáš Drenčák
 
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Michel Schudel
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニーUnity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 
VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発
Ryosuke Izumi
 
React
React React
React
중운 박
 
LeafletでWebGIS入門
LeafletでWebGIS入門LeafletでWebGIS入門
LeafletでWebGIS入門
Yasunori Kirimoto
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
 
CSP Lv.2の話
CSP Lv.2の話CSP Lv.2の話
CSP Lv.2の話
Yu Yagihashi
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
shinjiigarashi
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
Shengyou Fan
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
 
gRPC入門
gRPC入門gRPC入門
gRPC入門
Kenjiro Kubota
 
OpenShiftでJBoss EAP構築
OpenShiftでJBoss EAP構築OpenShiftでJBoss EAP構築
OpenShiftでJBoss EAP構築
Daein Park
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
Shengyou Fan
 
An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java Developers
Kostas Saidis
 

What's hot (20)

入門ClojureScript
入門ClojureScript入門ClojureScript
入門ClojureScript
 
Rust
RustRust
Rust
 
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
 
使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務
 
State management in react applications (Statecharts)
State management in react applications (Statecharts)State management in react applications (Statecharts)
State management in react applications (Statecharts)
 
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニーUnity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
 
VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発
 
React
React React
React
 
LeafletでWebGIS入門
LeafletでWebGIS入門LeafletでWebGIS入門
LeafletでWebGIS入門
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
CSP Lv.2の話
CSP Lv.2の話CSP Lv.2の話
CSP Lv.2の話
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
 
gRPC入門
gRPC入門gRPC入門
gRPC入門
 
OpenShiftでJBoss EAP構築
OpenShiftでJBoss EAP構築OpenShiftでJBoss EAP構築
OpenShiftでJBoss EAP構築
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java Developers
 

Similar to React Native Androidはなぜ動くのか

React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Yukiya Nakagawa
 
Workshop 26: React Native - The Native Side
Workshop 26: React Native - The Native SideWorkshop 26: React Native - The Native Side
Workshop 26: React Native - The Native Side
Visual Engineering
 
Build web apps with react js
Build web apps with react jsBuild web apps with react js
Build web apps with react js
dhanushkacnd
 
An Emoji Introduction to React Native (Panagiotis Vourtsis, Senior Front End ...
An Emoji Introduction to React Native (Panagiotis Vourtsis, Senior Front End ...An Emoji Introduction to React Native (Panagiotis Vourtsis, Senior Front End ...
An Emoji Introduction to React Native (Panagiotis Vourtsis, Senior Front End ...
GreeceJS
 
Android development
Android developmentAndroid development
Android development
Gregoire BARRET
 
Getting Started with React v16
Getting Started with React v16Getting Started with React v16
Getting Started with React v16
Benny Neugebauer
 
React native by example by Vadim Ruban
React native by example by Vadim RubanReact native by example by Vadim Ruban
React native by example by Vadim Ruban
Lohika_Odessa_TechTalks
 
React & Redux for noobs
React & Redux for noobsReact & Redux for noobs
React & Redux for noobs
[T]echdencias
 
Let's react - Meetup
Let's react - MeetupLet's react - Meetup
Let's react - Meetup
RAJNISH KATHAROTIYA
 
Mobile Day - React Native
Mobile Day - React NativeMobile Day - React Native
Mobile Day - React Native
Software Guru
 
A full introductory guide to React
A full introductory guide to ReactA full introductory guide to React
A full introductory guide to React
Jean Carlo Emer
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android InfrastructureC.T.Co
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android InfrastructureAlexey Buzdin
 
Connect.js - Exploring React.Native
Connect.js - Exploring React.NativeConnect.js - Exploring React.Native
Connect.js - Exploring React.Native
joshcjensen
 
React outbox
React outboxReact outbox
React outbox
Angela Lehru
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React
Robert DeLuca
 
Simple React Todo List
Simple React Todo ListSimple React Todo List
Simple React Todo List
Ritesh Chaudhari
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation洪 鹏发
 
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
Rob Tweed
 

Similar to React Native Androidはなぜ動くのか (20)

React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigiReact Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
 
Workshop 26: React Native - The Native Side
Workshop 26: React Native - The Native SideWorkshop 26: React Native - The Native Side
Workshop 26: React Native - The Native Side
 
Build web apps with react js
Build web apps with react jsBuild web apps with react js
Build web apps with react js
 
An Emoji Introduction to React Native (Panagiotis Vourtsis, Senior Front End ...
An Emoji Introduction to React Native (Panagiotis Vourtsis, Senior Front End ...An Emoji Introduction to React Native (Panagiotis Vourtsis, Senior Front End ...
An Emoji Introduction to React Native (Panagiotis Vourtsis, Senior Front End ...
 
Android development
Android developmentAndroid development
Android development
 
Getting Started with React v16
Getting Started with React v16Getting Started with React v16
Getting Started with React v16
 
React native by example by Vadim Ruban
React native by example by Vadim RubanReact native by example by Vadim Ruban
React native by example by Vadim Ruban
 
React & Redux for noobs
React & Redux for noobsReact & Redux for noobs
React & Redux for noobs
 
Let's react - Meetup
Let's react - MeetupLet's react - Meetup
Let's react - Meetup
 
Intro react js
Intro react jsIntro react js
Intro react js
 
Mobile Day - React Native
Mobile Day - React NativeMobile Day - React Native
Mobile Day - React Native
 
A full introductory guide to React
A full introductory guide to ReactA full introductory guide to React
A full introductory guide to React
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Connect.js - Exploring React.Native
Connect.js - Exploring React.NativeConnect.js - Exploring React.Native
Connect.js - Exploring React.Native
 
React outbox
React outboxReact outbox
React outbox
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React
 
Simple React Todo List
Simple React Todo ListSimple React Todo List
Simple React Todo List
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
 
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
 

More from Yukiya Nakagawa

Atomic Designは「マルチ」で真価を発揮する
Atomic Designは「マルチ」で真価を発揮するAtomic Designは「マルチ」で真価を発揮する
Atomic Designは「マルチ」で真価を発揮する
Yukiya Nakagawa
 
Androidの入門書を書いたときに気にしたこと #NDS57
Androidの入門書を書いたときに気にしたこと #NDS57Androidの入門書を書いたときに気にしたこと #NDS57
Androidの入門書を書いたときに気にしたこと #NDS57
Yukiya Nakagawa
 
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJアグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
Yukiya Nakagawa
 
CSS in JSの話 #friday13json
CSS in JSの話 #friday13jsonCSS in JSの話 #friday13json
CSS in JSの話 #friday13json
Yukiya Nakagawa
 
AndroidLint #DroidKaigi
AndroidLint #DroidKaigiAndroidLint #DroidKaigi
AndroidLint #DroidKaigi
Yukiya Nakagawa
 
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetupAndroid Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Yukiya Nakagawa
 
僕らのデータ同期プラクティス
僕らのデータ同期プラクティス僕らのデータ同期プラクティス
僕らのデータ同期プラクティス
Yukiya Nakagawa
 
Android再入門 〜Eclipseのことは忘れろ〜
Android再入門 〜Eclipseのことは忘れろ〜Android再入門 〜Eclipseのことは忘れろ〜
Android再入門 〜Eclipseのことは忘れろ〜
Yukiya Nakagawa
 
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4
Yukiya Nakagawa
 
アグリノートを支える技術
アグリノートを支える技術アグリノートを支える技術
アグリノートを支える技術
Yukiya Nakagawa
 
NDS36 Kotlin Cute
NDS36 Kotlin CuteNDS36 Kotlin Cute
NDS36 Kotlin Cute
Yukiya Nakagawa
 
NDS36 Java7&Java8
NDS36 Java7&Java8NDS36 Java7&Java8
NDS36 Java7&Java8
Yukiya Nakagawa
 
Coworking Business Forum in NIIGATA 2013
Coworking Business Forum in NIIGATA 2013Coworking Business Forum in NIIGATA 2013
Coworking Business Forum in NIIGATA 2013
Yukiya Nakagawa
 
Niigata.rb#03
Niigata.rb#03Niigata.rb#03
Niigata.rb#03
Yukiya Nakagawa
 
PechaKucha Niigata #3 2013.7.27
PechaKucha Niigata #3 2013.7.27PechaKucha Niigata #3 2013.7.27
PechaKucha Niigata #3 2013.7.27Yukiya Nakagawa
 
ぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつ
Yukiya Nakagawa
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
Yukiya Nakagawa
 
ぼくらの錬金術〜キメラの作り方〜
ぼくらの錬金術〜キメラの作り方〜ぼくらの錬金術〜キメラの作り方〜
ぼくらの錬金術〜キメラの作り方〜Yukiya Nakagawa
 
Action Bar Compat読んでみた
Action Bar Compat読んでみたAction Bar Compat読んでみた
Action Bar Compat読んでみたYukiya Nakagawa
 

More from Yukiya Nakagawa (20)

Atomic Designは「マルチ」で真価を発揮する
Atomic Designは「マルチ」で真価を発揮するAtomic Designは「マルチ」で真価を発揮する
Atomic Designは「マルチ」で真価を発揮する
 
Androidの入門書を書いたときに気にしたこと #NDS57
Androidの入門書を書いたときに気にしたこと #NDS57Androidの入門書を書いたときに気にしたこと #NDS57
Androidの入門書を書いたときに気にしたこと #NDS57
 
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJアグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
アグリノートにおけるGIS情報を活かした圃場・作付管理の取り組み @ FOSS4GJ
 
CSS in JSの話 #friday13json
CSS in JSの話 #friday13jsonCSS in JSの話 #friday13json
CSS in JSの話 #friday13json
 
AndroidLint #DroidKaigi
AndroidLint #DroidKaigiAndroidLint #DroidKaigi
AndroidLint #DroidKaigi
 
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetupAndroid Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
 
僕らのデータ同期プラクティス
僕らのデータ同期プラクティス僕らのデータ同期プラクティス
僕らのデータ同期プラクティス
 
Android再入門 〜Eclipseのことは忘れろ〜
Android再入門 〜Eclipseのことは忘れろ〜Android再入門 〜Eclipseのことは忘れろ〜
Android再入門 〜Eclipseのことは忘れろ〜
 
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4
 
アグリノートを支える技術
アグリノートを支える技術アグリノートを支える技術
アグリノートを支える技術
 
NDS36 Kotlin Cute
NDS36 Kotlin CuteNDS36 Kotlin Cute
NDS36 Kotlin Cute
 
NDS36 Java7&Java8
NDS36 Java7&Java8NDS36 Java7&Java8
NDS36 Java7&Java8
 
Coworking Business Forum in NIIGATA 2013
Coworking Business Forum in NIIGATA 2013Coworking Business Forum in NIIGATA 2013
Coworking Business Forum in NIIGATA 2013
 
Niigata.rb#03
Niigata.rb#03Niigata.rb#03
Niigata.rb#03
 
PechaKucha Niigata #3 2013.7.27
PechaKucha Niigata #3 2013.7.27PechaKucha Niigata #3 2013.7.27
PechaKucha Niigata #3 2013.7.27
 
ぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつぼくのかんがえたふつうのあんどろいどかいはつ
ぼくのかんがえたふつうのあんどろいどかいはつ
 
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-JavaライブラリAndroidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
 
NFCLAB会津
NFCLAB会津NFCLAB会津
NFCLAB会津
 
ぼくらの錬金術〜キメラの作り方〜
ぼくらの錬金術〜キメラの作り方〜ぼくらの錬金術〜キメラの作り方〜
ぼくらの錬金術〜キメラの作り方〜
 
Action Bar Compat読んでみた
Action Bar Compat読んでみたAction Bar Compat読んでみた
Action Bar Compat読んでみた
 

Recently uploaded

Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 

Recently uploaded (20)

Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 

React Native Androidはなぜ動くのか