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
820
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
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
340
Other Decks in Technology
See All in Technology
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
210
What happened to RubyGems and what can we learn?
mikemcquaid
0
310
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.6k
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
5
1k
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
190
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
4
460
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
180
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
740
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
130
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
220
プロポーザルに込める段取り八分
shoheimitani
1
620
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
What's in a price? How to price your products and services
michaelherold
247
13k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
Mind Mapping
helmedeiros
PRO
0
90
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
For a Future-Friendly Web
brad_frost
182
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
Testing 201, or: Great Expectations
jmmastey
46
8.1k
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
͋Γ͕ͱ͏͍͟͝·ͨ͠