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
Introduction to Swift Deep Dive. #cm_osaka
Search
Takaaki Tanaka
October 26, 2018
Technology
0
730
Introduction to Swift Deep Dive. #cm_osaka
【10/26(金) 大阪】第2弾クラスメソッドのモバイル開発を知る!第1回〜iOS編
https://classmethod.connpass.com/event/104802/
Takaaki Tanaka
October 26, 2018
Tweet
Share
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
620
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
590
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
490
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
540
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
1.5k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
210
AWS / Google Cloud / Azure それぞれの推しサービス.pdf
kongmingstrap
0
1.3k
CPUブーストの話
kongmingstrap
0
53
私のAWS愛を聞け! ~ここが好きだよStep Functions~ #devio2022
kongmingstrap
0
1.1k
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
600
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
130
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
320
心が動くエンジニアリング ── 私が夢中になる理由
16bitidol
0
100
AIチャットボット開発への生成AI活用
ryomrt
0
170
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
660
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
150
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
150
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
Featured
See All Featured
It's Worth the Effort
3n
183
27k
Visualization
eitanlees
145
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Unsuck your backbone
ammeep
668
57k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Building Adaptive Systems
keathley
38
2.3k
Facilitating Awesome Meetings
lara
50
6.1k
Site-Speed That Sticks
csswizardry
0
28
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Transcript
Introduction to Swift Deep Dive. ۚ 第2弾クラスメソッドのモバイル開発を知る!第1回〜iOS編
"CPVUNF
wΫϥεϝιουגࣜձࣾ wԬΦϑΟεॴଐ wϞόΠϧΞϓϦαʔϏε෦ wϞόΠϧΞϓϦΤϯδχΞ wαʔόʔαΠυΞϓϦΤϯδχΞ wαʔόʔϨε։ൃ෦ wΞϓϦέʔγϣϯΤϯδχΞ ాத໌ @kongmingtrap
None
ࣾ֎׆ಈ
None
ϚχΞοΫͳൃද͕͋ͬͨΓ͢ΔͷͰ ͦͷҰ෦Λ͝հͰ͖Εͱࢥ͍·͢
w"#*ʹ͍ͭͯ w4*-ʹ͍ͭͯ wඇಉظॲཧʹ͍ͭͯ ࠓճ͢͜ͱ
"#*
"QQMJDBUJPO#JOBSZ *OUFSGBDF
"QQMJDBUJPO#JOBSZ*OUFSGBDF wΦϒδΣΫτίʔυϨϕϧͷΠϯλʔϑΣʔ εΛࢦ͢ wޓ"#*Λαϙʔτ͢ΔγεςϜؒͰɺಉ͡ ࣮ߦϑΝΠϧΛมߋແ͠Ͱಈ࡞ͤ͞ΔΈ
None
--7. wίϯύΠϧ࣌ɺϦϯΫ࣌ɺ࣮ߦ࣌ͳͲ͋ΒΏΔ ࣌ͰϓϩάϥϜΛ࠷దԽ͢ΔΑ͏ઃܭ͞Εͨ ίϯύΠϥج൫ wԾϚγϯΛλʔήοτͱͨ͠தؒίʔυ ʢϏοτίʔυʣΛੜ͠ɺͦͷԾϚγϯ ͚ίʔυΛಛఆͷϚγϯͷػցޠʹม͢Δ w4XJGUίϯύΠϥͷόοΫΤϯυʹར༻
--7.Λܰྔͳ··ʹอͪଓ͚͍ͯΔେ͖ͳಛ ͕͋Δ ϥΠϒϥϦΛ͏ΫϥΠΞϯτଆ͔Βݟ Δͱࢍ൱͕྆͋Δ ɻͦΕɺաڈͷܾஅੵۃ తʹݟͯ͠ɺաڈͱͷޓੑΛؾʹͤͣʹ"1* Λେ͖͘มߋ͍ͯ͘͠ͱ͍͏͜ͱͩɻ --7.ͷֶ 5IF"SDIJUFDUVSFPG0QFO4PVSDF"QQMJDBUJPOTຊޠ༁
4XJGUͷ"#* ҆ఆԽ͍ͯ͠ͳ͍
None
ʊਓਓਓਓਓਓਓਓਓʊ ʼɹ$POWFSU'BJMFEɹʻ ʉ:?:?:?:?:?:?:?:?:?ʉ
IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT"#*4UBCJMJUZ.BOJGFTUPNE 4XJGU"#*4UBCJMJUZ.BOJGFTUP
4XJGU"#*4UBCJMJUZ.BOJGFTUPΛಡΉ ࢀߟࢿྉ
IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT"#*4UBCJMJUZ.BOJGFTUPNE "#*҆ఆԽͷجຊํ wΑΓ৽͍͠ίϯύΠϥ͕ݹ͍όʔδϣϯͷ4XJGUͰ ॻ͔ΕͨίʔυΛίϯύΠϧͰ͖Δ͜ͱ w৽͍͠4XJGUόʔδϣϯʹҠߦ͢Δࡍʹ4XJGU։ൃ ऀ͕໘͢ΔҠߦͷ௧ΈΛܰݮ͢Δ wιʔεͷޓੑʹΑΓɺύοέʔδ࡞ऀɺෳ ͷ4XJGUόʔδϣϯʹΘͨͬͯ୯Ұͷίʔυϕʔε Λҡ࣋͠ͳ͕ΒɺϢʔβʔ৽͍͠όʔδϣϯͷ 4XJGUΛ༻Ͱ͖ΔΑ͏ʹͳΔ
IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT"#*4UBCJMJUZ.BOJGFTUPNE "#*҆ఆԽͷجຊํ wόΠφϦϑϨʔϜϫʔΫͱϥϯλΠϜͷޓੑ ʹΑΓɺෳͷ4XJGUόʔδϣϯͰಈ࡞͢Δό ΠφϦܗࣜͷϑϨʔϜϫʔΫΛ͢Δ wόΠφϦϑϨʔϜϫʔΫʹɺϑϨʔϜϫʔΫ ͷ"1*ͷιʔεϨϕϧͷใΛୡ͢Δ4XJGU ϞδϡʔϧϑΝΠϧͱɺ࣮ߦ࣌ʹϩʔυ͞ΕΔ ίϯύΠϧࡁΈͷ࣮Λఏڙ͢Δڞ༗ϥΠϒϥ Ϧͷ྆ํؚ͕·ΕΔ
IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT"#*4UBCJMJUZ.BOJGFTUPNE "#*҆ఆޙ w"#*҆ఆޙͷ҆ఆੑʹ͓͍ͯɺΑΓੵۃతͳϨΠ Ξτվળ͕ൃ໌͞ΕΔՄೳੑ͕͋Γ·͢ɻͨͱ ͑ɺ֎෦λΠϓͷσʔλϝϯόʔΛ༻ͯ͠ω ετ͞ΕͨλΠϓͷσʔλϝϯόʔΛฒସ͑ͨ ΓɺύοΩϯάͨ͠Γ͢Δ͜ͱ͕Ͱ͖·͢ɻͦͷ Α͏ͳվળɺల։λʔήοτ͓Αͼ·ͨ࠷খ όʔδϣϯνΣοΫΛհͯ͠"#*BEEJUJWFͳΓ ํͰߦΘΕͳ͚ΕͳΒͳ͍ɻ͜ΕɺϞδϡʔ
ϧϑΝΠϧ͕λΠϓ͝ͱͷ"#*όʔδϣϯใΛ τϥοΩϯά͢Δඞཁ͕͋Δ͜ͱΛҙຯ͠·͢ɻ
"#*҆ఆޙ 4XJGU"#*4UBCJMJUZ.BOJGFTUPΛಡΉ
"#*҆ఆޙ 4XJGU"#*4UBCJMJUZ.BOJGFTUPΛಡΉ
"#*҆ఆԽඞਢཁ݅ wຊདྷ4XJGUͰऔΓೖΕΒΕΔ͕ͣॱԆ wίʔυΛอक͍ͯ͘͠ϓϩδΣΫτʹͱͬͯɺ ֎෦ϥΠϒϥϦͷϝϯςφϯεͷίετΛԼ ͛Δ͜ͱ͕Ͱ͖Δ w4XJGUͰͷࡌʹ͚ͯɺ4XJGUͳͲ Ͱ0XOFSTIJQपΓͷඋ͞Ε͍ͯΔ
4*-
4XJGU*OUFSNFEJBUF -BOHVBHF IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFSEPDT4*-STU
w4XJGU︎︎︎︎︎︎︎︎︎︎︎︎︎︎︎︎ʹಛԽͨ͠ߴͳҙຯใΛ࣋ͭ 44" 4UBUJD4JOHMF"TTJHONFOU੩త ୯Ұೖ ܗࣜͷ*3 *OUFSNFEJBUF 3FQSFTFOUBUJPOதؒදݱ w࠷େ͖ͳػೳɾׂ࠷దԽ 4*-
4XJGUͷίϯύΠϧ IUUQMMWNPSHEFWNUHTMJEFT(SP⒎-BUUOFS4*-)JHI-FWFM*3QEG
4XJGUͷίϯύΠϧ 4XJGUίʔυ ߏจղੳ 4*- 0CKFDU 4*-ੜ ҙຯղੳ ৄࡉղੳ --7.*3ੜ --7.*3
"45 நߏจ
wιʔείʔυͷจࣈྻΛτʔΫϯʹ͚ʢࣈ ۟ղੳʣɺग़དྷΔݶΓมͳͲͷࢀরΛղ ্ܾͨ͠Ͱ"45ʢநߏจʣΛग़ྗ͢Δ ߏจղੳ
wߏจղੳͰղܾͰ͖ͳ͔ͬͨมͳͲͷࢀ রͷղܾɺϝϯόʔݺͼग़͠ͷղܾɺܕਪɺ ܕνΣοΫΛߦ͏ ҙຯղੳ
wҙຯղੳޙʹ--7.*3ʹམͱ͠ࠐΉͷͰ ͳ͘ɺಠࣗͷதؒදݱͰ͋Δ4*-Λੜ͢Δ w4*-ͷੜ"45Λࠪͯ͠ߦΘΕΔ 4*-ੜ
֤ఔ͝ͱͷ݁ՌΦϓγϣϯͰࢦఆ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4XJGU'J[[#V[[
4*-ʹग़ྗͯ͠ΈΔ TXJGUDFNJUTJMp[[CV[[TXJGU
4*-ʹग़ྗͯ͠ΈΔ
4*-ʹग़ྗͯ͠ΈΔ TXJGUDFNJUTJMp[[CV[[TXJGU
4*-ʹग़ྗͯ͠ΈΔ
w͕ࣗॻ͍ͨίʔυ͕ͲͷΑ͏ʹॲཧ͞Ε ͍ͯ͘ͷ͔ΛΔ͜ͱ͕Ͱ͖Δ wύϑΥʔϚϯεվળͷࡍʹٞͷωλʹͳ Δ ίϯύΠϧͷ݁ՌΛಡΉ͜ͱʹΑͬͯ
<1%'>4XJGU*OUFSNFEJBUF-BOHVBHF.FNPSZ1SPNPUJPO IUUQTLJUBTVLFCPPUIQNJUFNT
ඇಉظॲཧ
IUUQTHJTUHJUIVCDPNMBUUOFSCGCEDGD "TZOD"XBJUGPS4XJGU
ඇಉظॲཧͰ ؕΓ͕ͪͳͨͪ
ӡ໋ͷϐϥϛου
ӡ໋ͷϐϥϛου ୯७ͳγʔέϯεॲཧΛΫϩʔδϟͰܨ͛ ͯ͠·͏ͱɺਂ͍ωετ͕ൃੜ͠ɺϐϥϛο υͷΑ͏ͳ֊ʹͳͬͯ͠·͏
ΤϥʔϋϯυϦϯά
ΤϥʔϋϯυϦϯά Τϥʔॲཧͷهड़͕ʹͳΔ ʢίʔϧόοΫϕʔεͷ߹ʣ
$PNQMFUJPO)BOEMFSͷ͍Ͳ͜Ζ
$PNQMFUJPO)BOEMFSͷ͍Ͳ͜Ζ ඇಉظ"1*Λఆٛ͠ʢ$PNQMFUJPO)BOEMFSΛ༻ʣɺଟ ͘ͷ"1*ΛϒϩοΫ͢Δ͜ͱ͕Ͱ͖ͨͱͯ͠ɺ6*͕བྷΉ ෦ಉظͰΒ͟ΔΛಘͳ͍
wඇಉظॲཧͷߏจ wॱ൪ʹ݁Ռ͕ඞཁͳඇಉظॲཧΛهड़ w༷ʑͳݴޠʹΤοηϯε͕औΓࠐ·Ε͍ͯ Δ w'VUVSF1SPNJTFͩͱࡶʹͳΔ߹ͷه ड़ΛΑΓ؆ܿʹͰ͖ΔΑ͏ʹͨ͠ ͦͦ"TZOD"XBJUͱ
wඇಉظॲཧͷ࠷ऴతͳࣦྃ͘͠ഊΛ ද͢߹ɺॻ͖ํʹΑͬͯࡶʹͳΔ 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);
"TZOD"XBJUGPS4XJGU 4XJGUͷ"TZOD
"TZOD"XBJUGPS4XJGU 4XJGUͷ"TZOD
"TZOD"XBJUGPS4XJGU 4XJGUͷ"TZOD "TZODͷࢦఆͰΓ͕ඇಉظ Ͱฦ͞ΕΔ͜ͱΛࣔ͢
"TZOD"XBJUGPS4XJGU 4XJGUͷ"XBJU
"TZOD"XBJUGPS4XJGU 4XJGUͷ"XBJU
"TZOD"XBJUGPS4XJGU 4XJGUͷ"XBJU
"TZOD"XBJUGPS4XJGU 4XJGUͷ"XBJU ඇಉظॲཧͷ݁Ռ͕ฦͬͯ͘Δ ·Ͱػͤ͞Δ
"TZOD"XBJUGPS4XJGU #FGPSF
"TZOD"XBJUGPS4XJGU "GUFS
͞ΒͳΔԠ༻
w4DBMBͰ͓ͳ͡Έͷܕ wऴ͍ྃͯ͠Δ͔Ͳ͏͔Θ͔Βͳ͍ॲཧ݁Ռ ΛநԽͨ͠ܕ 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) } 'VUVSF
"TZOD"XBJUGPS4XJGU 'VUVSFΛ4XJGUͰ࣮ݱ
'VUVSFΛ4XJGUͰ࣮ݱ "TZOD"XBJUGPS4XJGU
w4XJGUͷݴޠ։ൃऀͳΒͰͷࢹͰɺඇಉ ظॲཧʹؔ͢ΔΞϓϩʔν͕هࡌ͞Ε͍ͯΔ wϓϩϙʔβϧͱͭʹ'VUVSFܕʹ͍ͭͯ ͷ࣮ྫ͕هࡌ͞Ε͍ͯΔ "TZOD"XBJUGPS4XJGUͷϓϩϙʔβϧ
ॴײ
w4XJGUͷൃలָ͍͍ͬͯͯ͠ wݴޠͷίϛϡχςΟɺͨ·ʹϚχΞοΫ ͳ͕Ͱ͖ͯͨΓ͢ΔͷͰୀ۶͠ͳ͍ wJ04NBD04Ҏ֎Ͱ4XJGUͷ׆༂ͷ͕ ͕ͬͯཉ͍͠ ॴײ
w"#*҆ఆԽʹ͍ͭͯ w4XJGU*OUFSNFEJBUF-BOHVBHF.FNPSZ 1SPNPUJPO w4XJGUͰࣗ࡞ίϯύΠϥΛ࡞ͬͨ w4XJGU"#*4UBCJMJUZ.BOJGFTUPΛಡΉ w4XJGUͷதؒݴޠ4*-ΛಡΉͦͷ4*-ʹೖ ͢ΔͨΊͷ४උ ࢀߟจݙ
એ
͔͔ͤͬͩ͘Β Ԭʹߦͬͯ 4XJGUͰϫΠϫΠ Γ͍ͨ
None
ͦͷΠϕϯτ୯ମͩͱ ݫ͍͠ํʜ
None
4XJGUςετ ໘ന͍ʂ ͬͱ৭ʑͳݴޠͷ ษڧΛ͍ͨ͠ʜ
None
͋Γ͕ͱ͏͍͟͝·ͨ͠