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
プロフィール編集画面の構築 / How to create a profile edit sc...
Search
Masatoshi Kubode
September 20, 2018
Programming
1.5k
2
Share
プロフィール編集画面の構築 / How to create a profile edit screen
Masatoshi Kubode
September 20, 2018
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
210
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.3k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
710
技術を根付かせる / How to make technology take root
kubode
1
490
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
640
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
230
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.5k
Jetpack ComposeのBottomSheetとの戦い / Fight with BottomSheet of Jetpack Compose
kubode
0
1.1k
Other Decks in Programming
See All in Programming
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
540
3Dシーンの圧縮
fadis
1
600
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
RTSPクライアントを自作してみた話
simotin13
0
440
Moments When Things Go Wrong
aurimas
3
140
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.6k
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.8k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.3k
関係性から理解する"同一性"の型用語たち
pvcresin
2
630
Oxlintのカスタムルールの現況
syumai
5
990
Migrations : C'est une question d'hygiène !
vinceamstoutz
0
3.2k
Modding RubyKaigi for Myself
yui_knk
0
880
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Rails Girls Zürich Keynote
gr2m
96
14k
How GitHub (no longer) Works
holman
316
150k
HDC tutorial
michielstock
2
690
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
830
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Paper Plane (Part 1)
katiecoart
PRO
0
8.4k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Ethics towards AI in product and experience design
skipperchong
2
300
Mind Mapping
helmedeiros
PRO
1
230
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.