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

Management of Environment Variables with YAMLs

Management of Environment Variables with YAMLs

417.72KI

May 10, 2019
Tweet

More Decks by 417.72KI

Other Decks in Programming

Transcript

  1. .BOBHFNFOUPG
    &OWJSPONFOU7BSJBCMFT
    XJUI:".-T

    4XJGUѪ޷ձWPM

    View Slide

  2. struct Me {
    let name = "Takuhiro Muta"
    let aka = "417.72KI"
    let experienceYears = 5
    let company = "iRidge inc."
    let twitter = "417_72ki"
    let qiita = "417_72ki"
    let gitHub = "417-72KI"
    let like = [
    "BEMANI",
    "Real Escape Game",
    "Bang Dream!",
    "LoveLive! Sunshine!!",
    "etc…"
    ]
    }
    TFMGEFTDSJQUJPO

    View Slide

  3. $BVUJPO

    View Slide

  4. %FpOJUJPOGPS
    &OWJSPONFOU7BSJBCMFTJOUIJTTFTTJPO
    w ❌
    w 130%[email protected]#6/%-&@*%&/5*'*&3
    w 05)&[email protected]*'[email protected]'-"(4
    w FUDʜ
    w ⭕
    w )PTUGPS"1*
    w $VTUPNFS,FZ4FDSFU
    w FUDʜ

    View Slide

  5. 5PNBOBHF
    FOWJSPONFOUWBSJBCMFT
    w YDDPOpH
    w 6TFS%FpOFE
    w 1SFQSPDFTTPS.BDSPT
    w 0UIFS4XJGU'MBHT

    View Slide

  6. #

    View Slide

  7. 8IZOPU
    YDDPOpH6TFS%FpOFE
    w 7BSJBCMFTEFpOFEJOUIFNBSFBMTPOFFEFE
    UPCFEFpOFEJO*OGPQMJTU
    w 3JTLPGUZQPDSBTI

    w *OGPQMJTUJTUIFpMFUPNBOBHF
    l*OGPSNBUJPOz
    let hoge = Bundle.main.object(forInfoDictionaryKey: "Hogehoge") as! String

    View Slide

  8. 8JTI
    "1*ZNM
    [email protected]
    DPOGZNM

    View Slide

  9. #VJME$POpHTXJGU

    View Slide

  10. #VJME$POpHTXJGU
    w $-*UPPMGPS"OESPJEMJLFNBOBHJOHFOWJSPONFOUWBSJBCMFT
    w .BOBHFWBSJBCMFTVTJOH:".-T+40/T
    w $BOSFQSFTFOUFOWJSPONFOUWBSJBCMFTJOBIJFSBSDIJDBM
    TUSVDUVSF
    w "VUPHFOFSBUF1MJTUBOE4XJGUpMF
    w (FUTUSPOHUZQFEBVUPDPNQMFUFE

    FOWJSPONFOUWBSJBCMFT
    w 3FTQFDUJOH3TXJGU Т

    View Slide

  11. #VJME$POpHTXJGU
    "1*ZNM
    [email protected]
    DPOGZNM
    #VJME$POpHQMJTU

    #VJME$POpHHFOFSBUFETXJGU

    View Slide

  12. 4PVSDF:".-T
    is_debug: true
    cognito:
    provider_key: DevHogeProvider
    client_id: devhogeclient
    pool_id: ap-northeast-devhoge
    region_name: ap-northeast-1
    CBTFZNM
    DPHOJUPZNM
    web_front:
    terms: https://dev.~
    faq: https://dev.~
    privacy: https://dev.~
    [email protected]
    is_debug: false
    cognito:
    provider_key: HogeProvider
    client_id: hogeclient
    pool_id: ap-northeast-hoge
    region_name: ap-northeast-1
    web_front:
    terms: https://prod.~
    faq: https://prod.~
    privacy: https://prod.~
    FOWQSPEVDUJPOZNM

    View Slide

  13. 3VO4DSJQU

    View Slide

  14. 3VO4DSJQU
    if [ "${CONFIGURATION}" = 'Release' ]; then
    ENVIRONMENT='production'
    elif [ "${CONFIGURATION}" = 'AdHoc' ]; then
    ENVIRONMENT='staging'
    else
    ENVIRONMENT='development'
    fi
    ${PODS_ROOT}/BuildConfig.swift/buildconfigswift
    -o ${SRCROOT}/Libs/BuildConfig_swift
    -e $ENVIRONMENT
    ${SRCROOT}/Resources/Config

    View Slide

  15. 3VO4DSJQU
    if [ "${CONFIGURATION}" = 'Release' ]; then
    ENVIRONMENT='production'
    elif [ "${CONFIGURATION}" = 'AdHoc' ]; then
    ENVIRONMENT='staging'
    else
    ENVIRONMENT='development'
    fi
    ${PODS_ROOT}/BuildConfig.swift/buildconfigswift
    -o ${SRCROOT}/Libs/BuildConfig_swift
    -e $ENVIRONMENT
    ${SRCROOT}/Resources/Config
    4FUFOWJSPONFOUDPSSFTQPOEJOHUP#VJME$POpHVSBUJPO

    View Slide

  16. 3VO4DSJQU
    if [ "${CONFIGURATION}" = 'Release' ]; then
    ENVIRONMENT='production'
    elif [ "${CONFIGURATION}" = 'AdHoc' ]; then
    ENVIRONMENT='staging'
    else
    ENVIRONMENT='development'
    fi
    ${PODS_ROOT}/BuildConfig.swift/buildconfigswift
    -o ${SRCROOT}/Libs/BuildConfig_swift
    -e $ENVIRONMENT
    ${SRCROOT}/Resources/Config
    4FUPVUQVUEJSFDUPSZ

    View Slide

  17. 3VO4DSJQU
    if [ "${CONFIGURATION}" = 'Release' ]; then
    ENVIRONMENT='production'
    elif [ "${CONFIGURATION}" = 'AdHoc' ]; then
    ENVIRONMENT='staging'
    else
    ENVIRONMENT='development'
    fi
    ${PODS_ROOT}/BuildConfig.swift/buildconfigswift
    -o ${SRCROOT}/Libs/BuildConfig_swift
    -e $ENVIRONMENT
    ${SRCROOT}/Resources/Config
    4FUEJSFDUPSZDPOUBJOTSFTPVSDF:".-T

    View Slide

  18. #VJME$POpHQMJTU
    EFWFMPQNFOU

    View Slide

  19. #VJME$POpHQMJTU
    QSPEVDUJPO

    View Slide

  20. #VJME$POpHQMJTU
    QSPEVDUJPO

    w #JOBSZGPSNBUCZUFT
    w 9.-GPSNBUCZUFT

    View Slide

  21. #VJME$POpHHFOFSBUFETXJGU
    struct BuildConfig: Codable {
    static let `default`: BuildConfig = .load()
    let cognito: Cognito
    let isDebug: Bool
    let webFront: WebFront
    }
    extension BuildConfig {
    struct Cognito: Codable {
    let clientId: String
    let poolId: String
    let providerKey: String
    let regionName: String
    }
    }
    extension BuildConfig {
    struct WebFront: Codable {
    let faq: String
    let privacy: String
    let terms: String
    }
    }

    View Slide

  22. $BMMJOHFYBNQMF
    let url = URL(string: BuildConfig.default.webFront.faq)!
    webView.load(URLRequest(url: url))

    View Slide

  23. $VSSFOUUBTL
    w $BOOPUQBSTFA%PVCMFA
    w 4VQQPSU.JOUJOTUBMMBUJPO
    w &TDBQFLFZTXJUISFTFSWFEXPSET
    w %FNP"QQ

    View Slide

  24. "OESPJEMJLF

    View Slide

  25. "OESPJE`T#VJME$POpH
    w 4FUCVJME$POpH'JFMEJOCVJMEHSBEMF
    w $BOTFUGPSFBDICVJME5ZQFQSPEVDU'MBWPS

    View Slide

  26. CVJMEHSBEMF
    buildTypes {
    debug {
    buildConfigField 'boolean', 'ACCESS_LOG', 'false'
    buildConfigField 'String', 'WEBAPI_URL', '"http://dev.example.com/api/"'
    }
    release {
    buildConfigField 'boolean', 'ACCESS_LOG', 'true'
    buildConfigField 'String', 'WEBAPI_URL', '"http://example.com/api/"'
    }
    }

    View Slide

  27. #VJME$POpHKBWB EFCVH

    public final class BuildConfig {
    public static final boolean DEBUG = Boolean.parseBoolean(“true");
    ɾ
    ɾ
    ɾ
    // Fields from build type: debug
    public static final boolean ACCESS_LOG = false;
    public static final String WEBAPI_URL = "http://dev.example.com/api/";
    }

    View Slide

  28. #VJME$POpHKBWB SFMFBTF

    public final class BuildConfig {
    public static final boolean DEBUG = false;
    ɾ
    ɾ
    ɾ
    // Fields from build type: release
    public static final boolean ACCESS_LOG = true;
    public static final String WEBAPI_URL = "http://example.com/api/";
    }

    View Slide

  29. IUUQTHJUIVCDPN,*#VJME$POpHTXJGU

    View Slide