Upgrade to Pro — share decks privately, control downloads, hide ads and more …

開発からアプリストアまで一気に自動化!モバイルアプリのCI/CD徹底解説

 開発からアプリストアまで一気に自動化!モバイルアプリのCI/CD徹底解説

今回の「とことんDevOps勉強会」では、iOSやAndroidといったモバイルアプリのCI/CDの構築方法について紹介します。日本仮想化技術ではお客様からのご要望で、Flutterを使用したモバイルアプリのCI/CDの構築をGitHub Actionsを使って実現しました。ターゲットプラットフォームにおけるビルドやストアへの登録までをGitHub Actionsを使って実現する一連の流れを紹介します。
まだまだ情報が少ないモバイルアプリのCI/CDの実現方法を、試行錯誤しながらまとめ上げました。今回はそのノウハウを惜しげもなく公開してしまいます。皆様のご参加をこころよりお待ちしております。

とことんDevOps

September 29, 2022
Tweet

More Decks by とことんDevOps

Other Decks in Technology

Transcript

  1. 開発からアプリストアまで一気に自動化!
    モバイルアプリのCI/CD
    徹底解説
    日本仮想化技術株式会社
    VirtualTech.jp
    2022/09/28
    1

    View Slide

  2. 資料は後ほど公開します
    文字が多めです。公開資料は、読み物としてご活用ください。
    2

    View Slide

  3. ● 本名: 石本 達也
    ● 日本仮想化技術(VTJ) DevOpsエンジニア
    ○ 長崎出身→福岡→東京
    ● 2012年10月〜 OSC福岡で初めて学生として参加し、オープンソースを知る
    ● 2015年04月  新卒として商社系の SIerに入社
    ○ SAPの導入支援&アドオン開発を担当
    ● 2017年07月  ベンチャー系の人材紹介会社に入社
    ○ 大手通信会社の案件でサービス開発 PJで要件調整やマルチベンダとの折衝や調整を担当
    ○ 社内に戻りディレクション業務と RPA開発チーム立ち上げをエンジニア兼務で担当
    ● 2022年01月  日本仮想化技術に入社(8ヶ月目)
    ○ 開発環境構築を「かんたん」に、開発サイクルとリリースを「はやく」
    ○ VS Codeを軸にした仕組み作りや自動化を中心に実験と検証
    ○ 得たナレッジや気づきを弊社で開発を進めているDevOps支援サービスを反映
    自己紹介
    3

    View Slide

  4. DevOpsとは
    開発と運用が密に連携して協力しあう開発手法
    4

    View Slide

  5. もう少し詳しく知りたい人向け
    5
    https://www.slideshare.net/ToruMiyahara/devops-251879644

    View Slide

  6. DevOpsの4本柱
    • 文化
    • 仕組みを回していくうちに文化として受け
    入れて徐々に定着させていく
    • 自動化
    • 目の前の小さなが改善の積み上げよりも、
    仕組みから変えることで大きな改善に繋が
    ることも
    • メトリクス
    • ブラックボックス化したシステムを言い訳に
    せず、どんどん情報収集する仕組み作り
    • 共有
    • 自分自身で理解するよりも、他人に説明し
    て理解してもらうことの方が難しい
    • 自動化してツールとして共有することもあり
    6

    View Slide

  7. モバイルアプリ開発を始めるには
    7

    View Slide

  8. ● 開発対象のプラットフォームを決める
    ○ Apple、Android
    ● 開発手法を決める
    モバイルアプリ開発を始めるには
    開発手法 主な言語や技術 など メリット/デメリット
    ネイティブアプリ Apple:Objective-C、Swift
    Android:Java、Kotlin など
    ・パフォーマンスが高い
    ・AndroidとiOS向けに対応しようとすると両方で開発が
    必要
    クロスプラットフォームアプリ Flutter、React Native など ・両環境向けにビルド可能
    ・新機能や最新OSへの対応待ち期間がある
    ・端末固有機能に対応していないものある
    ハイブリッドアプリ JavaScriptやHTMLなどのWeb技術や
    WebViewなどを駆使して開発
    ・WebViewでできる範囲に限られる
    ・新機能や最新OSへの対応待ち期間がある
    ・端末固有機能に対応していないものある
    8

    View Slide

  9. ネイティブアプリ開発
    9

    View Slide

  10. Android
    10

    View Slide

  11. ● Googleが開発している汎用モバイルOS
    ○ LinuxカーネルやOSSがベース
    ○ テレビ用: Android TV、自動車用: Android Auto、ウェアラブルデバイス用 : Wear OS など
    ● KotlinやJava などを使用して開発できる
    ● 2003年、携帯電話向けソフトウェアプラットフォームを開発するAndroid社を設立
    ○ アンディ・ルービンら 3名
    ● 2005年、GoogleがAndroid社を買収
    ● 2007年11月、携帯電話用ソフトウェアのプラットフォームとしてOHAからAndroidを発表
    ○ OHAは、規格団体のオープン・ハンドセット・アライアンスのこと
    ○ Apache License 2.0に基づいて配布
    ● Android 12が主流で最新バージョンとしてAndroid 13が出ている(2022/09/28時点)
    ● 仮想マシン
    ○ 〜Android 4.4は、基本的にはDalvik(ダルビック)仮想マシン (VM) 上で動作
    ■ 実行直前にネイティブコードに変換して動作させる JITコンパイル方式
    ○ Android 4.4 (KitKat) 〜は、仮想マシンAndroid Runtime (ART) 上で動作
    ■ 予め最初からネイティブコードに変換しておく (ahead-of-time; AOT)方式
    ■ AOTとインタープリタとJITをミックスしたハイブリッド方式 (Android 7.0〜)
    Androidとは
    11

    View Slide

  12. 歴代のコードネーム
    12
    • 〜1.4まで
    • 通常のバージョニング
    • 1.1、1.2…
    • バージョン1.5から9まで
    • 頭文字がバージョンの発表順に CからPまでのアルファベット順で始まる菓子の名前
    • Androidロボットが各コードネームの菓子に扮していた
    • コードネームがエンドユーザー向けの製品別名として使われることもあった
    • Cupcake (1.5)、Donut (1.6)、Jelly Bean (4.1, 4.2, 4.3) など
    • バージョン10から
    • アルファベット1文字だけになった
    • コードネームはエンドユーザー向けの製品別名としては使われなくなっている

    View Slide

  13. Android Studioとは
    13
    ● Googleが提供するAndroid向けアプリケーション開発用の統合開発環境(IDE)
    ○ JetBrains社が開発したIntelliJ IDEAをベース
    ○ プロジェクト作成からアプリ実行までを行うことができる
    ● 公式サイトからインストーラーを用いてインストール
    ● 2013年5月にGoogle I/Oで発表され、2014年12月にGA
    ○ EclipseとAndroid Development Tools(ADT)は、2015年にサポートが終了して役目を Android Studioに引き継いだ
    ● Android SDKやAndroid NDKなどが含まれている

    View Slide

  14. • Android Software Development Kitの略
    • アプリケーション開発用ツールセット
    Android SDKとは
    14
    https://developer.android.com/studio/intro/update?hl=ja#sdk-manager
    Android SDK Build-Tools Android アプリをビルドするために必要なツール。
    Android SDK Platform-Tools Android プラットフォームに必要な各種ツール。
    (Android Debug Bridge(adb) など)
    Android SDK Tools ProGuard などの基本的なツール。
    Android Emulator 開発端末上でデバイスを動かすために必要なツール。
    Android Virtual Device(AVD)というPC上で動作する仮想デバイスとプラットフォームを組み合わせ
    てデバイスを動作させる
    Android SDK Platform プラットフォームをインストールしたり、削除したりできる
    (Android 12.0 (S) / APIレベル31 など)

    View Slide

  15. • Android Debug Bridge(=adb)
    • 実機デバイス上で実行しながらPC上で
    デバッグすることができる仕組み
    • USBケーブル経由やWi-Fi経由などをサポート
    • 使用している実機のOSバージョンとAPIレベル
    に依存
    • 詳しくはこちら
    • 複数の実機デバイス不要で動作
    • 仮想デバイス(AVD)とOSバージョンやAPIレベ
    ルなどの組み合わせが自在
    • Android Virtual Device
    • 実機デバイスに比べると動作は重め
    • 詳しくはこちら
    Android Debug Bridge
    Android Debug BridgeとAndroid Emulator
    15
    Android Emulator

    View Slide

  16. APIレベル
    • Android プラットフォームのバージョンごとに提供されるフレームワーク API のリビジョンを一意に識別す
    る整数値
    • Google側でサポートを求めるレベルが指定されてる
    16
    Google Play アプリの対象 API レベル要件 APIレベルとは

    View Slide

  17. 17
    iOS / iPadOS / macOS / watchOS…

    View Slide

  18. iOS / iPadOS / macOS / watchOS…とは
    18
    ● Appleが開発および提供するモバイルOS
    ● iOS
    ○ iPhone OSの略
    ○ iPhoneとiPod touch(2022/5/10に在庫限りで販売終了を発表)
    ○ 主流はiOS15でiOS16が最近リリースされた
    ● iPadOSは、iPad向け。macOSは、Macbook向け。watchOSは、Apple Watch向け....
    ● 開発言語は、SwiftやObjective-C
    ○ 新規開発ではSwiftが採用されることが多い?
    ○ 相互運用性が保証されているため、Swiftを使用したとしてもObjective-Cのライブラリを使用できる
    ● Swift UI
    ○ すべてのApple向けのアプリを単一のコードベースで開発できることを目的として開発された UI

    View Slide

  19. Xcode / Xcode Cloud
    ● Xcode
    ○ Appleが開発および提供している統合開発環境(IDE)
    ■ Appleのパソコンでしか使えない
    ■ AppleプラットフォームでAppを開発、テスト、配信するために必要なものが全て含まれている
    ○ 最新バージョンは、Xcode14
    ○ Gitも一緒にインストールされる
    ○ App Storeからダウンロード
    ● Xcode Cloud(ベータ版)
    ○ Xcodeに組み込まれたCI/CDサービス
    ○ ビルドや複数の自動テストを並列実行、テスターへのAppの配信などが行える
    ○ 先日ベータ版の招待が届いたので、検証中
    19

    View Slide

  20. サマリ
    20
    Android iOS/macOS/iPadOS…
    Kotlin(、Java) 開発言語 Swift(、Objective-C)
    Android Studio エディタ Xcode
    Android 12〜13 直近のバージョン iOS15〜16
    Android SDK、NDK SDK など iOS SDK、macOS SDK…
    エミュレーター 実行環境 シミュレーター
    レイアウトエディター UIツール デザインエディター
    内部テスト/外部テスト... テスト配信 TestFlight
    Google デベロッパー デベロッパー アカウント Apple デベロッパー
    aab 公開・配布可能なファイル形式 ipa
    Google Play Store ストア App Store
    Google Play Store Console 管理コンソール など Apple Developer Portal
    App Store Connect

    View Slide

  21. デベロッパーアカウント
    21

    View Slide

  22. • Google PlayでAndroidアプリを公開するため
    に必要
    • Googleアカウントがあればベータ版の使用は
    可能
    • Googleアカウントを使用して発行(登録料が1回
    限りでUS$25必要)
    • アカウントが発行されるとGoogle Play
    Consoleが使用できるようになる
    Google Play デベロッパー アカウント
    デベロッパー アカウント
    22
    Apple デベロッパー アカウント
    ● Apple StoreでiOSアプリを公開するために必要
    ● ベータ版の使用や各種ツール、情報提供を得る
    ために必要
    ● 高度な機能を備えたAppをビルドして配信する
    場合、Apple Developer Programが必要(年
    間登録料がUS$99必要)
    ● Apple Developer PortalとApp Store Connect
    が使用できるようになる

    View Slide

  23. 公開・配布可能なファイル形式
    23

    View Slide

  24. Android App Bundle(AAB)とAndroid Package(APK)
    Android App Bundle(AAB)
    24
    • 2018 年にリリースされた Android 用の公開の
    みを目的としたファイル形式
    • App Bundle をデバイスにインストールできるよ
    うにするには、ディストリビュータが APK に加
    工することが必要
    • オープンソース
    Android Package(APK)
    • Android用のインストールかつ実行可能なアプ
    リ形式
    • タブレット端末や機種ごとに作成する必要があ

    View Slide

  25. クロスプラットフォームアプリ
    25

    View Slide

  26. 今回はFlutter + Dart + VS Code
    26

    View Slide

  27. ● バックエンド
    ○ PythonとRESTfulなAPI開発をするためのWebフレームワーク
    ● フロントエンド
    ○ 各種エミュレーター(シミュレーター)を使用
    ○ エミュレーターとバックエンドの通信
    ○ エディタとエミュレータの通信
    ● インフラとユーザーアクセス
    ○ テスト配信したモバイル端末からアクセスされる APIサーバー
    ○ DBとしてクラウドSQLを使用
    ○ モバイルアプリのCI/CDで使用する暗号化された証明書管理用のバケット
    ● CI/CD
    ○ Mac Runnerも使用
    ○ モバイルアプリまわりの自動化ツールとして Fastlaneを使用
    全体構成の概要
    27

    View Slide

  28. バックエンド
    28

    View Slide

  29. 全体構成(1/3)
    29

    View Slide

  30. ● Python + FastAPI
    ○ FastAPIは、PythonでRESTfulなAPI開発をするためのWebフレームワーク
    ● コーディング規約は、PEP8を使用
    ○ VS Codeでレコメンドされるもの
    ● テストフレームワーク
    ○ pytest
    ● Docker環境
    ○ APIサーバー:Pythonイメージをベース
    ○ DBサーバー:PostgreSQLイメージをベース
    30
    バックエンド環境の概要

    View Slide

  31. バックエンド環境の構築について詳しく知りたい方は
    31
    https://speakerdeck.com/ismt7/vs-codedeshi-meruwebapurikesiyonkai-fa-ru-men?slide=27

    View Slide

  32. フロントエンド
    32

    View Slide

  33. 全体構成(2/3)
    33

    View Slide

  34. ● Flutter + Dart
    ○ どちらもGoogleによって開発されたもの
    ○ Flutter
    ■ SDK(Software Development Kit)
    ■ クロスプラットフォームなアプリケーション開発が可能
    ○ Dart
    ■ Webアプリやモバイルアプリのクライアント開発向けに設計された プログラミング言語
    ■ ネイティブコードまたは、 JavaScriptにコンパイルできる
    ● 使用するネイティブ言語
    ○ Android:Kotlin、iOS:Swift
    ● コーディング規約
    ○ Dartガイドラインはこちら
    ● テストフレームワーク
    ○ Dartが標準で提供しているライブラリを使用
    ○ 単体テスト、コンポーネントテスト、 E2Eテスト
    ● 実行環境
    ○ 各種シミュレーター(エミュレーター)
    フロントエンド(モバイル)環境の概要
    34

    View Slide

  35. ● Android StudioやXcodeでアプリのUIをGUIを用いてデザインできるツール
    ○ FlutterやVisual Studio Codeでは、公式で対応するツールや拡張機能がない
    ● ホットリロードの機能などにも対応しているので、うまく付き合っていく
    レイアウトエディター / デザインエディター
    35
    https://developer.apple.com/jp/xcode/swiftui/
    https://developer.android.com/studio/write/layout-editor?hl=ja

    View Slide

  36. Flutter Studio
    • 非公式なUIエディターツールはあれこれ存在している
    • ツールで生成したコードをコピペして持っていくような流れ
    • https://flutterstudio.app/
    36

    View Slide

  37. インフラとユーザーアクセス
    37

    View Slide

  38. 全体構成(3/3)
    ※インフラ構成は簡略的な表記
    38

    View Slide

  39. CI/CD
    39

    View Slide

  40. CI/CD環境の概要
    ● GitHub Actionsとは
    ○ ビルド、テスト、デプロイなどのワークフローをGitHubから直接実行できる自動化ツール
    ● 無料プランで2,000分の無料枠が毎月与えられる[1]
    ● ワークフロー > ジョブ >ステップで構成[2]
    ○ 作成個数に制限は実質なし
    ○ 実行時間の上限は、ワークフロー: 35日間。ジョブ:最大6時間。
    ■ 上限に到達した場合は、途中でキャンセルされて正常に完了しない
    ○ APIリクエストの上限は、 1,000件/h
    ○ 同時実行ジョブ数の上限 は、無料プランで全体の合計が 20個まで(macOSは最大5個まで)
    ● ジョブマトリックス:最大 256のジョブ
    ● ワークフロー実行キュー: 10秒間隔で500まで
    40

    View Slide

  41. 全体イメージ
    41

    View Slide

  42. ワークフロー/ジョブ/ステップ
    42

    View Slide

  43. • GitHub Actionsで極端に処理が遅くなる問題に遭遇
    • Flutterで使用しているパッケージか GitHub Actionsのスペック不足かなどは調査中
    • スペック問題は、GitHub Actionsでは回避策がないためCircleCIがおすすめ
    • Trigger CircleCI Pipelineを使用することでGitHub ActionsからCircleCIを実行することも可能
    • セルフホステッドランナーは、検証やデバッグ用途で使用中
    • GitHub Hostedとは勝手が違う。足りないパッケージなどは自分でインストールが必要
    • 節約目的などでの本番運用は現時点では消極的
    モバイルアプリで使用するランナー概要
    43
    Android側 Apple側
    Ubuntu Runner ランナー Mac Runner
    2-core CPU (x86_64) CUP 3-core CPU (x86_64)
    7 GB of RAM メモリ 14 GB of RAM
    14 GB of SSD space ストレージ 14 GB of SSD space
    できる(パブリックベータ版) インスタンスのサイズアップ できない
    1クレジット 消費クレジット数/分 10クレジット

    View Slide

  44. 弊社メンバーのブログ記事(9/26公開)
    44
    https://devops-blog.virtualtech.jp/entry/20220926/1664160391

    View Slide

  45. ステップで使用しているAction一覧
    ● ステップで主に使用しているAction一覧
    ○ GitHubのマーケットプレイスから入手可能
    ● Fastlnaeは、Rubyのパッケージに含まれる
    ● 実行環境構築系のActionの使用が中心
    ● それ以外の部分は、シェルスクリプトにまとめてステップ内で呼び出している
    45
    Action名 説明
    actions/checkout GitHubからソースコードをクローンする際に使用する Action
    actions/setup-java Javaの実行環境を構築する Action
    subosito/flutter-action Flutterの実行環境を構築する Action
    ruby/setup-ruby Rubyの実行環境を構築する Action
    slackapi/slack-github-action Slackメッセージを送信する際に使用

    View Slide

  46. Fastlane
    46

    View Slide

  47. CI/CD環境の概要(Fastlane)
    ● Fastlaneは、iOS および Android アプリのベータ展開とリリースを自動化するツール
    ○ スクリーンショットの生成、コード署名の処理、アプリケーションのリリースなど
    ● macOSは正式サポート。WindowsとLinuxは部分的にサポート
    ○ GitHub Actions上では、Android側のビルドにUbuntu Runnerを使用しているが現状は問題なく使えている
    ● MITライセンス
    47

    View Slide

  48. 主なコマンド
    ● 「gem install fastlane」or「brew install fastlane」
    ○ Fastlaneの実行環境を構築
    ○ Macに標準で入っている Rubyの使用は推奨しない (ドキュメントより)
    ■ 依存関係管理まわりが複雑で競合が発生する可能性がある
    ○ anyenv > rbenv > rubyなどで別に用意する
    ● fastlane init
    ○ 初期プロジェクトを作成
    ○ (project)/androidと(project)/iosのそれぞれで実行する
    ● fastlane (レーン名)
    ○ Fastfileで定義したレーンの内容を実行する
    48

    View Slide

  49. ● Fastfile[1]
    ○ fatslane (レーン名)コマンドで実行する自動化のシナリオが書かれているファイル
    ○ .(プロジェクト名)/(プラットフォーム名)/fastfileに格納されている
    ○ Rubyの構文を使用している
    ○ AppfileやMatchfileに記載した情報は自動で Actionに渡される
    ○ Fastfileなどに直接センシティブな情報を記載すると ログ上に出力される場合があるので注意
    ● Appfile[2]
    ○ Fastfileが処理される際に読み込まれる設定ファイル
    ■ Apple IDやアプリ識別子 など
    ● Matchfile[3]
    ○ Fsatlane Matchコマンドを使用する際に読み込まれる設定ファイル
    主なファイル
    49

    View Slide

  50. 主に使用しているFastlane Action
    50
    対象 アクション名 説明
    ALL create_keychain キーチェーンを作成 [1]
    iOS automatic_code_signing Xcodeのコード署名を有効化
    iOS match 開発チーム全体で1つのコード署名IDを共有して、コード署名の設定を簡素化
    iOS app_store_connect_api_key App Store Connect API トークンを取得
    ALL flutter_version pubspec.ymlからバージョン情報を取得
    iOS latest_testflight_build_number TestFlight から最新のビルド番号を取得
    iOS upload_to_testflight TestFlight ベータ テスト用に新しいバイナリを App Store Connect にアップロード
    Android google_play_track_version_codes Google Play トラックのバージョンコードを取得
    Android upload_to_play_store バイナリを Google Play にアップロード

    View Slide

  51. モバイルアプリが
    リリースされるまで
    51

    View Slide

  52. 流れ
    52
    流れ 説明
    初期構築 「flutter create (ディレクトリ名)」でプロジェクト作成を実行
    実装 「flutter run -d (デバイス名)」でアプリを実行
    ビルド 「flutter build appbundle」や「flutter build ipa」でビルドを実行
    ストアにアップロード Fastlaneで実行
    テスターに配信 iOS側はアップロード後に自動でテスターに配信される (設定が必要)
    Android側はPlay Console画面でリリースを作成して配信する必要がある
    Google Play Developer APIなどを活用して自動化できるかも?
    審査、公開 省略

    View Slide

  53. アプリへの署名
    53

    View Slide

  54. Android側
    54

    View Slide

  55. • APK をデバイスにインストールしたり更新したり
    する前に、証明書を使用してすべての APK に
    デジタル署名する必要がある
    • AABを使用してリリースする場合は、Playアプリ
    署名によって処理が行われる
    アプリへの署名(Android側)
    アップロード署名
    55
    • Play Store Consoleにアップロードする際に必
    要な署名
    • keytoolコマンドで生成したものを使用する
    • 初回のみ画面上からアップロードする必要があ

    アプリ署名

    View Slide

  56. アプリ署名
    • Google がデベロッパーに代わってアプリの署名鍵を管理および保護し、その署名鍵を使用して、App
    Bundle から生成され最適化された配布用 APK に署名する
    • Google の安全なインフラストラクチャにアプリ署名鍵を保存し、セキュリティを強化するためのアップグ
    レード オプションを提供
    • Google の鍵管理サービスによって保護
    • Google Cloudのセキュリティに関するホワイトペーパー
    • Androidアプリは秘密鍵で署名される
    • 秘密鍵は公開鍵証明書に関連付けられている
    • 公開鍵証明書を使って、アプリのアップデートが同じ提供元によるものであることを確認できる
    https://support.google.com/googleplay/android-developer/answer/9842756?hl=ja#zippy=%2C鍵アー
    ティファクトツールの説明
    56

    View Slide

  57. アップロード鍵
    ● 公式ドキュメントより
    ○ keytoolを使用して鍵を生成
    ■ keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity
    10000 -alias upload
    ○ [project]/android/key.propertiesファイルを作成
    ○ Gradle でサインインを構成する
    ■ [project]/android/app/build.gradleファイルを編集
    57

    View Slide

  58. iOS側
    58

    View Slide

  59. 証明書
    59
    • iOS、tvOS、watchOSは同じ証明書セットでOK。macOSは別の証明書セットが必要(だった)
    • Xcode 11以降は、すべてのプラットフォームで統一された証明書を作成できる
    https://help.apple.com/developer-account/?lang=ja#/deveedc0daa0
    証明書 説明
    開発証明書 ・デバイスでAppを実行したり、Appサービスを利用したりするときに必要
    ・個人所有。iOS用に2つ、macOS用に2まで
    配布用証明書 ・Appをテスト用に配信したり、 App Store Connectにアップロードしたりする時に必要
    ・チーム所有。1チームにつき、1つまで
    ・作成者は、Account HolderかAdminの役割を持っているアカウントのみ
    クラウド管理対象証明書 ・Xcode Organaizerのアーカイブと配信ワークフローを使用している場合に管理対象になる
    Developer ID 証明書 ・App Store以外の場所からダウンロードされるようなアプリ配信時に必要になる
    ・詳しくはこちら

    View Slide

  60. Fastlaneでアップロードを自動化
    60

    View Slide

  61. iOS側のアップロード例
    61
    ※逆順に説明しています
    ● アプリをApp Store Connectにアップロード
    ○ upload_to_testflightを使用
    ○ ビルド済みのIPAファイル
    ○ APIキー
    ○ 証明書
    ● ビルド番号の整合性チェック
    ○ latest_testflight_build_numberとflutter_versionを使

    ○ アップロード中にエラーで止まると待ち時間が無駄に
    なるため
    ● App Store ConnectからAPIキーを取得
    ○ app_store_connect_api_keyを使用

    View Slide

  62. ※逆順に説明しています
    ● 証明書の取得
    ○ matchを使用
    ○ 証明書を保持するための箱 (キーチェーン)が必要
    ● Xcode署名の有効
    ○ automatic_code_signingを使用
    ● キーチェーンを作成
    ○ create_keychainを使用
    iOS側の事前準備の例
    62

    View Slide

  63. Fastlane Matchとは
    ● チーム全体で証明書とプロファイルを簡単に同
    期できる仕組み
    ● GCPとAWSとGitから選択できる
    ○ GitはGitHubを通じて共有する
    ● CI/CDを1メンバーとして扱うイメージで作成
    63

    View Slide

  64. おわり
    64

    View Slide