🖐️

KMPを学ぶ!JetBrains IntelliJ Fleetで環境構築からiOS・Androidシミュレータ実行まで

2024/11/19に公開

はじめに

今年、Kotlin MultiPlatform(KMP)はクロスプラットフォーム開発の分野で注目を集めています
私もこの技術を学ぶために、JetBrainsIntelliJ Fleet を使って開発環境を整え、iOS と Android のシミュレータでアプリを実行することに挑戦しました。

しかし、その過程ではいくつかのつまづきポイントに遭遇しました。
この記事では、それらのポイントと解決策を共有し、これから同じ環境を構築しようとしている方のお役に立てばと思います。
こちらの方が書かれている記事とあらかた被るんですが、一部ツールの使用など便利な部分があったので共有できればと思ってます!

実行環境は以下です。

mac OS 15.1
Android Studio Ladybug | 2024.2.1 Patch 2
XCode 16.0
Fleet version: build 1.42.88

Kotlin マルチプラットフォーム(KMP)とは

Kotlin MultiPlatform は、1 つのコードベースから複数のプラットフォーム向けのアプリケーションを構築できる Kotlin の機能です。
以下の特徴があります。

  • コード共有:ビジネスロジックやデータ処理などのコードを複数のプラットフォーム間で再利用できます。
  • ネイティブ環境へのアクセス:iOS では Swift、Android では Kotlin/Java のネイティブコードと統合可能。
  • オープンソースで柔軟:JetBrainsによって開発され、自由に拡張可能です。

IntelliJ フリートを選んだ理由

Android Studio 一択かと思ってましたが、KMP の公式ドキュメントに全部目を通していた時にRecommended IDEs and code editors を見たからです。

このページを見ているので、手順はこちらに従いながらやってます。

Reddit を見ると、

使用感は1年前の時点で、まあまあ
JetBrains が VSCode の代替にしたいんだとか、
それでお金取られるんだとFleet使う意味がないだとか色々と話されてる

結論、まだパプリックプレビューなので今後どうなるのかよくわからんです

環境構築手順

Get started with Fleet

  • とりあえずこれに従って進めていきました
  • Kotlin Multiplatform Wizard で画像と同様な構成を設定して DownLoad
  • Enable Smart Mode を有効
  • ドキュメントだとこの後にプロジェクトを実行するになっていますが自分はここでつまづきました

つまづき

⚠️スクショ撮ればよかったんだけど忘れたので文章だけです

  • Fleet で Download した KMP プロジェクトを開いてみるとこんな感じで、Java, Android Studio と XCode が正しくインストールされているかどうかチェックする処理が走りました
  • Flutter の環境構築をやったことある人は flutter doctor コマンドを実行した時に似てますね
  • 自分の場合は、ここで Xcode のバージョンが古いぞ!16.0 をインストールせえや!と警告受けたので Xcode を落とすために xcodes を brew install して
  • さあ Xcode16.0 をインストールしようとすると、Mac OS のバージョンが古いから無理だぞ!と言われたので
  • Mac OS をアップデートして Xcode 16.0 をインストールできたので Fleet を起動すると
  • 今度はコマンドラインツールがインストールされてないぞと怒られたのでインストールしました
  • これでいけるだろ!と再度検査処理をかけると
  • 今度は iOS 18 のシミュレータがないぞ!的なエラーを吐かれたのでインストールした Xcode を開いて Devices and Simulators をクリックして↓
  • Simulators タブの一番左下にあるプラスボタンから適当な端末を選んで iOS 18.0 をインストールしました
  • インストール方法はいくらでもブログあるので参照してください、例えばこれとか
  • これで完全に全てオールOK になってめでたしめでたしでした、やったね

というわけで

  • 紆余曲折ありましたが、無事に KMP で初シミュレータ実行までいけました

  • Work with multiplatform code これやります
  • その後、Github API を使ってリポジトリ取得して、DB 使って永続化処理してみます
  • どのくらいコード共有できるのか、結構楽しみ

Discussion