M3 ExpressiveはComposeで使えるようになった? alpha版の現状と使い方
Jetpack ComposeのM3 Expressive対応は今どうなっていて、使いたい場合はどうすればいいのかを確認しました。 2025年11月末時点の内容です。
利用可能と書いてはあるが・・・
Material design 3の新しい機能セットであるM3 Expressiveが発表されてから半年以上が経過しましたが、2025年11月現在、Jetpack ComposeのM3 Expressiveはまだalpha版です。 Material DesignのWebサイトには “Available” と書かれているのを見て、知らないうちにstableになっていたのかと焦りましたが、Jetpack Composeのライブラリはまだalphaでした。

material3 1.5.0のalpha版が必要
Jetpack ComposeでM3 Expressiveを使いたい場合、material3ライブラリの1.5.0を利用する必要があります。 2025年11月末時点の最新版は1.5.0-alpha09です。
dependencies { implementation("androidx.compose.material3:material3:1.5.0-alpha09")}例として、M3 Expressiveで導入された印象的なクッキー形のShapeを利用してみます。
@OptIn(ExperimentalMaterial3ExpressiveApi::class)@Composablefun Sample() { FilledIconButton( onClick = {}, modifier = Modifier.size(IconButtonDefaults.extraLargeContainerSize()), shapes = IconButtonShapes( shape = Cookie7Sided.toShape(), pressedShape = Ghostish.toShape() ) ) { Icon( painter = painterResource(R.drawable.android), contentDescription = null, modifier = Modifier.size(IconButtonDefaults.extraLargeIconSize) ) }}
M3 ExpressiveのAPIにはExperimentalMaterial3ExpressiveApiというアノテーションがついていて、このAPIを利用する側の関数でOptInする必要があります。
ButtonやIconButtonのAPIには新しいオーバーライドが追加されています。
引数にshapesを受け取り、ボタンが押されていない場合と押されている場合それぞれのShapeを指定できるようになっています。
この例ではボタンが押されていない場合に7角形(?)のクッキー形のCookie7Sidedを指定し、ボタンが押されている場合にオバケ形(?)のGhostishを指定しています。
また、アイコンのサイズにはextraLargeIconSizeを、ボタンのサイズはextraLargeContainerSizeを指定しています。
material3の1.4.0で使えるようになってなかったっけ?
ところで、M3 Expressiveが発表された頃から注目していた人は、material3の1.4.0で使えるようになっていたのではないかと思うかもしれません。 私もそうでした。
振り返ってみると、M3 Expressiveが発表されたのが2025年の5月頃でした。 その頃のmaterial3ライブラリは1.4.0がalpha版で、M3 ExpressiveのAPIが追加されていたのを覚えています。
material3の1.4.0は2025年の9月にstableになりましたが、いつの間にかM3 ExpressiveのAPIは消えていました。
不思議に思って過去のリリースノートを見てみると、1.4.0-beta01の時点でExperimentalMaterial3ExpressiveApiのついたAPIが全て削除され、同時に1.5.0-alpha01に移動していました。
All public APIs tagged with ExperimentalMaterial3ExpressiveApi or ExperimentalMaterial3ComponentOverrideApi have been removed, please switch to 1.5.0-alpha to continue enjoying these features.
https://developer.android.com/jetpack/androidx/releases/compose-material3#1.4.0-beta01
Google製アプリでは導入が進んでいる
いまだalpha版のM3 Expressiveですが、Google製アプリでは着々と導入が進んでいるようです。
例えばGoogleカレンダーで予定を追加する時に出てくるFAB menuはM3 ExpressiveのFloatingActionButtonMenuを使っていると思われます。

Android 16のPasskey認証中のインジケータにはCircularWavyProgressIndicatorが使われていそうです。

alpha版ということで、今後見た目や挙動が変更されるリスクはありますが、影響の少ない部分で導入してみても面白いかもしれません。