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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
FORTE
November 05, 2023
Technology
710
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
190
サーバーサイドKotlinやってみた!/ssk_meetup_18_01
fortegp05
1
60
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
560
異夢同船〜異なる夢を持ちチームで作業する〜_サンプル/imudousen_sample
fortegp05
0
440
ラプラスの箱を開ける ~レトロゲームから学んだ工夫~/retro_games_any_03_01
fortegp05
1
110
ジモtechVol1_LT_フルリモート"され"力/jimotech_lt_1
fortegp05
0
88
超入門!サーバーサイドKotlin〜2026春更新版〜/sski1
fortegp05
0
620
MicronautでgRPCに入門!実践!サーバーサイドKotlin/sskm2_sample
fortegp05
0
130
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
240
Other Decks in Technology
See All in Technology
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
930
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
240
大型犬好きによるPugの紹介
yamanoku
1
160
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
180
Local CI × GitHub Actions
gogutan
2
150
その Valkey 使いこなしていますか?
onk
PRO
5
1.4k
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
Running Kotlin + Quarkus with Lambda
nealle
1
3.6k
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.6k
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
530
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.1k
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
720
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Side Projects
sachag
456
43k
Typedesign – Prime Four
hannesfritz
42
3.2k
Music & Morning Musume
bryan
48
7.4k
Optimizing for Happiness
mojombo
378
71k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Designing Experiences People Love
moore
143
24k
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