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.5k
吉田を支える技術
cockscomb
0
2.3k
コーポレートサイトを静的化してAmplify Consoleにデプロイする
cockscomb
0
3.4k
GUIアプリケーションの構造と設計
cockscomb
10
10k
イカリング2におけるシングルページアプリケーション
cockscomb
2
7.5k
あなたの知らない UIKit の世界 — UITableView に UITextView を置きたい
cockscomb
1
7.5k
iOSアプリエンジニアのためのAndroidアプリ開発
cockscomb
7
1.9k
Other Decks in Programming
See All in Programming
はじめてのWeb API体験 ー 飲食店検索アプリを作ろうー
akinko_0915
0
170
なぜあなたのオブザーバビリティ導入は頓挫するのか
ryota_hnk
3
510
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
0
530
Strands Agents で実現する名刺解析アーキテクチャ
omiya0555
1
110
Go製CLIツールをnpmで配布するには
syumai
0
740
Googleの新しいコーディングAIエージェントJulesを使ってみた
tonionagauzzi
0
140
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
GPUを計算資源として使おう!
primenumber
1
290
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
290
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
230
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
210
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
7
1k
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Facilitating Awesome Meetings
lara
54
6.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
Designing Experiences People Love
moore
142
24k
How STYLIGHT went responsive
nonsquared
100
5.7k
A designer walks into a library…
pauljervisheath
207
24k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
530
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Agile that works and the tools we love
rasmusluckow
329
21k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
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
ͦͦൃද͞ΕΔͷ͔