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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takaaki Tanaka
October 26, 2018
Technology
0
830
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
330
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.4k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
360
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.1k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
840
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
670
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
750
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
[2026-03-07]あの日諦めたスクラムの答えを僕達はまだ探している。〜守ることと、諦めることと、それでも前に進むチームの話〜
tosite
0
170
A Gentle Introduction to Transformers
keio_smilab
PRO
2
1k
AIエージェント時代に備える AWS Organizations とアカウント設計
kossykinto
3
730
マネージャー版 "提案のレベル" を上げる
konifar
22
15k
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
130
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
180
AIエージェント、 社内展開の前に知っておきたいこと
oracle4engineer
PRO
2
100
Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例
lycorptech_jp
PRO
1
190
Security Diaries of an Open Source IAM
ahus1
0
210
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
ナレッジワークのご紹介(第88回情報処理学会 )
kworkdev
PRO
0
180
ランサムウエア対策してますか?やられた時の対策は本当にできてますか?AWSでのリスク分析と対応フローの泥臭いお話。
hootaki
0
110
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.4k
[SF Ruby Conf 2025] Rails X
palkan
2
820
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Docker and Python
trallard
47
3.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Optimizing for Happiness
mojombo
378
71k
Unsuck your backbone
ammeep
672
58k
Navigating Team Friction
lara
192
16k
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
͋Γ͕ͱ͏͍͟͝·ͨ͠