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

LINEとLINE Creators Studio iOSアプリのサーバーAPI呼び出しアーキテクチャをリファクタリングした話 / Refactor API invocation archtecture in LINE & LINE Creators Studio

LINEとLINE Creators Studio iOSアプリのサーバーAPI呼び出しアーキテクチャをリファクタリングした話 / Refactor API invocation archtecture in LINE & LINE Creators Studio

2019/2/13に開催されたLINE Developer Meetup #50 in Fukuokaでの登壇資料です

LINE Developers

February 13, 2019
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

  1. LINE Fukuoka ։ൃ1ࣨ ։ൃCνʔϜ ͸Δ;(@_ha1f) LINEͱLINE Creators Studio iOSΞϓϦͷ αʔόʔAPIݺͼग़͠

    ΞʔΩςΫνϟΛ ϦϑΝΫλϦϯάͨ͠࿩ 2019/2/13 LINE Developer Meetup #50 in Fukuoka
  2. ͸Δ; • iOS Developer of LINE Fukuoka (New graduate of

    2017) • LINE Creators Studio -> LINE SHOP part (October, 2018)
  3. LINE Creators Studio • 2017೥ϦϦʔεɺΊͬͪΌRxSwift • LINEϩάΠϯͰϢʔβʔΛ؅ཧʢLINE SDKΛར༻ʣ • LINE

    SDK v1 → v2΁ͷΞοϓσʔτͷඞཁɻɹɹɹɹɹɹɹɹɹ ͍ͭͰʹೝূɺτʔΫϯͷ؅ཧΛϦϑΝΫλϦϯάͨ͠
  4. OAuth ैདྷͷೝূʢInitialʣ LINE Auth Server Creators Studio Server ᶃCredential ᶄLINE

    token/refresh token ᶅLINE token/refresh token ᶆLINE Token ᶇvalid/invalid ᶈToken/refresh token • OAuthΛ༻͍ͨೝূ
  5. OAuth ैདྷͷೝূʢInitialʣ LINE Auth Server Creators Studio Server ᶃCredential ᶄLINE

    token/refresh token ᶅLINE token/refresh token ᶆLINE Token ᶇvalid/invalid ᶈToken/refresh token • OAuthΛ༻͍ͨೝূ
  6. OAuth ैདྷͷೝূʢInitialʣ LINE Auth Server Creators Studio Server ᶃCredential ᶄLINE

    token/refresh token ᶅLINE token/refresh token ᶆLINE Token ᶇvalid/invalid ᶈToken/refresh token • OAuthΛ༻͍ͨೝূ
  7. ैདྷͷೝূʢRefreshʣ LINE Auth Server Creators Studio Server ᶃrefresh token ᶃLINE

    refreshToken ᶄLINE token/refresh token ᶄToken/refresh token • LINEτʔΫϯΛCreators StudioαʔόʔͰอ࣋ͯ͠ɺແݶʹϦϑϨογϡͯ͠active֬ೝ • ΫϥΠΞϯτ͸Creators StudioαʔόʔͷτʔΫϯͷΈ؅ཧ
  8. ैདྷͷೝূͰͷRefresh໰୊ LINE Auth Server Creators Studio Server ᶃrefresh token ᶄLINE

    refreshToken ᶅLINE token/refresh token ᶆToken/refresh token • token͕ࣦޮ͍ͯͨ͠৔߹ʹ֬ೝ͢Δखஈ͕ͳ͍
  9. Ҋ LINE Auth Server Creators Studio Server ᶅrefresh token, LINE

    token ᶆLINE token ᶇvalid/invalid ᶈToken/refresh token • ClientͰrefreshͯ͠ɺLINE tokenΛ΋͏ҰճૹΕ͹͍͍ʁ ᶄLINE token/refresh token ᶃLINE refresh token
  10. Ҋ LINE Auth Server Creators Studio Server ᶅrefresh token, LINE

    token ᶆLINE token ᶇvalid/invalid ᶈToken/refresh token • ϩάΠϯͱಉ͡ʂ ᶄLINE token/refresh token ᶃLINE refresh token
  11. Ҋ LINE Auth Server Creators Studio Server ᶅLINE token ᶆLINE

    token ᶇvalid/invalid ᶈToken • Refresh tokenͦ΋ͦ΋͍Βͳ͍ʂʁʂʁ • ΋͏ҰճϩάΠϯ͢Ε͹͍͍ʂ ᶄLINE token/refresh token ᶃLINE refresh token
  12. ৽͍͠ೝূ LINE Auth Server Creators Studio Server ᶄLINE token/refresh token

    ᶅLINE token ᶆLINE Token ᶈToken • ಠࣗͷϦϑϨογϡͷ࢓૊ΈΛͳͨ͘͠ • ৽͍͠LINEͷτʔΫϯͰ࠶ϩάΠϯ͢ΔΠϝʔδ ᶃCredential or LINE refresh token ᶇvalid/invalid
  13. What is LINE SHOP Part? LINE SHOP Part • ελϯϓɾֆจࣈɾணͤସ͑ؔ࿈ͷػೳɾը໘Λ୲౰

    • γϣοϓը໘ͱ͔ɺελϯϓ؅ཧը໘ͱ͔ɺΩʔϘʔυͱ͔ɺελ ϯϓͷϑΣονɾΩϟογϡͷػೳͱ͔ • ϑΣονͱ͔ͷ࿩Λ͠·͢
  14. func imageName() -> String func stickerUrl() -> URL func imageUrl()

    -> URL func fetchSound() -> URL func localSticker() -> UIImage func fetchSticker() -> UIImage func fetchPopupStatic() -> UIImage func localUrl() -> URL func stickerName() -> String … Sticker Fetcher was…
  15. func imageName() -> String func stickerUrl() -> URL func imageUrl()

    -> URL func fetchSound() -> URL func localSticker() -> UIImage func fetchSticker() -> UIImage func fetchPopupStatic() -> UIImage func localUrl() -> URL func stickerName() -> String … Sticker Fetcher was… !
  16. ͳͥෳࡶ͔ • ελϯϓࣗମͷछྨͷଟ͞ • ը૾ͷछྨͷଟ͞ • ύοέʔδͱελϯϓ • ΞχϝʔγϣϯɺϙοϓΞοϓɺα΢ϯυɺΞχϝʔγϣϯα΢ϯυɺ… •

    छྨʹΑΓඞཁͳϦιʔε͕ҟͳΔ • τʔΫɺγϣοϓৄࡉɺγϣοϓҰཡɺΩʔϘʔυɺΩʔϘʔυλϒɺ2x… • ͦΕͧΕͷ໊લɾঢ়ଶΛ؅ཧ͢Δඞཁ • ύοέʔδ͸ணͤସ͑ɾֆจࣈڞ௨ɺελϯϓ͸ผ
  17. struct RemoteUrl { static var baseURL: URL static func stickerImageName()

    static func stickerImageUrl() static func stickerSoundFileUrl() static func packageImageName() static func packageImageUrl() } Remote URL • ҙࣝͯ͠PackageͱStickerΛ۠ผ