Kotlin
A concise multiplatform language developed by JetBrains
品質とパフォーマンスに注力した Kotlin 1.4 をリリースしました
本日、Kotlin 1.4.0 をリリースしました! 私たちは過去数年間、Kotlin を楽しく生産的に作業できるプログラミング言語にするために一生懸命に取り組んできました。 この Kotlin のバージョンではこの目標を追求し続けるため、多大なエネルギーと労力を注いで Kotlin と関連ツールのパフォーマンスと品質を改善しました。 また、待ち望まれていた Kotlin インターフェースの SAM 変換を含むいくつかの新しい言語機能をサポートしました。
Kotlin 1.4 で導入される変更点と改善点を最大限に活用できるよう、皆様を Kotlin 1.4 オンラインイベントにご招待します。このイベントでは 4 日間にわたる Kotlin 関連の講演、Kotlin チームとの質疑応答セッションなどが予定されており、完全無料でご参加いただけます。
コミュニティとエコシステム
過去 12 カ月間で 580 万人以上が Kotlin のコードを編集しており、その数は常に増え続けています。
Kotlin の知名度が高まっていることを喜ばしく思っています。 有効ユーザー数は特に期待が持てます(この測定項目に関する詳細は今後のブログ記事で説明します)。 今回は前年の 1.5 倍以上の数値となっています。
StackOverflow の開発者アンケート(2020年版)によると、Kotlin はプロ開発者に最も人気のあるプログラミング言語で 13 位になりました。Kotlin が最も愛される上位 5 言語の 1 つになったことを喜ばしく思っています。
多くの企業が Kotlin を自社の優先言語に選んでおり、様々なプラットフォームで活用しています。 このような傾向を喜ばしく思うと同時に、コミュニティ向けに閲覧・学習できるケーススタディを提供いただいたこれら多くの企業に深く感謝しております。 以下は、最近 Kotlin で開発された素晴らしいソフトウェアの例です。
- サーバーサイド: Atlassian、Adobe、ING Bank
- Android: Google Home、Duolingo、Zomato
- マルチプラットフォームモバイル: VMware、PlanGrid および CashApp、Mirego 社の Trikot
- ウェブ: JetBrains の Space、Karhoo、MIPT Nuclear physics methods laboratoryの VisionForge
Kotlin のコミュニティも急速に成長しています。 現在、3万人以上の Kotlin 開発者が Slack や Reddit 上で知識の交換や相互支援を行っており、9万人以上が当社の公式 Twitter アカウントをフォローしてヒントやトリック、アナウンスを受信しています。 世界中に 200 以上のユーザーグループを擁する Kotlin のコミュニティは発展と成長を続けています。 Kotlinの認知度向上への協力、知識を共有、コミュニティーの Kotlin 開発者を支援いただいた皆様に感謝いたします。 皆様が作り出す温かく友好的な雰囲気のおかげで、非常に楽しく Kotlin の可能性を一緒に探ることができています。 皆様がいなければこのような状況にはならなかったと思います。
Kotlin 1.4 オンラインイベント
私たちは皆様が Kotlin 1.4 の使用に満足していることを確認し、この言語の今後の方向性を皆様によく理解していただきたいと考えています。 そのため、皆様を Kotlin 1.4 オンラインイベントにご招待します!
このイベントは 4 日間開催され、Kotlin に関する知識と同言語とエコシステムの将来が取り上げられます。具体的には Kotlin 1.4 で導入された新しい変更や改善点について議論し、同言語の今後の計画をお伝えする予定です。 毎日の質疑応答セッションでは、当社の Kotlin チームメンバーが皆様からのご質問に回答します。 Twitter でハッシュタグ「#kotlin14ask」を付けて投稿するか、こちらのフォームを使用して事前にご質問をお寄せください。
Kotlin 1.4 オンラインイベントは10月12日から15日まで配信される予定です。また、次のリンクから無料でご登録いただけます。
皆様にお会いできることを楽しみにしています!
品質への注力
このリリースでは IDE のパフォーマンスと安定性の向上など、主に全体的な Kotlin 開発体験の改善に注力しました。 私たちは可能な限り Kotlin ユーザーの生産性を向上することを目標としています。今回はユーザーにとって最も重要なものを改善することに注力し、さらに快適にお使いいただけるようにしました。
IDE のフリーズやメモリリークを引き起こす多くの問題を含め、これまでに 60 件超のパフォーマンスの問題をレビューして解消しました。 Kotlin 1.4.0 の EAP フェーズでは、全体的な使用感が大幅に改善されたことを示す多くの肯定的なフィードバックが寄せられました。
プロジェクトを操作中に巨大な Kotlin ファイルを初めて開く際、その内容がはるかに高速にハイライトされるようになりました。 ほとんどの場合、ハイライトは 1.5 倍から 4 倍程度に高速化しています。
自動補完候補が表示されるまでの時間も大幅に改善しました。 次のグラフは、Kotlin ユーザーが体験する自動補完の平均応答時間の概要を示します。 補完に 500 ミリ秒超を要するケースの数は約半分に削減されています。
コードハイライト機能の高速化を含むこれらの最新のアップデートを使うには、IntelliJ IDEA 2020.1以上、 または Android Studio 4.1以上が必要です。
パフォーマンス改善は常に実施されており、継続的なフリーズの削減や入力の円滑化などのその他多くの機能強化も計画されています。 現時点ですでに IDE を大幅に高速化する新しい実験的な Kotlin コンパイラのフロントエンドとの統合を開始しています。 これはプラグインの大部分を書き直す必要のある大がかりな作業ですが、コード補完、シンタックスハイライト、コンパイラのエラーレポートを含む IDE の多くの領域でパフォーマンスが向上する見込みです。
新しい IDE の機能
JetBrains のミッションはソフトウェア開発をより生産的で楽しいものにすることですので、当然ながら優れた Kotlin 周辺のツールを提供し、可能な限り Kotlin のコーディングを楽にしたいと考えています。
コルーチンをより扱いやすくするため、特に並行アプリケーション内のバグを正確に特定するため、Coroutine Debugger を導入しました。 私たちはコミュニティが最も必要とする機能を提供するため、その最初の機能セットを拡張する予定です。そのため、当社のいずれかのチャネルを使用するか、以下のコメント欄でフィードバックをお寄せください。
また、柔軟性の高い新しい Kotlin Project Wizard を導入しています。 この新しいウィザードでは単一のビューでさまざまなタイプの Kotlin プロジェクトを作成および構成可能で、マルチプラットフォームプロジェクトのようなより複雑な構造でも簡単に開始することができます。
Kotlin 1.4.0 と共に 40 個の新しいクイックフィックス、インテンション、インスペクションが追加され、必要なときに正確に利用できるようになりました。コードを変更する際に Alt+Enter を押すと、その特定のコンテキストで利用できるものが表示されます。
新しいコンパイラー
私たちはかなり以前からパフォーマンスと拡張性の点で Kotlin の進化を促進する新しい Kotlin コンパイラに取り組んできました。 新しいコンパイラの主な目標は、大幅な高速化と Kotlin がサポートするすべてのプラットフォームの統合、ならびにコンパイラ拡張機能の API を提供することです。 新しい部品を段階的に導入し、できるだけ早くユーザーがそれらを試せるようにしています。 Kotlin 1.4.0 では、この進行中の取り組みの中から一部をリリースしています。
- さらに強化された新しい型推論アルゴリズムがデフォルトで有効化されています。 より多くのユースケースでの自動型推論、複雑なシナリオでのスマートキャストのサポート、デリゲート型プロパティの推論の改善などを行います。
- 新しい JVM と JS IR バックエンドは Alpha モードで使用できます。 安定化が完了次第、これらは新しいデフォルトになります。
私たちは現在、コンパイラーのパイプラインに最大のパフォーマンス改善をもたらす新しいフロントエンドの実装に活発に取り組んでいます。 このフロントエンドは、コード解析、名前の解決、型チェックの実行を担うコンパイラの一部です。そのため、IDE のパフォーマンスにも影響します。 今後のリリースでプレビュー版を公開予定ですので、ぜひご期待ください!
言語機能
Kotlin 1.4 には、次のような多くの新機能が実装されています。
- Kotlin インターフェースの SAM 変換
- ライブラリ作成者向けの Explicit API モード
- 名前付き引数とポジショナル引数の混在
- 末尾のコンマ
- 呼び出し可能参照の改善
- ループ文の
when
内でのbreak
とcontinue
の使用
ライブラリ関連の改善点
標準ライブラリに関しては、異なるプラットフォーム間と演算そのものの両方について整合性を向上させることを一般的な優先事項としています。 このリリースの Kotlin 標準ライブラリには新しいコレクション型演算子、デリゲート型プロパティの改善、両端キュー ArrayDeque
の実装、およびその他が取り込まれています。
標準ライブラリは、Android と iOS、もしくは JVM と JS のように異なるプラットフォーム間で共有できる「共通」コードで使用できます。 現在、共通ライブラリーの拡張と、共通ライブラリーへの機能追加または不足している機能の移動を徐々に行っているところです。
また、今後は単一のプラットフォームをターゲットにする場合も、マルチプラットフォームプロジェクトで作業する場合でも、Gradle Kotlin プロジェクトで stdlib
への依存関係を宣言する必要はなくなりました。 Kotlin 1.4.0 以降は、この依存関係がデフォルトで追加されています。
次のような Kotlin エコシステムの他の活動にも関わっています。
- 皆様からのフィードバックを元に kotlinx.coroutines を段階的に進化させています。
- 直列化ライブラリが成熟しつつあります。 今回は kotlinx.serialization 1.0.0-RC バージョンをリリースします!
- kotlinx-datetime ライブラリである DateTime API のプレビューはすでに実験的な状態でリリースしています。
Kotlin/JVM
通常のプロジェクトに新しいアルファ版の Kotlin/JVM backend をぜひお試しいただき、フィードバックをお寄せください! コンパイラーのパイプラインを統合すると共に、この取り組みによって Jetpack Compose のようなコンパイラー拡張機能を Kotlin コミュニティにいち早く提供できるようになります。
Kotlin / JVMに固有の言語機能:
- バイトコード内のインターフェースにデフォルトメソッドを生成する新しい実験的な方法を追加しました(Java 8 ターゲット用)。
- nullチェックの統一例外タイプを導入しました。
- Kotlin は、JVM バイトコードで型注釈を生成できるようになり、実行時に Java reflection で利用できるようになりました。 これはターゲットバージョン8 以降で実行が可能で、実験的な機能としてリリースされています。
Kotlin/JS
Kotlin 1.4.0 は数ある機能の中でも、新しい Gradle DSL と新しい Kotlin/JS コンパイラーバックエンドのアルファ版が搭載されていることが特徴です。
- 新しい Gradle DSL は DSL からの CSS とスタイルローダーの構成をサポートしており、npm 依存関係の管理に関するさまざまな改善が取り込まれ、Dukat 統合の管理機能が改善されています。
- Kotlin/JS コンパイラーのバックエンドは Kotlin/JS に未来的な感覚をもたらします。 Kotlin コードからの TypeScript 定義の自動生成、バイナリとバンドルの軽量化、Kotlin の機能を JavaScript に公開する最新の方法などの最適化や機能を提供します。
Kotlin/Native
Kotlin/Native には次をはじめとする多数の新機能や改善が加えられています。
- Kotlin/Native の全体的なコンパイルと実行のパフォーマンスを改善しました。
- Kotlin/Native と Swift / Obj-C の相互運用性を改善しました。
- CocoaPods 依存関係の管理を簡略化しました。
現在の Kotlin/Native の自動メモリ管理の実装には並行性に関する制限があるため、その代わりとなるものを現在開発中です。
Kotlin/Native で重点を置いているのはこれを Kotlin Multiplatform Mobile でシームレスにすることですが、それだけに限定しているわけではありません。
Kotlin Multiplatform
Kotlin を優れたマルチプラットフォームにすることは最優先事項の1つです。 私たちは KotlinConf でいくつかの重要な改善事項を約束しましたが、以下の内容を達成したことをご報告します。
- 階層的なプロジェクト構造により、類似した iOS ARM64 デバイスターゲットや x64 シミュレーターターゲットのような特定のターゲットサブセット間でコードを共有できるようになりました。
- 複数のネイティブターゲット間で共有される共通コードのプラットフォーム依存ライブラリを使用できます。
- 同一ライブラリの別バージョンへの依存関係を共有ソースセットとプラットフォーム固有のソースセットに指定する代わりに、共有ソースセットに一度だけ指定できます。
- マルチプラットフォームライブラリを共有するために内部で使用されている Kotlin ライブラリフォーマット(Klib)を継続的に開発します。
現在、iOS のデバイスやシミュレーターで Kotlin コードの実行、テスト、デバッグを実現する Android Studio 用のプラグインを開発しています。 最初のパブリックプレビューはまもなくリリース予定ですので、乞うご期待ください。
Kotlin コミュニティメンバーの支援を受けて作成した、Kotlin Multiplatform Mobile(KMM)テクノロジーを使用して Android と iOS 間でコードが共有されるモバイルユースケースを具体的にターゲットとする方法を説明する資料をまもなく大量にリリースする予定です。
現在は主にモバイルターゲットに注力していますが、Kotlin Multiplatform の Web ターゲットはすでに JetBrains が JetBrains Space のビルドとリリースに積極的に使用しています。 ウェブは今後も Kotlin にとって重要な戦略的投資対象となります。
その他の情報
新機能の詳細な説明は Kotlin 1.4 の新機能ページとドキュメントをご覧ください。また、Kotlin 1.4 への移行に関する詳細もお読みください。
すべてのメジャーリリースと同様に、Kotlin 1.4 を以て、以前に発表した変更の使用廃止サイクルが一部終了を迎えます。 すべてのケースは言語委員会による十分な検討の後、「Kotlin 1.4 の互換性ガイド」に記載されています。
Kotlin の改善を支援するには
IntelliJ IDEA と Android Studio の Kotlin プラグインは、機能の利用状況に関する匿名の統計情報を収集しています。 この統計情報の収集へのご協力をお願いいたします。
この匿名データはユーザーをより深く理解し、正常に動作している機能や不具合を引き起こしている機能、ならびに注力すべき箇所を把握するのに大いに役立ちます。 統計情報を有効にするには、Preferences に移動して Appearance & Behaviour | System Settings | Data Sharing を開き、Send usage statistics チェックボックスを有効にしてください。
Kotlin 1.3 以降の上位課題報告者
YouTrack に課題を報告してこのリリースの改善にご協力いただいたコミュニティメンバー全員に感謝いたします! 以下は特に多くの課題を報告いただいた 20 名の方です。以下のメンバーの皆様には特に感謝しています。
Igor Wojda(145 件の課題)Louis CAD(87 件の課題)Marc Knaup(86 件の課題)AndroidDeveloperLB(83 件の課題)Robert Stoll(68 件の課題)Morgan Bartholomew(62 件の課題)Victor Turansky(54 件の課題)Guan Tianyi(51 件の課題)Scott Pierce(38 件の課題)Andreas Malik(37 件の課題)Steven Schäfer(37 件の課題)Björn Kautler(36 件の課題)Róbert Papp(34 件の課題)Toshiaki Kameyama(30 件の課題)Nicholas Bilyk(29 件の課題)Michael Bailey(26 件の課題)Jake Wharton(25 件の課題)Lamberto Basti(24 件の課題)Serge Pro(23 件の課題)Egor Andreevici(21 件の課題)
今すぐ Kotlin 1.4 を始めましょう
従来通り、play.kotl.in で Kotlin をオンラインで試すことができます。
Gradle と Maven では、1.4.0 をコンパイラーのバージョンに使用してください。 Gradle と Maven のドキュメントをご覧ください。
IntelliJ IDEA と Android Studio は、Kotlin プラグインをバージョン1.4.0に更新するように自動的に提案します。 Preferences | Plugins を開いて Kotlin プラグインを手動で更新することもできます。
コマンドラインコンパイラは、GitHub リリースページからダウンロードできます。
このリリースとともに、以下のバージョンのライブラリが公開されています。
- kotlinx.coroutines バージョン:
1.3.9
- kotlinx.serialization バージョン:
1.0.0-RC
- ktor バージョン:
1.4.0
- kotlinx.atomicfu バージョン:
0.14.4
- kotlinx.html バージョン:
0.7.2
- kotlinx-nodejs バージョン:
0.0.6
kotlin-wrappers
からのライブラリのバージョン(kotlin-react
など)は、対応するリポジトリで確認できます。
コードハイライト機能の高速化を含むこれらの最新のアップデートを使うには、IntelliJ IDEA 2020.1以上、または Android Studio 4.1以上が必要です。
この新リリースで問題が発生した場合は、Slack (こちらで招待を受けてください)で支援を求めるか、YouTrack で課題を報告してください。
おわりに
Kotlin EAP と実験的機能をお試しいただき、フィードバックをご提供いただいた皆様に心から感謝申し上げます。 当社は皆様と一緒に Kotlin 言語を開発し、皆様からの貴重なご意見に基づいて多くの設計上の決定を下しています。 コミュニティでこの迅速かつ効果的なフィードバックのサイクルを維持することは、Kotlinを可能な限り最高の言語にするために非常に重要です!
このリリースに含められたプルリクエストは、次の外部貢献者からいただいたものです。ご協力いただきありがとうございました。 皆様のおかげでこのリリースを実現することができました!
Kotlinを使って非常に多くの素晴らしい作品を作成していただいたコミュニティメンバーの皆様に心から感謝申し上げます。 Kotlin 1.4: One for all!