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
Androidエンジニア目線のKMM / iOSエンジニア目線のKMM
Search
watanave
May 19, 2021
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Androidエンジニア目線のKMM / iOSエンジニア目線のKMM
watanave
May 19, 2021
More Decks by watanave
See All by watanave
Figma Dev Modeで変わる!Flutterの開発体験
watanave
0
5.3k
Flutter実践開発に書かなかったこと
watanave
0
87
Flutterビギナーのための Widget完全攻略
watanave
0
52
決めず、語らずのリーダーシップ
watanave
0
590
複数プロジェクトを横断するゆめみテックリードの戦略
watanave
0
140
Why does Activity die soon?
watanave
0
370
Anko試食会
watanave
0
2.4k
Other Decks in Programming
See All in Programming
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
190
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
500
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
330
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
210
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
230
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
520
AIエージェントで 変わるAndroid開発環境
takahirom
2
700
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
240
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
120
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
390
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Discover your Explorer Soul
emna__ayadi
2
1.2k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
Git: the NoSQL Database
bkeepers
PRO
432
67k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
RailsConf 2023
tenderlove
30
1.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Chasing Engaging Ingredients in Design
codingconduct
0
240
Transcript
"OESPJEΤϯδχΞઢͷ,.. J04ΤϯδχΞઢͷ,.. גࣜձࣾελσΟετºגࣜձࣾΏΊΈ߹ಉษڧձ :PIUB8BUBOBWF
"CPVUNF :PIUB8BUBOBWF גࣜձࣾΏΊΈJ04"OESPJE5FDI-FBE ւಓࡏॅͰࣇͷ 🕊XBUBOBWF !4VTBO@KBDLP 🐙XBUBOBWF XBUBOBWFY
,..ͱ
,..ͱ w ,PUMJO.VMUJQMBUGPSNGPS.PCJMF w ,PUMJOͰॻ͍ͨιʔε͕ "OESPJEͱJ04Ͱಈ͘ʂ IUUQTLPUMJOMBOHPSHEPDTNVMUJQMBUGPSNIUNM
'MVUUFSͱͲ͏ҧ͏ʁ IUUQTLPUMJOMBOHPSHEPDTNPCJMFBSDIJUFDULNNBQQIUNMUIBOLTUPDPOUSJCVUPST
"OESPJEΤϯδχΞઢͷ,.. J04ΤϯδχΞઢͷ,..
"OESPJEΤϯδχΞࢹͷ,.. w ීஈͷ"OESPJEΞϓϦ։ൃͱͲ͏ҧ͏ʁ w J04ͷྀඞཁʁ
։ൃڥʁ w "OESPJE4UVEJP ,..ϓϥάΠϯ w WFSTJPOPSIJHIFS w όʔδϣϯޓੑʹҙ w "OESPJE4UVEJP
w ,PUMJOϓϥάΠϯ w ,..ϓϥάΠϯ
"OESPJE(SBEMFQMVHJO w Ҏ্ඇରԠ w ͔͠͠ɺϫʔΫΞϥϯυͰར༻Մೳ w IUUQTZPVUSBDLKFUCSBJOTDPNJTTVF,5 w %SPJE,BJHJΞϓϦ͜ͷϫʔΫΞϥϯυΛ͍ͬͯΔ
ύοͱݟϚϧνϞδϡʔϧϓϩδΣΫτ w ςϯϓϨʔτͰ৽نϓϩδΣΫτ࡞Δͱʜ w "OESPJEΞϓϦϞδϡʔϧ w ,..ڞ௨Ϟδϡʔϧ w JPT"QQԼ9DPEFͷϓϩδΣΫτ w
ϚϧνϦϙδτϦՄ "OESPJEΞϓϦϞδϡʔϧ 9DPEFϓϩδΣΫτ ڞ௨Ϟδϡʔϧ
ڞ௨Ϟδϡʔϧͷத w DPNNPO.BJOʹڞ௨ίʔυ w ϓϥοτϑΥʔϜݻ༗ίʔυͦΕͧΕͷ σΟϨΫτϦԼʹ w DPNNPO.BJOʹએݴͨ͠JOUFSGBDFΛ֤ϓ ϥοτϑΥʔϜͰ࣮ w
FYQFDUBDUVBMͱ͍͏Έ "OESPJEݻ༗ίʔυ J04ݻ༗ίʔυ ڞ௨ίʔυ
ϥΠϒϥϦબఆ৻ॏʹ w 🙅+BWBϥΠϒϥϦ͑ͳ͍ w %BHHFSˠ,PJO ,PEFJO w 3FUSP fi Uˠ,UPS
w 3PPNˠ4RMEFMJHIU w IUUQTHJUIVCDPN""LJSB,PUMJO.VMUJQMBUGPSN-JCSBSJFT
$PSPVUJOFTͷѻ͍ʹҙ͕ඞཁ w J04 ,PUMJO/BUJWF ͷ$PSPVUJOFTγϯάϧεϨου w ϚϧνεϨουόʔδϣϯผϒϥϯν dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3-native-mt")
{ version { strictly("1.4.3-native-mt" ) } } }
$PSPVUJOFTͷѻ͍ʹҙ͕ඞཁ w J04 ,PUMJO/BUJWF ҆શͳฒྻॲཧͷͨΊʹGSP[FOͱ͍͏Έ͕ w "OESPJEΤϯδχΞ͕ීஈ௨Γʹڞ௨ίʔυΛ࣮͢Δͱ J04͚ͩΫϥογϡ💥ͷΑ͏ͳ͜ͱ͕ى͜ΓಘΔ MainScope().launch
{ var str = “string " withContext(Dispatchers.Main) { str = “main " } withContext(Dispatchers.Default) { str = "default " } )
J04ΤϯδχΞࢹͷ,.. w ීஈͷJ04ΞϓϦ։ൃͱͲ͏ҧ͏ʁ w ԿΛ֮͑ͳ͚ΕͳΒͳ͍ʁ w ,..ͷίʔυͲ͏ͬͯݺͼग़͢ͷʁ w ݴ͍͍ͨ͜ͱ͕ଟ͗͢ΔͷͰۦ͚Ͱ
։ൃڥʁ w ͍ͭ௨Γͷ9DPEF w WFSTJPOPSIJHIFS w ,PUMJOίʔυॻ͘ͳΒ"OESPJE4UVEJP ,..ϓϥάΠϯ
,PUMJOͱ4XJGUࣅͯΔʁ WBM⁶MFU GVOD⁶GVO 7PJE⁶6OJU QSPUPDPM⁶JOUFSGBDF TXJUDI⁶XIFO FOVN⁶TFBMEDMBTTʁ ͋Δఔͷֶशίετඞཁ͔ fun
test(str: String?) { str?.count() // ·͘͞͠OptionalνΣΠϯʂ str!!.count() // ڧ੍Unwra p if (str == null) retur n // ͜͜OptionalνΣΠϯ͍Βͳ͍ͷ⁉ str.count( ) } Ұݟɺҙຯෆ໌ͳεϚʔτΩϟετ
(SBEMFͱ͍͏ϏϧυγεςϜ val iosTarget: (String, KotlinNativeTarget.() -> Unit) -> KotlinNativeTarget =
if (System.getenv("SDK_NAME")?.startsWith("iphoneos") == true ) ::iosArm6 4 els e ::iosX6 4 iosTarget("ios") { binaries { framework { baseName = "shared " } } } ,..ͷϞδϡʔϧ⁶9DPEFͷλʔήοτʁʁʁ
J04ΤϯδχΞ͕֮͑Δඞཁ͋Δ͔ʁ IUUQTLPUMJOMBOHPSHEPDTNPCJMFPSHBOJ[FQSPDFTTBSPVOELNNIUNMBQQSPBDIFTUPPSHBOJ[JOHUFBNXPSLGPSNVMUJQMBUGPSNQSPKFDUT
,PUMJOίʔυΛͲ͏࣮ͬͯߦ͢Δʁ w J04ͷ,PUMJO ,PUMJO/BUJWF 0CK$ޓ w ,PUMJOίϯύΠϥGSBNFXPSLΛੜͯ͘͠ΕΔ w ,PUMJOͰ"'/FUXPSLJOH͕͑Δ w
"3$ͱ౷߹͞ΕͯΔ
,PUMJOίʔυΛͲ͏࣮ͬͯߦ͢Δʁ IUUQTLPUMJOMBOHPSHEPDTOBUJWFPCKDJOUFSPQIUNMVTBHF *OUFSPQFSBCJMJUZXJUI4XJGU0CKFDUJWF$
,PUMJOίʔυΛͲ͏࣮ͬͯߦ͢Δʁ w GSBNFXPSLΛJNQPSU͢Δ IUUQTLPUMJOMBOHPSHEPDTNPCJMFJOUFHSBUFJOFYJTUJOHBQQIUNMDPOOFDUUIFGSBNFXPSLUPZPVSJPTQSPKFDU val packForXcode by tasks.creating(Sync::class) { group
= "build " val mode = System.getenv("CONFIGURATION") ?: "DEBUG " val targetName = "ios " val framework = kotlin.targets.getByName<KotlinNative > inputs.property("mode", mode ) dependsOn(framework.linkTask ) val targetDir = File(buildDir, "xcode-frameworks" ) from({ framework.outputDirectory } ) into(targetDir ) }
,PUMJOίʔυΛͲ͏࣮ͬͯߦ͢Δʁ w GSBNFXPSLΛJNQPSU͢Δ IUUQTLPUMJOMBOHPSHEPDTNPCJMFJOUFHSBUFJOFYJTUJOHBQQIUNMDPOOFDUUIFGSBNFXPSLUPZPVSJPTQSPKFDU
ݟΒ͵Τϥʔ 'VODUJPOEPFTOUIBWFPSJOIFSJU!5ISPXTBOOPUBUJPOBOEUIVTFYDFQUJPOJTOU QSPQBHBUFEGSPN,PUMJOUP0CKFDUJWF$4XJGUBT/4&SSPS *UJTDPOTJEFSFEVOFYQFDUFEBOEVOIBOEMFEJOTUFBE1SPHSBNXJMMCFUFSNJOBUFE 6ODBVHIU,PUMJOFYDFQUJPO99999999 ,PUMJOίʔυͰ!5ISPXTΞϊςʔγϣϯΛ͚ͭΕͯΔ
J04 ,PUMJO/BUJWF ͚ͩϏϧυෆՄɾίʔυิෆೳʁ w IJFSBSDIJDBMQSPKFDUTUSVDUVSF IUUQTLPUMJOMBOHPSHEPDTNJHSBUJOHNVMUJQMBUGPSNQSPKFDUUPIUNMNJHSBUFUPUIFIJFSBSDIJDBMQSPKFDUTUSVDUVSF ͜Ε͕ ͜͏ͳΔ
J04 ,PUMJO/BUJWF ͚ͩϏϧυෆՄɾίʔυิෆೳʁ w IJFSBSDIJDBMQSPKFDUTUSVDUVSF IUUQTLPUMJOMBOHPSHEPDTNJHSBUJOHNVMUJQMBUGPSNQSPKFDUUPIUNMNJHSBUFUPUIFIJFSBSDIJDBMQSPKFDUTUSVDUVSF
·ͱΊ w "OESPJEΤϯδχΞࢹͰ w ,..ϚϧνϞδϡʔϧϓϩδΣΫτ w ϥΠϒϥϦબఆͱίϧʔνϯؾΛΔ͠ w J04ΤϯδχΞ w
,PUMJO(SBEMFͷֶशίετ͋Δ w ͦ͜"OESPJEΤϯδχΞʹͤΔͱ͍͏બࢶ͋Δ w ,PUMJOͷίʔυ0CK$ޓ w J04 ,PUMJO/BUJWF ͚ͩϏϧυෆՄɾίʔυิෆೳͨ·ʹ͋Δʁ