Slide 1

Slide 1 text

Compose for Deskopで始める Android開発効率化ツールの作成 Droidkaigi 2022 Day01 Yusuke Katsuragawa / YUMEMI Inc.

Slide 2

Slide 2 text

自己紹介 - 桂川 祐介 - 株式会社ゆめみ - Androidエンジニア - Twitter : @kaleidot725 - GitHub : kaleidot725

Slide 3

Slide 3 text

本セッションで取り扱うこと

Slide 4

Slide 4 text

本セッションで取り扱うこと - Compose for Desktopとは - Android開発効率化ツールの作成方法 - 開発環境のセットアップ方法 - プロジェクトのセットアップ方法 - ADBを利用したGUIツールの作成方法 - Compose

Slide 5

Slide 5 text

アジェンダ

Slide 6

Slide 6 text

アジェンダ 1. Compose for Desktopとは 2. どのようなツールを作るか 3. どのようにツールを作るか 4. おわりに

Slide 7

Slide 7 text

Compose for Desktopとは

Slide 8

Slide 8 text

開発環境

Slide 9

Slide 9 text

プロジェクト作成

Slide 10

Slide 10 text

どんなツールを作るのか?

Slide 11

Slide 11 text

Andoroid端末の一覧を取得する

Slide 12

Slide 12 text

ADBコマンドを実行する

Slide 13

Slide 13 text

コマンド実行 - 作成する画面

Slide 14

Slide 14 text

View StateHolder Model

Slide 15

Slide 15 text

@Composable fun CommandItem ( title: String, detail: String, onExecute : () -> Unit, modifier : Modifier = Modifier ) { Card(modifier ) { Row( horizontalArrangement = Arrangement .spacedBy (8.dp), verticalAlignment = Alignment .CenterVertically , modifier = Modifier .padding(8.dp) ) { Column(modifier = Modifier .weight(0.9f, true)) { Text(text = title) Text(text = detail) } Button(onClick = { onExecute () }) { Text(text = Strings.EXECUTE) } } } } @Preview @Composable private fun CommandItem_Preview () { CommandItem( title = "ダークテーマ ON", detail = "端末のダークテーマ設定を ONにします", onExecute = {}, modifier = Modifier .fillMaxWidth().wrapContentWidth() ) } コマンド実行 - View層①

Slide 16

Slide 16 text

View StateHolder Model

Slide 17

Slide 17 text

@Composable fun CommandItem ( title: String, detail: String, onExecute : () -> Unit, modifier : Modifier = Modifier ) { Card(modifier ) { Row( horizontalArrangement = Arrangement .spacedBy (8.dp), verticalAlignment = Alignment .CenterVertically , modifier = Modifier .padding(8.dp) ) { Column(modifier = Modifier .weight(0.9f, true)) { Text(text = title) Text(text = detail) } Button(onClick = { onExecute () }) { Text(text = Strings.EXECUTE) } } } } @Preview @Composable private fun CommandItem_Preview () { CommandItem( title = "ダークテーマ ON", detail = "端末のダークテーマ設定を ONにします", onExecute = {}, modifier = Modifier .fillMaxWidth().wrapContentWidth() ) } コマンド実行 - StateHolder①

Slide 18

Slide 18 text

View StateHolder Model

Slide 19

Slide 19 text

@Composable fun CommandItem ( title: String, detail: String, onExecute : () -> Unit, modifier : Modifier = Modifier ) { Card(modifier ) { Row( horizontalArrangement = Arrangement .spacedBy (8.dp), verticalAlignment = Alignment .CenterVertically , modifier = Modifier .padding(8.dp) ) { Column(modifier = Modifier .weight(0.9f, true)) { Text(text = title) Text(text = detail) } Button(onClick = { onExecute () }) { Text(text = Strings.EXECUTE) } } } } @Preview @Composable private fun CommandItem_Preview () { CommandItem( title = "ダークテーマ ON", detail = "端末のダークテーマ設定を ONにします", onExecute = {}, modifier = Modifier .fillMaxWidth().wrapContentWidth() ) } コマンド実行 - Model①