
Kotlin開発者の皆さん、お待たせしました!
2026年6月にリリースされた Kotlin 2.4 にて、待望の「コレクションリテラル(Collection Literals)」が実験的(Experimental)にサポートされました。
これまで listOf() や mutableListOf()、arrayOf() などの関数を使って記述していた配列やリストの生成が、ついにスクエアブラケット [] を使って、よりシンプルかつ直感的に書けるようになります。
この記事では、コレクションリテラルの導入方法から、最も重要な挙動である「文脈依存の型推論(Context-sensitive Type Inference)」について詳しく解説します。
🧑🏻💻 コレクションリテラルとは?
Kotlin 2.4.0からは、以下のようにブラケット [] を使ってコレクション(配列やリストなど)を簡潔に作成できるようになります。
// Kotlin 2.4からの新しい書き方(リテラル表記)
val names = ["Joe", "Alice"]
従来の listOf("Joe", "Alice") と比べてタイピング量が減り、他言語(Javaの配列リテラルや、JavaScript/TypeScript/Pythonなどの配列・リスト表記)に慣れている開発者にとっても、より親しみやすいコードになります。
🧑🏻💻 導入方法(実験的サポートの有効化)
Kotlin 2.4時点では、この機能はまだ実験的(Experimental)な位置づけです。そのため、プロジェクトで利用するにはコンパイラオプションで明示的に機能を有効化する必要があります。
build.gradle.kts に以下の設定を追加してください。
kotlin {
jvmToolchain(21)
compilerOptions {
// コレクションリテラルを有効化するコンパイラ引数
freeCompilerArgs.add("-Xcollection-literals")
}
}
🧑🏻💻 注目すべき「型推論」の挙動
コレクションリテラルを使う上で、最も興味深いのが「コンパイラがどのように型を推論するか」という点です。
Kotlinのコレクションリテラルは、単一の固定された型を表すのではなく、周囲の文脈(期待される型)に応じて最終的な型が変化する「文脈依存(Context-sensitive)」の性質を持っています。
具体的なコードで比較してみましょう。
1. 明示的な型指定がない場合
ターゲットとなる型を何も指定せずにリテラルを書いた場合、コンパイラはデフォルトで Array(配列) と推論します。
val names = ["Joe", "Alice"]
// 推論される型: Array<String>
2. 期待される型(型注釈)がある場合
変数の型を明示的に指定すると、リテラルの中身は同じ [] であっても、コンパイラが文脈を読み取って適切なコレクション型へと変換してくれます。
val names: MutableList<String> = ["Joe", "Alice"]
// 推論される型: MutableList<String>
このように、左辺の MutableList<String> という情報をコンパイラが解釈し、[] の部分を適切に MutableList として扱ってくれるのが、今回の型推論の面白いところです。
🧑🏻💻 まとめ:Kotlinのコードはさらに洗練される
Kotlin 2.4のコレクションリテラルは、ただの「書き方の省略」にとどまらず、Kotlinの強力な型推論エンジンとシームレスに融合している点が大きな特徴です。
現在はまだ実験的な機能であるため、プロダクション環境への導入には慎重になる必要がありますが、将来的に正式機能となれば、Kotlinのコードをさらにモダンでスッキリとしたものに変えてくれることは間違いありません。
興味のある方は、ぜひコンパイラオプションを追加して、手元のプロジェクトで新しい書き味を試してみてください!
Related Categories : Android・AndroidStudio・Breaking News・JetBrains・Kotlin・Newbie・News