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
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発!...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
FORTE
November 05, 2023
Technology
670
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発! / cmd_01_sample
FORTE
November 05, 2023
More Decks by FORTE
See All by FORTE
入門!実践!サーバーサイドKotlin〜2026春改訂版〜サンプル/sski2_sample
fortegp05
0
130
サーバーサイドKotlinやってみた!/ssk_meetup_18_01
fortegp05
1
41
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
380
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
400
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
1
99
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
79
超入門!サーバーサイドKotlin〜2026春更新版〜/sski1
fortegp05
0
570
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
fortegp05
0
120
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
210
Other Decks in Technology
See All in Technology
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
310
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
3
390
仕様駆動開発、導入半年。「本当に速くなってるの?」にデータで答える / AICon2026_hirakawa
rakus_dev
0
300
「休む」重要さ
smt7174
5
1.4k
発表と総括 / Presentations and Summary
ks91
PRO
0
180
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
500
そのドキュメント、自動化しませんか?
yuksew
1
390
GoでCコンパイラを作った話
repunit
0
150
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
270
[Droidcon Orlando '26] The Android Lens: Applying Mobile Forensics to AI Performance
amanda_hinchman
1
100
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
120
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
240
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
380
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Chasing Engaging Ingredients in Design
codingconduct
0
240
Fireside Chat
paigeccino
42
4k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
620
KATA
mclloyd
PRO
35
15k
For a Future-Friendly Web
brad_frost
183
10k
Transcript
None
ೖ!࣮ફ!Kotlin Compose Multiplatform ͰσεΫτοϓ ΞϓϦ։ൃ! FORTE ɹஶ 2023-11-12 ൛ aozora
Project ൃߦ 1
͡Ίʹ ͜ͷຊΛखʹऔ͍͖ͬͯͨͩͲ͏͋Γ͕ͱ͏͍͟͝·͢ɻஶऀͷ FORTE ʢϑΥϧςʣͰ͢ɻࠓճ Compose Multiplatform ͰσεΫτοϓΞϓϦΛ։ ൃ͢ΔྲྀΕΛհ͢Δٕज़ಉਓࢽʹͳΓ·͢ɻࠓ·Ͱ Kotlin ʹؔ͢Δٕज़ಉਓ
ࢽαʔόʔαΠυ Kotlin ʹ͍ͭͯॻ͍͖ͯ·͕ͨ͠ωλΕͨ͠ͷͰ͠Β ͓͘ٳΈͨ݁͠ՌɺCompose Multiplatform ͕໘നͦ͏ɺεϚϗ͚ͷهࣄ ͋Δ͚ͲσεΫτοϓΞϓϦ͚গͳ͍ (ݸਓతʹεϚϗωΠςΟϒͷํ͕ ͖)ɺͱ͍͏͜ͱͰ Compose Multiplatform ͰσεΫτοϓΞϓϦΛ࡞͢Δ ༰ͱͳΓ·ͨ͠ɻͦͷͨΊɺαʔόʔαΠυ Kotlin γϦʔζͰͳ͍Ͱ͕͢ɺ Kotlin γϦʔζͱͯ͠ 5 ͷٕज़ಉਓࢽͱͳΓ·͢ɻ ຊஶ͜Ε·ͰͷαʔόʔαΠυ Kotlin γϦʔζಉ༷ɺWindowsɺMac ྆ର ԠͰ͢ɻࠓ·Ͱ IntelliJ IDEAɺVS Code ͷ྆ IDE ʹରԠ͖ͯ͠·͕ͨ͠ɺ ࠓճ VS Code ͱͳΓ·͢ɻͱ͍͏ͷ Compose Multiplatform Λ࢝ ΊΔͷʹ IntelliJ IDEA ͷํ͕ѹతʹ؆୯ɺ͔ͭɺָͰ VS Code ͩͱͨͩͨ ͩ໘ष͍खॱ͕ඞཁʹͳΔͨΊͰ͢ɻͦͷͨΊɺຊஶͰग़དྷ্͕ͬͨιʔε Λ VS Code Ͱಈ͔͢खॱհ͠·͕͢ɺVS Code Ͱͷ։ൃ͓͢͢Ί͠·ͤ ΜɻࠓޙɺϓϥάΠϯͳͲͰঢ়گ͕มΘΔ͜ͱ͋Δͱࢥ͏ͷͰɺVS Code ͷ ํΞϯςφΛཱ͓ͯͯ͘ͱྑ͍Ͱ͠ΐ͏ɻ ຊஶͷ༰ ຊஶ Compose Multiplatform Ͱͷ։ൃʹ͍ͭͯओʹ࣍ͷ༰Λհ͍ͯ͠ ·͢ɻ • Compose Multiplatform ͷհͱؔ࿈ٕज़ʹ͍ͭͯ • Compose Multiplatform ϓϩδΣΫτͷ࡞ͱ࣮ߦํ๏ • ओͳ UI ίϯϙʔωϯτͷ࣮ํ๏ • Οϯυཧͷ࣮ํ๏ • ؆୯ͳσεΫτοϓΞϓϦ։ൃͷྫͱͯ͠σδλϧ࣌ܭΞϓϦͷ։ൃΛ հ • WindowsɺMac ༻ͦΕͧΕͷ࣮ߦϑΝΠϧ࡞ํ๏ 2
Compose Multiplatform ͷհͱؔ࿈ٕज़ʹ͍ͭͯ ͦͦ Compose Multiplatform ͱͳΜͳͷ͔?Ͳ͏͍ͬͨ͜ͱʹ͑Δ ͷ͔?ࣅͨΑ͏ͳϥΠϒϥϦͱͷࠩҟʹ͍ͭͯղઆ͠·͢ɻ Compose Multiplatform
ϓϩδΣΫτͷ࡞ํ๏ ΄ͱΜͲެࣜͷ Github ϦϙδτϦͰհ͞Ε͍ͯΔ༰Ͱ͋Γ·͕͢ɺ࣮ ࡍʹͬͯΈͨهͱͯ͠ɺ·ͨͬͯΈͯಘΒΕͨҙͳͲΛհ͠·͢ɻ ओͳ UI ίϯϙʔωϯτͷ࣮ํ๏ Compose Multiplatform Ͱ Jetpack Compose Λར༻ͯ͠ UI ίϯϙʔω ϯτΛ࣮Ͱ͖·͢ɻ͍͔ͭ͘ͷίϯϙʔωϯτΛ࣮ͯ͠Έ࣮ͯࡍʹσεΫ τοϓΞϓϦͱͯ͠දࣔͯ͠Έ·͠ΐ͏ɻ Οϯυཧͷ࣮ํ๏ σεΫτοϓΞϓϦ௨ৗҰຕͷΟϯυͱͯ͠දࣔ͞Ε·͢ɻ͜ͷΟϯ υཧͷجຊʹ͍ͭͯհ͠·͢ɻ ؆୯ͳσεΫτοϓΞϓϦ։ൃͷྫͱͯ͠σδλϧ࣌ܭΞϓϦͷ։ൃΛհ ͜͜·Ͱհͨ͠༰ͷ·ͱΊͱͯ͠؆୯ͳσεΫτοϓΞϓϦͷ࣮ྫΛ հ͠·͢ɻΞϓϦͷ༰σδλϧ࣌ܭͰ͢ɻݸਓతͳͰ͕͢ɺσεΫτοϓ ͷલ໘ʹৗʹ࣌ܭ͕දࣔ͞Ε͍ͯΔͱศརͩͱײ͍ͯ͡·͢ɻWindows Mac λεΫόʔϝχϡʔόʔʹ࣌ܭදࣔͰ͖·͕͢ɺͲͪΒඇදࣔʹ͍ͯ͠ ΔͱΧʔιϧΛಈ͔͞ͳ͍ͱදࣔͰ͖·ͤΜɻ͔ͱ͍ͬͯ࣌ܭͷͨΊʹͦΕΒΛ ৗʹද͍ࣔͯ͠ΔͱΟϯυͷදࣔྖҬ͕ৗʹগͳ͘ͳͬͯ͠·͍·͢͠ɺ࣌ ܭҎ֎ͷ༨ܭͳใදࣔ͞Εͯ͠·͍·͢ɻৗʹલ໘ʹ࣌ࠁ͚ͩදࣔ͞Ε͍ͯ ͯཉ͍͠ͱ͍͏ཁΛຬͨ͢ʹσεΫτοϓΞϓϦ͕Ұ൪ͱߟ͍͑ͯ·͢ɻ ͳ͓ɺMac Ͱࠓޙͷ OS ΞοϓσʔτͰσεΫτοϓʹΟδΣοτͱͯ͠ ࣌ܭΛઃஔՄೳʹͳΔ༧ఆͩͦ͏Ͱ͕͢ɺσδλϧදه͕Մೳ͔ෆ໌Ͱ͢͠ɺ ҠಈՄೳʹ͍ͨ͠ɺৗʹલ໘ද͍ࣔͨ͠ɺअຐͳͱ͖Ұ࣌తʹ࠷খԽ͍ͨ͠ͳ Ͳͷࡉ͔ͳ੍ޚ͕Մೳ͔͔Γ·ͤΜɻWindows Ͱ 11 ͰΟδΣοτػೳ ͕Ճ͞Ε·͕ͨ͠ɺσδλϧ࣌ܭ͕ଘࡏ͢Δ͔͔Γ·ͤΜͰͨ͠ɺஶऀ ·ͩ Windows10 ͳͷͰ࣮ࡍʹ֬ೝͰ͖ͣɺগ͠άάͬͨఔͰσδλϧ࣌ ܭΛදࣔ͢Δํ๏ݟ͔ͭΓ·ͤΜͰͨ͠ɻ·ͨԾʹΟδΣοτͰՃՄೳͰ ͋ͬͨͱͯ͠ Mac ಉ༷ʹࡉ੍͔͍ޚ͕Մೳ͔ෆ໌Ͱ͢ɻͦͷͨΊɺࣗΈ ʹઃఆͰ͖ΔΑ͏ʹσεΫτοϓΞϓϦͰ։ൃͯ͠Έ·ͨ͠ɻ WindowsɺMac ͦΕͧΕͷ࣮ߦϑΝΠϧ࡞ํ๏ ࠷ޙʹ୯ҰͷΞϓϦέʔγϣϯͱͯ͠ WindowsɺMac ͷ྆ OS Ͱ࣮ߦՄೳͳ ϑΝΠϧܗࣜʹม͢Δํ๏Λհ͠·͢ɻ͜Ε Gradle ͷػೳΛ࣮ͬͯݱ 3
Ͱ͖·͢ɻରͷϑΝΠϧܗࣜ Windows .msiɺMac .dmg ܗࣜͰ͢ɻ ͲΜͳਓ͚͔ ຊஶ࣍ͷΑ͏ͳํΛରͱͯࣥ͠ච͠·ͨ͠ɻ • Kotlin ʹڵຯ͕͋ΓɺKotlin
ͰԿ͔ॻ͍ͯΈ͍ͨ • σεΫτοϓΞϓϦΛ࡞ͬͯΈ͍ͨ • WindowsɾMac ͲͪΒͰಈ͘ΞϓϦΛ࡞Γ͍ͨ • Compose Multiplatform ͕ؾʹͳ͍ͬͯͨ લఏࣝඞཁͳ͍Α͏ʹॻ͍͍ͯ·͕͢ɺKotlin ͱ?Έ͍ͨͳجຊతͳ͜ ͱղઆ͍ͯ͠ͳ͍ͷͰɺKotlin Gradle ʹ͍ͭͯجૅ͔Βֶͼ͍ͨํஶ ʮೖ!࣮ફ!αʔόʔαΠυ KotlinʯΛ͝ཡ͍ͩ͘͞ɺKotlin ॳ৺ऀ͚ʹ 1 ͔Β ஸೡʹղઆ͍ͯ͠·͢ɻిࢠ൛࣍ͷϦϯΫ͔ QR ίʔυ͔Βɺࢴ൛ Amazon ͰߪೖͰ͖·͢ɻ https://fortegp05.booth.pm/items/1560389 ˛ਤ 1 ೖ!࣮ફ!αʔόʔαΠυ Kotlin ͜ͷຊͰಘΒΕΔ͜ͱ ͜ͷຊΛಡΉ͜ͱͰ࣍ͷ͜ͱ͕ಘΒΕ·͢ɻ • Compose Multiplatform ͕ͳʹ͔͔Δ 4
• Compose Multiplatform ͷ։ൃڥ͕࡞Ͱ͖Δ • Jetpack Compose ʹֶ͍ͭͯΔ • WindowsɾMac
ͲͪΒͰಈ͘ΞϓϦΛҰͭͷίʔυͰ࡞Ͱ͖ΔΑ͏ ʹͳΔ ͜ͷຊͰղઆ͠ͳ͍͜ͱ Compose Multiplatform Ͱ Jetpack Compose Λ༻͍ͯ͠·͕͢ɺJet- pack Compose ʹ͍ͭͯৄࡉʹղઆ͠·ͤΜɻ͋͘·Ͱར༻ํ๏ͷΈɺίʔυ Ͱղઆ͢ΔܗʹͳΓ·͢ɻ ·ͨલड़ͨ͠ͱ͓Γ Kotlin Gradle ʹ͍ͭͯৄࡉͳղઆ͠·ͤΜɻ ຊจதͷ༰Ͱෆ໌͕͋Ε X(چ Twitter)ʮhttps://twitter.com/FORT Egp05ʯ͔ɺԞʹهࡌͨ͠ϝʔϧΞυϨε·Ͱ͝࿈བྷ͍ͩ͘͞ɻϕετΤϑΥʔ τͰ͝ճ͍ͨ͠·͢ɻ ͜ͷຊͷ͍ํ جຊతʹઌ಄͔ΒಡΈਐΊ͍͚͍͍ͯͰ͕͢ɺؾʹͳͬͨͱ͜Ζ͚ͩఠΜͰ ͍͘ܗͰ͋Γ·ͤΜɻಛʹطʹ Compose Multiplatform Λ༻͍ͯ͠Δ ํΞϓϦ։ൃྫͷ෦͚ͩΛಡΜͰ͍͍͔͠Ε·ͤΜɻ ໔ࣄ߲ ຊॻʹهࡌ͢Δ༰චऀͷॴଐ͢Δ৫ͷެࣜݟղͰ͋Γ·ͤΜɻ·ͨɺ ຊॻՄೳͳݶΓਖ਼֬Λظ͢Α͏ʹΊ͍ͯ·͕͢ɺචऀ͕ͦͷ༰Λอূ͢Δ ͷͰ͋Γ·ͤΜɻͦͷͨΊɺຊॻͷهࡌ༰ʹج͍ͮͨಡऀͷߦҝɺٴͼಡ ऀ͕ඃͬͨଛʹ͍ͭͯචऀͳΜΒΛෛ͏ͷͰ͋Γ·ͤΜɻ 5
࣍ ͡Ίʹ 2 ຊஶͷ༰ . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 2 ͲΜͳਓ͚͔ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ͜ͷຊͰಘΒΕΔ͜ͱ . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ͜ͷຊͰղઆ͠ͳ͍͜ͱ . . . . . . . . . . . . . . . . . . . . . . . . 5 ͜ͷຊͷ͍ํ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 ໔ࣄ߲ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 ୈ 1 ষ Compose Multiplatform ͱ? 8 1.1 Kotlin ͔ΒಘΒΕΔࡾͭͷେ͖ͳϝϦοτ . . . . . . . . . . . . 9 1.1.1 ίʔυهड़ྔ͕ݮΔ . . . . . . . . . . . . . . . . . . . . 9 1.1.2 null ҆શ . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.1.3 Java ࢿ࢈͕͑Δ . . . . . . . . . . . . . . . . . . . . 9 1.2 Jetpack Compose ͔ΒಘΒΕΔೋͭͷେ͖ͳϝϦοτ . . . . . 10 1.2.1 એݴతͳ UI ߏங͕Մೳ . . . . . . . . . . . . . . . . . . 10 1.2.2 ϞμϯͳΞχϝʔγϣϯ . . . . . . . . . . . . . . . . . 10 1.3 Compose Multiplatform ͷؔ࿈ٕज़ʹ͍ͭͯ . . . . . . . . . . 11 1.3.1 Kotlin Multiplatform(KMP) ʹ͍ͭͯ . . . . . . . . . 11 ୈ 2 ষ Compose Multiplatform ϓϩδΣΫτͷ࡞ͱ࣮ߦํ๏ 12 2.1 ։ൃڥͷߏங . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.1 ֬ೝڥ όʔδϣϯͳͲ . . . . . . . . . . . . . . . . . 12 2.1.2 IntelliJ IDEA Community Edition ͷΠϯετʔϧ . . 12 2.2 Compose Multiplatform ϓϩδΣΫτͷ࡞ͱ࣮ߦ . . . . . . 15 2.2.1 ϓϩδΣΫτͷ৽ن࡞ . . . . . . . . . . . . . . . . . 15 2.2.2 Gradle ͷόʔδϣϯมߋ . . . . . . . . . . . . . . . . . 16 2.2.3 ϓϥάΠϯͷߋ৽ . . . . . . . . . . . . . . . . . . . . . 18 2.2.4 Gradle ͔Β࣮ߦ͢Δ . . . . . . . . . . . . . . . . . . . 19 ୈ 3 ষ ओͳ UI ίϯϙʔωϯτͷ࣮ํ๏ 23 3.1 جຊతͳ࣮ . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.2 Ϙλϯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6
3.3 ελΠϧ . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 25 3.4 ϨΠΞτ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.4.1 ԣฒͼϨΠΞτ . . . . . . . . . . . . . . . . . . . . . 26 3.4.2 ॎฒͼϨΠΞτ . . . . . . . . . . . . . . . . . . . . . 26 3.5 ϥϕϧ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.6 ςΩετೖྗ . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7 ը૾දࣔ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.8 εΫϩʔϧόʔ . . . . . . . . . . . . . . . . . . . . . . . . . . 30 ୈ 4 ষ σδλϧ࣌ܭΞϓϦͷ։ൃ 33 4.1 ϓϩδΣΫτͷ࡞ . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.1 Gradle ͷόʔδϣϯมߋ . . . . . . . . . . . . . . . . . 34 4.1.2 ϓϥάΠϯͷߋ৽ . . . . . . . . . . . . . . . . . . . . . 34 4.2 ࣮ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2.1 Οϯυͷେ͖͞มߋ . . . . . . . . . . . . . . . . . 34 4.2.2 ϨΠΞτͷՃ . . . . . . . . . . . . . . . . . . . . . 35 4.2.3 എܠͷઃఆ (ҙ) . . . . . . . . . . . . . . . . . . . . . 35 4.2.4 ࣌ࠁϥϕϧͷදࣔ . . . . . . . . . . . . . . . . . . . . . 37 4.2.5 ݱࡏ࣌ࠁͷදࣔ . . . . . . . . . . . . . . . . . . . . . . 39 4.2.6 1 ඵ͝ͱʹදࣔΛߋ৽͢Δ . . . . . . . . . . . . . . . . 40 4.2.7 Οϯυ੍ޚͷมߋ . . . . . . . . . . . . . . . . . . 40 4.3 ֤ϓϥοτϑΥʔϜ͚ͷ࣮ߦϑΝΠϧ࡞ . . . . . . . . . . . 41 A VS Code Ͱ Compose Multiplatform ϓϩδΣΫτͷ࡞ 42 A.1 σΟϨΫτϦΛ࡞͢Δ . . . . . . . . . . . . . . . . . . . . . 42 A.2 settings.gradle.kts ͷ࡞ . . . . . . . . . . . . . . . . . . . . 42 A.3 build.gradle.kts ͷ࡞ . . . . . . . . . . . . . . . . . . . . . . 42 A.4 src/main/kotlin/main.kt ͷ࡞ . . . . . . . . . . . . . . . . 43 A.5 Gradle ࣮ߦڥͷߏங . . . . . . . . . . . . . . . . . . . . . . 43 A.5.1 Mac ͷ߹ . . . . . . . . . . . . . . . . . . . . . . . . 43 A.5.2 Windows ͷ߹ . . . . . . . . . . . . . . . . . . . . . 43 A.6 ΞϓϦέʔγϣϯͷ࣮ߦ . . . . . . . . . . . . . . . . . . . . . 44 A.6.1 Mac ͷ߹ . . . . . . . . . . . . . . . . . . . . . . . . 44 A.6.2 Windows ͷ߹ . . . . . . . . . . . . . . . . . . . . . 44 ͋ͱ͕͖ 45 ஶऀհ 46 จষ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7