Kotlin
A concise multiplatform language developed by JetBrains
Kotlin Multiplatform が安定版および本番対応になりました
ネイティブプログラミングのメリットを維持しながら複数プラットフォーム間でコードを共有できる JetBrains のオープンソーステクノロジー「Kotlin Multiplatform」が待望の安定版となり、本番環境で 100% 使用できるようになりました。
Kotlin Multiplatform(KMP)の進化とそれに伴う開発プロセスの合理化、およびこのテクノロジーを最大限に活用できるように提供されている教材の詳細をお読みください。
開発者の条件に合わせて確実にコードを共有
柔軟性と適合性を重視して設計された Kotlin Multiplatform(KMP)により、クロスプラットフォーム開発とネイティブ開発の境界が柔軟になります。 そのため、開発者は好きなだけコードを再利用し、必要に応じてネイティブコードを記述し、あらゆるプロジェクトに共有の Kotlin コードをシームレスに組み込むことができます。
KMP の初回リリース以来、Netflix、Philips、McDonald’s、9GAG、Baidu などの多数の有名企業がその柔軟性に魅了されています。 すでに多くのチームが段階的に統合できる KMP の機能と採用リスクの低さを活用しています。 分離された既存の Kotlin コードの重要な部分を共有してアプリの安定性を改善しているチームもいれば、 アプリの品質を損なわずにできるだけ多くのコードを再利用することを目標に掲げ、ネイティブ UI を維持しながらすべてのアプリケーションロジックをモバイル、デスクトップ、ウェブ、TV の間で共有しているチームもいます。
KMP はアルファリリースから本番環境で広く使用されているため、JetBrains は大量のフィードバックを収集してテクノロジーを改良し、以下を含む安定版でのマルチプラットフォーム開発エクスペリエンスを向上させることができました。
厳格な互換性保証
Kotlin Multiplatform テクノロジーはコンパイラーのサポート、言語機能、ライブラリ API、IDE、ビルドツール一式などの多数の要素で構成されています。 これらすべてはごく一般的なコード共有のユースケースに対応しており、Kotlin 1.9.20 では安定しています。 「安定版」とは、このような要素を厳格な互換性ルールに従って進化させることを意味しています。そのため、ユーザーはこのような要素をコードで安心して使用することができます。
KMP には基本要素だけでなく、現在も開発が続けられているさらに高度な要素もあります。 このような機能の例には expect/actual クラスが挙げられます(Kotlin 1.9.20 で完全に安定した expect/actual 関数とは異なります)。 このような機能は明示的に非安定扱いとなっており、使用しようとすると Kotlin がその旨を通知します。 プロジェクトでこういった機能を使用するかどうかを十分な情報を元に判断するため、実験的機能の警告と対応するドキュメントに注意するようにしてください。
ビルドセットアップのユーザーエクスペリエンスの向上
プロジェクトのセットアップと保守を単純化するため、デフォルトの階層テンプレートを導入しました。 Kotlin Gradle プラグインのこの新機能によって Kotlin ソースセットを一般的なシナリオ向けに自動的に構成し、典型的なビルドスクリプトに含まれるボイラープレートの量を減らすことができます。
ビルドの構成ミスとエラーを診断できるよう、KMP の安定版では以下の改善を行っています。
- およそ 50 個の診断機能が Kotlin Gradle プラグインに追加され、一般的なビルドの問題を検出し、修正方法についての簡単なヒントが提供されるようになりました。
- Xcode における Gradle エラーの出力の改善により、プロジェクトのネイティブ部分にあるビルドの問題が検出しやすくなりました。
ビルドと実行時のパフォーマンス改善
安定性と堅牢性に関する他の改善点に加えて、以下のような KMP のパフォーマンス改善にも引き続き取り組んでいます。
- Gradle 構成キャッシュのサポートによって構成フェーズの結果を後続のビルドで再利用することで、ビルドプロセスの速度を向上させています。
- Kotlin/Native のカスタムメモリアロケーターのプレビューによって Kotlin/Native メモリマネージャーの実行時パフォーマンスを改善しています。
- 新しい実験的な `klib` アーティファクトのインクリメンタルコンパイルによって Kotlin/Native コンパイルの速度を向上させています。
- Kotlin/Native コンパイラーのキャッシュ管理を Kotlin Gradle プラグインからコンパイラーに移動することにより、コンパイル時間とコンパイラーキャッシュの柔軟性をさらに改善できるようにしています。
これらすべての進歩のおかげで、どんなに保守的な使用シナリオであっても、Android、iOS、デスクトップ(JVM)、サーバーサイド(JVM)、ウェブにわたる本番環境でのコードの共有に Kotlin Multiplatform をためらうことなく使用できます。
成長を続ける Kotlin Multiplatform エコシステムの力を使用する
Kotlin Multiplatform の進化はテクノロジーそのものに限らず、世界中の数千もの Kotlin 開発者が開拓するエコシステムの繁栄にも及んでいます。 ベータ版以降、KMP ライブラリの数は倍増しており、ネットワーキング、データストレージ、算術、解析など、迅速かつ確実なアプリ開発を可能にする多様なツールが提供されています。
Google の Android チームは KMP ユーザーを引き続きサポートしており、実験的な Jetpack ライブラリのマルチプラットフォームバージョンを提供しています。また、Collections、DataStore、Annotations、Paging ライブラリはすでに Kotlin Multiplatform に対応済みです。
KMP エコシステムは iOS 開発者エクスペリエンス向けのツールも広範に提供しており、中でも Touchlab の SKIE は注目に値します。 このツールは重要な Kotlin の型をブリッジする Swift 対応の API レイヤーを提供する Swift コードを生成し、シームレスなコルーチンの相互運用性を実現します。
Compose Multiplatform でさらに自由になったコード共有
Compose Multiplatform は JetBrains の最新の宣言型クロスプラットフォーム UI フレームワークであり、拡大し続ける KMP エコシステムの重要な構成要素です。 Compose Multiplatform を使うと、コード共有の柔軟性を最大限に活かすことができます。 プロジェクトとチームの要件に応じて、1 つのロジックだけを共有することも、アプリケーションロジック全体を共有することも、ロジックと UI の両方を共有することも可能です。
Android とデスクトップ(JVM)用の Compose Multiplatform はすでに安定版となっていますが、iOS のサポートは現在アルファ版であり、ウェブ(Wasm)のサポートは実験的です。
Kotlin Multiplatform の今後の展望
JetBrains は Kotlin によるマルチプラットフォーム開発の強化を続けており、このプラットフォームを複数のプラットフォーム間でコードを共有するための究極の選択肢にすることを目指しています。
- 将来的に基本的な Kotlin Multiplatform テクノロジーをアップデートすることで、Kotlin と Swift 間の直接的な相互運用性や SwiftPM のサポートなどを含め、iOS 開発者のエクスペリエンスを改善する予定です。
- iOS に関する Compose Multiplatform の次のマイルストーンは、2024 年にベータサポートを提供することです。
- JetBrains は KMP によるモダンなウェブ開発を容易にするために Kotlin/Wasm を活発に開発しており、ウェブ(Wasm)向けに Compose Multiplatform のアルファ版を来年リリースすることを目指しています。
しかも、それだけではありません。 今後数週間以内には Kotlin Multiplatform ツールの進化に関する発表が行われる予定です!
Kotlin Multiplatform を利用開始
豊富で分かりやすい教材を活用して Kotlin Multiplatform を使い始めましょう。
Kotlin Multiplatform ウェビナーの 11 月シリーズにご参加いただくと、JetBrains のエキスパートから直接インサイトを得られます! Kotlin Multiplatform 機能を詳しく見ながら、ネイティブおよび共有 UI を使って KMP アプリをビルドし、iOS 開発でのヒントとコツをご覧いただけます。
新しい Kotlin Multiplatform 開発ポータルには、Kotlin Multiplatform と Compose Multiplatform を使ったアプリのビルドに関わるあらゆる側面を取り上げた詳細なドキュメント、入門ガイド、およびステップバイステップ方式のチュートリアルが用意されています。
オリジナル(英語)ブログ投稿記事の作者: