Releases

Kotlin Multiplatform Mobile がアルファ段階に移行

Read this post in other languages:

Kotlin Multiplatform Mobile(KMM)は、iOS と Android 両方のアプリケーションで同じビジネスロジックを使用できるようにする SDK (ソフトウェア開発キット)です。 先日、KMM がアルファ段階に移行しました。今すぐアルファ版を使用し、モバイルアプリのビジネスロジックを共有し始めることができます。 アルファ版には同じ IDE 内で共有コードを記述、実行、テスト、デバッグできる新しい Android Studio 用の KMM プラグインが含まれています。 VMWare、Autodesk、Yandex などの素晴らしいチームと同様に、Kotlin を使用してモバイルアプリのコードを共有してください。 モバイルプラットフォーム間でのコードの再利用がとても簡単になりました!

ファイル

Kotlin Multiplatform Mobile とは

Kotlin Multiplatform MobileKMM)は、JetBrains が提供するクロスプラットフォーム対応のモバイル開発用SDKです。 この SDK は Kotlin のマルチプラットフォーム対応能力を駆使し、全体的なクロスプラットフォーム対応モバイルアプリケーションの構築体験を可能な限り楽しく効率的にするように設計されたさまざまなツールや機能を含んでいます。

アプリケーションの Android 版と iOS 版には一般的に多くの共通点がありますが、スクロール動作の微妙な違いから完全に異なるナビゲーションロジックまで、UI の面で大幅に異なる場合もあります。 また、データ管理、分析、認証などの機能を含むアプリケーションのビジネスロジックも多くの場合は全く同じです。 このため、プラットフォーム間でアプリケーションの一部を共有し、その他の部分を完全に分離することは自然なことです。

KMM を使用すると、このような柔軟性を確保しつつネイティブプログラミングのメリットを維持できます。 iOS および Android アプリのビジネスロジックに単一のコードベースを使用し、ネイティブな UI を実装するのに必要な箇所にのみ、またはプラットフォーム固有の API を処理する場合にのみプラットフォーム固有のコードを記述できます。

ファイル

KMM はモバイルプロジェクトにシームレスに組み込まれます。 Kotlin で記述された共有コードは Kotlin/JVM で JVM バイトコードに、Kotlin/Native でネイティブなバイナリにコンパイルされるため、KMM のビジネスロジックモジュールを他の通常のモバイルライブラリと同様に使用することができます。

Kotlin のコードを複数のモバイルプラットフォーム間で共有することで、すでに多くの企業が多くの時間と労力を削減しています。 いくつかの体験談をご紹介します。

  • Quizlet 社はビジネスロジックを JavaScript を共有する手法から KMM に移行することで、Android および iOS アプリケーション両方のパフォーマンスを劇的に向上させました。
  • Fastwork 社は KMM をアプリケーションのドメインとデータレイヤーに導入し、複数モバイルプラットフォーム間でビジネスロジックと API サービスを共有することでチームの生産性を大幅に向上させました。
  • Yandex.Disk は小規模な機能の統合から実験に着手し、実験が成功した後にデータ同期ロジック全体を KMM で実装しました。

これらの事例やその他多くのチームが達成した素晴らしい結果は、私たちにとって大きな励みとなっています。また、皆さんがこれらの体験談に刺激を受けて KMM を使用したモバイルプラットフォーム間のコード共有に着手することを期待しています。

KMM を使用したモバイルアプリの制作

KMM はモバイル開発業界ではまだ極めて新しい存在ですが、私たちは大きな変化をもたらす存在であると信じています。 このため、私たちは KMM を推進し、Kotlin を使用した最高のクロスプラットフォーム対応モバイルアプリケーション制作体験を開発者に提供するための独立したチームを Kotlin 内で割り当てました。

この目標に向けた最初のステップとして、Android Studio (バージョン4.1 RC1以降推奨)用の KMM プラグイン と共に新しい KMM 開発者ポータルの初回プレビューを本日から提供しています。

今すぐ KMM を体験してください!

使い慣れた環境で作業可能

新しい KMM プラグインを使用すると、他の IDE に切り替えることなく Android Studio 内で共有コードを記述、実行、デバッグできます。 このプラグインをインストールするには Preferences | Plugins を選択し、MarketplaceKotlin Multiplatform Mobile を検索してから Install ボタンをクリックしてください。

数クリックで新規アプリケーションを構成可能

New Kotlin Multiplatform Mobile Project ウィザードを使用すると、すぐに実行可能な共有コードベースを使ったモバイルアプリケーションプロジェクトをわずか数クリックで作成できます。 両方のプラットフォームでの動作を確認するには、必要な実行構成を選択して Run ボタンをクリックするだけです。

ファイル

生成されるプロジェクトには、プラットフォーム固有の API への接続方法と基本的なテストカバレッジの例が含まれます。 このウィザードは KMM の基本機能を調べるのに使用したり、新しい KMM 本番アプリケーション用のスキャフォールディングツールとして使用したりできます。

このプラグインをインストールし、ウィザードを使用して最初のマルチプラットフォーム対応アプリケーションを制作するには、こちらのチュートリアルに従ってください。

ワンステップで KMM を既存プロジェクトに導入可能

作業中のプロジェクトですぐに KMM を使用し始めることもできます。共有された Kotlin コードは、他の通常の依存関係と同様に既存コードに簡単に組み込むことができます。 New Kotlin Multiplatform Mobile Module ウィザードを使用すると新しい KMM モジュールを作業中のプロジェクトに追加できるため、Kotlin で記述済みのコードを使用し、それをリファクタリングすることで iOS との互換性を持たせることができます。

マルチプラットフォームプロジェクトのアーキテクチャを設計し、移行を計画する方法については、既存プロジェクトへの KMM 実装ガイドを参照してください。

一つの IDE で両方のプラットフォームに対応

両方のモバイルプラットフォームでコードの正常動作を確認するために複数の IDE を切り替えて Xcode を実行する必要はありません。 新しいプラグインを使用すると、iOS デバイスとシミュレーターを Android Studio に直接組み込むことができます。 このため、次の機能を利用できます。

  • 定義済みの実行構成を使用してシミュレーターやデバイス上で iOS アプリケーションを実行およびデバッグできます。
  • テスト対象のクラスやメソッドでガターアイコンをクリックするだけで、iOS シミュレーター上で共通テストや iOS 固有部分のテストを実行およびデバッグできます。

アプリケーションとテストの両方でブレークポイントを設定し、iOS 上でコードをデバッグできます。

オーバーヘッドなしで iOS エコシステムと統合可能

前述のように、KMM はモバイルプロジェクトにシームレスに組み込まれます。 Android の場合はプロジェクトのすべての部分に Kotlin を使用できます。 それと同時に、Kotlin/Native には Objective-C/Swift との相互運用性があり、CocoaPods 依存関係マネージャーが統合され、expect/actual パターンと共にプラットフォーム固有 API を使用できるため、KMM は iOS の開発プロセスを緊密に統合します。

Kotlin/Native を使用して Swift コードから Kotlin を処理可能

Kotlin/Native は Objective-C/Swift との双方向の相互運用性を実現します。 Kotlin モジュールは全面的に Swift/Objective-C で使用できます。 Objective-C のフレームワークとライブラリを Kotlin コード内で使用できるほか、Swift のライブラリを @objc で API が Objective-C にエクスポートされている場合に使用できます。

詳細は、Kotlin/Native と Swift/Objective-C の相互運用性を参照してください。

iOS の依存関係を簡単に管理可能

Kotlin/Native は CocoaPods 依存関係マネージャーと統合可能です。 CocoaPods リポジトリまたはローカルに保管された Pod ライブラリの依存関係を追加したり、ネイティブターゲットを含むマルチプラットフォームプロジェクトを CocoaPods の依存関係(Kotlin Pod)として使用したりできます。 Android Studio で直接 Pod の依存関係を管理し、ハイライトや補完を含むフル機能のコーディング支援を使用できます。

一般的な KMM ライブラリの構成を以下に示します。

以下のようにライブラリの名前とパスを Podfile に追加し、ライブラリを Kotlin Pod として iOS プロジェクトに追加します。

詳細は、CocoaPods の統合を参照してください。

新しい Developer Portal でより優れたマルチプラットフォーム対応モバイルアプリを作成する方法を知るには

新しい KMM Developer Portal は KMM を初めて使用する場合や本番環境で使用する場合まで、より快適かつ生産的に作業を行えるようにすることを目的としています。

KMM を使用する際にはドキュメントセクションが確実に役に立ちます。 入門用のチュートリアルからより高度な開発トピックまで、あらゆるレベルの専門知識に対応したコンテンツが見つかります。 ネットワークおよびデータストレージレイヤーの構成や KMM 関連の開発プロセスの構成など、一般的なタスクに関する有益な情報が掲載されています。

アプリケーションで KMM を使用するメリットについて他の意見も聞いてみたいですか? ケーススタディセクションでは、すでに自社製品に KMM を使用しているさまざまなチームの実体験を知ることができます。

コミュニティの力

Kevin Galligan 氏、Alec Strong 氏、Arkadii Ivanov 氏、Ben Asher 氏、John O’Reilly 氏、Louis CAD 氏、Kris Wong 氏、Aleksey Mikhailov 氏その他大勢の優秀なエンジニアの皆様を含め、今回のリリースに不可欠な時間や情報、専門知識をご提供いただいた企業や個人開発者に感謝いたします。 YouTrack で問題を報告し、製品調査やインタビューに参加し、KMM を使用した体験談を共有し、素晴らしいマルチプラットフォーム対応ライブラリを作成していただき、ありがとうございます!

新しい Developer Portal のコンテンツ制作を支援いただいた TouchlabIceRockKodein Koders の皆様にも感謝いたします。 皆様の成果は、数多くの開発者が Kotlin Multiplatform Mobile の知識をさらに深め、その能力をフルに活かすのに役立ちます。

皆様のご協力に心より感謝申し上げます!

今すぐお試しください!

これらすべての高度な機能を備えた KMM がアルファ段階に移行しました。 これは、Kotlin チームがこのテクノロジーの改善と発展に全力を尽くしていることを意味します。 また、同製品がすぐに開発されることを伝えるものでもあります。 私たちは皆様からのフィードバックに耳を傾け、早急に修正や機能改善を提供する予定です。 皆様が発見した問題をトラッカーに報告し、KMM の安定性向上にご協力をお願いします。

アルファ段階に移行したことで、KMM を使用してモバイルプラットフォーム間でビジネスロジックのコードを共有する準備がすべて整いました。 新しいプロジェクトを作成したり、KMM モジュールを簡単に既存プロジェクトに組み込んだりできます。 どちらのシナリオも最小限のコストで実行可能で、いつでも完全にネイティブな開発に戻ることができます。 関連コミュニティは急速に成長しており、コミュニティに参加することでエコシステム全体の開発に影響を与えることができます。

今こそ KMM を使い始める絶好の機会です!

KMM の知識を深める最高の機会を獲得し、調査を予定しているすべての機能について議論するには、Slack でマルチプラットフォームのエンスージアストが集うコミュニティに参加し(こちらで招待を受けてください)、Stack Overflow で “kotlin-multiplatform” のタグを購読してください。

私たちは最善を尽くしていますが、現段階ではスムーズな移行を保証することはできません。 ただし、機能フラグを使用して新バージョン向けの移行ガイドを提供することで、可能な限り互換性の問題を回避するよう努めます。

ご意見をお寄せください

このリリースは始まりに過ぎませんが、これから先は皆様の協力が必要になります。 良いものも悪いものも含め、皆様からのフィードバックを募集しています。 Kotlin Multiplatform Mobile の使用体験談を共有し、他の人に刺激を与えてください。また、KMM の改善方法に関するアイデアをご提供ください。

Let’s Kotlin!

image description

Discover more