ReactNativeでアプリ書く前にやっておくといいこと iOS編 その1
iOS開発で必要なもの
正規開発者証明書
プロビジョニングファイル
(通知証明書)
これらは手動で進めることも可能だし、該当ファイルを複数開発者間で手動で共有すれば、一応複数人でも開発可能だが、あまりにも面倒かつオペミスが多いので、はじめからfastlaneの使用していくことを強く勧める。(特にmatch)
# match
iOSアプリ開発に必要な証明書とプロビジョニングプロファイルをGitHubのリポジトリで一括管理することができるfastlaneのaction。複数人での開発ですごく有用なイメージが湧くと思うが、大きな理由がなければ一人でも使用したほうがいいと思う。
とりあえず使っていく。
1. bundler経由でfastlaneを入れる
2. プライベートリポジトリを作成する
3. チームで共有して使うApple Developerのアカウントを作成する
このとき権限はAdminで
チームで共有できるアドレスを作って指定するのがおすすめ
分かる通りメンバーごとに作る必要がないので、個人のは消してもいい
4. match init
fastlaneをまだ使用していなければ、fastlane initでfastlaneディレクトリを作っておく
先程作ったプライベートリポジトリのURLを求められるので、git@github.com:org/repo.git のかたちで記載
5. match development -a dev用のbundleidentifier
opensslを利用して暗号化されるがそのためのパスフレーズの入力を求められる。重要なのでわすれないように。
環境ごとにbundleidentifierを分ける人も多いので、その場合指定する
このコマンドは初回か更新する際しか打たない。なぜなら、二回目以降はすでにリポジトリにある証明書をreadonlyオプションを付けて取得するだけでいいから。
これでOK。
ここからFastfileで自前のレーンを定義することでより自動化を進めていく。
たとえばdeploygateにAdhoc版を一発でアップロードするレーンであれば、
(ちなみに環境ごとのビルドの分け方はまた書くけどBuildSchemeを切り替えることで実現している)
code:Fastfile
default_platform(:ios)
platform :ios do
desc 'Fetch certificates and provisioning profiles'
lane :beta_certificates do
sync_code_signing( // 'match'は'sync_code_signing'のエイリアス, matchでもいい
app_identifier: "com.hoge.qa",
type: "adhoc",
readonly: true,
force: false
)
end
lane :beta_release do
beta_certificates
build_app( // 'gym'というactionのエイリアス。その名のとおりです
scheme: "hoge_adhoc",
clean: true
)
deploygate( // deploygateやtestflightにアップロードできるactionが用意されている
user: 'hoge'
)
end
end
で、bundle exec fastlane ios beta_release --env staging などで誰でもあげられるようになった。(新しいマシンで初めてmatchを実行するときには、先程指定したGitリポジトリのパスフレーズを聞いてくるので、それだけ共有が必要)
laneでは、readonlyフラグを付けて勝手にリポジトリ内の証明書が更新されないようにしておいて、指定の管理者のみ更新作業をするようにしておくとよい。
これはBitriseなどのCIでももちろん手直しすれば使える。が、まずは手元のワンコマンドで良くなっただけでも十分効果がある。