はじめに ソフトウェア開発において、関数やプロパティの再利用性が重要視されることは多いです。しかし、過度に汎用性が高いコンポーネントは、想定外の文脈で再利用されてしまうという誤用のリスクを伴います。 本記事では、Kotlin 2.4.0で安定化された言語機能であるcont...
Kotlin
はじめに Kotlinのcoroutineを使って非同期処理を実装する際、coroutineを起動するために launch や async を使います。 非同期処理を開始するという点では同じです。Job を扱いたい場合は launch、Deferred により結果を受け取...
はじめに Kotlin 2.4.0のSwift Exportにより、Kotlinの Flow がSwift側から扱えるようになりました。Flow.asAsyncSequence() により、Swiftの AsyncSequence として処理できます。 この記事では、Sw...
はじめに スマホは画面の四隅が丸くなっています。一方で、Composable はデフォルトでは四角いです。画面遷移アニメーションを作っている時にその形状の差を埋めたいと考えました。これを実現するには、各画面の Composable も端末に合わせて形状を変更する必要があり...
はじめに ライブラリの依存関係やOSSライセンス情報を抽出する際、既存の多機能なツールでは「ブラックボックスな処理が多い」「不要な処理まで巻き込まれる」といった課題があります。 本記事では、依存関係のPOMを参照しJSONを出力する実装を紹介します。なお、記事中にはソース...
はじめに 本記事では、ComposeでMarkdownを描画する方法について紹介します。既存のMarkdown描画ライブラリを使うのではなく、intellij-markdownによりMarkdownをパースし、Composeで描画するという手順を踏みます。 Markdow...
androidx.graphics:graphics-shapes:1.1.0 にて追加された SvgPathParser.parseFeatures() を使用した際、SVGのパスが正しくパースされず、形状が歪むバグに遭遇しました。 本記事では、その原因とコード上で解決す...
本記事の内容はalpha版のソースコードで確認しています。今後のアップデートで大きく変わる場合があります。 はじめに Jetpack Navigation 3(Nav3)の1.2.0-alpha021にて、画面間の結果受け渡しをサポートする新しいAPIとして Re...
はじめに Kotlin 2.4.0からexplicit backing fieldsがstableになりました1。本記事では、これまでの「よくあるコード」がどう変わるのか、その仕組みと注意点について紹介します。 今までの書き方とこれからの書き方 class / obje...
はじめに タイポグラフィを考えるとき「アルファベットはフォントAを、日本語はフォントBを表示したい」という和欧混植の要望もあるでしょう。Jetpack Composeで開発しているAndroidアプリでも、この要望に応えたい場面があります。 しかし、FontFamily(...