Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ハイブリッドなReact NativeアプリをKotlin MPPでチョット良くする

ハイブリッドなReact NativeアプリをKotlin MPPでチョット良くする

集まれKotlin好き!Kotlin愛好会 vol.21のLT資料です

https://love-kotlin.connpass.com/event/173821/
識別番号44(開発中のMastodonクライアント): https://github.com/subroh0508/ID44

subroh_0508

April 28, 2020
Tweet

More Decks by subroh_0508

Other Decks in Technology

Transcript

  1. 3FBDU/BUJWF /BUJWF.PEVMF 3FBDU/BUJWF w +BWB4DSJQU 3FBDUKTͰ/BUJWFϞόΠϧΞϓϦΛ࡞ΕΔϑϨʔϜϫʔΫ w ωΠςΟϒίʔυͰ࣮૷͞ΕͨϞδϡʔϧ΋ݺͼग़͠Մೳʂ w "OESPJE,PUMJO+BWBɹɹJ044XJGU0CKFDUJWF$

    w ϋΠϒϦουʹ͢ΔͱԿ͕خ͍͔͠ˠলུ w ࢀߟʮ3FBDU/BUJWFͱ&YQPΛ༻͍ͨΫϩεϓϥοτϑΥʔϜ։ൃೖ໳ʯ !%SPJE,BJHJ%BZ ผ్Ϋϥεఆ͕ٛඞཁ
  2. ྫ 5PBTUͷදࣔ<,PUMJO> w class ToastModule( context: ReactApplicationContext ) : ReactContextBaseJavaModule(context)

    { override fun getName() = "ToastExample" @ReactMethod fun show(message: String) { Toast.makeText( reactApplicationContext, message, Toast.LENGTH_SHORT ).show() } } 3FBDU$POUFYU#BTF+BWB.PEVMFΛ ܧঝ HFU/BNF ϝιουΛ ΦʔόʔϥΠυ !3FBDU.FUIPEΛ͚ͭͨ ϝιουʹ࣮ߦ͍ͨ͠ॲཧΛهड़
  3. ྫ 5PBTUͷදࣔ<+BWBTDSJQU> w // ToastExample.js import { NativeModules } from

    'react-native'; module.exports = NativeModules.ToastExample; // app.js import { ToastExample } from './ToastExample'; ToastExample.show('In The Name Of。 ...LOVE?'); HFU/BNF Ͱࢦఆͨ͠ ໊લͰΞΫηεͰ͖Δ !3FBDU.FUIPEΛ͚ͭͨ ϝιουΛ+4͔Βݺ΂Δ ͔͠͠େ͖ͳ໰୊͕ʜ ɾТɾʆ ˞1SPNJTFΛ࢖͑͹ ɹඇಉظॲཧʹ΋ରԠ
  4. ྫ "1*Ϩεϙϯεͷ੒൱ͱϝοηʔδจࣈྻΛ࣋ͭEBUBDMBTT w data class Response( val isSuccessful: Boolean, val

    successMessage: String, val errorMessage: String ) { fun message() = if (isSuccessful) successMessage else errorMessage fun toMap(): ReadableMap = ... } @ReactMethod fun fetch(promise: Promise) { val res: Response = client.get(...) promise.resolve(res.toMap()) } 3FTQPOTFܕͷ஋Λ ඇಉظతʹฦ͢ϝιου JT4VDDFTTGVMʹΑͬͯ ฦΓ஋͕มΘΔNFTTBHFϝιου
  5. ྫ GFUDIϝιουΛ+4͔Βݺͼग़͢ͱʜ w import { FetchExample } from './FetchExample'; const

    res = await FetchExample.fetch(); console.log(res); // -> { // isSuccessful: true, // successMessage: 'Success :)', // errorMessage: 'Error :(' // } SFT͸ͨͩͷ+4ͷ0CKFDU NFTTBHFϝιου͕ݺ΂ͳ͍ʂ ˠ,PUMJOͰ࣮૷ͨ͠ϩδοΫΛ ɹ΋͏Ұ౓+4Ͱॻ͘ͷ͸ආ͚͍ͨʜ ͍͍ղܾ๏ɺ͋ΔΜ΍Ͱʜ