2024年4月4日木曜日

東北TECH道場 秋田道場 2024年04月 online1 + ComposeMultiplatformでタブUIを実装する

東北TECH道場 秋田道場 道場主の菅原です。

オンライン開催を4/4(木)に実施しました!
今回は1名参加いただきました~

今回もいつも通り各々のテーマでの作業です!

私の方ではアプリを作ろうと思って、作りたいUIをちょっとずつ仕込んでいます。
今回は以下のJetpackComposeの記事を参考にして、タブUIを実装してみました!
https://zenn.dev/shogo/articles/3930dbb1c9e2f1

シンタックスハイライトも無いしほぼコピペなのであれですが、色設定の部分だけComposeMultiplatformには無いようなので、そこだけ書き換えてあげると参考リンクの実装がそのまま機能します。

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.Tab
import androidx.compose.material.TabRow
import androidx.compose.material.Text
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Settings
import androidx.compose.material.primarySurface
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.ui.tooling.preview.Preview
@OptIn(ExperimentalResourceApi::class)
@Composable
@Preview
fun App() {
    var selectedTabIndex by remember { mutableStateOf(0) }
    val presses by remember { mutableStateOf(0) }
    Scaffold(
        topBar = {
            TopAppBar(
                backgroundColor = MaterialTheme.colors.primarySurface,
                contentColor = MaterialTheme.colors.onPrimary,
                title = {
                    Text("テイスティングアプリ")
                },
                actions = {
                    IconButton(onClick = { /*  */ }) {
                        Icon(Icons.Default.Add, "Add Tab")
                    }
                    IconButton(onClick = { /*  */ }) {
                        Icon(Icons.Default.Settings, "Open Settings Page")
                    }
                }
            )
        },
    ) { innerPadding ->
        Column {
            TabRow(
                selectedTabIndex = selectedTabIndex,
                backgroundColor = MaterialTheme.colors.surface
            ) {
                Tab(
                    selected = selectedTabIndex == 0,
                    onClick = {
                        selectedTabIndex = 0
                    },
                    text = {
                        Text(
                            text = "冬樹",
                            fontWeight = FontWeight.Bold,
                            color = if (selectedTabIndex == 0) Color.DarkGray else Color.LightGray
                        )
                    }
                )
                Tab(
                    selected = selectedTabIndex == 1,
                    onClick = {
                        selectedTabIndex = 1
                    },
                    text = {
                        Text(
                            text = "十四代",
                            fontWeight = FontWeight.Bold,
                            color = if (selectedTabIndex == 1) Color.DarkGray else Color.LightGray
                        )
                    }
                )
            }
            Column(
                modifier = Modifier
                    .background(Color.LightGray)
                    .verticalScroll(rememberScrollState()),
                verticalArrangement = Arrangement.spacedBy(16.dp),
            ) {
                repeat(100) { index ->
                    Text(text = "$presses Item: $index")
                }
            }
        }
    }
}

あとはちょっとTableauのお話もしたりしてました。

4月も毎週木曜にオンライン開催予定で、4/28(日)にオフライン開催しようと思います!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming

4月の予定です!

2024年3月28日木曜日

東北TECH道場 秋田道場 2024年03月 online4

東北TECH道場 秋田道場 道場主の菅原です。

オンライン開催を3/28(木)に実施しました!

今回もいつも通り各々のテーマでの作業ですが、
以前の職場の先輩が参加してくださって、今回は雑談に花が咲きました笑

4月も毎週木曜にオンライン開催予定で、4/28(日)にオフライン開催しようと思います!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming

4月の予定です!

2024年3月21日木曜日

東北TECH道場 秋田道場 2024年03月 online3

東北TECH道場 秋田道場 道場主の菅原です。

オンライン開催を3/21(木)に実施しました!
今回も私だけだったのでソロでもくもく作業を進めました!

今回もいつも通り各々のテーマでの作業です

私の方は継続して、Compose MultiplatformでのUI実装方法をしました。
AppBarにボタンを付けたり、スクロール挙動確認用のリストを置いたりしてみました。

3月は毎週木曜のオンライン開催に加え、3/23(土)には発表会もあります!
4月も毎週木曜にオンライン開催予定で、4/28(日)にオフライン開催しようと思います!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming

4月の予定です!

2024年3月20日水曜日

東北TECH道場 秋田道場 2024年03月 offline1 + Compose MultiplatformのUIをいじってみる

東北TECH道場 秋田道場 道場主の菅原です。

2か月ぶりのオフライン開催を3/17(日)に実施しました!
今回は2名参加いただきました!

今回もいつも通り各々のテーマでの作業しました。

私の方は前回まででCompose MultiplatformでのUI実装方法に目途を付けたので実践してみました!

Jetpack Composeのドキュメントが参考になるようだったので、以下を実装してみました。
https://developer.android.com/jetpack/compose/components/scaffold?hl=ja

ただ、コードを記載してみたところ、一部エラーで動かない・・・
どうやらJetpack Composeがベースにはなっているものの一部異なる部分があるようで、そのままでは動作しない模様(※ChatGPTに教えてもらった)

Jetpack Compose自体の経験もあまりないので挫折しかけましたが、そこもChatGPTに修正してもらったところ、Compose Multiplatform上で動作させることができました。
これでJetpack Composeのドキュメントを参考にしつつCompose MultiplatformでのUI実装を進めて行けそうです。

サンプルをCompose Multiplatform上で動かせた


3月は毎週木曜のオンライン開催に加え、3/23(土)には発表会もあります!
4月も毎週木曜にオンライン開催予定で、4/28(日)にオフライン開催しようと思います!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming

4月の予定です!


2024年3月19日火曜日

東北TECH道場 秋田道場 2024年03月 online2

東北TECH道場 秋田道場 道場主の菅原です。

オンライン開催を3/14(木)に実施しました!
今回は私だけだったのでソロでもくもく作業を進めました!

今回もいつも通り各々のテーマでの作業です

私の方は先週と継続して、作りたいアプリのUIを検討しつつ、Compose Multiplatformでの実装方法を調べたりしていました。
Compose MultiplatformはJetpack Composeをベースに作られている背景があるので、Jetpack Composeのドキュメントを参考に進めるのが良さそうかなと感じたところです。

3月は毎週木曜のオンライン開催に加え、3/17(日)にオフライン開催・3/23(土)には発表会もあります!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming

東北TECH道場 秋田道場 2024年03月 online1

東北TECH道場 秋田道場 道場主の菅原です。

オンライン開催を3/7(木)に実施しました!
今回は1名参加いただきました!

今回もいつも通り各々のテーマでの作業です

私の方は作りたいアプリのUIを検討しつつ、Compose Multiplatformでの実装方法を調べたりしていました。

また、今回は参加者の方と秋田県内の勉強会について作戦会議などもしました!

3月は毎週木曜のオンライン開催に加え、3/17(日)にオフライン開催・3/23(土)には発表会もあります!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming

2024年2月29日木曜日

東北TECH道場 秋田道場 第20期7.8回(オンライン)

東北TECH道場 秋田道場 道場主の菅原です。

第20期7.8回目(オンライン開催)を2/29(木)に開催しました!
今回は1名参加いただきました!

今回もいつも通り各々のテーマで作業しましたー

私の方は前回まででチュートリアルがおおよそ終わったので、作るアプリをどうしようか考えてました。
アイデア出しの相談にも乗れますので、ご興味があればぜひ参加ください!

3月は毎週木曜のオンライン開催に加え、3/17(日)にオフライン開催・3/23(土)には発表会もあります!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming







2024年2月22日木曜日

東北TECH道場 秋田道場 第20期7.7回(オンライン) + Compose MultiplatformでHello, World!してみた④

東北TECH道場 秋田道場 道場主の菅原です。

第20期7.7回目(オンライン開催)を2/22(木)に開催しました!
今回は2名参加いただきました!

今回もいつも通り各々のテーマで作業をもくもくと進めました!
私の方ではCompose MultiplatformでWebフロント/サーバサイドの起動にトライしてみました!

今回は久々にサクッと実行できましたー

Webフロント
Ktor

ちなみにフロントは、ターミナルから`./gradlew wasmJsBrowserRun`を実行すると起動できました。
サーバサイドのKtorは以下から実行することができるようでした。

main関数左側の再生ボタンからKtorの実行ができました

全体の流れについては、以下のリンクから試す事ができます!
https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-getting-started.html


また、今回は続けて以下のチュートリアルも実行してみました。
※チュートリアルから脱線してWebのモジュールを入れていると、kotlinx-datetime:0.4.1を追加するとビルドエラーになってしまうようだったので、0.5.0にしてあげると良いみたいです。
日付の表示を追加できました

2月は引き続き毎週木曜にオンライン開催を予定しています!
3月は毎週木曜のオンライン開催に加え、3/17(日)にオフライン開催・3/23(土)には発表会もあります!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming







2024年2月15日木曜日

東北TECH道場 秋田道場 第20期7.6回(オンライン) + Compose MultiplatformでHello, World!してみた③

東北TECH道場 秋田道場 道場主の菅原です。

第20期7.6回目(オンライン開催)を2/15(木)に開催しました!
今回は1名参加いただきました!

今回も相変わらず各々のテーマで作業をもくもくと進めました!
私の方ではCompose MultiplatformでiOSでの起動にトライしてみていました。
先週は、「ビルド・起動は完了していそいうだけれどもシミュレータが立ち上がってこない」というところで終了していたのですが、シミュレータを起動して、ターミナルからインストール・実行を行ったところ、なんとかiOSでも起動することができました!


以下の記事を参考にさせていただいて、ターミナルから実行してみました。
https://qiita.com/hituziando/items/3d1205140170932c49e7

全体の流れについては、以下のリンクから試す事ができます!
https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-getting-started.html



2月は引き続き毎週木曜にオンライン開催を予定しています!
3月は毎週木曜のオンライン開催に加え、3/17(日)にオフライン開催・3/23(土)には発表会もあります!

オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming







2024年2月9日金曜日

東北TECH道場 秋田道場 第20期7.5回(オンライン)

東北TECH道場 秋田道場 道場主の菅原です。

第20期7.5回目(オンライン開催)を2/8(木)に開催しました!
今回は2名参加いただきました!

今回も相変わらず各々のテーマで作業をもくもくと進めました!
私の方では前回まででCompose MultiplatformでAndroid・デスクトップの実行を試せたので、iOSでの起動にトライしてみていました。
インストールし直す前のXcodeを参照していてシミュレータが見つからなかったり、(新しめの)JDKが入っていなくてGradleのビルドがコケたりと色々ハマりましたが、なんとかアプリの実行までこぎつけた・・・と思ったら、ビルドも完了しているのにアプリが一向に立ち上がらない・・・(しかも終了も受けてつけてくれない・・・)
次回くらいには何とか解消したいです・・・

という感じでハマった時にも他の参加者に相談したりもできるので、もし興味があれば参加してみてください

2月の開催予定は以下の通りです!
残りの木曜日も定期開催したいと思っています!

オンライン定期開催・オフライン不定期開催をしていますので、オンラインからでもオフラインからでも、是非お気軽にご参加ください!
※オンライン開催時はDiscordで行っています

https://tohoku-tech-dojo-akita.doorkeeper.jp/events/upcoming