A note to our readers: You asked so we have developed a set of features that allow you to reduce the noise: you can get email and web notifications for topics you are interested in. Learn more about our new features.
JetBrainsが彼らの人気のプログラミング言語Kotlinのバージョン1.2.30をリリースした。 バージョン1.2.20のリリース後約1ヶ月半で出ている。新機能は以下のものだ。
- 新しい関数、コルーチン用の
suspend
。 - Gradleのビルドキャッシュツールのサポート。
- 新しいKotlinスタイルガイドへのIDEサポート。
- IntelliJプラグインでの新しいインスペクション、パフォーマンス改善、バグフィックス。
kotlin.test
でのTestNGのサポート。
新機能と拡張はIntelliJ IDEAのバージョン2017.1から2017.3と2018.1 EAPですべてサポートされている。同時にAndroid Studio 3.0でもだ。ここでこれらの拡張をいくつか紹介する。
マルチプラットフォームプロジェクト
Kotlinマルチプラットフォームプロジェクトは2017年11月にバージョン1.2のリリースと同時に導入されたもので、同一のコードベースを複数のプラットフォームを対象にコンパイルできる。現時点ではJVMとJavaScriptがある。
ウェブサイトにはこう書かれている。
マルチプラットフォームプロジェクトでアプリケーションの複数の層 ‐ バックエンドとフロントエンド、Androidアプリ ‐ を同一のコードベースからビルドできる。そういったプロジェクトにはプラットフォームから独立しているコードを持つ共通モジュールと特定のプラットフォーム (JVMまたはJS) 向けのコードがありプラットフォーム固有のライブラリを使うプラットフォーム固有モジュールがあります。共通モジュールからプラットフォーム固有のコードを呼び出すには、expected宣言を記述します。これは実際の (actual) 実装を提供する必要があるプラットフォーム固有モジュールに向けた宣言です。
通常のKotlinプロジェクトはGradleまたはMavenでビルドできるが、現時点でKotlinマルチプラットフォームプロジェクトをサポートしているビルドツールはGradleのみである。以下は共通モジュールをビルドする基本的なbuild.gradle
ファイルだ。
buildscript {
ext.kotlin_version = '1.2.30'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin-platform-common'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"
}
マルチプラットフォームプロジェクトは現在実験的 (experimental) 機能である。JetBrainsはKotlinの今後のリリースで設計が変更される可能性があると認めているが、必要であれば移行ツールを提供するだろう。
標準ライブラリに追加された新しい関数
コルーチンの利用をさらに促進するため、新しい関数が標準ライブラリに追加された。
public inline fun <R> suspend(
noinline block: suspend () -> R
): suspend () -> R = block
この新しい関数は関数リテラルをラップしており、コルーチンのサスペンド関数として使える。たとえば以下のようになる。
suspend {
val result = deferredResult.await()
renderResult()
}.startCoroutine(completion)
この新しい関数はKotlinが最終的にラムダ式内でのsuspend修飾子の使用をサポートする土台を築いている。
Kotlinスタイルガイド
IntelliJ IDEAはKotlinの新しいスタイルガイドをサポートする。これはKotlinプロジェクトで適用できる。対応するAndroid向けスタイルガイドも利用できる。スタイルガイドはソースコード構成や命名規則、フォーマット、ドキュメンテーションコメント、言語機能の慣用的な使用法のようなカテゴリを含んだおすすめのコーディング規約を提供している。
KotlinとJavaが混ざっているプロジェクト向けに、スタイルガイドではKotlinとJavaのディレクトリをGradleやMavenが使う規約に従って別々にすることをおすすめしている。たとえば、GitHubのkotlin-examplesプロジェクトでのディレクトリ構成の一部を見てみよう。
コンパイルのパフォーマンス改善
最初の改善はGradleのビルドキャッシュツールのサポートだ。バージョン4.3から利用できるものだが、他のGradleビルドの出力を再利用できる。概要には以下のように記されている。
Gradleのビルドキャッシュは他のビルドの出力を再利用することで時間の節約を目指すキャッシュメカニズムです。(ローカルまたはリモートでの) ビルドの出力を保存し入力に変更がないと確認されたとき、ビルドがキャッシュからこれらの出力を取れるようにすることでビルドキャッシュは動作します。再生成するという高コストな作業を避けられます。
しかし、Kotlinのannotation processor、kapt
に対してビルドキャッシュを使うのは勧められない。なぜならGradleはアノテーションプロセッシングの依存性を正しく追跡できないからだ。これはデフォルトで無効になっているが、必要なときにGradleのビルドスクリプトで有効にできる。
kapt {
useBuildCache = true
}
2つ目の改善は実験的な新機能だ。KotlinとJavaが混ざっているアプリケーションで変更がないKotlinファイルをリコンパイルしないようJavaファイルへの変更をより正確に追跡できる。デフォルトでは無効になっているが、gradle.properties
ファイルに以下の行を追加すると有効にできる。
kotlin.incremental.usePreciseJavaTracking=true
Kotlinプログラミング言語全体の詳細は詳細なリファレンスドキュメントにある。
資料
- Spring BootアプリケーションでJavaとKotlinをミックスする方法 Kevin Peters氏 (2017年9月13日)
- Kotlin 1.2 リリース: プラットフォーム間のコード共有 Dmitry Jemerov氏 (2017年11月28日)
- Kotlinの2017年のまとめと2018年の展望 InfoQ (2018年1月23日)
Rate this Article
- Editor Review
- Chief Editor Action