Early Access Program

Kotlin 1.7.0-Beta リリース

Read this post in other languages:
English, Français, 한국어, Português do Brasil, Español, 简体中文

1.7.0 の初回プレビューがリリースされました。 Kotlin 1.7.0-Beta をご紹介します! このプレビューには、以下のような注目の機能が含まれています。

  • ビルダー推論への変更。
  • min() および max() 集合関数の再導入。
  • 絶対的非 nullable 型の安定化。
  • 新しい Kotlin/Native メモリマネージャーの更新。

1.7.0-Beta をインストールし、これらの機能をお試しください。お気づきの点がございましたら、課題を報告して Kotlin 1.7.0 の改善にご協力ください。

その他の刺激的な機能については、今後の記事でご紹介いたします。 ご期待ください! 

Kotlin 1.7.0-Beta のインストール

1.7.0 から周期の用語を変更し、「マイルストーン」を「Beta」に改名しました。 この決定には、以下のようないくつかの根拠があります。

  • Kotlin のビルド用語をソフトウェアリリースサイクルの標準的な用語に合わせようとしています。 より正確には、「Beta」は特定のバージョンに対する新機能の追加を完了し、安定化に取り組んでいることを意味します。 ユーザーからのフィードバックに基づく変更など、最終的な変更が実装されます。
  • 以前は M リリースコンパイラーが「プレリリース」コードを生成していたため、これらのバージョンのテストが困難でした。 今後、このような問題は発生しません。 あらゆる混乱を避け、Kotlin Beta バージョンを試すのは簡単であり、Kotlin チームが強く推奨していることを主張する意向です。
  • 最後に重要なこととして、「Beta」という用語はそれ自体がコミュニティからフィードバックを募集していることを意味します。 この用語を使用することで、ユーザーからフィードバックを募集していることを周知しています。

Kotlin 1.7.0-Beta を評価の上、YouTrackSlack にフィードバックをお送りください(新規 Slack メンバー向け: 招待の申し込み)。

ビルダー推論への変更

ビルダー推論は特殊な型推論で、汎用的なビルダー関数を呼び出す場合に役立ちます。 コンパイラーがラムダ引数内の他の呼び出しに関する型情報を使用することで、呼び出しの型引数を推論できるようになっています。

Kotlin 1.7.0-Beta には、ビルダー推論に対するその他の変更が含まれます。 これにより、ビルダー推論の安定化と 1 つのロードマップ項目の完了にさらに近づきました。

このリリースでは、バージョン 1.6.0 で導入された -Xenable-builder-inference コンパイラーオプションを指定しなくても、通常の型推論では型に関する十分な情報を得られない場合にビルダー推論が自動的に有効化されます。

つまり、追加のアノテーションやオプションを適用しなくても、ビルダー型推論を使用する独自のビルダーを記述できるようになりました。 カスタム汎用ビルダーの記述方法をご覧ください。

min() および max() 集合関数の再導入

Kotlin 1.4 では、min() および max() 集合関数の名前を minOrNull()maxOrNull() に変更しました。 これらの新しい名前は、レシーバー集合が空の場合には null を返すという関数の動作をよく反映していました。 また、関数の動作と Kotlin の集合体 API 全体で使用される命名規則を一致させる上でも役立ちました。

minBy()maxBy()minWith()、および maxWith() についても同様で、Kotlin 1.4 ではそれぞれに *OrNull() を使った同義語が導入されました。 この変更の影響を受けていたより古い関数は、徐々に廃止されました。

Kotlin 1.7.0-Beta では元の関数名に戻しました。ただし、戻り値の型は非 nullable になっています。 min()max()minBy()maxBy()minWith()、および maxWith() は厳密に集合体要素を返すか、例外をスローするように更新されています。

詳細については、こちらの YouTrack 課題をご覧ください。

絶対的非 nullable 型の安定化

Kotlin 1.7.0 では、Kotlin 1.6.20 で導入された絶対的 非 nullable 型が安定化される予定です。

これらの型は、汎用 Java クラスとインターフェースを拡張するときの相互運用性を改善するために追加されました。

Kotlin 1.6.20 からは新しい T & Any 構文を使用してジェネリック型パラメーターをその使用箇所で絶対的 非 nullable に指定できるようになっています。 この構文は交差型の表記法が基になっており、現時点では & の左側に nullable の上限、右側に非 nullable の Any を記述した型パラメーターに限定されています。

この Beta リリースでは、絶対的 非 nullable 型はデフォルトで有効になっています。 追加の作業は必要ありません。

絶対的非 nullable 型の詳細は、the KEEP をご覧ください。

特定位置での正規表現一致

1.5.30 で導入された Regex.matchAt() および Regex.matchesAt() 関数が安定版になりました。 これらの関数は、String または CharSequence の特定位置で正規表現に完全一致するものがあるかどうかをチェックする手段を提供します。

  • matchesAt() は一致項目の有無をチェックし、ブール値の結果を返します。
  • matchAt() は見つかった一致項目を返すか、見つからない場合は null を返します。

こちらの YouTrack 課題にフィードバックを残していただければ幸いです。

新しい Kotlin/Native メモリマネージャー

私たちは継続的にフィードバックを収集し、新しい Kotlin/Native メモリマネージャーを改善しています。 現時点では、プロジェクトでアルファ版をお試しいただけます。 Kotlin 1.7.0-Beta では、開発者エクスペリエンスの向上に寄与するさらなるパフォーマンスの改善を行いました。

新しいメモリマネージャーは JVM と Native プラットフォームの差を失くし、 マルチプラットフォームプロジェクトで一貫した開発者エクスペリエンスを提供します。 たとえば、Android と iOS の両方で動作する新しいクロスプラットフォームモバイルアプリケーションの作成がかなり簡単になっています。

新しい Kotlin/Native メモリマネージャーは、スレッド間でのオブジェクト共有に対する制限を撤廃します。 また、完全にメモリリークが発生せず、特別な管理やアノテーションを必要としない安全な並行プログラミングプリミティブも提供しています。

新しいメモリマネージャーは今後のバージョンでデフォルトとなる予定ですので、今からお試しいただくことをお勧めします。 新しいメモリマネージャーに関する詳細を読んでデモプロジェクトを試すか、移行手順を確認して自分で試すことができます。

プロジェクトで新しいメモリマネージャーを試し、その仕組みを確認したら YouTrack 課題トラッカーにフィードバックをお寄せください。

JS および Native での名前付きキャプチャグループのサポート

Kotlin 1.7.0-Beta から、名前付きキャプチャグループが JVM(1.8 以降)だけでなく、JS と Native でもサポートされるようになりました。

キャプチャグループに名前を付けるには、正規表現で (?<name>group) 構文を使用してください。 グループ別にテキストを一致させるには、新たに導入された MatchGroupCollection.get() 関数を呼び出してグループ名を渡します。

名前で一致するグループの値を取得

都市の座標を一致する以下の例を考察してみましょう。 正規表現に一致するグループの集合体を取得するには、groups を使用します。 グループのコンテンツをその番号(インデックス)と value を使用した名前で取得する方法を比較します。

名前付き逆参照

グループを逆参照する際に、グループ名も使用できるようになりました。 逆参照は、グループをキャプチャすることで以前に一致したものと同じテキストを一致させます。 そのためには、正規表現に \k<name> 構文を使用します。

置換式の名前付きグループ

最後に、名前付きグループ参照を置換式に使用できます。 入力内の正規表現のすべての出現箇所を置換式で置換する replace() 関数と、最初の一致のみを入れ替える replaceFirst() 関数を見てみましょう。

置換文字列の ${name} の出現箇所は、特定の名前でキャプチャされたグループに対する後続の出現箇所で置換されます。 名前とインデックスでのグループ参照の置換を比較します。

新機能を試してフィードバックを提供 

これらの新機能は、1.7.0 のプレビューリリースである Kotlin 1.7.0-Beta で利用できます。 これは、IntelliJ IDEA または Android Studio IDE に簡単にインストール可能です。

Android Studio プラグインの名前変更(ベータ)により、プラグインは 1.6.20 以降のバージョンに対してインストールできます。

Kotlin 1.7.0-Beta は、以下のいずれかの方法でインストールできます。

  • 早期アクセスプレビューのアップデートチャンネルを使用する場合、IDE は 1.7.0-Beta が入手可能になった時点で自動アップデートを提案します。
  • 安定版のアップデートチャンネルを使用する場合、IDE で Tools(ツール)| Kotlin | Configure Kotlin Plugin Updates(Kotlin プラグインのアップデートを構成)を選択すると、いつでもチャンネルを早期アクセスプレビューに変更できます。 その後、最新のプレビューリリースをインストールできるようになります。 詳細については、こちらの手順をご覧ください。

以下の IDE の最新バージョンをいつでもダウンロードし、網羅的な Kotlin のサポートを受けることができます。

  • IntelliJ IDEA: さまざまなプラットフォームを対象とする Kotlin アプリケーションの開発に適しています。
  • Android Studio: Android とクロスプラットフォームモバイルアプリケーションの開発に適しています。

1.7.0-Beta をインストールしたら、必ずビルドスクリプトの Kotlin バージョンを 1.7.0-Beta に変更してください。

問題発生時は以下の対応をお願いします。

詳細情報

オリジナル(英語)ブログ投稿の作者:

Elizaveta Semakova

Danil Pavlov