Kotlin
A concise multiplatform language developed by JetBrains
Kotlin 1.5.0 – 2021 年最初の大規模リリース
新しいリリーススケジュールに準じた Kotlin 最初の機能リリース、Kotlin 1.5.0 をご紹介します!
このリリースでは、JVM レコード、sealed インターフェース、インラインクラスなどのstable化した言語機能のほか、新しいデフォルトの JVM IR コンパイラーを提供しています。 Kotlin 1.4.30 および Kotlin 1.5.0 EAP リリースの機能プレビューについて皆様からお寄せいただいたフィードバックが、これらの機能を安定させるうえで大いに役立ちました。 ご支援いただきありがとうございました! よろしくお願いいたします!
すでに 25,000 人以上の開発者が IntelliJ IDEA の新しい JVM IR コンパイラーを試しています。
その良さは時間が経つにつれて実感できるかと思います。 新しいコンパイラーは、統合されたパイプラインとビジネスロジックを Kotlin/Native および Kotlin/JS IR コンパイラーと共有しています。そのため、あらゆるプラットフォーム向けにほとんどの機能実装、最適化、バグ修正を同時に実行できます。 また、あらゆるプラットフォームで自動的に機能するようなカスタム処理や変換処理を追加できます。
Kotlin 1.5.0 に関するご質問はございますか? Roman Elizarov、Svetlana Isakova をはじめとする Kotlin チームのメンバーが、5 月 25 日の Kotlin 1.5 オンラインイベントで皆様からの質問に生でお答えします。
このブログ記事では、次の概要を説明します。
-
stable化した言語機能 – JVM レコード、sealed インターフェース、インラインクラス。
-
標準ライブラリとテストライブラリに関する改善点。Stable 化した符号なし整数型、
java.nio.file.Path
の拡張関数、String / Char / Duration API に関する改善を含みます。 -
Kotlin/JVM に関する改善点。新しいデフォルトの JVM IR コンパイラーを含みます。
-
Kotlin/Native に関する改善点。Linux および iOS アプリケーションのデバッグコンパイルの高速化を含みます。
-
Kotlin/JS に関する改善点。より多くの JS ライブラリから新しい Kotlin/JS IR コンパイラーへの移行を含みます。
Kotlin 1.5.0 への自動アップデート
IntelliJ IDEA か Android Studio をお使いの場合は、新しい Kotlin リリースが入手できるようになった時点で自動アップデートするオプションがあります。
詳細については、Kotlin 1.5.0 のインストールを参照してください。
stable化した言語機能
Kotlin 1.5.0 には、1.4.30 のプレビューで提供された次の新しい言語機能のstable版が含まれています。
-
JVM レコードのサポート。最新 Java の機能であるレコードクラスとの相互運用性を維持しています。 Kotlin クラスを Java コード内でレコードとして使用するには、次のようにそれを
data
クラスにして@JvmRecord
注釈を付けてください。詳細は、JVM レコードを使用するための要件を参照してください。
-
sealed インターフェース。
sealed
修飾子は、インターフェースについてもクラスの場合と同様に機能します。sealed インターフェースの実装はすべてコンパイル時に認識されます。 -
sealed クラスに関する改善。 従来はすべてのサブクラスを sealed クラスと同じファイルに記述する必要がありました。 今後は、同じコンパイルユニットと同じパッケージに属するすべてのファイルに記述することができます。
-
インラインクラスは、値のみを保持する値ベースクラスのサブセットです。 インラインクラスはメモリの割り当てに起因する余計なオーバーヘッドを発生させず、特定の型の値をラップする目的で使用できます。 宣言には
value
修飾子を使用します。
Kotlin 1.5.0 の言語機能に関する詳細
- 言語機能のプレビューに関するブログ記事を参照してください。
- 言語のドキュメントを参照してください。
- 言語のシリーズ動画をご覧ください。
標準ライブラリとテストライブラリに関する改善点
標準ライブラリでは、次のように多くの有益な機能を提供しています。
-
符号なし整数型用の Stable 化した API。Range および符号なし整数型の数列、符号なし整数型を伴う演算ができる関数にも対応しています。 詳細は、符号なし整数を参照してください。
-
java.nio.file.Path の拡張関数。最新の非ブロッキング Java I/O を Kotlin-idiomatic スタイルで利用できるようにします。
-
String および Char API に関する改善点。文字列や文字の大文字・小文字の変換に便利なロケールに依存しない API、文字とその整数コードおよび数値の間で変換操作を行える関数、その他の Char 関数のマルチプラットフォーム対応が含まれています。
-
Duration API の変更。内部表現に
Long
値を使用するようにしました。また、Duration をLong
値として取得するためのプロパティも導入しています。
テストライブラリでは、次のような重要な改善が行われています。
-
マルチプラットフォームプロジェクトの共通ソースセットに、
kotlin-test
を単一の依存関係として追加できるようにしました。 -
依存関係に
kotlin-test
を指定するだけで、Kotlin/JVM ソースセット用のテストフレームワークが自動的に選択されるようになりました。 -
アサーション関数について多数の更新を行いました。
ライブラリの改善点に関する詳細
- いくつかのサンプルを含む、ライブラリの改善に関するブログ記事を参照してください。
- Kotlin 1.5.0 の新機能を参照してください。
- 動画をご覧ください。
Kotlin/JVM
Kotlin 1.5.0 の新機能:
-
Kotlin 1.4.0 で発表された新しい JVM IR コンパイラーが Stable 化し、デフォルトになりました。 新しいコンパイラーに関する詳細は、こちらのブログ記事とドキュメントを参照してください。
-
SAM アダプターとラムダを動的な呼び出しにコンパイルできるようになりました(invokedynamic)。これは、最新の JVM 機能によりもたらされたものです。 Kotlin の単純なラムダのコンパイルは、実験的なものです。
-
デフォルトの JVM ターゲットが 1.8 になりました。
1.6
ターゲットは廃止予定になりました。
Kotlin/Native
Kotlin 1.5.0 の新機能:
-
linuxX64
およびiosArm64
ターゲットで、デバッグモードがコンパイラーキャッシュに対応しました。 コンパイラーキャッシュを有効化すると、初回実行時を除いてほとんどのデバッグコンパイルがかなり高速に完了します。 私たちのテストプロジェクトで評価した結果、200%ほど速度が向上していることを確認できました。 -
アプリケーションのクラッシュが発生する問題を回避するため、組み込みのメモリリークチェッカーを無効にしました。 必要に応じ、メモリリークチェッカーを有効にする方法を参照してください。
Kotlin/JS
Kotlin/JS については、新しい Kotlin/JS IR コンパイラーのベータ版への移行が進められています。 IR コンパイラーでは、KVision / fritz2 / doodle など、すでに多くの有名なフレームワークやライブラリを使用できます。
ライブラリを作成している方は、下位互換性を利用して自分のライブラリを移行することで、自分のライブラリをこれらに追加できます。
また、webpack 4 の代わりに webpack 5 を使用して JS バンドルをビルドできるようになっています。
Kotlin 1.5.0 のインストール方法
すでに IntelliJ IDEA か Android Studio をお使いの場合は、新しいリリースが入手できるようになった時点で Kotlin 1.5.0 への自動アップデートが提案されます。 指定の手順に従って手動でアップデートすることもできます。注:Android Studio 4.2.0、Arctic Fox Canary 15 以降のバージョンのみが Kotlin 1.5.0. をサポートしています。
以下の IDE の最新バージョンをいつでもダウンロードし、網羅的な Kotlin のサポートを受けることができます。
- IntelliJ IDEA。さまざまなプラットフォームを対象とする Kotlin アプリケーションの開発に適しています。
- Android Studio。Android とクロスプラットフォームモバイルアプリケーションの開発に適しています。
kotlinx ライブラリを互換性のあるバージョンにアップデートし、既存プロジェクトのビルドスクリプトで Kotlin バージョン 1.5.0
を指定していることも確認してください。
コマンドラインコンパイラーが必要な場合は、GitHub のリリースページからダウンロードできます。
問題発生時は以下の対応をお願いします
- Slack で支援を求める(招待を受けてください)。
- 課題トラッカー YouTrack に課題を報告する。
Kotlin 1.5 オンラインイベント
5 月 25 日の Kotlin 1.5 オンラインイベントにご参加ください。Kotlin チームが最新リリースに関する皆様からの質問に回答いたします。 気になることがあれば何でもご質問ください。特に質問がない方も、単に回答に興味がある方も歓迎します。 イベントの開催時間は 1 時間 30 分を予定しています。
Twitter で #kotlin15ask
のハッシュタグを付けて質問を投稿するか、登録フォームに質問を追加してください。
また、未回答の質問や新しい質問に対応するため、5 月 27 日から 28 日に Reddit で Ask Me Anything(AMA)セッションを開催する予定です。
互換性
すべての機能リリースと同様に、Kotlin 1.5.0 を以て、以前に発表した変更の使用廃止サイクルが一部終了を迎えます。 すべてのケースは言語委員会による十分な検討の後、「Kotlin 1.5 の互換性ガイド」に記載されています。 また、YouTrack でも変更内容を確認することができます。
動画とその他の情報
Kotlin の YouTube チャンネル:
- Kotlin 1.5.0 の動画プレイリスト
- コルーチンやシリアル化ライブラリの改善点に関する動画を見逃さないよう、Kotlin の YouTube チャンネルに登録してください。
Kotlin のブログをお読みください:
- Kotlin 1.5.0 言語機能のプレビュー
- Kotlin 1.5.0 標準ライブラリとテストライブラリに関する改善点
- 新しい JVM IR バックエンド
- IntelliJ IDEA における Kotlin サポートの改善
Kotlin ドキュメントを参照してください:
外部貢献者
このリリースに含められたプルリクエストは、次の外部貢献者からいただきました。ご協力いただきありがとうございました👏👏👏。
Jinseong Jeon, Mads Ager, Ivan Gavrilovic, pyos, Steven Schäfer, Iaroslav Postovalov, scaventz, Kristoffer Andersen, Bingran, Stefan Wolf, Victor Turansky, fjjohnchen, justin.wei, Nelson Osacky, Mikhail Galanin, Michael Hoisie, Kris Hall, Kevin Bierhoff, Jiaxiang Chen, Hung Nguyen, Cedric Champeau.
YouTrack の上位課題報告者
YouTrack に課題を報告してこのリリースの改善にご協力いただいたコミュニティメンバー全員に感謝いたします👏👏👏! 以下は上位 20 名の報告者です。このメンバーには特に感謝しています。
Morgan Bartholomew(118 課題)、Marc Knaup(78 課題)、Ryan Nett(61 課題)、Louis CAD(48 課題)、Daniil Stepanov(44 課題)、AndroidDeveloperLB(39 課題)、Victor Turansky(38 課題)、Jinseong Jeon(35 課題)、Zac Sweers(25 課題)、Łukasz Wasylkowski(22 課題)、Tianyi Guan(21 課題)、Christoph Sturm(20 課題)、Axel Fontaine(19 課題)、Alexander Nozik(18 課題)、Robert Stoll(18 課題)、Björn Kautler(18 課題)、Róbert Papp(14 課題)、Andreas Malik(14 課題)、Lorenzo Neumann(14 課題)、Iaroslav Postovalov(14 課題)
Kotlin 1.5.0 をインストールして、Kotlin 1.5 オンラインイベントにご登録ください!