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

CICDを導入して変わった モバイルアプリ開発体制

CICDを導入して変わった モバイルアプリ開発体制

NIFTY Tech Day 2022
https://techday.nifty.co.jp/2022/#time-1655

【CICDを導入して変わった モバイルアプリ開発体制】
ニフティライフスタイル株式会社のアプリ開発チームでは、手動でビルドやデプロイを実施していた状態からCI/CDツールを導入し、2年間かけて「モバイルアプリ開発の効率化」を実施してきました!
今回はツール(Firebase App Distribution, Bitriseなど)の選定理由や導入後の進め方から活用事例まで「0からここまで出来た」を実際の設定内容を用いて紹介します!
「CI/CDツールがあると良い」ということは分かっているが実際何が出来るのか分からない、何から始めたら良いか分からない、そんな方はぜひ聴きに来てください!

saikei (Keisuke Saito)

November 22, 2022
Tweet

More Decks by saikei (Keisuke Saito)

Other Decks in Programming

Transcript

  1. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    $*$%Λಋೖͯ͠มΘͬͨ
    ϞόΠϧΞϓϦ։ൃମ੍
    χϑςΟϥΠϑελΠϧגࣜձࣾ
    γεςϜ։ൃ෦ ΞϓϦ։ൃνʔϜ
    ᜊ౻ ܓ༞

    View full-size slide

  2. ΞδΣϯμ
    ࣗݾ঺հ
    $*$%Λ࢖ͬͨ՝୊ղܾ
    ·ͱΊ
    ೥લͷ։ൃ্ͷ՝୊
    $*$%Λಋೖͯ͠มΘͬͨϞόΠϧΞϓϦ։ൃମ੍
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  3. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ࣗݾ঺հ
    ᜊ౻ ܓ༞
    χϑςΟϥΠϑελΠϧגࣜձࣾ
    γεςϜ։ൃ෦ ΞϓϦ։ൃνʔϜ
    n ৽ଔೖࣾ೥໨
    n ओʹχϑςΟෆಈ࢈ͷJ04ΞϓϦͷ։ൃΛ୲౰
    n ೥݄ʙࡏ୐த৺Ͱۀ຿த

    View full-size slide

  4. ձࣾ঺հ
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ૝૾Ҏ্ΛɺΈ͚ͭΑ͏ɻ
    lҰਓͻͱΓz ͷϥΠϑελΠϧΛศརͰ๛͔ʹɻ

    View full-size slide

  5. ձࣾ঺հɿαʔϏε঺հ
    ௞ି෺݅ݕࡧ
    ߪೖ෺݅ݕࡧ
    ܝࡌ෺݅਺ ໿1,300ສ݅※
    ௞ି͔Βߪೖ·Ͱɺ
    Ո୳͠ͳΒ͓·͔ͤͷ
    ෆಈ࢈෺݅ҰׅݕࡧܕαʔϏε
    ΞϧόΠτݕࡧ
    ܝࡌٻਓ਺ ໿360ສ݅※
    όΠτ΋స৬΋ɺ
    ࢓ࣄ୳͠ͳΒ͓·͔ͤͷ
    ٻਓҊ݅ҰׅݕࡧܕαʔϏε
    ೔ؼΓԹઘݕࡧ
    ܝࡌࢪઃ਺ ໿1.6ສ݅※
    શࠃͷ೔ؼΓԹཋࢪઃͷ৘ใ΍
    ͓ಘͳΫʔϙϯ৘ใ/ޱίϛͷ
    ಠࣗఏڙαʔϏε
    ※2022೥3݄຤࣮੷
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  6. ձࣾ঺հɿྦྷܭμ΢ϯϩʔυ਺
    ྦྷܭ
    1,000ສ
    μ΢ϯϩʔυಥഁ
    ※2021೥9݄
    J04"OESPJE
    ϦϦʔε
    "OESPJE
    ϦϦʔε
    "OESPJE
    ϦϦʔε
    J04
    ϦϦʔε
    "OESPJE
    ϦϦʔε
    J04
    ϦϦʔε
    J04
    ϦϦʔε
    2022年3月期
    2021年3月期
    2020年3月期
    2019年3月期
    2018年3月期
    2017年3月期
    2016年3月期
    2015年3月期
    2014年3月期
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  7. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    χϑςΟϥΠϑελΠϧגࣜձࣾ ͷΞϓϦͷ੒௕Λࢧ͍͑ͯΔͷ͕
    ࠓճ͓࿩͢͠Δ$*$%Ͱ͢ʂ

    View full-size slide

  8. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    $*$%ͱ͸Կ͔
    u $*ʢ$POUJOVPVT*OUFHSBUJPOʣ ܧଓతΠϯςάϨʔγϣϯ
    u ιϑτ΢ΣΞͷมߋΛৗʹςετ͠඼࣭Λ୲อ͢ΔͨΊͷ࢓૊Έ
    u $%ʢ$POUJOVPVT%FMJWFSZʣ ܧଓతσϦόϦʔ
    u ιϑτ΢ΣΞΛࣗಈͰ഑৴Ͱ͖Δঢ়ଶʹ͢ΔͨΊͷ࢓૊Έ
    u ༗໊ͳαʔϏε
    u ΦϯϓϨɿ+FOLJOT
    u Ϋϥ΢υɿ(JU)VC"DUJPOTɺ"84$PEF#VJMEɺ$JSDMF$*ɺ#JUSJTF

    View full-size slide

  9. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    u ϞόΠϧΞϓϦ޲͚ͷ؀ڥ͕ॆ࣮͍ͯ͠Δ
    u ࠷৽൛ͷ9DPEF΁ͷରԠ͕ૣ͍
    u ೥݄ͷ࣌఺Ͱ9DPEFCFUBʹରԠɺ3$൛΋ϦϦʔε౰೔ʹରԠ
    u ϫʔΫϑϩʔͷߏங͕ࢹ֮తʹߦ͑ΔͳͲμογϡϘʔυ͕࢖͍΍͍͢
    u ֤छূ໌ॻͳͲͷൿಗԽͳͲɺࣾ಺ͷηΩϡϦςΟج४Λຬͨ͢ηΩϡϦ
    ςΟͷߴ͞
    ʜͳͲෳ਺αʔϏεΛൺֱ͠ɺ
    χϑςΟϥΠϑελΠϧͷΞϓϦ։ൃνʔϜͰ͸#JUSJTFΛ࠾༻͠·ͨ͠ 🎉
    #JUSJTFΛ࠾༻

    View full-size slide

  10. ϞόΠϧΞϓϦ։ൃͷ՝୊Λ
    $*$%Λಋೖͯ͠ղܾ͠·ͨ͠ʂ
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    ϞόΠϧΞϓϦ
    ։ൃͷ՝୊
    ๊͍͑ͯͨ՝୊Λղܾ͠
    ։ൃޮ཰Ξοϓˢ

    View full-size slide

  11. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ೥લ ೥
    ͷ։ൃ্ͷ՝୊
    ։ൃதΞϓϦͷ഑৴࡞ۀ͕େมͩͬͨ
    13Ϛʔδޙʹςετίʔυ͕௨Βͳ͘ͳΔ
    ͜ͱ͕͋ͬͨ

    ϞόΠϧΞϓϦ
    ։ൃͷ՝୊
    $*$%ಋೖલ

    View full-size slide

  12. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ೥લ ೥
    ͷ։ൃ্ͷ՝୊
    ։ൃதΞϓϦͷ഑৴࡞ۀ͕େมͩͬͨ
    13Ϛʔδޙʹςετίʔυ͕௨Βͳ͘ͳΔ
    ͜ͱ͕͋ͬͨ

    ϞόΠϧΞϓϦ
    ։ൃͷ՝୊
    $*$%ಋೖલ
    $%
    $*

    View full-size slide

  13. ೥લ ೥
    ͷ։ൃ্ͷ՝୊
    ͭ໨
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    $*$%ಋೖલ

    View full-size slide

  14. u ΞϓϦͷ഑৴࡞ۀʹ࡞ۀ͕࣌ؒୣΘΕ͍ͯͨ
    u ഑৴࡞ۀத͸ίʔυͷॻ͖׵͕͑Ͱ͖ͳ͍
    u ഑৴࡞ۀத͸1$͕ॏ͘ͳΓ࡞ۀ͕··ͳΒͳ͘ͳΔ
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ։ൃதΞϓϦͷ഑৴࡞ۀ͕େมͩͬͨ
    u ϩʔΧϧ؀ڥͷϒϥϯνঢ়ଶ౳ͰϥΠϒϥϦ΍4%,ͷόʔδϣϯ
    ࠩҟ͕ൃੜ͍ͯͨ͠
    u ಈ࡞֬ೝͨ͠ޙʹϥΠϒϥϦ΍4%,ͷόʔδϣϯࠩҟʹΑΔෆ۩߹͕
    ൃੜ͢Δࣄ͕͋ͬͨ

    View full-size slide

  15. $%Λಋೖͯ͠
    ʮ։ൃதΞϓϦʯͷ഑৴ͷࣗಈԽ
    Λ࣮ࢪ͠·ͨ͠ʂ
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  16. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ͔ΒΞϓϦΛ഑৴Ͱ͖ΔΑ͏ʹ͢Δ·Ͱ
    • #JUSJTF্ͰΞϓϦΛϏϧυͰ͖ΔΑ͏ʹ͢Δ
    • ϩʔΧϧ؀ڥͰίϚϯυܦ༝ͷΞϓϦͷ഑৴Λߦ͑ΔΑ͏ʹ͢Δ
    • ΞϓϦͷ഑৴Λ͢ΔͨΊͷखॱʢϫʔΫϑϩʔʣΛ#JUSJTF্ʹߏங͢Δ
    • ϫʔΫϑϩʔΛಈ͔ͨ͢Ίͷ͖͔͚ͬʢτϦΨʔʣΛઃఆ͢Δ
    • τϦΨʔ͕ൃՐ͢ΔͱΞϓϦ͕഑৴͞ΕΔ 🚀

    View full-size slide

  17. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    #JUSJTF্ͰΞϓϦΛϏϧυͰ͖ΔΑ͏ʹ͢Δ
    ίϚϯυΛෳ਺ୟ͘ඞཁͷ͋ͬͨʮ؀ڥߏங࡞ۀʯΛ.BLFGJMFʹ·ͱΊΔ
    $ bundle install
    $ mint bootstrap
    $ bundle exec pod install
    $ mint run carthage carthage $ bootstrap
    --platform iOS -- $ cache-builds
    $ mint run swiftgen swiftgen
    $ make
    .PHONY: init
    init:
    defaults write com.apple.dt.Xcode
    ShowBuildOperationDuration YES
    make bootstrap
    make generate
    make open
    .PHONY: bootstrap
    bootstrap:
    make bootstrap_bundler
    make bootstrap_mint
    make bootstrap_pods
    make bootstrap_cartage
    .PHONY: bootstrap_bundler
    bootstrap_bundler:
    bundle install
    .PHONY: bootstrap_mint
    bootstrap_mint:
    mint bootstrap $(Option)
    .PHONY: bootstrap_pods
    bootstrap_pods:
    bundle exec pod install
    .PHONY: bootstrap_cartage
    // ҎԼলུ
    ʮ؀ڥߏஙʯίϚϯυ .BLFGJMF

    View full-size slide

  18. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ϩʔΧϧ؀ڥͰίϚϯυܦ༝ͷΞϓϦͷ഑৴Λߦ͑ΔΑ͏ʹ͢Δ
    9DPEFΛૢ࡞͢Δඞཁͷ͋ͬͨʮΞϓϦͷ഑৴ʯΛίϚϯυͰ࣮ߦͰ͖ΔΑ
    ͏ʹ͢Δ
    $ bundle exec fastlane app_distribution
    ಋೖʂ

    View full-size slide

  19. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ΞϓϦͷ഑৴Λ͢ΔͨΊͷखॱʢϫʔΫϑϩʔʣ
    Λ#JUSJTF্ʹߏங͢Δ
    @1SFQBSBUJPO
    n ιʔείʔυΛ༻ҙ͢Δʮ४උϑΣʔζʯ
    @$BDIF1VMM
    n #JUSJTF্ʹอଘࡁΈͷલճΩϟογϡΛμ΢ϯϩʔυ
    @#PPUTUSBQ
    n ΞϓϦͰ࢖༻͍ͯ͠Δπʔϧ΍ϥΠϒϥϦͷμ΢ϯϩʔ
    υΠϯετʔϧ

    View full-size slide

  20. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ΞϓϦͷ഑৴Λ͢ΔͨΊͷखॱʢϫʔΫϑϩʔʣ
    Λ#JUSJTF্ʹߏங͢Δ
    @%FQMPZ5P"QQ%JTUSJCVUJPO
    n 4FU9DPEF 1SPKFDU#VJME/VNCFSϏϧυ൪߸Λ#JUSJTFͷϏ
    ϧυ൪߸ʹมߋ
    n 'JSFCBTF$-*"QQ%JTUSJCVUJPOʹ্͛ΔͨΊͷπʔϧ
    n $FSUJGJDBUFBOEQSPGJMFJOTUBMMূ໌ॻྨͷΠϯετʔϧ
    n %PXOMPBE"QQ%JTUSJCVUJPO,FZূ໌ॻྨͷΠϯετʔϧ
    n "QQ%JTUSJCVUJPO"QQ%JTUSJCVUJPO΁ͷެ։
    n 6QMPBEE4:.T E4:.ϑΝΠϧΛ$SBTIMZUJDT΁Ξοϓϩʔυ
    @4FOE4MBDL#Z"QQ%JTUSJCVUJPO
    n "QQ%JTUSJCVUJPO΁ͷެ։Λ4MBDLʹ௨஌͢Δ

    View full-size slide

  21. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ϫʔΫϑϩʔΛಈ͔ͨ͢Ίͷ͖͔͚ͬʢτϦΨʔʣΛઃఆ͢Δ
    n ࢦఆͨ͠৚݅ʹҰக͢ΔϒϥϯνʹQVTI͞Εͨ࣌
    n ࢦఆͨ͠৚݅ʹҰக͢Δ13͕࡞੒ɾߋ৽͞Εͨ࣌
    n ࢦఆͨ͠৚݅ʹҰக͢Δλά͕࡞੒͞Εͨ࣌
    τϦΨʔʹઃఆͰ͖Δ৚݅

    View full-size slide

  22. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ϫʔΫϑϩʔΛಈ͔ͨ͢Ίͷ͖͔͚ͬʢτϦΨʔʣΛઃఆ͢Δ
    n BQQ@EJTUSJCVUJPO ʹҰக͢Δλά͕࡞੒͞Εͨࡍʹಈ͘Α͏ʹઃఆ
    n "QQ%JTUSJCVUJPOͷʮϦϦʔεϊʔτʯʹDPNNJUϝοηʔδΛ࠾༻
    τϦΨʔʹઃఆͨ͠৚݅

    View full-size slide

  23. $%ͷಋೖ׬ྃ 🎉
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  24. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    commit b4d580bf314feb758bb3c1470a6285b03dfa8148 (HEAD -> feat/test-branch,
    tag: app_distribution/feat/test-branch/1664776566, origin/feat/test-branch)
    Author: saikei
    Date: Mon Oct 3 14:56:07 2022 +0900
    [഑৴ςετ]
    ίϛοτϝοηʔδ͕ϦϦʔεϊʔτʹͳΓ·͢ʂ
    ᶃ τϦΨʔΛൃՐͤ͞Δ
    ᶄ "QQ%JTUSJCVUJPO΁ͷެ։ˍ4MBDL௨஌
    τϦΨʔΛൃՐͤ͞Δ

    View full-size slide

  25. $%Λಋೖͯ͠ղܾʂʢ#FGPSF

    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ᶃ ϩʔΧϧʣϏϧυ൪߸Λมߋ
    ᶄ ϩʔΧϧʣ9DPEFͰϦϦʔεϏϧυ༻ͷઃఆΛߦ͏
    ᶅ ϩʔΧϧʣϏϧυΛ࣮ࢪ
    ᶆ 5FTU'MJHIUʹެ։ 🚀
    #FGPSF
    u ॴཁ࣌ؒɿ෼ʙ෼ؒ
    u ϩʔΧϧ؀ڥ߆ଋ࣌ؒɿ෼ʙ෼ؒ
    5FTU'MJHIU
    ͜ͷؒ͸ϩʔΧϧ؀ڥͰ࡞ۀ͕Ͱ͖ͳ͍ঢ়ଶ

    View full-size slide

  26. u ॴཁ࣌ؒɿ෼ؒ
    u ϩʔΧϧ؀ڥ߆ଋ࣌ؒɿඵʙ෼ؒ
    $%Λಋೖͯ͠ղܾʂʢ"GUFS

    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ᶃ ϩʔΧϧʣίϚϯυΛͭೖྗ
    ᶄ #JUSJTFʣϏϧυΛ࣮ࢪ
    ᶅ "QQ%JTUSJCVUJPOʹެ։ 🚀
    "GUFS
    ഑৴தʹଞͷ࣮૷͕Ͱ͖Δ 🎉

    View full-size slide

  27. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ೥લ ೥
    ͷ։ൃ্ͷ՝୊
    ։ൃதΞϓϦͷ഑৴࡞ۀ͕େมͩͬͨ
    13Ϛʔδޙʹςετίʔυ͕௨Βͳ͘ͳΔ
    ͜ͱ͕͋ͬͨ

    ϞόΠϧΞϓϦ
    ։ൃͷ՝୊
    $*$%ಋೖલ

    View full-size slide

  28. ೥લ ೥
    ͷ։ൃ্ͷ՝୊
    ͭ໨
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    $*$%ಋೖલ

    View full-size slide

  29. u ςετίʔυ͸͋Δ͕Ϣχοτςετͷ࣮ߦΛڧ੍͢Δ࢓૊Έ
    ͕ͳ͔ͬͨ
    u ςετίʔυͷ࣮ߦ͸13࡞੒ऀʹҕͶΒΕ͍ͯͨ
    u ςετ݁Ռ͸ςετ࣮ߦ୺຤ͷϩʔΧϧ؀ڥʹ͔͠࢒͍ͬͯͳ͔ͬͨ
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    13ΛϚʔδͨ͠ޙʹςετίʔυ͕௨Βͳ͘ͳΔ͜ͱ͕͋ͬͨ

    View full-size slide

  30. $*Λಋೖͯ͠
    13࡞੒࣌ͷςετ࣮ߦࣗಈԽ
    Λ࣮ࢪ͠·ͨ͠ʂ
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  31. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    13࡞੒࣌ͷςετ࣮ߦΛࣗಈԽͰ͖ΔΑ͏ʹͳΔ·Ͱ
    • #JUSJTF্ͰΞϓϦΛϏϧυͰ͖ΔΑ͏ʹ͢Δ
    • ςετΛ࣮ߦ͢ΔͨΊͷखॱʢϫʔΫϑϩʔʣΛ#JUSJTF্ʹߏங͢Δ
    • ϫʔΫϑϩʔΛಈ͔ͨ͢Ίͷ͖͔͚ͬʢτϦΨʔʣΛઃఆ͢Δ
    • τϦΨʔ͕ൃՐ͢Δͱςετ͕࣮ߦɾ௨஌͞ΕΔ

    View full-size slide

  32. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    #JUSJTF্ͰΞϓϦΛϏϧυͰ͖ΔΑ͏ʹ͢Δ
    ίϚϯυΛෳ਺ୟ͘ඞཁͷ͋ͬͨʮ؀ڥߏங࡞ۀʯΛ.BLFGJMFʹ·ͱΊΔ
    $ bundle install
    $ mint bootstrap
    $ bundle exec pod install
    $ mint run carthage carthage $ bootstrap
    --platform iOS -- $ cache-builds
    $ mint run swiftgen swiftgen
    $ make
    .PHONY: init
    init:
    defaults write com.apple.dt.Xcode
    ShowBuildOperationDuration YES
    make bootstrap
    make generate
    make open
    .PHONY: bootstrap
    bootstrap:
    make bootstrap_bundler
    make bootstrap_mint
    make bootstrap_pods
    make bootstrap_cartage
    .PHONY: bootstrap_bundler
    bootstrap_bundler:
    bundle install
    .PHONY: bootstrap_mint
    bootstrap_mint:
    mint bootstrap $(Option)
    .PHONY: bootstrap_pods
    bootstrap_pods:
    bundle exec pod install
    .PHONY: bootstrap_cartage
    // ҎԼলུ
    ʮ؀ڥߏஙʯίϚϯυ .BLFGJMF
    $%ͱಉ༷ͷͨΊলུ

    View full-size slide

  33. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ΞϓϦͷ഑৴Λ͢ΔͨΊͷखॱʢϫʔΫϑϩʔʣ
    Λ#JUSJTF্ʹߏங͢Δ
    @1SFQBSBUJPO
    n ιʔείʔυΛ༻ҙ͢Δʮ४උϑΣʔζʯ
    @$BDIF1VMM
    n #JUSJTF্ʹอଘࡁΈͷલճΩϟογϡΛμ΢ϯϩʔυ
    @#PPUTUSBQ
    n ΞϓϦͰ࢖༻͍ͯ͠Δπʔϧ΍ϥΠϒϥϦͷμ΢ϯϩʔ
    υΠϯετʔϧ
    લ൒͸$%ͱಉ༷ͷͨΊলུ

    View full-size slide

  34. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ΞϓϦͷ഑৴Λ͢ΔͨΊͷखॱʢϫʔΫϑϩʔʣ
    Λ#JUSJTF্ʹߏங͢Δ
    $*
    n ίʔυͷ੩తղੳ 4XJGU-JOU
    ͷ࣮ߦ
    n ςετίʔυͷ࣮ߦ
    @(JU)VC4UBUVT
    n (JU)VCͷ13ʹςετ݁ՌΛ௨஌
    @4FOE4MBDL#Z$*
    n 4MBDLʹςετ݁ՌΛ௨஌

    View full-size slide

  35. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ϫʔΫϑϩʔΛಈ͔ͨ͢Ίͷ͖͔͚ͬʢτϦΨʔʣΛઃఆ͢Δ
    n GFBU ΍ CVHGJY ͕ϕʔεͱͳΔ13͕࡞੒ɾߋ৽͞Εͨࡍʹಈ͘Α
    ͏ʹઃఆ
    τϦΨʔʹઃఆͨ͠৚݅

    View full-size slide

  36. $*ͷಋೖ׬ྃ 🎉
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  37. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ᶃ τϦΨʔΛൃՐͤ͞Δ
    ᶄ Ϣχοτςετͷ࣮ߦ ˍ 13΁ͷ݁Ռ൓ө ˍ 4MBDL௨஌
    τϦΨʔΛൃՐͤ͞Δ

    View full-size slide

  38. $*Λಋೖͯ͠ղܾʂʢ#FGPSF

    ᶃ 13Λ࡞੒
    ᶄ ϩʔΧϧͰςετΛ࣮ߦ
    ᶅ ϨϏϡʔґཔ
    ᶆ ϨϏϡʔमਖ਼
    ᶇ ϩʔΧϧͰςετΛ࣮ߦ
    ᶈ ϨϏϡʔঝೝ ✅
    ᶉ Ϛʔδ 🎉
    #FGPSF
    ʮςετͷ࣮ߦʯ͕13࡞੒ऀʹҕͶΒΕ͍ͯͨ
    ʮςετͷ࣮ߦ݁Ռʯͷ֬ೝϑϩʔ͕ແ͔ͬͨ
    ՝୊ʢ໰୊఺ʣ
    ˞ϨϏϡϫʔ͔Βͷঝೝˍςετ௨ա͢Δ·Ͱ܁Γฦ͠
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  39. "GUFS
    $*Λಋೖͯ͠ղܾʂʢ"GUFS

    ᶃ 13Λ࡞੒
    ᶄ #JUSJTF͕ςετΛ࣮ߦ
    ᶅ ϨϏϡʔґཔ
    ᶆ ϨϏϡʔमਖ਼
    ᶇ #JUSJTF͕ςετΛ࣮ߦ
    ᶈ ϨϏϡʔঝೝ ✅ ςετ௨ա ✅
    ᶉ Ϛʔδ 🎉
    ˞ϨϏϡϫʔ͔Βͷঝೝˍςετ௨ա͢Δ·Ͱ܁Γฦ͠
    ʮςετͷ࣮ߦʯ͕13࡞੒ऀʹҕͶΒΕ͍ͯͨ
    ü ςετ͕ࣗಈͰ࣮ߦ͞ΕΔΑ͏ʹͳͬͨ 🎉
    ʮςετͷ࣮ߦ݁Ռʯͷ֬ೝϑϩʔ͕ແ͔ͬͨ
    ü Ϛʔδ৚݅ʹʮςετ௨աʯΛ௥Ճ 🎉
    ՝୊ʢ໰୊఺ʣ
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  40. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ೥લ ೥
    ͷ։ൃ্ͷ՝୊
    ։ൃதΞϓϦͷ഑৴࡞ۀ͕େมͩͬͨ
    13Ϛʔδޙʹςετίʔυ͕௨Βͳ͘ͳΔ
    ͜ͱ͕͋ͬͨ

    ๊͍͑ͯͨ՝୊Λղܾ͠
    ։ൃޮ཰Ξοϓˢ
    $*$%ಋೖલ

    View full-size slide

  41. $*$%Λಋೖͯ͠มΘͬͨ
    ϞόΠϧΞϓϦ։ൃମ੍
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    χϑςΟϥΠϑελΠϧגࣜձࣾ ͷ

    View full-size slide

  42. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ։ൃதΞϓϦͷϓϩμΫτϨϏϡʔ͕ߦ͍΍͘͢ͳͬͨ🎉
    #FGPSFʢࡏ୐ۈ຿։࢝લʣ
    ։ൃνʔϜʣ
    ݕূ୺຤Ͱ࣮ػϏϧυ
    اըνʔϜʣ
    ݕূ୺຤Ͱಈ࡞֬ೝ
    ˍ6*ௐ੔ґཔ

    View full-size slide

  43. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ։ൃதΞϓϦͷϓϩμΫτϨϏϡʔ͕ߦ͍΍͘͢ͳͬͨ🎉
    #FGPSFʢࡏ୐ۈ຿։࢝௚ޙʣ
    ։ൃνʔϜʣ
    ݕূ୺຤ͰεΫγϣ΍
    ಈըࡱӨ
    اըνʔϜʣ
    1$্ͰεΫγϣ֬ೝ
    ˍ6*ௐ੔ґཔ
    u εΫγϣͰݟͨ࣌ͷΠϝʔδͱ࣮ػͰݟͨΠϝʔδͰ͕ࠩ͋ͬͨ
    u ࣮ࡍʹ৮ͬͨࡍʹɺ૝ఆ͍ͯͨ͠෺ͱ͸ҧ͏ڍಈͩͬͨ
    ʜͳͲͷཧ༝Ͱɺमਖ਼΍ख໭Γ͕ൃੜ 🛠

    View full-size slide

  44. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ։ൃதΞϓϦͷϓϩμΫτϨϏϡʔ͕ߦ͍΍͘͢ͳͬͨ🎉
    ։ൃνʔϜʣ
    ։ൃόʔδϣϯΛ
    "QQ%JTUSJCVUJPOʹެ։
    اըνʔϜʣ
    ࣮ػͰΠϯετʔϧ
    ˍ6*ௐ੔ґཔ
    "GUFS
    ϑΥϯταΠζ΍৭ຯͳͲʮෳ਺ύλʔϯʯΛ഑৴ͯ͠൑அͯ͠໯͑ΔΑ͏ʹͳͬͨ 🎉

    View full-size slide

  45. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    13ϨϏϡʔͷ͕࣌ؒ୹ॖˍίʔυͷ඼࣭͕޲্ͨ͠ 🎉
    n ίʔυͷࡉ͔͍ମࡋͷࢦఠΛखಈͰߦͳ͍ͬͯͨ
    n ΫϥογϡͷՄೳੑ͕͋ΔίʔυΛݟಀͯ͠͠·͏ࣄ͕͋ͬͨ
    #FGPSF
    վߦ͍ͯͩ͘͠͞ʂ
    εϖʔεΛೖΕͯʂ
    ͜ͷม਺໊௕͗͢ΔͷͰ
    ୹ͯ͘͠ཉ͍͠Ͱ͢ʂ
    ΠϯΠϯσϯτͷ਺Λ߹
    Θ͍ͤͯͩ͘͞ʂ
    վߦίʔυ͕ҧ͏ʂ
    50%0ίϝϯτ࢒ͬ
    ͯΔʂ
    ߦ຤ηϛίϩϯෆཁʂ
    มͳεϖʔεೖͬͯΔʂ

    View full-size slide

  46. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    13ϨϏϡʔͷ͕࣌ؒ୹ॖˍίʔυͷ඼࣭͕޲্ͨ͠ 🎉
    n $*Λ༻͍ͯίʔυͷࡉ͔͍ମࡋͷࢦఠ͸ࣗಈͰ࣮ࢪˍ13΁ίϝϯτ͞ΕΔΑ
    ͏ʹͳͬͨ
    n ΫϥογϡͷՄೳੑ͕͋Δॻ͖ํͳͲةݥͳॻ͖ํΛ͍ͯ͠Δίʔυ΋13্
    ʹܯࠂ͕දࣔ͞ΕΔΑ͏ʹͳͬͨ
    "GUFS

    View full-size slide

  47. #JUSJTFΛͲΕ͘Β͍׆༻Ͱ͖͍ͯΔ͔
    ࣌ؒ ೔
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ˞Ӧۀ೔ d
    ͰEIN ࣌ؒ #JUSJTF *OTJHIUΑΓ

    View full-size slide

  48. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ࠓޙͷల๬
    n ֤छϥΠϒϥϦ؅ཧͷࣗಈԽ
    n ఆظతʹΞοϓσʔτͷ༗ແΛ֬ೝ͠ʮಈ࡞֬ೝ༻ͷΞϓϦͷΞοϓϩʔ
    υʯˍʮϓϧϦΫΤετͷ࡞੒ʯΛߦ͏
    n ϦϦʔεόʔδϣϯ NBJOϒϥϯν
    Ͱͷఆظతͳ$*࣮ࢪ
    n ։ൃ؀ڥ޲͖Ϗϧυ഑෍ͷ؆ུԽ
    ʜͳͲҾ͖ଓ͖վળ׆ಈΛଓ͚͍͖ͯ·͢ 🎉

    View full-size slide

  49. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    ·ͱΊ
    n ։ൃϝϯόʔ͸ɺޮ཰Α͘։ൃ͕ਐΊΒΕΔΑ͏ʹͳΓ޾ͤʹͳͬͨ 🎉
    n اըϝϯόʔ΋ɺؾܰʹ࣮ػ֬ೝ͕Ͱ͖ΔΑ͏ʹͳΓ޾ͤʹͳͬͨ 🎉
    χϑςΟϥΠϑελΠϧגࣜձࣾͷϞόΠϧΞϓϦ։ൃ
    ମ੍͸ɺ$*$%ͷಋೖͰେ͖͘มΘΓ·ͨ͠ʂ

    View full-size slide

  50. ࠷ޙʹʜ
    $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide

  51. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    χϑςΟϥΠϑελΠϧגࣜձࣾͰ͸
    Ұॹʹಇ͘஥ؒΛืूதͰ͢ʂ
    IUUQTOJGUZMJGFTUZMFDPKQDBSFFST

    View full-size slide

  52. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE
    χϑςΟϥΠϑελΠϧ 5&$)#-0(
    IUUQTUFDIOJGUZMJGFTUZMFDPKQ

    View full-size slide

  53. $PQZSJHIU˜/*'5:-JGFTUZMF$P -UE"MM3JHIUT3FTFSWFE

    View full-size slide