どうも、やっぱりRustが好きなナナオです。

前回、せっかくHackintosh化に成功したので、XCodeでなんかエミュレートしたいんですよね。

Lenovo ThinkPad X270にHackintoshでSequoiaを入れた | にあえん

ということで今回はtauriを使ってみようと思います。

プロジェクトの作成

tauriのプロジェクトの作成は公式ドキュメントに従ってやっていきましょう。

Create a Project | Tauri

とりあえずプロジェクト作成に必要なツールをダウンロードしていきましょう。

cargo install create-tauri-app --locked

tauri cliというのもインストールしておきましょう。

Command Line Interface | Tauri

cargo install tauri-cli --version "^2.0.0" --locked

これで準備ができました。

プロジェクトを作成していきます。

cargo create-tauri-app

出来上がったsrc-tauriディレクトリ内で以下のコマンドを実行します。

cargo tauri dev

とりあえずデスクトップアプリの起動には成功しました!

iPhoneでエミュレートしてみる

iOSで起動するには、同ディレクトリ内で以下のコマンドを実行する必要があります。

cargo tauri ios init

しかし残念ながらエラーが出てしまいました。。

Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
    Info package `cocoapods` present: false
Installing `cocoapods`...
Error: Cask 'cocoapods' is not installed.
`sudo` is required to install cocoapods using gem
    Error failed to install Apple dependencies: Failed to install `cocoapods`: No such file or directory (os error 2): No such file or directory (os error 2)

cocoapodsというツールがインストールされていなかったようです。

【iOS開発】 CocoaPodsとは何なのか〜導入〜使い方まで徹底解説 | Tech Beginner

iOSアプリ開発する際のライブラリ管理をするためのツールらしいです。

homebrewでインストールしておきましょう。

brew install cocoapods

インストールした後に先ほどのコマンドを実行すると成功しました。

❯ cargo tauri ios init
    Warn No code signing certificates found. You must add one and set the certificate development team ID on the `bundle > iOS > developmentTeam` config value or the `APPLE_DEVELOPMENT_TEAM` environment variable. To list the available certificates, run `tauri info`.
    Info detected rustc version 1.83.0 (90b35a623 2024-11-26)
/usr/local/bin/xcodegen
    Info package `xcodegen` present: true
/usr/local/bin/idevicesyslog
    Info package `libimobiledevice` present: true
/usr/local/bin/pod
    Info package `cocoapods` present: true
Apple dependencies are up to date
    Info "/Users/nanao/Projects/study/tauri-playground/src-tauri" relative to "/Users/nanao/Projects/study/tauri-playground/src-tauri/gen/apple" is "../../"
Generating Xcode project...
⚙️  Generating plists...
⚙️  Generating project...
⚙️  Writing project...
Created project at /Users/nanao/Projects/study/tauri-playground/src-tauri/gen/apple/tauri-playground.xcodeproj
victory: Project generated successfully!
    Make cool apps! 🌻 🐕 🎉

ではiOSでエミュレートしてみましょう。

❯ cargo tauri ios dev
/usr/local/bin/ios-deploy
    Info package `ios-deploy` present: true
    Error No available iOS Simulator detected
    Warn No code signing certificates found. You must add one and set the certificate development team ID on the `bundle > iOS > developmentTeam` config value or the `APPLE_DEVELOPMENT_TEAM` environment variable. To list the available certificates, run `tauri info`.
    Warn To develop on physical phones you need the `--host` option (not required for Simulators). See the documentation for more information: https://v2.tauri.app/develop/#development-server
    Info Opening Xcode

残念ながらエラーが出てしまいました。

XCodesからiOSのエミュレータがダウンロードされていないことが原因だったようなので、ダウンロードしておきます。

ダウンロードされていない場合、赤丸の部分が「ダウンロード」になっています

この状態で再度コマンドを実行し直してみましょう。

❯ cargo tauri ios dev 
/usr/local/bin/ios-deploy
    Info package `ios-deploy` present: true
Detected iOS simulators:
  [0] iPad (10th generation)
  [1] iPad Air 11-inch (M2)
  [2] iPad Air 13-inch (M2)
  [3] iPad Pro 11-inch (M4)
  [4] iPad Pro 13-inch (M4)
  [5] iPad mini (A17 Pro)
  [6] iPhone 16
  [7] iPhone 16 Plus
  [8] iPhone 16 Pro
  [9] iPhone 16 Pro Max
  [10] iPhone SE (3rd generation)
  Enter an index for a simulator above.
Simulator:

シミュレーションするiOSを選択する画面になりました!!

とりあえずiPhone 16を選ぶと…

エミュレータが起動した!!
アプリも起動した!!

ブログだとギュッとなっていますが、スペックの関係でかなり起動に時間がかかりました。。

感想

割と簡単に起動までできました。

とりあえず、これでアプリ作りたいですね。

参考

Tauri v2を使ったモバイルアプリ開発のハマりポイント[Apple Silicon Mac]