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
890
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introduction to Swift Deep Dive. #cm_osaka
【10/26(金) 大阪】第2弾クラスメソッドのモバイル開発を知る!第1回〜iOS編
https://classmethod.connpass.com/event/104802/
Takaaki Tanaka
October 26, 2018
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
560
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.5k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
460
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.3k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
950
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
750
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
860
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.3k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
370
Other Decks in Technology
See All in Technology
「守りたい体験」を渡すだけで E2E を生成させられるようになった話
hinac0
2
980
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
1.2k
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
190
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
840
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
160
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
280
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
460
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
470
JAWS_ICEBERG_BASECAMP
iqbocchi
2
110
全員がリーダーである世界へ キリマンジャロ登頂とシェアド・リーダー
jinwatanabe
0
120
伝票作成AIエージェントを支える、LLMOpsとインフラの選択肢 / AICon2026_takeda
rakus_dev
0
250
シンガポールで登壇してきます
yama3133
0
340
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
Why Our Code Smells
bkeepers
PRO
340
58k
Statistics for Hackers
jakevdp
799
230k
Test your architecture with Archunit
thirion
1
2.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
160
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Automating Front-end Workflow
addyosmani
1370
210k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
Designing Powerful Visuals for Engaging Learning
tmiket
1
450
Raft: Consensus for Rubyists
vanstee
141
7.6k
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
͋Γ͕ͱ͏͍͟͝·ͨ͠