Kotlin 2.4.10 iOSビルド:2026年のリモートMac CIをどう導入するか

WindowsまたはLinuxを主な開発環境として使いながら、Kotlin MultiplatformのiOS成果物だけを実Macへ渡す構成を解説します。Framework生成、Xcodeテスト、署名済みArchive、キャッシュ分離、再起動後の復旧を、各段階の入力と合格条件で確認できます。

Kotlin 2.4.10 iOSビルド:2026年のリモートMac CIをどう導入するか

目次

Kotlin公式のリリース情報では、この記事の対象である Kotlin 2.4.10 は2026年7月14日公開の安定版として扱われています。公式リリース一覧を基準にするなら、今週はWindowsまたはLinuxで共有コードを開発し、iOS Framework、シミュレーター検証、Xcodeテスト、Archiveだけを、Xcodeを完全に導入した実Macへ送る構成を組むべきです。

この方法なら、主力環境を買い替えずに済みます。ただし、遠隔のMacを単なるデスクトップ代替品として扱うのではなく、Apple向け成果物を検証する独立CIノードとして設計することが重要です。

対象読者と役割分担

WindowsまたはLinuxを主力にして、Kotlin MultiplatformでiOSアプリを納品する開発者向けです。
Kotlin/NativeとXcodeをCIへ接続したいモバイルDevOps担当者、共有Macの認証情報やキャッシュを管理するプラットフォーム責任者にも適しています。

共有コードの編集、Gradleによる静的検査、一般的なユニットテストは主力環境に残せます。一方、Apple SDKを使うFramework統合、シミュレーターの起動、Xcodeテスト、署名、ArchiveはmacOS側へ分離してください。Kotlin公式のマルチプラットフォームプロジェクト構成でも、共通コードとプラットフォーム固有コードを分けて管理する考え方が示されています。

最初に固定する成果物流

全く新しい作業ディレクトリへクローンし、Apple向けビルド段階まで進めることを境界テストにします。既存のDerived Dataや開発者個人の設定がないと進めないなら、CIノードとしては未完成です。

Kotlin/Native Frameworkの生成設計

iOSターゲットと成果物

iosArm64は実機向け、iosSimulatorArm64はApple Silicon上のシミュレーター向けとして扱います。Kotlin公式のネイティブターゲット対応表を確認し、単一ターゲットの成功だけで納品可能と判断しないでください。

確認対象 主な用途 合格条件
iosArm64 iPhoneなどの実機用Framework 実機向け構成で生成され、Xcodeから読み込める
iosSimulatorArm64 Apple Silicon Mac上のシミュレーター シミュレーター起動後にモジュールをロードできる
XCFramework 複数のApple向けバイナリを配布 対象アーキテクチャを含み、別の作業ディレクトリでも再利用できる

FrameworkをXcodeプロジェクトへ直接組み込む構成は、単一アプリで変更をすぐ反映したい場合に向いています。独立Frameworkは複数アプリで共有しやすく、XCFrameworkは社内配布やバイナリ依存に向きます。生成タスクの詳細はKotlin公式のネイティブバイナリ生成手順に合わせてください。

Xcode統合とCI接続

直接統合、CocoaPods、バイナリ依存

リポジトリ内でGradleとXcodeプロジェクトを一緒に管理するなら、直接統合によって共有コードの変更を同じジョブで反映できます。CocoaPodsを採用している場合はPodspec、依存解決、生成タスクの実行順を固定し、バイナリ依存ではXCFrameworkの取得元とバージョンを明示します。

Kotlin公式のiOS統合方式の比較を参照し、チームのリポジトリ構造に合わせて選んでください。SPMを使う場合も、Swift Packageとしてのエクスポート方法を確認し、開発者のホームディレクトリを参照する設定をCIへ持ち込まないことが大切です。

次の関係をリポジトリ内で確認します。

注意:手元で一度ビルドできても、ユーザー固有のパス、キーチェーン状態、未コミットの設定ファイルが残っていれば再現性はありません。全新規クローンから同じ成果物を作れることを先に確認してください。

テストとシミュレーター検証

「Kotlin Multiplatform iOSアプリをローカルMacなしで構築できるか」という問いには、条件付きで可能と答えられます。共有コードの検査はWindowsやLinuxでも進められますが、Kotlin/NativeのiOSターゲット、シミュレーター、Xcodeテスト、署名済みArchiveはMacノードが必要です。

テストは一つの巨大なジョブにまとめず、責任範囲で分割します。

シミュレーターは、SSHセッションだけで常に対話的デバッグできるとは限りません。CIでは画面を見ることより、テストログとxcresultを保存し、失敗したテストを後から再現できることを優先します。AppleのXcodeでビルドと実行を行うための公式資料に沿って、Schemeと実行先を明示してください。

Archiveと署名の段階設計

CIへ組み込む手順

以下の順序で、入力、成果物、停止条件を別々に記録します。

署名アカウントは日常開発用とCI用に分離します。証明書やプロビジョニングプロファイルをリポジトリへ保存せず、秘密鍵を通常のビルドログへ出力しないでください。Appleの配布用ワークフロー資料登録済みデバイス向け配布資料を使い、Export方法と対象を先に固定します。

最終的な合格条件は、開発者のクリックなしでArchiveと成果物検査が完了し、失敗時に公開処理へ進まず、同じコミットから安全に再実行できることです。

キャッシュ、共有資源、復旧

Kotlin iOSビルドのキャッシュは一種類ではありません。Gradle依存関係、Kotlin/Native関連キャッシュ、XcodeのDerived Data、CocoaPodsやSwift Packageの依存キャッシュを分けて扱います。保存する前に、ログでヒットしたキャッシュと再生成されたファイルを確認してください。

共有Macでは、ジョブごとに作業ディレクトリ、Derived Data、シミュレーター、署名リソースを分離します。GitHub Actionsを使う場合は、セルフホストRunnerのラベル設定でiOS専用ノードへジョブをルーティングし、一般のLinux Runnerへ誤配信しないようにします。

経験上、キャッシュを残すこと自体を成功条件にしてはいけません。キャッシュを無効にした全新規ビルドが通り、キャッシュ有効時にも同じFrameworkとArchiveの検査結果になることが先です。

SSH接続が切れた場合でも、CIジョブがSSH端末の寿命に依存してはいけません。さらに、主力環境から次の復旧試験を実施します。

導入判断用の比較表

運用方式 Windows/Linux側の担当 Mac側の担当 向いている条件 評価
主力環境だけ 共有コードと通常の検査 なし iOS成果物をまだ作らない
必要時だけMacを使う 開発とCI起動 Framework、テスト、Archive リリース頻度が低く、まず検証したい
専用の遠隔Mac CI 開発、ジョブ管理、成果物確認 Apple向け全工程 継続的なビルドと再実行が必要 最高
Mac miniを自社運用 開発と設備管理 Apple向け全工程 物理接続や長期固定負荷が必須 条件付き

費用は単純なCPU性能ではなく、稼働時間、保守担当者の作業、故障時の切り替え、署名資源の管理まで含めて比較します。短期の検証ならレンタル、長期間にわたり高頻度で固定負荷をかけるなら自社Mac、物理デバイス接続が必要なら手元設備という切り分けが現実的です。

段階 入力 生成物 停止条件
依存解決 ロックファイル、PodまたはSPM設定 依存キャッシュ、解決ログ 差分や未固定依存がある
Framework Gradle設定、共有コード FrameworkまたはXCFramework 対象アーキテクチャ不足
Xcodeテスト Scheme、テスト設定 xcresult、ログ モジュール読み込み失敗
Archive Release設定、署名資源 .xcarchive 署名またはBundle検査失敗
Export Archive、配布設定 配布用アプリ 識別子、署名、埋め込み内容の不一致

今週の導入チェック

検証項目 実施内容 合格の証拠
新規クローン 既存キャッシュなしで取得 Apple向けタスクまで完走
XCFramework 実機用とシミュレーター用を生成 生成ログとアーキテクチャ一覧
Xcode CI SchemeをCLIから実行 xcresultと終了コード
署名Archive 秘密情報をログへ出さずに作成 ArchiveとExport検査結果
復旧 SSH切断、再起動、再配分を実施 同一コミットの再実行記録

今週は、まず独立した遠隔Macへ新規クローンを作り、共有コードの変更が新しいFrameworkとしてiOS側へ届くところまで確認してください。その後にXcodeテスト、署名、Archiveを追加し、最後に再起動復旧を行います。各段階で証拠が残らない場合は、次の段階へ進まず設定を戻すのが安全です。

WindowsやLinuxだけで完結する構成は、共有コード開発には合理的ですが、Apple SDK、シミュレーター、Xcode署名、Archiveを外部サービスや不安定な個人Macへ分散すると、ローカルパス依存、認証情報の混在、復旧時の手作業という弱点が残ります。特にリリース直前だけMacを探す運用では、同じコミットを再現できないことが最大のリスクです。

実際にノードを選ぶ際は、Apple Silicon搭載Macの利用候補で接続方式と運用条件を確認し、CIジョブが要求するSSH接続、Runner、Xcode環境を先に照合してください。必要な期間だけ実Macを確保するなら、VPSMACの日本語向けMacレンタル案内から新規クローン、XCFramework、Xcode CI、Archive、再起動復旧を順に検証する方法が適しています。

検証が通った後に、継続利用する専用CIノードへ移行するか、自社Macを購入するかを判断すれば、不要な設備投資と未検証の署名運用を避けられます。