"CPVUNF w HJUIVC
UXJUUFS
RJJUBNPUPLJFF w J04%$+BQBOελοϑ w גࣜձࣾικͰϝϧΧϦΧϧͷ։ൃΛ͍ͯ͠ΔJ04ΤϯδχΞ w ικϝϧΧϦʹଓ͘৽ͨͳαʔϏεΛ࡞ΔձࣾͰ͢ w γΣΞαΠΫϧαʔϏεNFSDIBSJ४උத w ϋʔυΣΞͰ͖ΔPSڵຯʑͳJ04ΤϯδχΞɺେืूத
ͳΜΒ͔ͷ࡞ۀ͕๛ w ࡱΔˠͳΜΒ͔ͷ࡞ۀˠΞοϓϩʔυ w ͳΜΒ͔ͷ࡞ۀ͕໘Ͱ͋ΔʢΞϓϦ։͍ͯɺࣸਅબΜͰɺૹΔʣ w ͳΜΒ͔ͷ࡞ۀͷखஈ͕ͨ͘͞Μ͋ΔʢΞϓϦ͍ͬͺ͍ʣ w -*/&
'BDFCPPL.FTTFOHFS
ϓϦϯτΞτ
&NBJMʜ w ํ๏͕͋Γ͗͢Δ͜ͱʹՃ͑ͯૹΔखஈΛܾΊΔίϛϡχέʔγϣϯ͕໘ w ΕΔɺͦͯ࣌͠ྲྀΕΔ
͜ͷΞϓϦͰࢦ͢͜ͱ w ࡱΔˠͳΜΒ͔ͷ࡞ۀˠΞοϓϩʔυ w ͳΜΒ͔ͷ࡞ۀ͕໘Ͱ͋ΔˠΞϓϦͰࡱӨޙͷϑϩʔʹΈࠐΉ ͜ͱʹΑͬͯ࠷খԽ w ͳΜΒ͔ͷ࡞ۀͷखஈ͕ͨ͘͞Μ͋Δˠखஈ͕ΞϓϦʹू w ํ๏͕͋Γ͗͢Δ͜ͱʹՃ͑ͯૹΔํ๏ͷίϛϡχέʔγϣϯ͕໘ w ΕΔɺͦͯ࣌͠ྲྀΕΔˠʮࡱΔʯʮΞοϓϩʔυʯΛಉ࣌ʹߦ͏
ࡉ͔͘ w ࣸਅʢλΠϜϥΠϯʣ w Χϝϥ͔ΒͷΞοϓϩʔυ w ΞϧόϜ͔ΒͷΞοϓϩʔ υ w Ξοϓͨࣸ͠ਅʹ-JLFతͳ ͜ͱ͕Ͱ͖Δ w Ξοϓͨࣸ͠ਅʹίϝϯτ Ͱ͖Δ w ࣸਅΛՃͰ͖Δ w 1VTI௨ w ݁ࠗࣜલʹʮ໌ΑΖ͘͠ ͓Ͷ͕͍͠·͢ʯͱ͔ૹΓ͔ͨͬ ͨ w ੮࣍දӾཡ w ͜Ε͔ͬͯΔͱخ͍ͣ͠ w ͓Βͤը໘ w Կ͔͋ͬͨΒ͜͜ʹදࣔͯ͠ʮಡ ΜͰͶʯ͕͔ͨͬͨ͠
՝ཧ w εέδϡʔϧ w ϦϦʔε݁ࠗࣜʜͩͱؒʹ߹Θͳ͍ͷͰ͘Β͍લ w αʔόαΠυʢͳʹΛ͏ʹͯ͠ઈରؒʹ߹Θͳ͍ʣ w ࣌ظʢ৽͍͠04
4XJGUͳͲ͕ग़Δ͔ग़ͳ͍͔ͷλΠϛϯάʣ w w Πϯετʔϧ͢ΔਓΛͬͪ͜Ͱίϯτϩʔϧ͍ͨ͠ w Ϣʔβʔ w ࣗͨͪͷ༑ୡಉੈ w ɺɺ εϚϗ͍׳Εͯͳ͍ਓ͕ଟ͍
Γ͍ͨ͜ͱ w ࣸਅ w Χϝϥ͔ΒͷΞοϓϩʔυ w ΞϧόϜ͔ΒͷΞοϓϩʔ υ w Ξοϓͨࣸ͠ਅʹ-JLFతͳ ͜ͱ͕Ͱ͖Δ w Ξοϓͨࣸ͠ਅʹίϝϯτ Ͱ͖Δ w ࣸਅΛՃͰ͖Δ w 1VTI௨ w ݁ࠗࣜલʹʮ໌ΑΖ͘͠ ͓Ͷ͕͍͠·͢ʯͱ͔ૹΓ͔ͨͬ ͨ w ੮࣍දӾཡ w ͜Ε͔ͬͯΔͱخ͍ͣ͠ w ͓Βͤը໘ w Կ͔͋ͬͨΒ͜͜ʹදࣔͯ͠ʮಡ ΜͰͶʯ͕͔ͨͬͨ͠
Γ͍ͨ͜ͱ w ࣸਅʢλΠϜϥΠϯʣ w Χϝϥ͔ΒͷΞοϓϩʔυ w ΞϧόϜ͔ΒͷΞοϓϩʔ υ w Ξοϓͨࣸ͠ਅʹ-JLFతͳ ͜ͱ͕Ͱ͖Δ w Ξοϓͨࣸ͠ਅʹίϝϯτ Ͱ͖Δ w ࣸਅΛՃͰ͖Δ w 1VTI௨ w ݁ࠗࣜલʹʮ໌ΑΖ͘͠ ͓Ͷ͕͍͠·͢ʯͱ͔ૹΓ͔ͨͬ ͨ w ੮࣍දӾཡ w ͜Ε͔ͬͯΔͱخ͍ͣ͠ w ͓Βͤը໘ w Կ͔͋ͬͨΒ͜͜ʹදࣔͯ͠ʮಡ ΜͰͶʯ͕͔ͨͬͨ͠ ແ೦ɺ͜Ε͚ͩͰ͖ͣ
protocol PhotoViewerViewModelProtocol: class { func didUpdate(_ state: PhotoViewerViewModel.State) } final class PhotoViewerViewModel { enum State { case list([Article]) case add([Article]) case update(Article) case loading case error(String) } func refresh() { guard reachability.isReachable else { delegate?.didUpdate(.error("σʔλΛऔಘͰ͖·ͤΜͰͨ͠")) return } delegate?.didUpdate(.loading) database.load { [weak self] articles in self?.delegate?.didUpdate(.list(articles)) self?.subscribe() } } 7JFX.PEFMͰ4UBUFΛఆٛɺ%BUBCBTFͷมߋʹԠͯ͡ঢ়ଶΛߋ৽͢Δ
w େࣄͳใ1VTI௨ˍ͓Βͤ৴ w ձ·Ͱͷϧʔτ w ెา w J04%$Ͱಘͨݟ w આ໌จΛॻ͍ͯͳ͔ͳ͔ಡΜͰΒ͏͜ ͱ͍͠ w J04%$ͷΞϓϦͰࠔΓͲ͜ΖޙͰฉ͍ ͯΨοΧϦ͢ΔΑ͏ͳใUXJUUFSΞΧ ϯτͷ΄͔ɺ1VTI௨Ͱ৴ʢࠓ͔ΒͰ ݟͯͶʣ
w ΞϓϦͱ1VTI௨ͷ৴ɺจݴΛ ܾΊΔͷԞ͞Μͷׂʹ w Ԟ͞Μ։ൃͱ͔શؔ͘ͳ͍ ࣄ w ීஈɺΤϯδχΞ͕ͲΜͳࣄΛ ͍ͯ͠Δ͔ͷཧղʹͭͳ͕Δ w ίʔυॻ͘ͷ΄ͱΜͲҰਓͰ ݁ͯ͠͠·͏ͷͰԞ͞Μʹʮਃ͠༁ ͳ͍ʯײ͕ग़ͯ͘Δ w lؔΘ͍ͬͯΔzײɺνʔϜײ w ͦ͠͏ɺྑ͔͘Βͳ͍ͱࢥ ΘΕͳ͍Α͏ʹ
·ͱΊ w ݁ࠗࣜJ04%$ͷΑ͏ͳΠϕϯτΞϓϦͷ։ൃͰ'JSFCBTFͷػೳͱͯ༗ޮత ʹ͑Δ w 1VTI௨ͳͲΞϓϦΛͬͯΒ͏্Ͱඞཁͳػೳͷ࣮ݱ͕ૉૣ͘Ͱ͖Δ w σʔλͷಉظػೳͳͲڧྗͳػೳ͕'JSFCBTF4%,ʹ༻ҙ͞Ε͍ͯΔͷͰɺͦ ΕΛ͏͜ͱͰΑΓ͍͍͢ΞϓϦ͕։ൃͰ͖Δ