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

FlutterKaigi 2025 公式アプリ&WebサイトのCDについて

Avatar for Ryotaro Onoue Ryotaro Onoue
November 20, 2025
10

FlutterKaigi 2025 公式アプリ&WebサイトのCDについて

Avatar for Ryotaro Onoue

Ryotaro Onoue

November 20, 2025
Tweet

Transcript

  1. 0. ࣗݾ঺հ  - ඌ্ ྒྷଠ࿕ (͓ͷ͏͑ Γΐ͏ͨΖ͏) - X:

    @YumNumm (΋͙΋͙) - 2004.09.17ੜ·Ε (21ࡀ) - ਆಸ઒ݝࡏॅ ܦྺ - גࣜձࣾ ΏΊΈ 2023೥4݄ ৽ଔೖࣾ - Flutter Ϧʔυ(ϚΠελʔΤϯδχΞ) MEMO - ۀ຿Ͱ͸Flutter, ϓϥΠϕʔτͰ͸TS, Πϯϑϥ पΓͰ༡Ϳ - ਂ໷×ૣேۦಈ։ൃ - SONY α7C Ⅱ
  2.  - EQMonitor ͱ͍͏஍਒ؔ࿈ͷΞϓϦέʔγ ϣϯΛݸਓ։ൃ͍ͯ͠·͢ - Flutter੡ - Φʔϓϯιʔε -

    DB͸Supabase CloudΛ࢖༻த - API(BFF)ͱͯ͠Cloudflare Workers ΛڬΜͰ͍·͢ - ௨஌഑৴ج൫, σʔλॲཧج൫ͱͯ͠ OCIΛར༻த - (࠷ऴΞοϓσʔτ͔Β15ϲ݄Λه࿥!) - དྷ೥2݄·Ͱʹ͸Ξοϓσʔτ͍ͨ͠... - https://github.com/YumNumm/ EQMonitor 0. ࣗݾ঺հ
  3.  ࠓ೔ͷ͓͠ͳ͕͖ 1. ͔Δʙ͘CDͱ͸? 2. ૊ΜͩCDͷશମ૾ͱࣄલ஌ࣝ 3. [iOS/macOS] CD࣮૷ miseͱsopsͷ͓࿩

    Cloud-managed CertificatesΛར༻ͯ͠ɺApp Store ConnectʹόΠφϦΛΞοϓϩʔυ͢Δ·Ͱ 4. [Android] CD࣮૷ Google Cloud Workload Identity࿈ܞΛ࢖ͬͯɺFirebase App DistributionʹσϓϩΠ͢Δ· Ͱ 5. ·ͱΊ FlutterKaigi 2025 EQMonitor FlutterKaigi 2025
  4.  ࠓ೔ͷ͓͠ͳ͕͖ 1. ͔Δʙ͘CDͱ͸? 2. [iOS/macOS] CD࣮૷ Cloud-managed CertificatesΛར༻ͯ͠ɺApp Store

    ConnectʹόΠφϦΛΞοϓϩʔυ͢Δ·Ͱ 3. [Android] CD࣮૷ Google Cloud Workload Identity࿈ܞΛ࢖ͬͯɺGoogle Play Store, Firebase App DistributionʹσϓϩΠ͢Δ·Ͱ 4. ·ͱΊ ⚠ ஫ҙ ɾ࠷৽ͷ৘ใ͸ެࣜαΠτ, DocsͳͲΛࢀর͍ͯͩ͘͠͞ ℹ ͜ͷLTͰ͸ɺCDʹ͍ͭͯ࿩͠·͢ ৄ͍࣮͠૷ʹ͍ͭͯ͸ͦ͜·Ͱ৮Εͳ͍ͷͰɺ ͜Μͳํ๏΋͋ΔΜͩʙ ఔ౓ʹݟ͍ͯͩ͘͞
  5. 1. CDͱ͸? Continuous Delivery • CD (Continuous Delivery - ܧଓతσϦόϦʔ)

    • ίʔυมߋ࣌ʹϏϧυ&ςετͯ͠ɺdev΋͘͠͸stg؀ڥʹσϓϩΠ͢Δ ͳͲͳͲ • ͓͍͍͠ͱ͜Ζ • ࣗಈͰϏϧυ&ςετͯ͠ɺprod؀ڥ΁ͷϦϦʔε४උ͕Ͱ͖Δ -> ഑৴͕ਝ଎ʹ! • खಈͰΆͪΆͪ͠ͳͯ͘ྑ͍! • ཤྺ͕࢒Δ • Ex • Jenkins, GitHub Actions, AWS CodeBuild, CircleCI, Jetbrains TeamCity, Codemagic • ݸਓతʹ͸ɺGitHub ActionsͰΰϦΰϦYAMLΛॻ͍͍ͯ͘ͷ͕޷͖  cf. https://aws.amazon.com/jp/devops/continuous-delivery/
  6. 2-1.CDશମ૾ 🐘  • define-matrix • ͲͷjobΛ࣮ߦ͢Δ͔Λܾఆ͢Δ • mainϒϥϯνίϛοτ࣌: iOS,

    macOS, Android, Web(Production) • PR࡞੒, ߋ৽࣌: Web(Preview) • build-{android, ios, macos, website}: όΠφϦͷϏϧυ • deploy-{android, ios, macos, website}: όΠφϦͷΞοϓϩʔυ • start-build-website: ຊ൪WebσϓϩΠ࣌ʹGitHub DeploymentΛ࡞੒ • -> ຊ൪؀ڥ΁͍ͭσϓϩΠ͔ͨ͠ΛΘ͔Γ΍͘͢͢Δ iOS, macOS, AndroidͷCDʹ͍͓ͭͯ࿩͍͖ͯ͠·͢
  7. 2-2. લఏ஌ࣝ - mise πʔϧ؅ཧ  • FlutterKaigi 2025Ͱར༻ͨ͠πʔϧͨͪΛ঺հ͍͖ͯ͠·͢ •

    miseͱ͸? • mise-en-place (Pronounced “MEEZ ahn plahs”) • https://mise.jdx.dev/ • asdf(΋͘͠͸ɺfvm, nvm, pyenv)ͳͲͱಉ༷ͷ։ൃπʔϧ؅ཧʹར༻Ͱ͖Δ • ؀ڥม਺ͷ؅ཧ(direnvಉ౳), λεΫ࣮ߦ(makeಉ౳) ͳͲ΋ߦ͑Δ • npmύοέʔδͷΠϯετʔϧ, GitHub Releases͔ΒόΠφϦDLͳͲ΋Մೳ • FlutterͷϓϩδΣΫτͰ͸ׂͱخ͍͠ • Flutter͸fvm, Ruby͸rbenv, RubyͷPods͸Podfile, Brew͸brewfile... ͱ͔͠ͳͯ͘ OK • FlutterKaigi 2025Ͱ͸ɺTypeScriptͷίʔυ΋͋ͬͨͷͰ શ෦Ұݩ؅ཧͰ͖ͯϋοϐʔͩͬͨ
  8. ؀ڥม਺, SecretΛ҉߸Խ/෮߸Խ  • sopsͱ͸? • sops (Secret OPerationS) •

    https://github.com/getsops/sops • YAML, JSON, ENVͳͲͷϑΝΠϧΛ҉߸ԽͰ͖Δ • AWS KMS, GCP KMS, age, PGPͳͲΛར༻ͯ͠҉߸Խ • AES256_GCMͰ҉߸Խ͞ΕΔ (※PGPΛར༻͢Δ৔߹͸ɺ伴ʹґଘ͢ΔɻageͳͲͰ͸AES256 GCMͰ҉߸Խ͢ΔͨΊɺPQCରԠ) • miseͱ࿈ܞͯ͠ɺࣗಈͰ෮߸Խ & ؀ڥม਺ʹηοτͰ͖Δ • ؀ڥม਺, SecretΛ҉߸Խ͢ΔͱԿ͕خ͍͠ͷ͔? • ҉߸Խͨ͠΋ͷ͸ެ։ͯ͠΋໰୊ͳ͍ -> GitͰ؅ཧͰ͖Δ • ͍ͭɺ୭͕ɺͲ͜Ͱ؀ڥม਺Λมߋ͔͕ͨ͠ཤྺʹ࢒Δ • GitHub Actions্Ͱ͸ɺSecretʹൿີ伴Λ౉ͯ͋͛͠Δ͚ͩͰ ͢΂ͯͷ؀ڥม਺Λద༻Ͱ͖Δ • มߋͨ͠ͱ͖ʹɺͦΕͧΕͷSecretΛ͍͡Δඞཁ͕ͳ͍ 2-2. લఏ஌ࣝ - sops
  9. ূ໌ॻͷऔಘ, όΠφϦΞοϓϩʔυͰར༻͢Δ  • sopsͱ͸? • sops (Secret OPerationS) •

    https://github.com/getsops/sops • YAML, JSON, ENVͳͲͷϑΝΠϧΛ҉߸ԽͰ͖Δ • AWS KMS, GCP KMS, age, PGPͳͲΛར༻ͯ͠҉߸Խ 2-2. miseͱsopsΛར༻ͯ͠ɺ҉߸Խͨ͠ΩʔΛ഑ஔ ͜Μͳײ͡
  10. 2. iOS/macOSͷCD࣮૷ ূ໌ॻ! ͍΍ͬ! • ํ਑ • GitHub ActionsΛ࢖͏ •

    ޷͖ͳͷͰ • ূ໌ॻɾProvisioning Profileͷ؅ཧ͸ͨ͘͠ͳ͍ • fastlane matchͰূ໌ॻ؅ཧ͢Δ͜ͱ΋Ͱ͖Δ͕ɺ໘౗ͳͷͰ͍΍ͩ • 1೥͝ͱʹূ໌ॻͷߋ৽ॲཧΛߦΘͳ͍ͱ͍͚ͳ͍ • σόΠεͷ؅ཧ΋ࣗ෼Ͱ΍Δඞཁ͕͋Δ -> Cloud-managed CertificatesΛ࢖ͬͯ͋͛Δ! 
  11. 2. iOS/macOSͷCD࣮૷ Cloud-managed Certificates • Cloud-managed Certificates? • Ϋϥ΢υ؅ཧର৅ূ໌ॻ •

    https://developer.apple.com/help/account/certificates/cloud-managed- certificates/ • > ΞϓϦ΍ιϑτ΢ΣΞͷ഑৴ͷͨΊͷॺ໊͕Ϋϥ΢υͰߦΘΕΔ • 1೥ͷ༗ޮظݶ͕͍ۙͮͨΒߋ৽ॲཧʙ Έ͍ͨͳͷ΋ෆཁ • xcodebuildͰ͸ɺ • [XcodeͰApple AccountϩάΠϯࡁΈ] • `-allowProvisioningUpdates`ϑϥάͰOK • [ະϩάΠϯ] App Store Connect APIΩʔΛ࡞੒ • →  SKIP? https://developer.apple.com/videos/play/wwdc2021/10204/?time=1194
  12. 2. iOS/macOSͷCD࣮૷ Cloud-managed Certificates • Cloud-managed Certificates? • Ϋϥ΢υ؅ཧର৅ূ໌ॻ •

    https://developer.apple.com/help/account/certificates/cloud-managed- certificates/ • > ΞϓϦ΍ιϑτ΢ΣΞͷ഑৴ͷͨΊͷॺ໊͕Ϋϥ΢υͰߦΘΕΔ • 1೥ͷ༗ޮظݶ͕͍ۙͮͨΒߋ৽ॲཧʙ Έ͍ͨͳͷ΋ෆཁ • xcodebuildͰ͸ɺ • [XcodeͰApple AccountϩάΠϯࡁΈ] • `-allowProvisioningUpdates`ϑϥάͰOK • [ະϩάΠϯ] App Store Connect APIΩʔΛ࡞੒ • →  SKIP? https://developer.apple.com/videos/play/wwdc2021/10204/?time=1194
  13. 2. iOS/macOSͷCD࣮૷ ূ໌ॻ! ͍΍ͬ! • ·ͣɺ΍Δ͜ͱ 1. App Store Connect

    API KeyΛൃߦ͢Δ 2. miseͱsopsΛར༻ͯ͠ɺ҉߸Խͨ͠ΩʔΛ഑ஔ 3. GitHub ActionsͷSecretʹ҉߸ԽΩʔΛ഑ஔ  Լ४උ
  14. Security  TIPS 1: 3rd-party Actionͷίϛοτϋογϡࢦఆ • ϕʔεͱͯ͠ɺGitHub ActionsͰෆਖ਼ͳίʔυ͕࣮ߦ͞ΕΔͱॏେͳηΩϡϦςΟΠϯγσϯτʹͭͳ͕ ΔՄೳੑ͕͋Δ

    • Actions RunnerͷSecretͷྲྀग़, GITHUB_TOKENͷྲྀग़Λট͘Մೳੑ͕͋Δ • 3rd-party ActionΛར༻͢Δ࣌͸ɺCommit HashΛࢦఆͯ͋͛ͨ͠΄͏͕ྑ͍ • GitHub ActionsͰ3rd-party ActionΛݺͼग़࣌͢͸͍͔ͭ͘ํ๏͕͋Δ • Tag: `uses: actions/[email protected]` • SHA: `uses: actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f` • Branch: `uses: actions/javascript-action@main` • Tagࢦఆͨ͠Actions͸ෆมͰ͸ͳ͍ • ར༻͍ͯ͠ΔActionsͷTagΛ࠶౓ൃߦ͢Δ͜ͱͰॻ͖׵͑Մೳ • -> ϑϧ௕ͷSHA commit hashͰࢦఆ͢Δ͜ͱ͕ϕετϓϥΫςΟε Secure use reference - GitHub https://docs.github.com/en/actions/reference/security/secure-use
  15. Security  TIPS 1: 3rd-party Actionͷίϛοτϋογϡࢦఆ • ϕʔεͱͯ͠ɺGitHub ActionsͰෆਖ਼ͳίʔυ͕࣮ߦ͞ΕΔͱॏେͳηΩϡϦςΟΠϯγσϯτʹͭͳ͕ ΔՄೳੑ͕͋Δ

    • Actions RunnerͷSecretͷྲྀग़, GITHUB_TOKENͷྲྀग़Λট͘Մೳੑ͕͋Δ • 3rd-party ActionΛར༻͢Δ࣌͸ɺCommit HashΛࢦఆͯ͋͛ͨ͠΄͏͕ྑ͍ • GitHub ActionsͰ3rd-party ActionΛݺͼग़࣌͢͸͍͔ͭ͘ํ๏͕͋Δ • Tag: `uses: actions/[email protected]` • SHA: `uses: actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f` • Branch: `uses: actions/javascript-action@main` • Tagࢦఆͨ͠Actions͸ෆมͰ͸ͳ͍ • ར༻͍ͯ͠ΔActionsͷTagΛ࠶౓ൃߦ͢Δ͜ͱͰॻ͖׵͑Մೳ • -> ϑϧ௕ͷSHA commit hashͰࢦఆ͢Δ͜ͱ͕ϕετϓϥΫςΟε Secure use reference - GitHub https://docs.github.com/en/actions/reference/security/secure-use ϑϧ௕ͷcommit hashͰpin͢Δ͜ͱΛڧ੍͢Δ͜ͱ΋Մೳ
  16. Security  TIPS 2: GitHub ActionsͰͷεΫϦϓτΠϯδΣΫγϣϯ • ϕʔεͱͯ͠ɺGitHub ActionsͰෆਖ਼ͳίʔυ͕࣮ߦ͞ΕΔͱॏେͳηΩϡϦςΟΠϯγσϯτʹͭͳ͕ ΔՄೳੑ͕͋Δ

    • Actions RunnerͷSecretͷྲྀग़, GITHUB_TOKENͷྲྀग़Λট͘Մೳੑ͕͋Δ • steps: - name: Echo Issue Title run: echo "${{ github.event.issue.title }}" •^ ύοτݟਓசແ֐ͦ͏ʹݟ͑Δ •͜ͷྫͩͱɺIssueͷTitle͕ͦͷ··ల։͞Εͯ͠·͏ͷͰ ׂΓࠐΈͰ͖ͯ͠·͏ •rhysd/actionlint ͰνΣοΫͰ͖ΔͷͰΦεεϝ DEF CON 32 - Your CI CD Pipeline Is Vulnerable, But It's Not Your Fault - Elad Pticha, Oreen Livni https://youtu.be/3dHZ-l3XSsE?si=uf_te-ra-CJ_ijFu
  17.  TIPS 3: dart pub get --enforce-lockfile • `dart pub

    get --enforce-lockfile` Λ࢖ͬͯ͋͛Δ • pubspec.lockΛڧ੍ద༻Ͱ͖Δ • pubspec.lock͕pubspec.yamlʹର͢Δ༗ޮͳղܾΛ**ਖ਼֬ʹ**ࢦఆ͍ͯ͠ͳ͍৔߹Τϥʔ • Ex. ύοέʔδͷϋογϡ͕มΘͬͨ৔߹, όʔδϣϯ͕ͳ͘ͳͬͨ৔߹ Security
  18. 3. AndroidͷCD࣮૷ Workload Identity Federationͱ͔͍͏΍ͭ • FlutterKaigi 2025Λݟͯ΋ྑ͍ͷͰ͕͢ɺݸਓ։ൃͷϓϩδΣΫτͷํ͕ͪΐͬͱਐา͍ͯ͠ΔͷͰ ͦͬͪΛݟ·͢ •

    ໨త • Firebase App DistributionʹσϓϩΠͰ͖ΔΑ͏ʹ͢Δ • ํ਑ • ActionsʹService Accountͷ伴(JSON)Λ౉͞ͳ͍ • [ޙड़] Google CloudͷWorkload Identity࿈ܞΛ࢖͏ 
  19. 3-1. Google CloudͷWorkload Identity࿈ܞ Workload Identity Federationͱ͔͍͏΍ͭ • Workload Identity࿈ܞ

    (Workload Identity Federation) • Google Cloudͷ֎͔ΒɺGoogle CloudϦιʔεʹΞΫηε͢ΔͨΊʹ͸ɺαʔϏεΞΧ΢ϯτΩʔΛ ར༻ͯ͠ΞΫηεͰ͖Δ • ͨͩ͠ɺ͜Ε͸༗ޮظݶ͕௕͍ͷͰ ࿙Ӯ͢ΔͱηΩϡϦςΟΠϯγσϯτʹͳΓ͏Δ • Πϯϑϥจ຺Ͱ͸ɺ(௕ظؒ༗ޮͳ伴Λར༻͢Δ͜ͱͳ͘)ΦϯϓϨ؀ڥ, ଞͷΫϥ΢υαʔϏε͔Β Google CloudʹΞΫηεͰ͖ΔΑ͏ʹ͢ΔͨΊʹར༻ • ࠓճ͸ɺGitHub Actions͔ΒGoogle CloudʹΞΫηε͢ΔͨΊʹར༻ 
  20. 3-1. Google CloudͷWorkload Identity࿈ܞ Workload Identity Federationͱ͔͍͏΍ͭ • Workload Identity࿈ܞ

    (Workload Identity Federation) • Google Cloudͷ֎͔ΒɺGoogle CloudϦιʔεʹΞΫηε͢ΔͨΊʹ͸ɺαʔϏεΞΧ΢ϯτΩʔΛ ར༻ͯ͠ΞΫηεͰ͖Δ • ͨͩ͠ɺ͜Ε͸༗ޮظݶ͕௕͍ͷͰ ࿙Ӯ͢ΔͱηΩϡϦςΟΠϯγσϯτʹͳΓ͏Δ • Πϯϑϥจ຺Ͱ͸ɺ(௕ظؒ༗ޮͳ伴Λར༻͢Δ͜ͱͳ͘)ΦϯϓϨ؀ڥ, ଞͷΫϥ΢υαʔϏε͔Β Google CloudʹΞΫηεͰ͖ΔΑ͏ʹ͢ΔͨΊʹར༻ • ࠓճ͸ɺGitHub Actions͔ΒGoogle CloudʹΞΫηε͢ΔͨΊʹར༻ 
  21. 3-1. Google CloudͷWorkload Identity࿈ܞ Workload Identity Federationͱ͔͍͏΍ͭ • Workload Identity࿈ܞ

    (Workload Identity Federation) • Google Cloudͷ֎͔ΒɺGoogle CloudϦιʔεʹΞΫηε͢ΔͨΊʹ͸ɺαʔϏεΞΧ΢ϯτΩʔΛ ར༻ͯ͠ΞΫηεͰ͖Δ • ͨͩ͠ɺ͜Ε͸༗ޮظݶ͕௕͍ͷͰ ࿙Ӯ͢ΔͱηΩϡϦςΟΠϯγσϯτʹͳΓ͏Δ • Πϯϑϥจ຺Ͱ͸ɺ(௕ظؒ༗ޮͳ伴Λར༻͢Δ͜ͱͳ͘)ΦϯϓϨ؀ڥ, ଞͷΫϥ΢υαʔϏε͔Β Google CloudʹΞΫηεͰ͖ΔΑ͏ʹ͢ΔͨΊʹར༻ • ࠓճ͸ɺGitHub Actions͔ΒGoogle CloudʹΞΫηε͢ΔͨΊʹར༻  • ϦϙδτϦ໊ͰݖݶҠৡΛ੍ݶ͢Δ • ಛఆͷ৚݅Λຬͨ͢΋ͷͷΈೝূͰ͖ΔΑ͏ ʹ͢Δ
  22. 3-1. Google CloudͷWorkload Identity࿈ܞ Workload Identity Federationͱ͔͍͏΍ͭ • Workload Identity࿈ܞ

    (Workload Identity Federation) • Google Cloudͷ֎͔ΒɺGoogle CloudϦιʔεʹΞΫηε͢ΔͨΊʹ͸ɺαʔϏεΞΧ΢ϯτΩʔΛ ར༻ͯ͠ΞΫηεͰ͖Δ • ͨͩ͠ɺ͜Ε͸༗ޮظݶ͕௕͍ͷͰ ࿙Ӯ͢ΔͱηΩϡϦςΟΠϯγσϯτʹͳΓ͏Δ • Πϯϑϥจ຺Ͱ͸ɺ(௕ظؒ༗ޮͳ伴Λར༻͢Δ͜ͱͳ͘)ΦϯϓϨ؀ڥ, ଞͷΫϥ΢υαʔϏε͔Β Google CloudʹΞΫηεͰ͖ΔΑ͏ʹ͢ΔͨΊʹར༻ • ࠓճ͸ɺGitHub Actions͔ΒGoogle CloudʹΞΫηε͢ΔͨΊʹར༻  • ϦϙδτϦ໊ͰݖݶҠৡΛ੍ݶ͢Δ • ಛఆͷ৚݅Λຬͨ͢΋ͷͷΈೝূͰ͖ΔΑ͏ ʹ͢Δ • ʮΞΫηεΛڐՄʯ͔ΒWorkload Identity ࿈ܞͰར༻͢ΔαʔϏεΞΧ΢ϯτΛ࡞੒ͯ͠઀ ଓͯ͋͛͠Δ
  23. 3-1. Google CloudͷWorkload Identity࿈ܞ Workload Identity Federationͱ͔͍͏΍ͭ • Workload Identity࿈ܞ

    (Workload Identity Federation) • Google Cloudͷ֎͔ΒɺGoogle CloudϦιʔεʹΞΫηε͢ΔͨΊʹ͸ɺαʔϏεΞΧ΢ϯτΩʔΛ ར༻ͯ͠ΞΫηεͰ͖Δ • ͨͩ͠ɺ͜Ε͸༗ޮظݶ͕௕͍ͷͰ ࿙Ӯ͢ΔͱηΩϡϦςΟΠϯγσϯτʹͳΓ͏Δ • Πϯϑϥจ຺Ͱ͸ɺ(௕ظؒ༗ޮͳ伴Λར༻͢Δ͜ͱͳ͘)ΦϯϓϨ؀ڥ, ଞͷΫϥ΢υαʔϏε͔Β Google CloudʹΞΫηεͰ͖ΔΑ͏ʹ͢ΔͨΊʹར༻ • ࠓճ͸ɺGitHub Actions͔ΒGoogle CloudʹΞΫηε͢ΔͨΊʹར༻  • ϦϙδτϦ໊ͰݖݶҠৡΛ੍ݶ͢Δ • ಛఆͷ৚݅Λຬͨ͢΋ͷͷΈೝূͰ͖ΔΑ͏ ʹ͢Δ • ʮΞΫηεΛڐՄʯ͔ΒWorkload Identity ࿈ܞͰར༻͢ΔαʔϏεΞΧ΢ϯτΛ࡞੒ͯ͠઀ ଓͯ͋͛͠Δ • IAMͰαʔϏεΞΧ΢ϯτʹʮFirebaseΞϓϦ ഑෍؅ཧऀʯϩʔϧΛ෇༩ͯ͋͛͠Δ
  24. 3-1. Google CloudͷWorkload Identity࿈ܞ Workload Identity Federationͱ͔͍͏΍ͭ • Workload Identity࿈ܞ

    (Workload Identity Federation) • Google Cloudͷ֎͔ΒɺGoogle CloudϦιʔεʹΞΫηε͢ΔͨΊʹ͸ɺαʔϏεΞΧ΢ϯτΩʔΛ ར༻ͯ͠ΞΫηεͰ͖Δ • ͨͩ͠ɺ͜Ε͸༗ޮظݶ͕௕͍ͷͰ ࿙Ӯ͢ΔͱηΩϡϦςΟΠϯγσϯτʹͳΓ͏Δ • Πϯϑϥจ຺Ͱ͸ɺ(௕ظؒ༗ޮͳ伴Λར༻͢Δ͜ͱͳ͘)ΦϯϓϨ؀ڥ, ଞͷΫϥ΢υαʔϏε͔Β Google CloudʹΞΫηεͰ͖ΔΑ͏ʹ͢ΔͨΊʹར༻ • ࠓճ͸ɺGitHub Actions͔ΒGoogle CloudʹΞΫηε͢ΔͨΊʹར༻  • ϦϙδτϦ໊ͰݖݶҠৡΛ੍ݶ͢Δ • ಛఆͷ৚݅Λຬͨ͢΋ͷͷΈೝূͰ͖ΔΑ͏ ʹ͢Δ • ʮΞΫηεΛڐՄʯ͔ΒWorkload Identity ࿈ܞͰར༻͢ΔαʔϏεΞΧ΢ϯτΛ࡞੒ͯ͠઀ ଓͯ͋͛͠Δ • IAMͰαʔϏεΞΧ΢ϯτʹʮFirebaseΞϓϦ ഑෍؅ཧऀʯϩʔϧΛ෇༩ͯ͋͛͠Δ Ұ࿈ͷૢ࡞ΛTerraformܦ༝Ͱ࣮ߦ͢Δ͜ͱ΋Մೳ Flutter͕એݴతʹWidgetΛߏங͍ͯ͘͠ͷͱಉ༷ʹɺએݴతʹΠϯϑϥΛߏஙͰ͖Δπʔϧ https://github.com/YumNumm/EQMonitor/tree/develop/terraform/googlecloud
  25. 3-1. Google CloudͷWorkload Identity࿈ܞ Workload Identity Federationͱ͔͍͏΍ͭ • Workload Identity࿈ܞ

    (Workload Identity Federation) • Google Cloudͷ֎͔ΒɺGoogle CloudϦιʔεʹΞΫηε͢ΔͨΊʹ͸ɺαʔϏεΞΧ΢ϯτΩʔΛ ར༻ͯ͠ΞΫηεͰ͖Δ • ͨͩ͠ɺ͜Ε͸༗ޮظݶ͕௕͍ͷͰ ࿙Ӯ͢ΔͱηΩϡϦςΟΠϯγσϯτʹͳΓ͏Δ • Πϯϑϥจ຺Ͱ͸ɺ(௕ظؒ༗ޮͳ伴Λར༻͢Δ͜ͱͳ͘)ΦϯϓϨ؀ڥ, ଞͷΫϥ΢υαʔϏε͔Β Google CloudʹΞΫηεͰ͖ΔΑ͏ʹ͢ΔͨΊʹར༻ • ࠓճ͸ɺGitHub Actions͔ΒGoogle CloudʹΞΫηε͢ΔͨΊʹར༻  • ϦϙδτϦ໊ͰݖݶҠৡΛ੍ݶ͢Δ • ಛఆͷ৚݅Λຬͨ͢΋ͷͷΈೝূͰ͖ΔΑ͏ ʹ͢Δ • ʮΞΫηεΛڐՄʯ͔ΒWorkload Identity ࿈ܞͰར༻͢ΔαʔϏεΞΧ΢ϯτΛ࡞੒ͯ͠઀ ଓͯ͋͛͠Δ • IAMͰαʔϏεΞΧ΢ϯτʹʮFirebaseΞϓϦ ഑෍؅ཧऀʯϩʔϧΛ෇༩ͯ͋͛͠Δ -> ެࣜͷWorkflowΛ࢖ͬͯ͋͛Ε͹ೝূ׬ྃ
  26. 3-1. Google CloudͷWorkload Identity࿈ܞ Workload Identity Federationͱ͔͍͏΍ͭ • Workload Identity࿈ܞ

    (Workload Identity Federation) • Google Cloudͷ֎͔ΒɺGoogle CloudϦιʔεʹΞΫηε͢ΔͨΊʹ͸ɺαʔϏεΞΧ΢ϯτΩʔΛ ར༻ͯ͠ΞΫηεͰ͖Δ • ͨͩ͠ɺ͜Ε͸༗ޮظݶ͕௕͍ͷͰ ࿙Ӯ͢ΔͱηΩϡϦςΟΠϯγσϯτʹͳΓ͏Δ • Πϯϑϥจ຺Ͱ͸ɺ(௕ظؒ༗ޮͳ伴Λར༻͢Δ͜ͱͳ͘)ΦϯϓϨ؀ڥ, ଞͷΫϥ΢υαʔϏε͔Β Google CloudʹΞΫηεͰ͖ΔΑ͏ʹ͢ΔͨΊʹར༻ • ࠓճ͸ɺGitHub Actions͔ΒGoogle CloudʹΞΫηε͢ΔͨΊʹར༻  • ϦϙδτϦ໊ͰݖݶҠৡΛ੍ݶ͢Δ • ಛఆͷ৚݅Λຬͨ͢΋ͷͷΈೝূͰ͖ΔΑ͏ ʹ͢Δ • ʮΞΫηεΛڐՄʯ͔ΒWorkload Identity ࿈ܞͰར༻͢ΔαʔϏεΞΧ΢ϯτΛ࡞੒ͯ͠઀ ଓͯ͋͛͠Δ -> ެࣜͷWorkflowΛ࢖ͬͯ͋͛Ε͹ೝূ׬ྃ -> ͋ͱ͸ɺfirebase CLIͰAABΛΞοϓϩʔυ
  27. • CDΛ࣮૷͢Δ͜ͱͰɺͲͷλΠϛϯάͰ ͲΜͳঢ়ଶͰΞϓϦέʔγϣϯ͕σϓϩΠ͞Ε͔ͨΛ࢒͢͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔ • ݸਓ͝ͱͷ؀ڥґଘཁҼ΋ഉআͰ͖Δ • mise͸͍͍ͧ! • FlutterҎ֎ؚΊɺ͢΂ͯͷ։ൃऀπʔϧΛ·ͱΊͯΠϯετʔϧͪ͠Ό͍·͠ΐ͏ •

    [iOS, macOS] Xcode-managed CertificatesΛར༻͢Δ͜ͱͰɺ໘౗ͳূ໌ॻ؅ཧ͔Β୤٫Ͱ͖Δ • CD؀ڥͰϏϧυ͢Δ࣌͸ɺApp Store Connect API Keyܦ༝Ͱऔಘͤ͞ΒΕΔ • Flutter͔ͩΒͰ͖ͳ͍Έ͍ͨͳ͜ͱ͸ͳ͍͠ɺGitHub Actions͔Β΋ΞΫηεͰ͖Δ • [Android] Workload Identity࿈ܞΛར༻͢Δ͜ͱͰɺηΩϡΞʹσϓϩΠΛߦ͏͜ͱ͕Ͱ͖Δ • ௕ظؒੜଘ͢Δ伴Λอ࣋͢Δඞཁ͕ͳ͘ͳΔͨΊɺྲྀग़ͨ࣌͠ͷӨڹൣғΛڱΊΔ͜ͱ͕Ͱ͖Δ • ࠓճ͸Firebase App DistributionʹΞοϓϩʔυ͕ͨ͠ɺಉ༷ͷ࢓૊ΈͰGoogle Play Store΁όΠφϦΛΞο ϓϩʔυ͢Δ͜ͱ΋Մೳ •codemagicͱ͔Λ࢖ͬͯ΋ྑ͍͕ɺௐ΂ͳ͕ΒYAMLΛॻ͍͍ͯ͘ͷ΋ָ͍͠ •ࣗ෼ͷ஌Βͳ͍ϨΠϠʔͰͲΜͳ͜ͱ͕ߦΘΕ͍ͯΔͷ͔஌Δͷ͸େࣄ ·ͱΊ