Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
プロフィール編集画面の構築 / How to create a profile edit sc...
Search
Masatoshi Kubode
September 20, 2018
Programming
1.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プロフィール編集画面の構築 / How to create a profile edit screen
Masatoshi Kubode
September 20, 2018
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
AIチャットの改善から見えた、良いAI体験とは / What Constitutes a Good AI Experience: Insights from Improving AI Chat
kubode
0
250
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
320
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.4k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
790
技術を根付かせる / How to make technology take root
kubode
1
550
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
710
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.5k
Make your Android app into Multiplatform app
kubode
0
270
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.6k
Other Decks in Programming
See All in Programming
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
370
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
580
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
170
Distance field of Julia set
kinakomoti321
0
310
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
300
flutter_test のその先へ — Flutter アプリの LLM 機能に「評価」という品質保証を
kosukesaigusa
0
200
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
330
AI-Powered Domain-Driven Design
ziobrando
0
420
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
960
SODA - FACT BOOK(JP)
sodainc
1
40k
protojson における文字化けの扱い
kazuki1023
0
230
はじめてのPLATEAU
nokonoko1203
1
630
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
520
Designing for Performance
lara
612
70k
WCS-LA-2024
lcolladotor
0
990
The Cost Of JavaScript in 2023
addyosmani
56
10k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Visualization
eitanlees
153
17k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.2k
A Tale of Four Properties
chriscoyier
163
24k
Transcript
©2018 Wantedly, Inc. ϓϩϑΟʔϧฤूը໘ͷߏங δΣωϦΫεΛͬͨϓϩϑΟʔϧը໘ͷߏங J04%$3FKFDU$POGFSFODF ٱอग़խढ़ 2018/09/18
©2018 Wantedly, Inc. ٱอग़խढ़ 8BOUFEMZͰΛฉ͖ʹߦ͘ମݧΛ࡞Δ8BOUFEMZ7JTJUͷΤϯδχΞͱͯ͠ಇ͍͍ͯ·͢ɻ ϢʔβʔάϩʔεʹϑΥʔΧε͍ͯͯ͠ɺϢʔβʔϢʔβʔମݧΛྑ͘͢ΔͨΊʹʑྗ͍ͯ͠·͢ɻ ओʹϞόΠϧΞϓϦͷ։ൃΛ͍ͯ͠·͢ɻ"OESPJE͕ओͰ͕͢ɺJ04͜͜΄ͲܞΘ͍ͬͯ·͢ɻ !TXJ[@BSE ࣗݾհ
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2018 Wantedly, Inc. 8BOUFEMZ7JTJUJ04 ϦχϡʔΞϧ͠·ͨ͠
©2018 Wantedly, Inc. ϓϩϑΟʔϧฤूը໘ΛͲ͏࡞͔ͬͨ ϓϩτίϧ6*ʹδΣωϦΫεΛͬͯ൚༻తʹߏங͢Δ͜ͱͰɺ࣮ίε τΛԼ͛Δ͜ͱ͕Ͱ͖ͨͱ͍͏Λ͠·͢ɻ υϝΠϯʹڧ͘ґଘ͍ͯ͠ΔͷͰɺԠ༻͕͋·Γޮ͘Ͱͳ͍͔͠Ε· ͤΜɻ ࠓ͢͜ͱ
©2018 Wantedly, Inc. J04ΞϓϦϦχϡʔΞϧ
©2018 Wantedly, Inc. ͳͥϦχϡʔΞϧ͔ͨ͠ ҎԼͷΑ͏ͳ՝͕͋ͬͨ w ΞϓϦͰͷΛฉ͖ʹߦ͘·Ͱͷମݧͷվળ w ΦϯϘʔσΟϯάϑϩʔͷվળ w
σβΠϯͷ৽ w ϝϯςφϯείετͷߴ͔ͬͨίʔυͷ৽ ϦχϡʔΞϧͷܦҢ
©2018 Wantedly, Inc. w 4UPSZCPBSEະ༻ • AutoLayoutʹSnapKit • ࠓճͷStoryboardͰ͑ͳ͍߹͋Γ w
3FBDUPS,JU • RxΛͬͨ୯ํσʔλϑϩʔΞʔΩςΫνϟ લఏࣝ
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2018 Wantedly, Inc. ͱΓ࣮͋͑ͣͩ
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2018 Wantedly, Inc.
©2018 Wantedly, Inc. ฤूը໘ͷ՝
©2018 Wantedly, Inc. ฤूը໘ w ߲͋Δ w Ϧετܥ߲ w Ϧετܥ։ดͰ͖Δ
w ߲͝ͱʹϓϥΠόγʔઃఆΛมߋͰ͖Δ ϓϩϑΟʔϧฤूͷ༷ ϦϯΫΛ։͍ͨঢ়ଶ ͯ͢ดͨ͡ঢ়ଶ
©2018 Wantedly, Inc. ࣅͯΔ͚Ͳத͕ҧ͏7JFX w ը໘શମ6*4UBDL7JFXʹͳ͍ͬͯͯɺࣗݾհ ৬ྺɺֶྺͳͲ߲͕"SSBOHFE4VCWJFXͱ ͯ͠ฒΜͰ͍Δɻ w ͭͭͷ7JFX͕ελΠϧಉ͚ͩ͡Ͳදࣔ͢Δ
༰͕߲ʹΑͬͯҟͳ͍ͬͯΔɻ w λοϓ࣌ʹ։͘ը໘ͯ͢ҟͳΔɻ w ͭͭΧελϜ7JFXΫϥεԽ͢ΔͷϘΠϥʔ ϓϨʔτ͕૿࣮͑ͯίετ͕ߴͦ͏ɻ ՝ ϦϯΫ ࣗݾհ ͖ͳݴ༿ ৬ྺ ֶྺ ελΠϧಉ͚ͩ͡Ͳ த͕શ෦ҧ͏ UIStackView
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2018 Wantedly, Inc. δΣωϦΫε͑ͦ͏
©2018 Wantedly, Inc. w ൚༻తʹςΩετͳͲΛઃఆͰ͖Δ7JFXΛ࡞Δ w ΞΠίϯɺλΠτϧɺৄࡉςΩετɺΞΫηαϦΞΠίϯʢӈΞΠίϯʣ w ϦετΛཧ͢Δίϯςφ7JFXΛ࡞Δ w
͜͜ʹδΣωϦΫεΛ͍ɺ֨ೲͰ͖ΔܕΛܾΊΔΑ͏ʹͨ͠ w ։ดͷॲཧ͜ͷ7JFXͰΔ w ։͍͍ͯΔ߹ߴ͞Մมͷ$PMMFDUJPO7JFXΛදࣔ͢Δ ͱͬͨख๏
©2018 Wantedly, Inc. ͱͬͨख๏ ϦετΛཧ͢ΔίϯςφView ProfileEditExpandableItemsView ൚༻తͳView ProfileEditItemView
©2018 Wantedly, Inc. Ϧετܥཧ7JFXଞͷ7JFX
©2018 Wantedly, Inc. Ϧετܥཧ7JFX7JFX֊
©2018 Wantedly, Inc. Ϧετܥཧ7JFXσʔλ͔Β7JFXߋ৽
©2018 Wantedly, Inc. Ϧετܥཧ7JFXσʔλ͔Β$FMMߋ৽ͱίʔϧόοΫ CollectionViewͱCell
©2018 Wantedly, Inc. ฤूը໘ͷ࣮ྫ ৬ྺͷྫ
©2018 Wantedly, Inc. ৬ྺͷ7JFXߋ৽ྫ
©2018 Wantedly, Inc. ৬ྺͷ$BMMCBDLྫ
©2018 Wantedly, Inc. ΞΠςϜฤूը໘ͷ՝
©2018 Wantedly, Inc. ΞΠςϜฤूը໘ w ߲ͦΕͧΕʹը໘ w ϦετܥՃͱฤूϞʔυ͕͋Δ w όϦσʔγϣϯ͕͋Δ
w ը໘͝ͱʹϑΥʔϜ͕ҟͳΔ ϓϩϑΟʔϧฤूͷ༷ ՃϞʔυ ฤूϞʔυ
©2018 Wantedly, Inc. ը໘࡞Βͳ͍ͱ͍͚ͳ͍ w อଘϘλϯɺด͡ΔϘλϯɺอଘதͷΠϯδέʔ λڞ௨ w ฤूϑΥʔϜ߲ʹΑͬͯશ͘ҧ͏ w
όϦσʔγϣϯҧ͏ w ୟ͘ߋ৽"1*ҟͳΔͷ͕͋Δ w Ϧετܥͷͷআ͕Ͱ͖Δ ՝ ֶྺ ৬ྺ
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2018 Wantedly, Inc. ڞ௨෦Λ ͦΕҎ֎Λࢠ✕̍̒Ͱ࡞Ζ͏
©2018 Wantedly, Inc. w ڞ௨෦ w 7JFX$POUSPMMFSͰ7JFXͱঢ়ଶͷཧ w ࢠͷঢ়ଶΛ0CTFSWFͯ͠อଘϘλϯͷঢ়ଶมߋͳͲ͢Δ w
อଘ"1*ίʔϧࢠͷΠϯλʔϑΣʔεΛݺΜͰࢠͷํͰߦ͏ w ϑΥʔϜόϦσʔγϣϯࢠ w όϦσʔγϣϯͳͲͷೖྗঢ়ଶཧࢠͰߦ͏ w ࢠͷQSPUPDPMʹ४ڌͤ͞Δ ͱͬͨख๏ ࢠ✕̍̒
©2018 Wantedly, Inc. 7JFX$POUSPMMFSͱ3FBDUPS w DMBTT1SPpMF*UFN&EJU7JFX$POUSPMMFS7JFX$POUSPMMFS*UFN&EJU7JFX$POUSPMMFS w DMBTT1SPpMF*UFN&EJU3FBDUPS*UFN3FBDUPS*UFN&EJU3FBDUPS
ࢠ7JFX$POUSPMMFSͱ3FBDUPS w QSPUPDPM*UFN&EJU7JFX$POUSPMMFS7JFXXIFSF3FBDUPS*UFN&EJU3FBDUPS w QSPUPDPM*UFN&EJU3FBDUPS3FBDUPSXIFSF4UBUF*UFN&EJU3FBDUPS4UBUF w QSPUPDPM*UFN&EJU3FBDUPS4UBUF&EJUBCMF ܕͷఆٛ
©2018 Wantedly, Inc. ✕ ࢀরͱδΣωϦΫε ࢀর Observable <Type> δΣωϦΫεͷܕ 3FBDUPS
ࢠ3FBDUPS 7JFX$POUSPMMFS ࢠ7JFX$POUSPMMFS ࢠ3FBDUPS ࢠ7JFX$POUSPMMFS &EJUBCMF
©2018 Wantedly, Inc. Editable
©2018 Wantedly, Inc. Editable - ྫ Entityͷఆ͔ٛΒ SourceryͰEditableΛੜ͍ͯ͠Δ
©2018 Wantedly, Inc. ࢠReactorͱStateͷprotocol
©2018 Wantedly, Inc. Reactor
©2018 Wantedly, Inc. Reactor - ࢠͷ࿈ܞ submit updateSingle state (button.isEnabled)
state (Valid, Changed)
©2018 Wantedly, Inc. ViewController - Viewߏ
©2018 Wantedly, Inc. ViewController - Reactorͷbind action update views
©2018 Wantedly, Inc. ߲ฤूը໘ͷ࣮ྫ ৬ྺͷྫ
©2018 Wantedly, Inc. ৬ྺͷྫ - ࢠReactor ςΩετߋ৽࣌ʹ ͜ͷAction͕͛ΒΕΔ
©2018 Wantedly, Inc. ৬ྺͷྫ - ࢠReactorͷߋ৽APIݺͼग़͠ submit updateSingle
©2018 Wantedly, Inc. ৬ྺͷྫ - ViewController όϦσʔγϣϯΤϥʔͷදࣔ
©2018 Wantedly, Inc. ·ͱΊ
©2018 Wantedly, Inc. w 6*ʹδΣωϦΫεར༻Ͱ͖Δ w ֎ಉ͚ͩ͡Ͳத$FMM͕ҧ͏ύλʔϯͳͲͰ༗ޮ w ৼΔ͍ΛϓϩτίϧΫϩʔδϟͰҕৡ͢Δ w
ΠϕϯτίʔϧόοΫ࣌ʹܕ҆શʹΦϒδΣΫτΛॲཧͰ͖Δ w ͞ΒͳΔվળ w 6*Ͱͳ͘ΦϒδΣΫτʹ1SPUPDPMΛద༻͢Δ͜ͱͰࣅͨΑ͏ͳ࣮Մೳ w ͏গ͠நԽͰ͖͔ͨ w 4UPSZCPBSEͰδΣωϦΫε͕͑ͳ͍ͷͰΧελϜ7JFXʴ1SPUPDPMͷ΄͏͕ॊೈ͔ ·ͱΊ
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2018 Wantedly, Inc.