Mac なしで行う Flutter の iOS 開発
Flutter は Windows と Linux で動作しますが、iOS アプリのビルドとリリースには依然として macOS 上の Xcode が必要です。ここでは、Mac を購入することなく、リモート Mac で iOS 側をカバーする方法をご紹介します。
- 物理Macを1:1で専有
- SSH・VNCでフルroot権限
- $14/日または月額$85から、USD・税抜
Flutter は真にクロスプラットフォームであり、Android 向けの開発は Windows や Linux だけで完結できます。例外は iOS です。flutter build ios、CocoaPods、コード署名、App Store へのアップロードは、いずれも macOS 専用の Xcode を必要とします。リモート Mac があれば、自分のマシンでコーディングを続けながら、その環境を必要なときに利用できます。
iOS ビルドの選択肢
Windows や Linux で開発する場合に、署名済みの Flutter iOS ビルドを作成する 3 つの現実的な方法。
リモート Mac をレンタルする
自分で操作できる完全な macOS+Xcode。Mac 上の iOS シミュレータに対して flutter run を実行し、そのままそこでビルドと署名を行います。デバッグや実機テストに最適です。
クラウド CI(Codemagic、Bitrise、GitHub Actions)
Codemagic は自動リリースビルドにおいて Flutter との相性が良いですが、反復的なデバッグや単発の署名には扱いにくい面があります。
Mac を購入する
常に選択肢ではありますが、初期費用に加えてメンテナンスも必要です。作業のうち iOS の部分だけに macOS が必要なのであれば、過剰です。
署名済み iOS ビルド1回のためだけに macOS が必要ですか?専用 Mac mini を24時間 $14/日から(USD・税抜)レンタルできます。初期設定では24時間で停止します。 Mac mini 1日レンタル →
Mac なしで Flutter の iOS アプリをビルドする
リモート Mac を使えば、Flutter の iOS ワークフローはローカルの Mac とまったく同じです。接続するだけで済みます。
-
リモート Mac に接続する
Mac をプロビジョニングし、VNC(GUI)または SSH(ターミナル)で接続します。Xcode と Command Line Tools はプリインストール済みです。
-
Flutter と CocoaPods をインストールする
Flutter SDK をインストールし、
flutter doctorを実行します。sudo gem install cocoapodsで CocoaPods をインストールし、続いてcd ios && pod installを実行します。 -
iOS シミュレータで実行する
flutter runを実行すると、Mac 上の iOS シミュレータでアプリが起動します。VNC 経由で操作でき、ホットリロードもいつもとまったく同じように動作します。 -
ビルド・署名・アップロード
flutter build ipaを実行し、Apple Developer 証明書で署名して、Xcode、Transporter、または Fastlane でアップロードします。App Store 公開ガイドをご覧ください。
Flutter にリモート Mac を選ぶ理由
- 本物の Xcode と CocoaPods、Flutter が iOS に必要とするツールチェーンそのもの。回避策は不要です。
- Linux や Windows でコーディングを継続、Mac 上で実行するのは iOS のビルドと署名だけです。
- 専用の Apple Silicon、M4 ハードウェアで
flutter build ipaが高速に、シミュレータも軽快に動作します。 - 設備投資は不要、iOS の部分だけのために Mac を購入する代わりに、月額 $85(USD・税抜)から。
さらに詳しく
よくある質問
Mac なしで Flutter の iOS アプリをビルドできますか?
それでも Apple Developer アカウントは必要ですか?
Flutter のホットリロードはリモート Mac で動作しますか?
実機の iPhone でテストできますか?
Flutter アプリを iOS にリリースする
Xcode がプリインストールされた専用リモート Mac を入手し、今日から Flutter の iOS アプリをビルドしましょう。$14/日または月額$85から(USD・税抜)。