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
ユーザインターフェイスと非同期処理
Search
cockscomb
May 15, 2018
Programming
5
1.9k
ユーザインターフェイスと非同期処理
Presented at Bonfire iOS #4
cockscomb
May 15, 2018
Tweet
Share
More Decks by cockscomb
See All by cockscomb
jq at the Shortcuts
cockscomb
1
1.9k
GraphQL放談
cockscomb
4
2k
GraphQL Highway
cockscomb
28
8.6k
吉田を支える技術
cockscomb
0
2.4k
コーポレートサイトを静的化してAmplify Consoleにデプロイする
cockscomb
0
3.4k
GUIアプリケーションの構造と設計
cockscomb
10
10k
イカリング2におけるシングルページアプリケーション
cockscomb
2
7.6k
あなたの知らない UIKit の世界 — UITableView に UITextView を置きたい
cockscomb
1
7.5k
iOSアプリエンジニアのためのAndroidアプリ開発
cockscomb
7
1.9k
Other Decks in Programming
See All in Programming
CSC305 Lecture 10
javiergs
PRO
0
250
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
990
Foundation Modelsを実装日本語学習アプリを作ってみた!
hypebeans
1
130
When Dependencies Fail: Building Antifragile Applications in a Fragile World
selcukusta
0
110
20251016_Rails News ~Rails 8.1の足音を聴く~
morimorihoge
3
730
Software Architecture
hschwentner
6
2.3k
contribution to astral-sh/uv
shunsock
0
540
ソフトウェア設計の実践的な考え方
masuda220
PRO
4
660
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
630
CSC509 Lecture 08
javiergs
PRO
0
250
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
430
AI Agent 時代的開發者生存指南
eddie
4
2.1k
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Speed Design
sergeychernyshev
32
1.2k
Building an army of robots
kneath
305
46k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Designing for humans not robots
tammielis
254
26k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Transcript
ϢʔβΠϯλʔϑΣΠεͱ ඇಉظॲཧ
id:cockscomb Ճ౻ਘथ גࣜձࣾͯͳ γχΞΞϓϦέʔγϣϯΤϯδχΞ
ࡢࠓ w (PPHMF*0Ͳ͏Ͱ͔ͨ͠ʁ w 88%$͕͍͖ۙͮͯ·ͨ͠Ͷ w ͳʹ͕ൃද͞ΕΔָ͔͠ΈͰ͢Ͷ w Έͳ͞ΜͲΜͳظΛ͍࣋ͬͯ·͔͢ʁ w
88%$Ͳ͏Ͱ͚ͨͬ͠
J04 w "3,JU$PSF.- w 6*,JU w %SBHBOE%SPQ w 'JMFT
J04ͷ֓ཁ Ӭٱ "3,JU అमҰ $PSF.-
٢ా༔Ұ 4XJGUͷ৽ػೳͱΞοϓσʔτ ాᠳ 9DPEFͷ৽ػೳ ࡔాߊҰ %SBHBOE%SPQ Ճ౻ਘथ 'JMFTͱ%PDVNFOU#BTFE"QQMJDBUJPO Ճ౻ਘथ 6*,JUͷΨΠυϥΠϯͷมߋͱ "VUP-BZPVUͷ৽ػೳɺΞοϓσʔτᬒ༤հ $PSF/'$ ؛ࠀݾ 1%',JU ؛ࠀݾ 4JSJ,JU ؛ࠀݾ )PNF,JUೖͱJ04ʹ͓͚Δ৽ػೳ ॴ༑ଠ .FUBM అमҰ "VEJP.FEJBؔ࿈ ৽ϑϨʔϜϫʔΫͱΞοϓσʔτ Ӭٱ
63-4FTTJPO5BTL open class URLSessionTask : NSObject, NSCopying, ProgressReporting { @available(iOS
11.0, *) open var progress: Progress { get } }
public protocol ProgressReporting : NSObjectProtocol { public var progress: Progress
{ get } }
%SBHBOE%SPQ open class NSItemProvider : NSObject, NSCopying { @available(iOS 11.0,
*) open func registerDataRepresentation(forTypeIdentifier typeIdentifier: String, visibility: NSItemProviderRepresentationVisibility, loadHandler: @escaping ((Data?, Error?) -> Swift.Void) -> Progress?) }
None
1SPHSFTT3FQPSUJOH w ඇಉظॲཧͷঢ়گΛϢʔβΠϯλʔϑΣΠεʹөͰ͖Δ w "DUJWJUZ*OEJDBUPS1SPHSFTT#BSΛදࣔ͢ΔͱΑ͍ w l)VNBO*OUFSGBDF(VJEFMJOFTr1SPHSFTT*OEJDBUPSTzΑΓ w ݱࡏͷ3Y4XJGUͰѻ͏ͷ͍͠
<2>ͳͥඇಉظʹ͢Δͷʁ
None
<2>ͳͥඇಉظʹ͢Δͷʁ ϝΠϯεϨουͷ3VO-PPQΛࢭΊͨ͘ͳ͍͔Β ࢭΊͯ͠·͏ͱΧΫΧΫ͢Δ
<2>ΈΜͳͲ͏ͯ͠Δʁ
3FBDUlTVTQFOTFz const movieDetailsFetcher = createFetcher( fetchMovieDetails ) const MovieDetails: React.SFC<MovieDetailsProps>
= ({id}) => { const movie = movieDetailsFetcher.read(id) return ( <div className="MovieDetails"> <MoviePoster src={movie.poster} /> <h1>{movie.title}</h1> <MovieMetrics {...movie} /> </div> ) }
'MVUUFS w 3FBDUʹΠϯεύΠΞ w %BSUΛ͏
Future<AtomFeed> fetchAtom(String atomUrl) async { var atomXml = await http.read(atomUrl);
return parse(atomXml); } class Feed extends StatelessWidget { final String url; const Feed({Key key, this.url}) : super(key: key); @override Widget build(BuildContext context) { var entries = new FutureBuilder<AtomFeed>( future: fetchAtom(url), builder: (context, snapshot) { if (snapshot.hasData) { var feed = snapshot.data; return new Entries(feed: feed); } else if (snapshot.hasError) { return new Text("${snapshot.error}"); } return new CircularProgressIndicator(); }); return new Scaffold( appBar: new AppBar(title: new Text("Feed")), body: entries, ); } }
w એݴతͳ6*ϑϨʔϜϫʔΫ͕ྲྀߦ w 3FBDU 'MVUUFS w ඇಉظॲཧΛѻ͍͘͢͢ΔΈ w 3FBDUͷTVTQFOTF w
'MVUUFSͷ'VUVSF#VJMEFS w .BS[JQBOͲ͏ͳΔʁ
.BS[JQBO w Ͳ͏͍͏ͷ͔ w 6*,JUͷҠ২ʁ w ৽͍͠6*ϑϨʔϜϫʔΫʁ w 4XJGUͱͷੑ w
ͦͦൃද͞ΕΔͷ͔