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
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
140
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.7k
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
630
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
1.7k
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
400
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
220
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
120
FDEが実現するAI駆動経営の現在地
gonta
2
200
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
150
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
160
継続モナドとリアクティブプログラミング
yukikurage
3
630
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
640
Bash Introduction
62gerente
615
220k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
320
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
Measuring & Analyzing Core Web Vitals
bluesmoon
9
900
GraphQLとの向き合い方2022年版
quramy
50
15k
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 ͚ͩϏϧυෆՄɾίʔυิෆೳͨ·ʹ͋Δʁ