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
Jetpack compose をちょっと触ってみた / about jetpack comp...
Search
charcoJp
November 30, 2019
Programming
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jetpack compose をちょっと触ってみた / about jetpack compose
charcoJp
November 30, 2019
More Decks by charcoJp
See All by charcoJp
Google Play ストアの アプリ平均評価を改善した話 / Improved average rating of play store
charcojp
1
500
Other Decks in Programming
See All in Programming
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
11
6.3k
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.2k
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.3k
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
5
900
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
120
Seven New Principles of Software Engineering
yegor256
0
340
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.8k
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1k
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
280
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
12
10k
JIS keyboard support in Omarchy
lef237
0
160
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
150
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
290
Making the Leap to Tech Lead
cromwellryan
135
10k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Design in an AI World
tapps
1
370
Mobile First: as difficult as doing things right
swwweet
225
10k
Making Projects Easy
brettharned
120
6.8k
Git: the NoSQL Database
bkeepers
PRO
433
67k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
940
My Coaching Mixtape
mlcsv
0
360
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
470
Transcript
+FUQBDLDPNQPTF Λͪΐͬͱ৮ͬͯΈͨ "OESPJEݚڀൃදձ
ࣗݾհ w ຊେथ!DIBSDP@KQ w BLJQQBגࣜձࣾ w "OESPJEΞϓϦ։ൃ w 'MVUUFSΞϓϦ։ൃ ࢝Ί͔ͨΓɻ
None
λʔήοτ w +FUQBDL$PNQPTFΛΒͳ͍ਓ w +FUQBDL$PNQPTFͷ໊લ͚͍ͩͬͯΔਓ
͢͜ͱ w +FUQBDL$PNQPTFͱ w ಛ w +FUQBDL$PNQPTF͕ඞཁʹͳͬͨཧ༝ w ؆୯ͳ+FUQBDL$PNQPTFͷίʔυղઆ w
ιʔεΛݟͯΈΔʢ࣌ؒ༨ͬͨΒʣ w ॴײ
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*ॻͨ͘ΊͷπʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*ॻͨ͘ΊͷπʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*ॻͨ͘ΊͷπʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*ॻͨ͘ΊͷπʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
એݴత6*ʁ
ࡶʹݴ͏ͱ ॻ͍ͯ͋Δ௨Γʹ6*͕දࣔ͞ΕΔ ˞͕ࣝͳ͍ͷͰ৮Ε·ͤΜ
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*Λߏங͢ΔͨΊͷ࠷৽πʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
// ఆٛ fun hoge(callback: () -> Unit) { print("Hoge!") callback()
} fun main() { hoge() { print("ऴΘͬͨΑ") } hoge({ print("ऴΘͬͨΑ") }) } Ҿͷ ͷ֎ʹDBMMCBDLͷ ॲཧΛهड़ Ҿͷதʹهड़ ҾͷؔΛ֎ͩ͠ग़དྷΔ
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*Λߏங͢ΔͨΊͷ࠷৽πʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX w "1*͕ະͰมߋ͕༧ఆ͞Ε͍ͯΔͨΊɺ൛Ͱ༻͠ ͳ͍͜ͱ w "OESPJE4UVEJP$BOBSZ
+FUQBDL$PNQPTF͕ඞཁʹͳͬͨཧ༝ w $PNQPOFOU"1*Λ͔Βߏங͍ͨ͠ w ྺ࢙తܦҢͰBOESPJEWJFXԼͷ࣮͕ෳࡶ w ΧελϜ6*ίϯϙʔωϯτ࡞Δͷ͕େม w 'SBHNFOU $VTUPN7JFX$VTUPN7JFX(SPVQ
w ͳͲͳͲɻ w Ҿ༻ݩ w IUUQTEFWFMPQFSBOESPJEDPNKFUQBDLDPNQPTF w IUUQTXXXZPVUVCFDPNXBUDI W7T4UZR-[YP
+FUQBDL$PNQPTF͕ඞཁʹͳͬͨཧ༝ w $PNQPOFOU"1*Λ͔Βߏங͍ͨ͠ w ྺ࢙తܦҢͰBOESPJEWJFXԼͷ࣮͕ෳࡶ w ΧελϜ6*ίϯϙʔωϯτ࡞Δͷ͕େม w 'SBHNFOU $VTUPN7JFX$VTUPN7JFX(SPVQ
w ͳͲͳͲɻ w Ҿ༻ݩ w IUUQTEFWFMPQFSBOESPJEDPNKFUQBDLDPNQPTF w IUUQTXXXZPVUVCFDPNXBUDI W7T4UZR-[YP
؆୯ͳ+FUQBDL$PNQPTFͷίʔυղઆ w "OESPJE4%,ͷ7JFX$PNQPTBCMF ߏՄೳͳ ؔ͠ɺͦͷؔͷπϦʔߏʹΑΓ6*͕ߏங͞ΕΔ w !$PNQPTBCMFBOOPUBUJPO w ؔʹ༩͢ΔߏՄೳͳؔͱͳΔ
w 5FYU #VUUPOͳͲͷΑ͘͏7JFXͱ'"#$BSEͳ Ͳͷ.BUFSJBM%FTJHOͰఆٛ͞Ε͍ͯΔ7JFXݱঢ়Ͱ ͋Δఔ༻ҙ͞Ε͍ͯΔ
5FYU @Composable fun Text( text: String, modifier: Modifier = Modifier.None,
style: TextStyle? = null, paragraphStyle: ParagraphStyle? = null, softWrap: Boolean = DefaultSoftWrap, overflow: TextOverflow = DefaultOverflow, // TODO(siyamed): remove suppress @SuppressLint("AutoBoxing") maxLines: Int? = DefaultMaxLines, selectionColor: Color = DefaultSelectionColor ) { Text( text = AnnotatedString(text), modifier = modifier, style = style, paragraphStyle = paragraphStyle, softWrap = softWrap, overflow = overflow, maxLines = maxLines, selectionColor = selectionColor ) }
5FYUར༻ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?)
{ super.onCreate(savedInstanceState) setContent { Text( text = "Hello World!", style = TextStyle( color = Color.Blue, fontSize = 24.sp ) ) } } }
-JTU7JFX w -JTU7JFX 3FDZDMFS7JFXʹ૬͢Δ$PNQPOFUͳ͍ w ݱঢ়ͰҎԼͷೋͭΛΈ߹Θ࣮ͤͯݱ͢Δ͜ͱʹͳΔ w 7FSUJDBM4DSPMMFS4DSPMM7JFX w $PMVNO-JOFBS-BZPVU
PSJFOUBUJPOWFSUJDBM
-JTUදࣔ @Composable fun MinimumListExampleScreen() { VerticalScroller { Column { (0..20).map
{ ListItem( text = it.toString(), onClick = { } ) Divider() } } } }
ιʔεΛݟͯΈΔ ʢ࣌ؒ༨ͬͨΒʣ
ॴײ w طଘͷ࣮ํ๏ΑΓΔ͔ʹָͰײతɻݸਓతʹTUBCMFʹͳͬͨΒΘͳ ͍ͱ͍͏બͳ͍ w ۪ʹॻ͍͍ͯ͘ͱωετ͕ਂͯ͘Մಡੑ͕Լ͕Γͦ͏ w ϝιουநग़ͯ͠!$PNQPTBCMFΛ͢ΕύʔπԽͰ͖ΔͷͰʹͳΒ ͳ͍ͱࢥ͏ɻͨͩTQBDFΠϯσϯτྲྀੴʹਏͦ͏ w
'MVUUFSͰͷܦݧ શͯΛ,PUMJOͰ͔͚Δ͚ͩͰՁ͕͋Δ w +BWB,PUMJOMBZPVUYNMTFUUJOHTYNMͳͲݴޠʗॻ͖ํ͕ҧ͏ ͨΊ಄ͷΓସ͕͑ൃੜ͢Δ͕ͦΕ͕ͳ͍ w એݴత6* w J04"OESPJEͱʹରԠ͢ΔϥΠϒϥϦΛ༻ҙͨ͠ϞόΠϧΞϓϦ։ൃ ऀͷඞमՊʹͳΔ w ৽͍͠ߟ͑ํͰ͋ΔͨΊɺҰ֮ͭ͑ͯ͠·͑ଞʹࣝΛྲྀ༻Ͱ͖Δ
͜ͷػձʹ+FUQBDL $PNQPTFΛ৮ͬͯΈͯ ͍͔͕Ͱ͠ΐ͏͔ʂ
͓ΘΓ