Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ZOZOが採用しているiOSのアーキテクチャについて/zozo-tech-meetup8-io...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
M"e
November 22, 2018
2.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ZOZOが採用しているiOSのアーキテクチャについて/zozo-tech-meetup8-ios-architecture
M"e
November 22, 2018
More Decks by M"e
See All by M"e
Hapticをカスタマイズしてみよう / ZOZO Tech Talk #6 Customize Haptic
endoumari
0
2.6k
UIViewで光の三原色の混ざり合いを表現したい / potatotips 75 Blend Mode
endoumari
1
390
文字列をコピーできるスクリーンショットを作る/iOSDC 2020 LT PDF
endoumari
3
5.7k
Dribbbleで見つけたコンセプトデザインを実装/potatotips-56-concept-design
endoumari
2
730
iOSエンジニアが悩んだUpボタンについて / 2017 potatotips 45 Up Button
endoumari
1
1.2k
URLエンコードされた Shift_JISのデコードについて / iOSDC 2017 LT SJIS decode
endoumari
1
6k
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Joys of Absence: A Defence of Solitary Play
codingconduct
1
390
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
BBQ
matthewcrist
89
10k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
RailsConf 2023
tenderlove
30
1.5k
Building AI with AI
inesmontani
PRO
1
1.1k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Are puppies a ranking factor?
jonoalderson
1
3.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Transcript
Copyright © ZOZO Technologies, Inc. All Rights Reserved. גࣜձࣾ;0;0ςΫϊϩδʔζ ։ൃ෦͑ΜͲ͏
;0;0͕࠾༻͍ͯ͠Δ J04ͷΞʔΩςΫνϟʹ͍ͭͯ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ΞδΣϯμ ‣ݱࡏ࠾༻͍ͯ͠ΔJ04ͷΞʔΩςΫνϟ
‣࣍ʹ࠾༻͢ΔJ04ͷΞʔΩςΫνϟ ‣࠾༻ཧ༝ ‣ΞʔΩςΫνϟʹ͍ͭͯ ‣࣮ʹ͍ͭͯ ‣·ͱΊ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ‣͑ΜͲ͏ ‣7"4*-:;0;0ςΫϊϩδʔζ
‣6*࣮͕͖ ‣5BC1BHF7JFX$POUSPMMFS ‣$PODFQU%FTJHO)PNF$POUSPM"QQ ‣(JU)VCIUUQTHJUIVCDPN&OEPV.BSJ ϓϩϑΟʔϧ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ݱࡏ࠾༻͍ͯ͠ΔJ04ͷΞʔΩςΫνϟ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ݱࡏ;0;0͕࠾༻͍ͯ͠ΔJ04ͷΞʔΩςΫνϟ .7$
.7$ .77. $PPSEJOBUPST
Copyright © ZOZO Technologies, Inc. All Rights Reserved. .7$ ‣$PDPB͕.7$ʹج͍࣮ͮͯ͞Ε͍ͯΔ
‣7JFXͱ.PEFM͕͍ͯ͠ΔͷͰ࠶ར༻ੑ͕ߴ͍ ‣γϯϓϧʂ ‣ॲཧ͕ෳࡶʹͳΔͱ$POUSPMMFS͕ංେԽ View Model ViewController Update Action Update Notify Update ࢀߟ: https://developer.apple.com
Copyright © ZOZO Technologies, Inc. All Rights Reserved. .77. $PPSEJOBUPST
‣.77. ‣7JFX$POUSPMMFSʹूத͢ΔϩδοΫΛ7JFX.PEFMʹΓ͚Δ ‣7JFXͱ7JFX.PEFMؒͷΓऔΓΛσʔλόΠϯσΟϯάΛ༻ ‣σʔλόΠϯσΟϯάʹ3YͳͲΛ༻ ‣$PPSEJOBUPST ‣ը໘ભҠΛ୲ View Model ViewModel Coordinators ࢀߟ: https://speakerdeck.com/macdevnet/mvvm-c-in-practice
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࣍ʹ࠾༻͢ΔJ04ͷΞʔΩςΫνϟ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ΞʔΩςΫνϟʹٻΊΔ͜ͱ ‣͘ӡ༻Ͱ͖Δ͜ͱΛఆͨ͠ΞʔΩςΫνϟ
‣༷ͷมߋɺ6*ͷมߋΛ͍͢͠ ‣ϝϯόʔ͕૿͑ͨͱ࣮͍ͯ͢͠͠ ‣։ൃ৫͕ϚτϦοΫε ‣ΤϯδχΞͷྲྀಈੑ͕ߴ͍ ‣ϓϩδΣΫτʹॻ͔ؔΘΔΤϯδχΞ͕ଟ͍
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࣍ʹ࠾༻͢ΔͳΒʁ ‣.7$
‣.77. ‣'MVY ‣$MFBO"SDIJUFDUVSF ‣7*1&3 ‣FUDʜ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ΞʔΩςΫνϟͷ۠ ‣(6*ΞʔΩςΫνϟ
‣.7$ɺ.77.ɺ'MVY ‣7JFXͱ.PEFMΛ ‣γεςϜΞʔΩςΫνϟ ‣$MFBO"SDIJUFDUVSFɺ7*1&3 ‣γεςϜશମͷߏ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ΞʔΩςΫνϟͷ۠ Presentation
Layer Model Layer Data Layer ‣(6*ΞʔΩςΫνϟ ‣.7$ɺ.77.ɺ'MVY ‣7JFXͱ.PEFMΛ ‣γεςϜΞʔΩςΫνϟ ‣$MFBO"SDIJUFDUVSFɺ7*1&3 ‣γεςϜશମͷߏ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ΞʔΩςΫνϟͷ۠ Presentation
Layer Model Layer Data Layer ‣(6*ΞʔΩςΫνϟ ‣.7$ɺ.77.ɺ'MVY ‣7JFXͱ.PEFMΛ ‣γεςϜΞʔΩςΫνϟ ‣$MFBO"SDIJUFDUVSFɺ7*1&3 ‣γεςϜશମͷߏ ࢀߟ: https://speakerdeck.com/takasek/10fen-tezhen-rifan-rusohutoueaakitekutiyafalseli-shi-2017
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࣍ʹ࠾༻͢ΔͳΒʁ ‣.7$
‣.77. ‣'MVY ‣$MFBO"SDIJUFDUVSF ‣7*1&3 ‣FUDʜ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࣍ʹ࠾༻͢ΔͳΒʁ ‣.7$
‣.77. ‣'MVY ‣$MFBO"SDIJUFDUVSF ‣7*1&3 ‣FUDʜ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࠾༻ཧ༝
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ͱ ‣.VUVBM.PCJMFߟҊJ04൛$MFBO"SDIJUFDUVSF
‣γεςϜͷมԽ͕ଟ͍෦ͱͦ͏Ͱͳ͍෦Ͱ͔Ε͍ͯΔ ‣7JFXɺ*OUFSBDUPSɺ1SFTFOUFSɺ&OUJUZɺ3PVUJOH ‣֤ϨΠϠʔ1SPUPDPMʹͷΈґଘ ‣୯ҰͷݪଇΛͱʹ࡞ΒΕͨ ग़య: https://www.objc.io/issues/13-architecture/viper/
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࠾༻ཧ༝ᶃ͘ӡ༻͢Δͷʹ߹͍ͬͯΔ ‣6*ɺ8FC"1*ΫϥΠΞϯτͳͲมԽ͕ଟ͍෦ͱมߋ͠ʹ͍͘෦͕͔
Ε͍ͯΔ ‣ϑϨʔϜϫʔΫɺϥΠϒϥϦʔʹґଘ͠ͳ͍ ‣6*มߋΛ͍͢͠ ‣୯Ұͷݪଇ ‣ॲཧΛॻ͘ॴ͕໌֬ʹܾ·͍ͬͯΔ ‣Ұ෦ͷΫϥεʹॲཧ͕ूத͍͍͘͠
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࠾༻ཧ༝ᶄϝϯόʔ͕૿͑ͯରԠ͍͢͠ ‣ࡉԽ͞Ε͍ͯΔͷͰίϯϑϦΫτ͕গͳ͍
‣ॲཧΛॻ͘ॴ͕໌֬ʹܾ·͍ͬͯΔͷͰ໎Θͳ͍ ‣Ϋϥε͕ංେԽ͠ͳ͍ͷͰॲཧΛ͍͍͢
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࠾༻ཧ༝ᶅ৽͍͠ΞʔΩςΫνϟͷݟΛͨΊ͍ͨ ‣γεςϜΞʔΩςΫνϟͰ࣮ͨ͠ܦݧ͕ͳ͍ͷͰઓ͍ͨ͠
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ʹ͍ͭͯ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ͷલʹ ‣$MFBO"SDIJUFDUVSFʹ͍ͭͯΓ͍ͨ
‣7*1&3$MFBO"SDIJUFDUVSFͷߟ͑Λͱʹ࡞ΒΕ͍ͯΔ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. $MFBO"SDIJUFDUVSFͱ ‣&OUJUZ
‣σʔλߏɺϏδωεϩδοΫ ‣6TF$BTF ‣"QQMJDBUJPOݻ༗ͷϩδοΫ ‣*OUFSGBDF"EBQUFS ‣σʔλΠϕϯτΛม͢ΔϨΠϠʔ ‣'SBNFXPSLT%SJWFST ‣6*ɺσʔλϕʔεɺ8FC"1*ΫϥΠϯτ ग़య: http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
Copyright © ZOZO Technologies, Inc. All Rights Reserved. $MFBO"SDIJUFDUVSFͱ ‣ґଘͷํ͕୯ํ
‣'SBNFXPSLˠ*OUFSGBDFˠ6TF$BTFˠ&OUJUZ ‣֎ଆ͔Βଆͷࢀর ‣༷มߋʹڧ͍ ‣6*ɾ04ɾ8FC"1*ΫϥΠΞϯτͳͲมߋ͕ଟ͍ͱ͜ΖΛ֎ʹ ‣มߋ͕গͳ͍&OUJUZΛத৺ͱ͍ͯ͠Δ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ͷશମ૾ View
Entity Presenter Routing Interactor User Action Asks for Update Notifies Updates Knows about ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ͷશମ૾ ࢀߟ:
https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ View Entity Presenter Routing Interactor User Action Asks for Update Notifies Updates Knows about View
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7JFX ‣ը໘දࣔ
‣7JFX7JFX$POUSPMMFS ‣λοϓͳͲͷ6*ΠϕϯτΛड͚औΔ ‣6*ΠϕϯτΛ1SFTFOUFSʹ௨͢Δ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ͷશମ૾ View
Entity Presenter Routing Interactor User Action Asks for Update Notifies Updates ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ Knows about Presenter
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 1SFTFOUFS ‣7JFX͔ΒͷΠϕϯτͱʹ*OUFSBDUPSʹσʔλΛཁٻ
‣*OUFSBDUPS͔Βड͚औͬͨσʔλΛͱʹදࣔ༻ίϯςϯπΛ४උ ‣ϏϡʔϩδοΫؚ͕·ΕΔ ‣͕݅݅ͩͬͨΒθϩϚονը໘ ‣ը໘ભҠͷ࣋ͭ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ͷશମ૾ View
Entity Presenter Routing Interactor User Action Asks for Update Notifies Updates ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ Knows about Interactor
Copyright © ZOZO Technologies, Inc. All Rights Reserved. *OUFSBDUPS ‣6TF$BTF
‣ΞϓϦέʔγϣϯݻ༗ͷϩδοΫ ‣6*ʹؔ͢Δॲཧॻ͔ͳ͍
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ͷશମ૾ View
Entity Presenter Routing Interactor User Action Asks for Update Notifies Updates Knows about ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ Entity
Copyright © ZOZO Technologies, Inc. All Rights Reserved. &OUJUZ ‣σʔλߏ
‣ΞϓϦέʔγϣϯʹґଘ͠ͳ͍ϩδοΫ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ͷશମ૾ View
Entity Presenter Routing Interactor User Action Asks for Update Notifies Updates ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ Knows about Routing
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&33PVUJOH ‣ը໘ભҠ
‣ը໘ͷηοτΞοϓ ‣ϧʔςΟϯάͷ1SFTFOUFSͱ3PVUJOHͰڞ༗͍ͯ͠Δ ‣1SFTFOUFSભҠ͢Δը໘ͷೝࣝ ‣3PVUJOHͲ͏ͬͯը໘ભҠΛ͢Δ͔
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࣮ʹ͍ͭͯ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. Ϧετը໘Λදࣔ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. Ϧετը໘Λදࣔ ‣༷
‣ΞΠςϜҰཡΛදࣔ͢Δ࣮ ‣"1*ϦΫΤετWJFX%JE-PBEͷλΠϛϯά
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ʹΊΔ View
Entity Presenter Routing Interactor σʔλऔಘͰ͖ͨΑ σʔλऔಘͰ͖͔ͨΒදࣔͯ͠ ͍ͬͯΔ viewDidload σʔλऔಘ ͓ئ͍ʂ ListViewController Item ϏϡʔϩδοΫ ΞϓϦέʔγϣϯ ϩδοΫ ը໘ભҠ อ༗ ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ʹΊΔ View
Entity Presenter Routing Interactor σʔλऔಘͰ͖ͨΑ σʔλऔಘͰ͖͔ͨΒදࣔͯ͠ ͍ͬͯΔ viewDidload σʔλऔಘ ͓ئ͍ʂ ListViewController Item ϏϡʔϩδοΫ ΞϓϦέʔγϣϯ ϩδοΫ ը໘ભҠ DataStore σʔλऔಘ อ༗ σʔλऔಘͰ͖ͨΑ ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࣮͢Δલʹɺͳͥ1SPUPDPMΛ༻͢Δͷ͔ʁ ‣ॲཧΛநԽ
‣ॲཧʹґଘ͠ͳ͍ ‣ґଘؔٯసͷ๏ଇ ‣ଆ͕֎ଆΛݺͼग़͍ͨ͜͠ͱ͕͋Δ ‣*OUFSBDUPS͕σʔλΛऔಘͨ͜͠ͱΛ1SFTFOUFSʹ͍͑ͨ ‣ࢀর͢Δ͜ͱґଘؔΛ่ͯ͠͠·͏ ‣ଆ͕એݴͨ͠1SPUPDPMΛ֎ଆ͕࣮͢Δ͜ͱͰղܾ ‣ؒతʹࢀর͢Δ͜ͱ͕Մೳ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. &OUJUZͷ࣮ struct
Item { let id: Int let name: String let imageURL: URL let price: Int let brandName: String }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ʹΊΔ View
Entity Presenter Routing Interactor σʔλऔಘͰ͖ͨΑ σʔλऔಘͰ͖͔ͨΒදࣔͯ͠ ͍ͬͯΔ viewDidload σʔλऔಘ ͓ئ͍ʂ ListViewController Item ϏϡʔϩδοΫ ΞϓϦέʔγϣϯ ϩδοΫ ը໘ભҠ DataStore σʔλऔಘ ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ อ༗ Presenter Interactor σʔλऔಘͰ͖ͨΑ σʔλऔಘ ͓ئ͍ʂ ϏϡʔϩδοΫ ΞϓϦέʔγϣϯ ϩδοΫ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. *OUFSBDUPSͷ࣮ protocol
ItemsInteractorInput: class { func fetchItems() } protocol ItemsInteractorOutput: class { func itemsFetched(items: [Item]) }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. *OUFSBDUPSͷ࣮ class
ItemsInteractor : ItemsInteractorInput { weak var output: ItemsInteractorOutput! func fetchItems() { // σʔλऔಘॲཧ self.output.itemsFetched(items: []) } }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ʹΊΔ View
Entity Presenter Routing Interactor σʔλऔಘͰ͖ͨΑ σʔλऔಘͰ͖͔ͨΒදࣔͯ͠ ͍ͬͯΔ viewDidload σʔλऔಘ ͓ئ͍ʂ ListViewController Item ϏϡʔϩδοΫ ΞϓϦέʔγϣϯ ϩδοΫ ը໘ભҠ DataStore σʔλऔಘ ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ อ༗ View Presenter σʔλऔಘͰ͖͔ͨΒදࣔͯ͠ viewDidload ListViewController ϏϡʔϩδοΫ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 1SFTFOUFSͷ࣮ protocol
ItemsModuleInterface: class { func updateView() }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7JFXͷ࣮ protocol
ItemListViewInterface: class { func showItems(items: [Item]) }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 1SFTFOUFSͷ࣮ class
ItemsPresenter : ItemsModuleInterface, ItemsInteractorOutput { weak var view: ItemsViewInterface! var interactor: ItemsInteractorInput! func updateView() { self.interactor.fetchItems() } func itemsFetched(items: [Item]) { self.view.showItems(items: items) } }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7JFXͷ࣮ class
ItemListViewController : UIViewController, ItemsViewInterface { var presenter: ItemsModuleInterface! var list: [Item] = [] override func viewDidLoad() { super.viewDidLoad() self.presenter.updateView() } func showItems(items: [Item]) { self.list = items //ɹදࣔߋ৽ } }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 7*1&3ʹΊΔ View
Entity Presenter Routing Interactor σʔλऔಘͰ͖ͨΑ σʔλऔಘͰ͖͔ͨΒදࣔͯ͠ ͍ͬͯΔ viewDidload σʔλऔಘ ͓ئ͍ʂ ListViewController Item ϏϡʔϩδοΫ ΞϓϦέʔγϣϯ ϩδοΫ ը໘ભҠ DataStore σʔλऔಘ ࢀߟ: https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/ อ༗ Routing ը໘ભҠ Presenter ϏϡʔϩδοΫ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 3PVUFSͷ࣮ protocol
ItemsRouterInput { func presentDetailsInterfaceForItem(id: Int) }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 3PVUFSͷ࣮ class
ItemsRouter : NSObject, ItemsRouterInput { static func assembleModule() -> UIViewController { let view = UIStoryboard(name: "ItemListViewController", bundle: nil).instantiateInitialViewController() as! ItemListViewController let presenter = ItemsPresenter() let interactor = ItemsInteractor() let router = ItemsRouter() view.presenter = presenter presenter.view = view presenter.interactor = interactor presenter.router = router interactor.output = presenter router.viewController = view return UINavigationController(rootViewController: view) } func presentDetailsInterfaceForItem(id: Int) { // ը໘ભҠॲཧ } }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 1SFTFOUFSͷ࣮ protocol
ItemsModuleInterface: class { func updateView() func showDetailsForItem(id: Int) }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 1SFTFOUFSͷ࣮ class
ItemsPresenter : ItemsModuleInterface, ItemsInteractorOutput { weak var view: ItemsViewInterface! var interactor: ItemsInteractorInput! var router: ItemsRouter! func updateView() { self.interactor.fetchItems() } func itemsFetched(items: [Item]) { self.view.showItems(items: items) } func showDetailsForItem(id: Int) { self.router.presentDetailsInterfaceForItem(id: id) } }
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ·ͱΊ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϝϦοτ ‣୯Ұ
‣ॲཧ͕໌֬ ‣༷ͷมߋʹڧ͍ ‣ґଘ͕͍ ‣ϝϯόʔ͕૿͑ͨͱ࣮͍ͯ͢͠͠ ‣ίϯϑϦΫτ͕গͳ͍ ‣ςετ͕ॻ͖͍͢ ‣6*ͱϩδοΫ͕͔ΕΔ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. σϝϦοτ ‣ϑΝΠϧ͕ଟ͍
‣খ͍͞ϓϩδΣΫτʹ͔ͳ͍ ‣ΦʔόʔεϖοΫ ‣ෑډ͕ߴ͍
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 5IBOLT
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࢀߟهࣄ ‣"SDIJUFDUJOHJ04"QQTXJUI7*1&3
‣J041SPKFDU"SDIJUFDUVSF6TJOH7*1&3 ‣J04ΞϓϦઃܭύλʔϯೖ ‣ͰৼΓฦΔιϑτΣΞΞʔΩςΫνϟͷྺ࢙