JetpackCompose

Jetpack Compose Material3 テーマカスタマイズ完全ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Jetpack Compose Material3 テーマ カスタマイズ 方法をステップバイステップで解説

Jetpack ComposeのMaterial3テーマカスタマイズは、アプリ全体のUIデザインの一貫性を確保する上で不可欠な技術です。特にColorScheme・Typography・Shapeの調整を通じて、独自のブランドイメージを反映させることが可能になります。本記事では、初心者でも理解しやすいステップバイステップガイドで、Material3テーマカスタマイズの手順と実装コードを解説します。


Material3テーマカスタマイズの基本構造を理解する

Jetpack ComposeにおけるMaterial3テーマは、Theme.ktファイルに定義され、アプリ全体のデザインルール(色・文字・形)を統一的に管理します。このファイルを作成・編集することで、UIコンポーネントが一貫した見た目を持つようになります。

テーマ定義ファイルの作成方法

Jetpack Composeではres/values/Theme.ktという形式ではなく、src/main/kotlin/[パッケージ名]/Theme.ktにテーマを定義します。Material3ライブラリをプロジェクトに依存させるため、build.gradleに以下の行を追加します:

Theme.ktの役割と構成

Jetpack ComposeではXMLではなくKotlinファイルでテーマを定義します。以下が基本的な構造です。

項目 内容 補足
MaterialTheme アプリ全体に適用されるテーマを定義 コンポーネントにスタイルを提供
Colors 主な色(Primary, Secondaryなど)を管理 ダークモード対応も可能
Typography 文字の種類・サイズ・ウェイトなどを指定 Material3ではMaterialTypographyが利用

注意点: 新規プロジェクトでは、Theme.ktにテーマ設定がないとデフォルトのMaterial2スタイルが適用されるため、明確なカスタマイズが必要です。


ColorSchemeによるカラーテーマの定義

Material3のColorSchemeインターフェースを用いることで、アプリ全体の色調を統一的に設計できます。動的なカラー設定は、ユーザー環境(OSテーマなど)に応じた柔軟なUI実現が可能です。

Primary/Secondary色の指定方法

  1. Colorsクラスで基本色を定義します。
    kotlin
    val ColorScheme = lightColorScheme(
    primary = Color(0xFF6750A4),
    secondary = Color(0xFF687CFB),
    background = Color(0xFFF1F0F9)
    )

  2. ダークモード対応にはdarkColorScheme()を併用します。

動的カラー設定の実装例

動的なカラーは、システムテーマまたはユーザー設定に応じて切り替えることで、UIの一貫性と柔軟性を両立させます。以下のコードでは最新版のAPIを使用しています:

動的カラーの利点 内容
ユーザーエクスペリエンス向上 環境に合わせた適応性が高く、視認性が向上
ブランドイメージの保持 メイン色を固定することで一貫性を維持

Typographyで一貫性のあるフォント設計

Material3ではTypographyクラスを使用して、見出し・本文などのテキストスタイルを階層構築できます。これにより、UIデザインが整った印象になります。

FontFamilyのカスタム設定

  1. FontFamilyを定義する際に、任意のフォントファイル(.ttfなど)を読み込みます。
    kotlin
    val fontFamily = FontFamily(
    Font(R.font.my_custom_font_regular, FontWeight.Normal),
    Font(R.font.my_custom_font_bold, FontWeight.Bold)
    )

  2. TypographyクラスにカスタムのFontFamilyを設定します。

テキストスタイルの階層構築

スタイル名 使用例 サイズ・ウェイト
headlineMedium トップページの見出し 24sp, Bold
bodyLarge 本文の説明文 16sp, Regular
labelSmall ボタンのラベル 10sp, Medium

ローカライズ対応: 多言語アプリでは、言語ごとの文字間隔やフォントサイズを調整する必要があります。


Shape調整でUIの統一性を実現

Material3のShapeクラスを使用することで、コンポーネント(ボタン・カードなど)の角丸度を一括して管理できます。これにより、アプリ全体で形状が統一されるため、デザインの一貫性が向上します。

CornerRadiusのカスタマイズ方法

  1. CornerSizeを使って各辺の角丸度を指定します。
    kotlin
    val shape = RoundedCornerShape(topStart = 8.dp, bottomEnd = 24.dp)

  2. 一部のコンポーネント(例: ボタン)にだけ特殊な形状を適用する場合も可能です。

コンポーネント間の形状整合

コンポーネント 推奨角丸度(dp) 補足
Card 8 基本的な形状
Button 12 角が少しとげとげしくて視覚的に強調される
TextField 6 入力欄の角丸をやさしい印象に

設計ポイント: 違うコンポーネントでも、形状の違いは控えめに保ち、ユーザーが混乱しないよう統一感を持たせることが重要です。


ダークモード対応の実装パターン

Material3ではシステムテーマやユーザー設定に基づいて、アプリが自動的にダークモードへ切り替わる仕組みを簡単に実現できます。これは、UXの向上とバリアフリー設計に大きく貢献します。

Material3のDarkTheme活用法

  1. SystemUiControllerを使用してシステムテーマを取得し、それに応じてMaterialThemeを切り替えます。
    kotlin
    val colorScheme = if (systemUiController.isInDarkTheme) {
    darkColorScheme(...)
    } else {
    lightColorScheme(...)
    }

  2. MaterialTheme.colorScheme = colorSchemeとすることで、テーマが自動で変更されます。

動的テーマ切り替えコード

ユーザーが明るい/暗いモードを手動で選べるようにするには、以下のコードのようにPreferenceを連携させます:

ダークモード実装の利点 内容
アクセシビリティ向上 視覚障害を持つユーザーにとって見やすくなる
バッテリー節約 AMOLEDディスプレイでは黒い背景が省電力に

Codelabで学ぶ実践的なカスタマイズ

公式ドキュメントのCodelabやサンプルプロジェクトを参考にすることで、テーマカスタマイズの理解を深めることができます。実際にコードを適用しながら、UIの変化を確認することが重要です。

サンプルプロジェクト構築手順

  1. Jetpack Compose公式Codelabからサンプルプロジェクトをダウンロードします。
  2. Theme.ktファイルを開き、MaterialThemeのカスタマイズ箇所を見つけてください。
  3. 自分オリジナルの色やフォント設定に書き換えましょう。

注意: リンク先は英語版ですが、最新バージョンのコード実装が反映されていることを確認してください。

テーマ適用のデバッグ方法

  • ログ出力: Log.d("Theme", "Current color scheme: $colorScheme")で現在適用されているテーマを確認します。
  • コンポーネントごとにテーマを確認: 各UIコンポーネントに個別のテーマを適用し、統一性が保たれているか確認。

実践アドバイス: テーマの変更点は、アプリ全体で一貫して反映されているかチェックする癖をつけましょう。見逃すとデザインのズレが発生します。


まとめ

  • Material3テーマカスタマイズではTheme.ktファイルを用いて色・フォント・形状を統一的に管理する
  • ColorSchemeで動的なカラー設定、Typographyで文字スタイルの一貫性を確保し、ShapeでUIの統一感を実現する
  • ダークモード対応はUX向上に不可欠で、システムテーマやユーザー設定と連携させることがポイント
  • Codelabやサンプルプロジェクトを活用して、実際にコードを書きながら学ぶことで理解が深まる

記事内で提供するコードをプロジェクトに即座適用し、Material3テーマのカスタマイズを試してみましょう。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-JetpackCompose