CI/CDのためのモダンiOSビルド戦略
依存関係管理とコード署名の完全自動化ガイド
Web技術だけでは、ネイティブSDKの高度な利用や複雑なビルド設定が大きな障壁となります。
HTML, CSS, JS
見えざる壁
手動設定, 依存エラー
複雑な署名プロセス
高度なSDK, パフォーマンス
Web技術とネイティブ機能の架け橋となるフレームワーク。一度書けば、iOSやAndroidなど複数のプラットフォームで動作します。
iOSネイティブライブラリの依存関係を管理するデファクトスタンダード。膨大なライブラリ資産を活用可能にします。
cordova-plugin-cocoapod-support がCordovaとCocoaPodsを繋ぎ、ネイティブSDKの統合を自動化します。 
Web App
Cordova
Native Container
Plugin
CocoaPods Libs
開発を始める前に、これらのツールのバージョン互換性を確認することが不可欠です。
Node.js
Ruby
Xcode
CocoaPods
ios-deploy
再利用するなら plugin.xml に、プロジェクト固有の依存は config.xml に記述します。 
再利用可能なプラグイン用
<plugin ...>
  ...
  <platform name="ios">
    <!-- このプラグインが依存するPodを宣言 -->
    <pod name="AFNetworking" spec="~> 3.0" />
  </platform>
</plugin>プロジェクト固有・バージョン固定用
<widget ...>
  ...
  <platform name="ios">
    <!-- 競合解決やバージョン固定のために宣言 -->
    <pod name="Alamofire" version="5.4.0" />
  </platform>
</widget>build.json を使えば、コマンドラインからビルドする際に必要な署名情報をCLIに提供し、完全な自動化を実現します。
Xcodeを開き、証明書やプロファイルを手で設定。CI/CDの妨げとなり、エラーの温床に。
cordova build --buildConfig コマンド一発で完了。高速かつ誰が実行しても同じ結果に。
build.json の構成要素3つの重要な情報(codeSignIdentity, developmentTeam, provisioningProfile)を特定し、ファイルに記述します。 
| キー | 説明 | 値の取得方法 | 
|---|---|---|
| codeSignIdentity | 署名証明書の名前 | security find-identity ...コマンドで確認 | 
| developmentTeam | 10桁のチームID | Apple Developerポータルで確認 | 
| provisioningProfile | プロファイルの36桁UUID | .mobileprovisionファイルをテキストエディタで開いて確認 | 
platforms をコミットすべきか?CocoaPodsを多用するプロジェクトでは、ビルドの再現性のためにコミットが強く推奨されます。
platforms/pod installが環境毎に実行され、依存バージョンがズレる危険性。ビルド失敗の原因となります。 
platforms/Podfile.lockがバージョン管理され、チーム全員でビルドの一貫性と再現性を保証します。
Podのバージョン競合が発生した際の、体系的な解決ステップ。
config.xmlで上書き: プロジェクト全体でバージョンを明示的に固定する、最も効果的な解決策。 platforms, node_modules 等を削除し、再構築する。plugin.xmlを直接修正する最終手段。本戦略で、信頼性が高く、誰が実行しても同じ結果になるビルドパイプラインを構築できます。
$ cordova build ios --release --device --buildConfig=build.json宣言的 (Declarative)
再現性 (Reproducible)
自動化 (Automated)
Build, Automate, and Innovate.