$30 off During Our Annual Pro Sale. View Details »
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
800
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
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
130
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.3k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
320
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
800
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
640
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
710
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
320
Other Decks in Technology
See All in Technology
MLflowで始めるプロンプト管理、評価、最適化
databricksjapan
1
140
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
300
安いGPUレンタルサービスについて
aratako
2
2.7k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
評価駆動開発で不確実性を制御する - MLflow 3が支えるエージェント開発
databricksjapan
1
120
研究開発×プロダクトマネジメントへの挑戦 / ly_mlpm_meetup
sansan_randd
0
110
Lessons from Migrating to OpenSearch: Shard Design, Log Ingestion, and UI Decisions
sansantech
PRO
1
120
世界最速級 memcached 互換サーバー作った
yasukata
0
330
大企業でもできる!ボトムアップで拡大させるプラットフォームの作り方
findy_eventslides
1
700
Playwrightのソースコードに見る、自動テストを自動で書く技術
yusukeiwaki
13
5.2k
エンジニアリングマネージャー はじめての目標設定と評価
halkt
0
270
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
170
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Building Flexible Design Systems
yeseniaperezcruz
330
39k
We Have a Design System, Now What?
morganepeng
54
7.9k
[SF Ruby Conf 2025] Rails X
palkan
0
500
A Tale of Four Properties
chriscoyier
162
23k
Producing Creativity
orderedlist
PRO
348
40k
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
͋Γ͕ͱ͏͍͟͝·ͨ͠