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
SwiftのAsync / Awaitについて
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takaaki Tanaka
April 14, 2018
Technology
0
200
SwiftのAsync / Awaitについて
第1回 HAKATA.swift ~福岡でSwiftの勉強会~
Takaaki Tanaka
April 14, 2018
Tweet
Share
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
290
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.4k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
350
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.1k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
830
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
660
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
740
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.1k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
330
Other Decks in Technology
See All in Technology
What happened to RubyGems and what can we learn?
mikemcquaid
0
280
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
260
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
330
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
210
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
150
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.3k
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
250
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
210
Agile Leadership Summit Keynote 2026
m_seki
1
600
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.1k
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
150
The untapped power of vector embeddings
frankvandijk
1
1.6k
The SEO identity crisis: Don't let AI make you average
varn
0
240
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Designing for humans not robots
tammielis
254
26k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
For a Future-Friendly Web
brad_frost
182
10k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
64
Transcript
SwiftͷAsync / Await ʹ͍ͭͯ ୈ1ճ HAKATA.swift
"CPVUNF
wΫϥεϝιουגࣜձࣾ wϞόΠϧΞϓϦαʔϏε෦ wJ04ΞϓϦΤϯδχΞ wαʔόʔαΠυΞϓϦΤϯδχΞ wαʔόʔϨε։ൃ෦ wΞϓϦέʔγϣϯΤϯδχΞ ాத໌ @kongmingtrap
wΫϥεϝιουגࣜձࣾ wϞόΠϧΞϓϦαʔϏε෦ wJ04ΞϓϦΤϯδχΞ wαʔόʔαΠυΞϓϦΤϯδχΞ wαʔόʔϨε։ൃ෦ wΞϓϦέʔγϣϯΤϯδχΞ ాத໌ @kongmingtrap
wΫϥεϝιουגࣜձࣾ wϞόΠϧΞϓϦαʔϏε෦ wJ04ΞϓϦΤϯδχΞ wαʔόʔαΠυΞϓϦΤϯδχΞ wαʔόʔϨε։ൃ෦ wΞϓϦέʔγϣϯΤϯδχΞ ాத໌ @kongmingtrap :".-༑ୡʂʂ
Ϟνϕʔγϣϯ
None
ձࣾͷۚͰߦ͘ ւ֎ΧϯϑΝϨϯε ࠷ߴͩͥʜ
4XJGUͷ "TZOD"XBJUʹ͍ͭͯ
Ϟνϕʔγϣϯ
IUUQTBXTBNB[PODPNKQBCPVUBXTXIBUTOFXBXTMBNCEB TVQQPSUTOPEFKT
IUUQTBXTBNB[PODPNKQBCPVUBXTXIBUTOFXBXTMBNCEB TVQQPSUTOPEFKT
ͳΔ΄Ͳ
4XJGU Ͳ͏ͳ͍ͬͯΔΜͩΖ͏ʁ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU
എܠ
ඇಉظॲཧʹ·ͭΘΔ ՝ͷʑ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ඇಉظॲཧΛͭͳ͛ཧ߹ ͷίʔϧόοΫࠈ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ΤϥʔϋϯυϦϯ άͰͷίʔϧόο Ϋࠈ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ͖݅Ͱඇಉظॲཧ Λ࣮ࢪ͍ͨ͠߹ɺେ ͷ߹ɺίʔυʹ ΫϩʔδϟΛॻ͘͜ͱ ʹͳΔ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ޙͷॲཧͰHVBSEͳͲͰ ฦΔͷߟྀΛΕͯ͠ ·͏ ͦͦσόοά͠ਏ͍
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ʢϥτφʔࢯͷܦݧଇͱલஔ͖ͭͭ͠ʜʣ ඇಉظ"1*Λ࡞ͬͯɺଟ͘ͷ߹6*ͷߋ৽ͳͲ ͕བྷΉͨΊɺಉظಈ࡞Ͱߦ͏͜ͱ͕ଟ͍
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ࠶։ՄೳͳॲཧΛඳ͖͍ͨ࣌ɺ4XJGUͷ߹ͩͱɺ ஈ֊తʹΛੜ͢ΔͷΛͱͯ͠ఆٛ͢Δඞཁ͕ ͋Δ
"TZOD"XBJU
wඇಉظॲཧͷߏจ w1SPNJTFΛ؆ܿʹهड़Ͱ͖ΔΑ͏ʹͨ͠ w༷ʑͳݴޠʹΤοηϯε͕औΓࠐ·Ε͍ͯ Δʢ+BWB4DSJQUɺ$ɺ1ZUIPOɺ3VTUʜʣ "TZOD"XBJU
ଞͷݴޠͷඇಉظॲཧ
wඇಉظॲཧͷ࠷ऴతͳࣦྃ͘͠ഊΛ ද͢ΦϒδΣΫτ w݁ՌΛUIFOϝιουͳͲͰνΣΠϯͤ͞Δ 1SPNJTF
1SPNJTF doSomething().then(function(result) { return doSomethingElse(result); }) .then(function(newResult) { return doThirdThing(newResult);
}) .then(function(finalResult) { console.log('Got the final result: ' + finalResult); }) .catch(failureCallback);
wऴ͍ྃͯ͠Δ͔Ͳ͏͔Θ͔Βͳ͍ॲཧ݁Ռ ΛநԽͨ͠ܕ w'VUVSFະདྷͷ݁ՌΛද͢ܕ wจࣈ௨Γɺ૬खʢॲཧ͢Δଆʣʹʮະདྷʯ Λୗ͢ 'VUVSF
'VUVSF val f: Future[List[String]] = Future { session.getRecentPosts } f
onFailure { case t => println("Τϥʔ͕ൃੜͨ͠: " + t.getMessage) } f onSuccess { case posts => for (post <- posts) println(post) }
wඇಉظͰฦ͞ΕΔΛड͚ΔͨΊͷߏจ "XBJU function resolveAfter2Seconds(x) { return new Promise(resolve => {
setTimeout(() => { resolve(x); }, 2000); }); } async function f1() { var x = await resolveAfter2Seconds(10); console.log(x); // 10 } f1();
wඇಉظͰΛฦ͢͜ͱΛ໌ࣔ͢Δߏจ "TZOD GVODUJPOSFTPMWF"GUFS4FDPOET \ SFUVSOOFX1SPNJTF SFTPMWF\ TFU5JNFPVU \ SFTPMWF SFTPMWFE
^ ^ ^ BTZODGVODUJPOBTZOD$BMM \ DPOTPMFMPH DBMMJOH WBSSFTVMUBXBJUSFTPMWF"GUFS4FDPOET DPOTPMFMPH SFTVMU FYQFDUFEPVUQVUSFTPMWFE ^ BTZOD$BMM
"TZOD function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(()
=> { resolve(x); }, 2000); }); } async function add1(x) { const a = await resolveAfter2Seconds(20); const b = await resolveAfter2Seconds(30); return x + a + b; } add1(10).then(v => { console.log(v); // 4ඵޙʹ60Λදࣔ͠·͢ɻ });
4XJGUͰ ࣮ݱ͠Α͏ͱ͢Δͱ
"TZOD"XBJUGPS4XJGU "TZODͷߏจʹ͍ͭͯ
"TZOD"XBJUGPS4XJGU "XBJUͷߏจʹ͍ͭͯ
"TZOD"XBJUGPS4XJGU #FGPSF
"TZOD"XBJUGPS4XJGU "GUFS
✌ Т✌ ࡾ✌ Т ✌ࡾ ✌Т ✌
"TZOD"XBJUGPS4XJGU 'VUVSF
"TZOD"XBJUGPS4XJGU 'VUVSF
͍͔ͭΒ͑Δʁ
"TZOD"XBJUGPS4XJGU
None
IUUQTRJJUBDPNLPIFSJUFNTCFBFD
None
$PODVSSFODZJO 4XJGU0OFBQQSPBDI
$PODVSSFODZJO4XJGU0OFBQQSPBDI
IUUQTXXXTMJEFTIBSFOFUZVHPMGQSFQBSJOHGPSEJTUSJCVUFETZTUFNGBJMVSFT VTJOHBLLBTDBMBNBUTVSJ
None
"QQFOEJY
w "TZOD"XBJUGPS4XJGU w $PODVSSFODZJO4XJGU0OFBQQSPBDI w 1SPQPTBMʹࡌ͍ͬͯͳ͍4XJGUͷBTZODBXBJU͕ૉΒ͠ ͍ͱࢥ͏ཧతഎܠ w "LLBJO"DUJPOXPSLTIPQ4DBMB.BUTVSJ w
1SFQBSJOHGPSEJTUSJCVUFETZTUFNGBJMVSFTVTJOHBLLB 4DBMB.BUTVSJ ࢀߟจݙ
None