開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. Kotlin >
  4. Compose Multiplatform 入門(ロギング編)

Compose Multiplatform 入門(ロギング編)

logo.png
みなさんこんにちは。今回はCompose Multiplatform入門記事の第4回目です。
今回はロギングのマルチプラットフォーム対応をしていきたいと思います。

これまでのCompose Multiplatform入門記事はこちら。
Compose Multiplatform入門(環境構築編)
Compose Multiplatform入門(プロジェクト作成編)
Compose Multiplatform入門(画面遷移編)
 

Kermitを使用したロギング

マルチプラットフォーム開発でのロギングは、各プラットフォームごとにログを出力する機能が違うので苦労しがちですが、KermitというKotlin向けのマルチプラットフォームロギングライブラリを使用すれば、その悩みは一発で解消できます。
https://kermit.touchlab.co/

環境構築

まずはKermitを使えるようにするために、libs.versions.tomlbuild.gradle.ktsに記述していきます。
記述が完了したら、Gradleの同期を忘れずに行いましょう。

libs.versions.toml


[versions]
kermit = "2.0.3"

[libraries]
kermit = { module = "co.touchlab:kermit", version.ref = "kermit" }

build.gradle.kts


kotlin {
  sourceSets {
    commonMain.dependencies {
      implementation(libs.kermit)
    }
  }
}

実際に使ってみる

前回新しく作成したAnotherScreenにログを入れて、AnotherScreenが開かれたときにログを出力するようにしてみましょう。

AnotherScreen.kt


package ui.screens.another

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.koin.getScreenModel
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
import co.touchlab.kermit.Logger
import org.koin.core.parameter.parametersOf

class AnotherScreen(private val postId: String) : Screen {

    @Composable
    override fun Content() {
        
        val viewModel = getScreenModel{ parametersOf(postId) }
        val navigator = LocalNavigator.currentOrThrow

        LifecycleEffect(
            onStarted = { Logger.i { "Open Another Screen" } }
        )

        Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
            Text(text = viewModel.postId)
            Button(onClick = { navigator.pop() }) {
                Text("戻る")
            }
        }
    }
}

出力先

実行して画面遷移を行うと、Androidの場合はLogcatに出力されます。
logcat.png

iOSの場合は、OSLogに出力されます。
oslog.png

さいごに

これでマルチプラットフォーム環境でのログ出力が可能になりました。次回はFirebaseでのアカウント認証についての解説を行っていこうと思います。
  • posted by りっちゃん
  • Kotlin
TOPに戻る