Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発!...
Search
FORTE
November 05, 2023
Technology
690
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
180
サーバーサイドKotlinやってみた!/ssk_meetup_18_01
fortegp05
1
59
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
540
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
440
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
1
110
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
86
超入門!サーバーサイドKotlin〜2026春更新版〜/sski1
fortegp05
0
610
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
fortegp05
0
130
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
230
Other Decks in Technology
See All in Technology
おい、エージェントを使って終わらせろ
nwiizo
3
870
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
500
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
280
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
4
710
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
11
5.1k
SREは、MCPとAutopilotをこう使え!
kazumax55
3
950
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
5
1.9k
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
510
Antigravity SDK for the Java Developer
glaforge
0
180
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
630
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
230
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
14
39k
Claude Code のすすめ
schroneko
67
230k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Designing for Performance
lara
611
70k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
730
Optimizing for Happiness
mojombo
378
71k
Odyssey Design
rkendrick25
PRO
2
810
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
820
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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