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
橋の下で安心して寝るための 『iOSアプリ設計パターン入門』
Search
kameike
January 15, 2019
Technology
0
2.1k
橋の下で安心して寝るための 『iOSアプリ設計パターン入門』
kameike
January 15, 2019
Tweet
Share
More Decks by kameike
See All by kameike
LeanScrum
kameike
3
1.2k
サポートを求めてAppleに電話するまでの道のり
kameike
4
2.2k
header-comment
kameike
5
1.5k
Farewell SnapKit
kameike
1
1.8k
Other Decks in Technology
See All in Technology
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2.1k
Context Engineeringの取り組み
nutslove
0
380
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
880
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
790
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
180
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
210
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
230
Claude Code for NOT Programming
kawaguti
PRO
1
110
22nd ACRi Webinar - 1Finity Tamura-san's slide
nao_sumikawa
0
110
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
58
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Agile that works and the tools we love
rasmusluckow
331
21k
Producing Creativity
orderedlist
PRO
348
40k
A better future with KSS
kneath
240
18k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
Unsuck your backbone
ammeep
671
58k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Chasing Engaging Ingredients in Design
codingconduct
0
120
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Transcript
ڮͷԼͰ҆৺ͯ͠৸ΔͨΊͷ ʰJ04ΞϓϦઃܭύλʔϯೖʱ QJYJWJOD !LBNFJLF
!LBNFJLF w ͷ݄͙Β͍͔ΒQJYJWͰಇ͍͍ͯ·͢ w Ԭग़
ʰΦϒδΣΫτࢦʹ͓͚Δ࠶ར༻ͷͨΊͷσβΠϯύλʔϯʱ
ຊ
lઃܭͦͷϓϩδΣΫτͷཁ݅νʔϜنɺܦݧͳͲʹΑͬ ͯࠨӈ͞Ε·͢ɻ͜ͷઃܭύλʔϯ͕ઈରʹͯ·Δͱ͍ ͏ɺ͍ΘΏΔۜͷؙ͋Γ·ͤΜɻz
lࣄલʹݻఆԽ͞ΕͨϚελʔϓϥϯʹै͏ͷͰͳ͘ɺͦͷ ࣌ʑͷঢ়گʹ߹Θͤͯॊೈʹमਖ਼ɺ෮ݪɺ֦ுɺվળ͢Δ͜ͱ ͕ॏཁz Christopher Alexander
ܞΘ͍ͬͯΔ ϓϩμΫτʹͱͬͯϕλʔͳ ઃܭͱͳΜͩΖ͏ʜ
έʔεόΠέʔε ΈΜͳݴ͍ͬͯΔ͠ʜ
ࠓ͕͍ࣗͬͯΔநԽ ྑ͍ํɺਖ਼͍͠ํʹ ͔͍ͬͯΔͷͩΖ͏͔ʁ
ͦΜͳͱ͖ʜ
lϩʔϚ࣌ͷΤϯδχΞɺ ࣗͷݐͯͨڮͷԼͰ ͠Β͘ա͝͞ͳ͚ΕͳΒͳ͔ͬͨɻz ʰ੬ऑੑʦԼʧʕʕෆ࣮֬ͳੈքΛੜ͖ԆͼΔ།Ұͷߟ͑ํʱɹφγʔϜɾχίϥεɾλϨϒ ݄Ӵ ઍ༿හੜॱ
ڮͷԼͰ৸ͯΔ͕ࣗ ͨͲΓண͍ͨઃܭ େʹ͍͍ͯ͠ઃܭ
͕ࣗݐͯͨ ڮͷԼͰ͑ͯΒͳ͍ͨΊʹʜ
͜Μͳʹศརʂ ʰJ04ΞϓϦઃܭύλʔϯೖʱ
lγϯϓϧͳγεςϜ͔ΒਐԽͯ͠ෳࡶͳγεςϜ͕ੜ·ΕΔͷɺ ҆ఆͨ͠தؒతͳܗଶ͕͋Δͱ͖͚ͩͰ͢ɻ݁Ռͱͯ͠ੜ·ΕΔ ෳࡶͳܗଶɺඞવతʹώΤϥϧΩʔͷ͋ΔͷʹͳΓ·͢ɻz ੈքγεςϜͰಈ͘ʕ͍·ى͖͍ͯΔ͜ͱͷຊ࣭Λ͔ͭΉߟ͑ํυωϥɾ̝ɾϝυζ ࢬኍ३ࢠ খాཧҰॱ
ෳࡶ͞ ʰγϯϓϧͳதؒঢ়ଶʱͷ Έ߹ΘʹΑΓ͛͠ΒΕΔ
ઃܭ 㲈 ύλʔϯԽͱύλʔϯͷ֊Խ Ͱෳࡶ͞ΛΓ͜ͳ͍ͯ͘͠
Christopher Alexander
ύλʔϯɾϥϯήʔδతͳະདྷΛͭ͘ΔͨΊͷݴޠ ϦΞϦςΟɾϓϥε Ҫఉਸ ஶ ฤू த೮ത ஶ தฏଂ
ஶ ߐߒҰ ஶ தହਓ ஶ ӋੜాӫҰ ஶ IUUQXFCTGDLFJPBDKQdJCBQBQFST1631-40$@1SPQFSUJFTQEG
IUUQTXXXTMJEFTIBSFOFUUBLBTIJJCBUIFOBUVSFPGPSEFS
छྨͷ ઃܭͷύλʔϯ छྨͷநతͳঢ়ଶ
6*,JU IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWFEPDVNFOUBUJPO$PDPB$PODFQUVBM$PSF"OJNBUJPO@HVJEF *OUSPEVDUJPO*OUSPEVDUJPOIUNMBQQMF@SFGEPDVJE51
ෳࡶ͞ΛΓ͜ͳ͢ʹ ʰγϯϓϧͳதؒঢ়ଶʱ͕ඞཁ
ઃܭύλʔϯ 㲈 ʰγϯϓϧͳதؒঢ়ଶʱͱ ͦͷ͍ํͷΧλϩά
J04ઃܭύλʔϯͷཱͪҐஔ 4XJGUͷදݱ Ϗδωεཁٻ ʹର͢Δදݱ ϥΠϒϥϦ044܈ ઃܭύλʔϯ
Ұൠతͳઃܭύλʔϯͷٞ 4XJGUͷදݱ Ϗδωεཁٻ ʹର͢Δදݱ ϥΠϒϥϦ044܈ ઃܭύλʔϯ
ʰJ04ઃܭύλʔϯೖʱͷٞͷΧόϨοδ 4XJGUͷදݱ ϥΠϒϥϦ044܈ Ϗδωεཁٻ ʹର͢Δදݱ ઃܭύλʔϯ
ͱ͓ͯ͢͢Ίʂ ʰJ04ΞϓϦઃܭύλʔϯೖʱ
ЋͰ ࣮ͰͷઃܭͷΛ͠·͢ɻ
lઃܭͦͷϓϩδΣΫτͷཁ݅νʔϜنɺܦݧͳͲʹΑͬ ͯࠨӈ͞Ε·͢ɻ͜ͷઃܭύλʔϯ͕ઈରʹͯ·Δͱ͍ ͏ɺ͍ΘΏΔۜͷؙ͋Γ·ͤΜɻz
w Ϗδωεతͳཁ݅ w جຊతͳອըΞϓϦΛϕʔε w Ϗδωε্ͷΞϓϩʔνఆ·͓ͬͯΒͣࢼߦࡨޡΛ܁Γฦ͢ඞཁ͕͋Δɻ w نɾظؒ w ࣾνʔϜdਓ
J04 "OESPJE αʔόʔαΠυ σβΠϯ $4 1. 10 w ࠓޙؔΘΔͰ͋Ζ͏ϓϩμΫτ w ٕज़తͳഎܠ w ͜ͷϨϕϧͷنͷͷΛҰਓͰอकɾ։ൃ͢Δͷॳ w ్த͔ΒҾ͖ܧ͗ 1BMDZͷഎܠɺ͋ΏΈ
খن ظత /PUΤΩεύʔτ
ϕʔε.77.
w 7JFX.PEFM 7JFX$POUSPMMFSʹґଘੑΛͲ͏ͬͯೖ͢Δ͔ʁ w Ͳ͏ͬͯ7JFX$POUSPMMFSͱ7JFX.PEFMΛCJOE͢Δ͔ w 7JFX.PEFM͕ͲͷΑ͏ʹσʔλʹΞΫηε͢Δͷ͔ʁ w ͲͷΑ͏ʹͯ͠ςελϏϦςΟΛ୲อ͢Δͷ͔ʁ w
൚༻తͳ-PBEJOHɺΤϥʔΛͲ͏ͬͯڞ௨Խ͢Δ͔ w FUDʜ .77.ͰΑΓΑΓܗΛٻΊͯมԽ͍ͯͬͨ͠
ʮਐతʯ Christopher Alexander
w θϩΠνͰͳ͘ɺྑ͍ܗʹΉ͚ͯঃʑʹҠߦͰ͖Δ͜ͱ w ҰਓͷνʔϜͰҰؾʹશ෦ॻ͖͑Δͷݱ࣮తͰͳ͍ w ࢼߦࡨޡ͠ɺݟ͕ੵͰ͖ΔΑ͏ͳঢ়ଶ ਐత
ʰਐతʱʹରͯ͠ ศརͩͬͨͭͷ5JQT
5JQT ϓϩδΣΫτΛॎʹׂΔʂ 5JQT ઃܭͷ׳Β͠ͱͯ͠ͷ#-P$ύλʔϯ
5JQT ϓϩδΣΫτΛॎʹׂΔʂ
ProjecctRoot ViewController ViewModel StoryBoard ComicDetailsViewController.swift ComicDetailsViewModel.swift SearchViewModel.swift SearchViewController.storyboard
SearchViewController.swift ComicDetailsViewController.storyboard ProjecctRoot ComicDetails Search ComicDetailsViewController.swift ComicDetailsViewModel.swift ComicDetailsViewController.storyboard … ԣׂΓͷϑΥϧμߏ ॎׂΓͷϑΥϧμߏ
w ࠷ॳ7JFX.PEFMͰ4FTTJPOΛͰѻ͍ͬͯͨˠςετ͕ॻ͖ͮΒ͍ w 'MVYΛϕʔεʹɺϦΫΤετঢ়ଶͷ4UPSFͱϦΫΤετͷ%JTQBUDIFSΛͭͬͯ͘%*͢Δ Α͏ʹˠCPJMFSQMBUF͕૿͑͗ͯͭ͢Β͍ w 3FQPTJUPSZΛͭͬͯ͘(FOFSJDTΛ׆༻ͯ͠%*͢ΔΑ͏ʹ 7JFX.PEFMͷѻ͍ํ͕มભ͍ͯͬͨ͠
w ͲΕ͕࠷৽͕Θ͔Βͳ͍ w ӨڹൣғɺదԠൣғ͕Θ͔Βͳ͍ɻ w ํΛॻ͘ͱͨ͠ΒผͰ͔ͬ͠Γͱ·ͱΊͳͯ͘ͳΒͳ͍ ͦΜͳதͰͷԣׂΓͷਏ͞
ॎׂΓʹ͢Δͱ খ͞ͳվળ ৽͍͠ͷͷಋೖʹ༰ʹʜ
$IBOHF-PHͱରԠ͕औΓ͍͢
3&"%.&Λஔ͘͜ͱ͕Ͱ͖Δ ProjecctRoot ComicDetails Search ComicDetailsViewController.swift README.md ComicDetailsViewModel.swift ComicDetailsViewController.storyboard
…
৽͘͠ೖ͖ͬͯͨਓʹɺ ࠓͷͱ͜Ζͷ࠷ળҊ ݱঢ়Λ͍͑͢
5JQT ઃܭͷ׳Β͠ͱͯ͠ͷ#-P$ύλʔϯ
#VTJOFTT-PHJD$PNQPOFOU ˣ #-P$
ݶఆతͳൣғʹ͓͍ͯ ϏδωεϩδοΫΛղܾ͢Δ ίϯϙʔωϯτΛ࡞Δ
#VJMESFBDUJWFNPCJMFBQQTXJUI'MVUUFS (PPHMF*0`
ʰখ͘͞ಋೖʱͰޮՌΛ࣮ײͰ͖Δ Φʔόʔϔουͷগͳ͍ Φεεϝͷύλʔϯ
PlacePicker Form OK Name Place
w ໊લͱॴΛߋ৽Ͱ͖Δ w ॴ͕ຊ͡Όͳ͍ͱૹ৴Ͱ͖ͳ͍ w ໊લ͕ۭจࣈͩͱૹ৴Ͱ͖ͳ͍ ϏδωεϩδοΫ
OK Name Place PlacePicker Form FormBLoC
OK Name Place PlacePicker Form FormBLoC GVODVQEBUF/BNF UPOFX/BNF4USJOH
WBSOBNF0CTFSWBCMF4USJOH\HFU^ WBSQMBDF0CTFSWBCMF$(1PJOU\HFU^ WBSJT7BMJE0CTFSWBCMF#PPM\HFU^ GVODVQEBUF1MBDF UPOFX/BNF$(1PJOU
OK Name Place PlacePicker Form FormBLoC GVODVQEBUF/BNF UPOFX/BNF4USJOH
WBSOBNF0CTFSWBCMF4USJOH\HFU^ WBSQMBDF0CTFSWBCMF$(1PJOU\HFU^ WBSJT7BMJE0CTFSWBCMF#PPM\HFU^ GVODVQEBUF1MBDF UPOFX/BNF$(1PJOU
FormBLoC OK Name Place WBSQMBDF0CTFSWBCMF$(1PJOU\HFU^ GVODVQEBUF1MBDF UPOFX/BNF$(1PJOU
খͯ͘͞ศརʂ
4XJGUͷදݱ ϥΠϒϥϦ044܈ Ϗδωεཁٻ ʹର͢Δදݱ ઃܭύλʔϯ
w Өڹൣғ͕ݶఆతˠଟগԼखΛͯ͠େৎͳͷͰࢼ͍͢͠ w ͱͯγϯϓϧͰΘ͔Γ͍͢ɻ w ৭ʑͳύλʔϯͷൃలͷಎΛಘ͍͢ w #-P$มԽΛٴ΅͢࡞༻ʢ"DUJPOʣͱมԽͷ؍ଌ 4UPSF ʹ͚Δˠ'MVYతʹ
w #-P$ͷঢ়ଶΛ7JFXʹόΠϯυ͢Δʹʜˠ.77..71ͷ͕͔Γ w ͲͷΑ͏ʹ7JFX7JFX$POUSPMMFSʹ#-P$Λ͍͔ͯ͘͠ˠͷؒͷ%* w #-P$Λελϒͨ͠Γɺ#-P$ͷςετΛॻ͍ͯΈΔˠΛׂͨ͠ԸܙΛ࣮ײͰ͖Δ ઃܭͷ׳Β͠ͱͯ͠#-P$ͷ͕͓͜͜͢͢Ί
·ͱΊ w ڮͷԼͰ҆৺ͯ͠৸ΔͳΒʰJ04ΞϓϦઃܭύλʔϯೖʱ w খ͘͞ظతͳϓϩδΣΫτͰ͋ΕɺਐతΛࢦͯ͠ࢼߦࡨޡ͢ΔͱΑ͔ͬͨ