Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Working as an iOS Developer at Classmethod
Search
Kato Jun
August 14, 2018
Programming
820
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Working as an iOS Developer at Classmethod
Kato Jun
August 14, 2018
More Decks by Kato Jun
See All by Kato Jun
love-swift-vol8
katoj
0
1.5k
Other Decks in Programming
See All in Programming
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
1.8k
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
730
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
190
setup-vp GitLab対応の裏側
naokihaba
0
110
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
250
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
490
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
170
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
290
すこし踏み込む CancellationToken
htkym
1
500
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
180
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.1k
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3k
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Thoughts on Productivity
jonyablonski
76
5.4k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
280
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.9k
Evolving SEO for Evolving Search Engines
ryanjones
0
300
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
How to Ace a Technical Interview
jacobian
281
24k
Transcript
8PSLJOHBTBO J04%FWFMPQFS BU$MBTTNFUIPE ,BUP+VO 1
"CPVUNF !2 wՃ౻५ wϞόΠϧΞϓϦαʔϏε෦ wJ04ΤϯδχΞ w$.ೖͬͯڧ wࡀʢࡀͷ່͕͍·͢ʣ
"HFOEB !3 wϞόΠϧΞϓϦαʔϏε෦ʹ͍ͭͯ wJ04ΤϯδχΞͷࣄ wҭࣇͱΫϥεϝιου wΫϥεϝιουͷจԽ w88%$Ͱൃද͞ΕͨؾʹͳΔ৽ػೳ
ϞόΠϧΞϓϦαʔϏε෦ ʢϓϦαʔʣͱʁ !4
ϓϦαʔͷ͓ࣄ !5 wࣄۀձ༷͚ࣾͷϞόΠϧΞϓϦʢJ04 "OESPJEʣͱͦͷόοΫΤϯυγεςϜ ʢ"84ʣΛ։ൃ w্هΛߦ͏͜ͱͰ͓٬༷ͷࣄۀɾϏδωεʹ ߩݙ͢Δɻ
͜ΜͳΞϓϦ࡞ͬͯ·͢ !6
͜ΜͳΞϓϦ࡞ͬͯ·͢ !7
͜ΜͳΞϓϦ࡞ͬͯ·͢ !8
Ҋ݅ͷ༰ɾن༷ʑ !9 w࠷ۙҎ্ͷൺֱతنͷେ͖ͳҊ͕݅ ૿͖͑ͯͨˠνʔϜ։ൃˠͭ·ΓνʔϜ֎ Θͣίϛϡχέʔγϣϯ͕ͱͯେࣄ wΞϓϦ͚ͩͷҊ݅͋Γ·͢ wҊ݅ʹґΒͣɺ͓٬༷ʹຬ͍ͯͨͩ͘͜͠ ͱ͕େࣄ
J04ΤϯδχΞͷࣄ !10
ྫ͑͜Μͳ͜ͱ !11 w͓٬༷ઌʹ๚ͯ͠ཁٻͷώΞϦϯά wٕज़తͳ؍͔Βཁ݅ఆٛʹࢀՃ wJ04ΤϯδχΞͷ؍͔ΒΞϓϦΛઃܭ w࣮ͪΖΜςετ w"OESPJEΤϯδχΞσβΠφʔαʔόʔαΠυΤϯδ χΞͱͷڠۀ
J04ΤϯδχΞͷ ؍͕େࣄ !12
J04ΤϯδχΞͷ؍ͱʁ !13 wJ04͔Β͜͏ͳΓ·͢Αʁ͜Μͳ͜ͱͰ͖ ·͢Αʁ wͦͷΓํ͏ݹ͍Ͱ͢Αʁ wࠓ͑Δ͚ͲඇਪʹͳΔͷͰผͷํ๏ߟ ͑ͳ͖ΌͰ͢Αʁ
ࣄΛ͢Δ্Ͱ ৺͕͚͍ͯΔ͜ͱ !14
ීஈ৺͕͚͍ͯΔ͜ͱ !15 w࣮ݱ͢Δํ๏͕ෳ͋Δ߹ͦΕͧΕͷϝ ϦοτσϝϦοτΛग़͓ͯ͠٬༷ʹબΜͰΒ ͏ʢͦͷ࣌ͪ͜ΒͷΦεεϝ999Ͱ͢Αͱ ͑Δʣ wʮ͜ΕͬͯͰ͖Δͷʁʯͬͯฉ͔Εͨ࣌ʹɺͰ ͖ΔͰ͖ͳ͍͚ͩ͡Όͳ͘ɺ࣮ݱ͢ΔͨΊͷલ ఏඞཁͳใɺײΛ͑Δ
ҭࣇͱΫϥεϝιου !16
உੑͷҭٳऔಘˋ !17 wˋͬͯݴ͏ͱӕͬΆ͘ฉ͑͜Δ͚ͲϚδ Ͱ͢ wࢲҭٳऔΓ·ͨ͠ʢϲ݄͚ؒͩͬͨͲɺͬ ͱऔΕΑ͔ͬͨʣ wपΓͷਓੵۃతʹҭࣇͯ͠·͢
͜Μͳ࣌ʹɺ͋͊Ϋϥεϝιου ͰΑ͔ͬͨͳ͊ͱࢥ͏ !18 wࢠڙ͕ٸʹΛग़͕ܴͯࣗ͑͠ʹߦ͔ͳ͘ ͯͳΒͳ͘ͳͬͨ wޕલதग़ࣾͯ͠ޕޙՈͰϦϞʔτϫʔΫ͢ ΔɺͳͲॊೈͳۈ͕Մೳ wݸਓͷ༧ఆͱࣄͷ༧ఆͷ߹͕͚͍ͭ͢
ΫϥεϝιουͷจԽ !19
ϒϩάʢ%FWFMPQFST*0ʣ !20
%FWFMPQFST*0ͱʁ !21 wࣾһ͕͍ͭͰ͖ͳ࣌ʹΞτϓοτͰ͖ Δ wϊϧϚͳ͍ wॻ͖͍ͨ࣌ʹॻ͖͍ͨ༰Λॻ͖͍ͨΑ͏ʹ ॻ͘
ϦϞʔτϫʔΫ !22
ϦϞʔτϫʔΫ !23 w௨ۈ࣌ؒͷɺࣄ͕Ͱ͖Δ wઇͷͳͲަ௨ػ͕ؔ͑ͳ͍߹ಛʹخ͍͠ wࣄ͕ऴΘͬͨΒ͙͢ʹՈͷࣄ͕Ͱ͖Δ w੍ͱͯ͠ϦϞʔτϫʔΫ͕͋ΔͷૉΒ͍͠ wͨͩ͠Ξτϓοτ͕͋Δ͜ͱ͕લఏ
Πϕϯτɾษڧձ !24
Πϕϯτɾษڧձ !25 wۀ࣌ؒதͰϒϩάΛॻ͚ ษڧձΠϕϯτʹߦ͚Δ wւ֎ΧϯϑΝϨϯεʹߦ͚Δ✈ wࠓ88%$ʹॳΊͯߦ͖·ͨ͠ʂ wνέοτɺߤඅɺϗςϧશ ֹձࣾෛ୲
!26
!27
!28
!29
!30
!31
!32
!33
ॳΊͯͷ88%$ !34 wJ04ΤϯδχΞͳͷͰճߦͬͯΈ͔ͨͬͨ wηογϣϯΛத৺ʹա͕ͨ͝͠໘ന͔ͬͨ w"QQMFͷΤϯδχΞʹ࣭Ͱ͖ΔϥϘʹ ػձ͕͋ΕߦͬͯΈ͍ͨ wߦ͔ͤͯ͘Εͨձࣾʹײँ
ࠓͨ͘͞Μͷ Ξοϓσʔτ͕͋Γ·ͨ͠ !35 w"3,JU w$PSF.- w/FUXPSL'SBNFXPSL w/BUVSBM-BOHVBHF w4JSJ4IPSUDVUT w"VUIFOUJDBUJPO4FSWJDFT wͳͲͳͲ
ࠓͨ͘͞Μͷ Ξοϓσʔτ͕͋Γ·ͨ͠ !36 w"3,JU w$PSF.- w/FUXPSL'SBNFXPSL w/BUVSBM-BOHVBHF w4JSJ4IPSUDVUT w"VUIFOUJDBUJPO4FSWJDFT wͳͲͳͲ
͓அΓ !37 w/%"ʹྀ͠ɺ9DPEFը໘ͷεΫϦʔϯ γϣοτࡌ͍ͤͯ·ͤΜ wJ04ϕʔλ൛Ͱͷಈ࡞֬ೝ݁ՌͳͷͰɺਖ਼ ࣜϦϦʔε࣌ʹڍಈ͕มΘΔՄೳੑ͕͋Γ ·͢
4JSJ4IPSUDVUTͱʁ !38 wϢʔβʔ͕ҰߦͳͬͨॲཧΛγεςϜʹొ w4JSJ͕Λֶशͯ͠εϙοτϥΠτݕࡧɺϩο ΫεΫϦʔϯͳͲʹαδΣετ w4JSJʹΑΔͰಛఆͷૢ࡞Λ࣮ߦ wಠࣗͷىಈϑϨʔζΛొ͢Δ͜ͱՄೳ
͜Ε·Ͱͷ4JSJ,JUͱԿ͕ҧ͏ͷʁ !39 w͜Ε·Ͱ4JSJͰ࣮ߦͰ͖Δૢ࡞͕ݶΒΕ͍ͯ ͨʢFY-JTUTBOE/PUFTυϝΠϯͰϝϞΛ࡞ ͢Δ*OUFOUͳͲʣ w4JSJ4IPSUDVUTͰΧελϜ*OUFOUͷ࡞ɺ طଘ*OUFOUͷΧελϚΠζ͕Մೳɺͭ·Γ4JSJ ͕༗ޮʹ͑Δγʔϯ͕૿͑ΔՄೳੑ͕͋Δ
4IPSUDVUTͷ"1*छྨ͋Δ !40 w/46TFS"DUJWJUZ w*OUFOUT
/46TFS"DUJWJUZ !41 wΞϓϦΛىಈͯ͠Կ͔Λදࣔ͢Δ߹ wطʹ)BOEP⒎ͳͲͰ͍ͬͯΔ߹Έࠐ Έ͍͢ w*OUFOUTʹൺ࣮͕͍ͯܰ
*OUFOUT !42 wΞϓϦΛىಈ͢Δ͜ͱͳ͘ॲཧΛ࣮ߦͰ͖Δ wͷϨεϙϯεͷΧελϚΠζɺΧελϜ6* ͷఏڙ͕Մೳ wϢʔβʔମݧతʹϦονͳͷ͕࡞Մೳ
*OUFOUT !43 wΞϓϦΛىಈ͢Δ͜ͱͳ͘ॲཧΛ࣮ߦͰ͖Δ wͷϨεϙϯεͷΧελϚΠζɺΧελϜ6* ͷఏڙ͕Մೳ wϢʔβʔମݧతʹϦονͳͷ͕࡞Մೳ
4IPSUDVUTͷ"1*छྨ͋Δ !44 w/46TFS"DUJWJUZ w*OUFOUT
࠷খͷ࣮ํ๏ ʢԿ͔ҙͷॲཧΛߦ͏ *OUFOUTʣ !45
*OUFOUT&YUFOTJPOΛՃ !46 w9DPEFͰϓϩδΣΫτϑΝΠϧΛબ͠ɺ 5"3(&54ͷࠨԼͷ ϘλϯΛΫϦοΫ͠ɺ *OUFOUT&YUFOTJPOΛՃ wΧελϜ6*Λද͍ࣔͨ͠߹ʮ*ODMVEF6* &YUFOTJPOʯʹνΣοΫ͢Δ
γϣʔτΧοτʢ*OUFOUʣΛఆٛ !47 wJOUFOUEFpOJUJPOϑΝΠϧΛ։͘ͱ࠷ॳԿ ͳ͍ۭͷঢ়ଶ wը໘ࠨԼͷ ϘλϯΛΫϦοΫͯ͠ʮ/FX *OUFOUʯΛબ
$VTUPN*OUFOU !48 w$BUFHPSZʢ֘͢ΔΧςΰϦΛબɻFYྉ ཧΛจ͢Δ4IPSUDVUͷ߹ʮ0SEFSʯΛ બʣ wࠓճʮ%PʯΛબ
$VTUPN*OUFOU !49 w5JUMF w%FTDSJQUJPO w%FGBVMU*NBHF w$POpSNBUJPOͷ6TFSDPOpSNBUJPOSFRVJSFEνΣοΫϘο Ϋεʢ࣮ߦ͢ΔલʹϢʔβʔͷ֬ೝΛߦ͏͔Ͳ͏͔ɻྫ͑ ྉཧΛจ͢Δ߹ͳͲνΣοΫΛ͚ͭͯ֬ೝ͢Δ ͖ʣ
1BSBNFUFST !50 w*OUFOUͷॲཧ͕ඞཁͱ͢ΔύϥϝʔλʔΛఆ ٛ wύϥϝʔλʔͷ໊લͱܕΛఆٛ wࠓճUBTL/BNFͱ͍͏4USJOHύϥϝʔλʔ Λͭఆٛ
4IPSUDVU5ZQFT !51 w1BSBNFUFSTͰఆٛͨ͠ύϥϝʔλʔΛΈ߹Θͤͯ ࡞͢Δ4IPSUDVUʢ4JSJͷϦΫΤετʣͷύλʔϯ wࠓճ5JUMFΛʮ%P\UBTL/BNF^ʯͱఆٛ w#BDLHSPVOEͷ4VQQPSUTCBDLHSPVOEFYFDVUJPOͷ νΣοΫϘοΫεʢόοΫάϥϯυ࣮ߦ͢Δ͔Ͳ͏ ͔ͷઃఆʣ
3FTQPOTFΛఆٛ !52 w4IPSUDVUΛ࣮ߦͨ݁͠Ռʢ4JSJ͔ΒͷϨεϙ ϯεʣͷܗࣜΛఆٛ w1SPQFSUJFTͰ1BSBNFUFSTͱಉ͡Α͏ʹϓϩ ύςΟͷ໊લͱܕΛఆٛ wࠓճ1BSBNFUFSTͱಉ༷ɺUBTL/BNFͱ͍͏ 4USJOHϓϩύςΟΛͭఆٛ
3FTQPOTFΛఆٛ !53 w3FTQPOTF5FNQMBUFT w4IPSUDVUͷ࣮ߦ݁ՌΛϢʔβʔʹ͑Δࡍͷϝοηʔ δςϯϓϨʔτΛఆٛ w$PEFʢॲཧޭࣦഊΛද͢ʣͱϝοηʔδΛఆٛ wࠓճ$PEF͕TVDDFTTͷ5FNQMBUFʹɺఆٛͨ͠ϓ ϩύςΟΛ͍ɺ*WFpOJTIFE\UBTL/BNF^ͱఆٛ
JOUFOUEFpOJUJPOϑΝΠϧ͔Β ίʔυ͕ࣗಈੜ !54 wϏϧυ͢ΔͱରԠ͢ΔΫϥε͕ࣗಈੜ͞Ε Δ
͜͜·Ͱ͕ 4IPSUDVUͷఆٛ !55
γϣʔτΧοτΛఏڙ !56 wࣗಈੜͨ͠ΫϥεΛͬͯγϣʔτΧοτΛγεςϜʹରͯ͠ఏڙ͢Δ w%P4PNFUIJOH*OUFOU͕JOUFOUEFpOJUJPOϑΝΠϧ͔Βࣗಈੜͨ͠*OUFOUΛද͢Ϋϥε w*OUFOUΛ࡞ͯ͠ඞཁใΛηοτͨ͠Βɺ*/*OUFSBDUJPOΛ࡞ͯ͠EPOBUF͢Δ͚ͩ let intent = DoSomethingIntent() intent.taskName
= "a certain task" let interaction = INInteraction(intent: intent, response: nil) interaction.donate { error in // handler error }
γϣʔτΧοτΛϋϯυϧ !57 wࣗಈੜͨ͠ΫϥεΛͬͯγϣʔτΧοτΛγεςϜʹରͯ͠ఏڙ͢Δ w*/&YUFOTJPOΛܧঝͨ͠ΫϥεͰIBOEMFS GPS ϝιουΛΦʔόʔϥΠυ wΠϯςϯτͷछྨʹԠͯ͡దͳϋϯυϥʔΦϒδΣΫτΛฦ͢ॲཧΛ͍ͯ͠Δ class IntentHandler: INExtension
{ override func handler(for intent: INIntent) -> Any? { switch intent { case is DoSomethingIntent: return DoSomethingIntentHandler() default: return nil } } }
γϣʔτΧοτΛϋϯυϧ !58 w࣮ࡍʹΠϯςϯτΛϋϯυϧ͢ΔΫϥεΛ࣮ w%P4PNFUIJOH*OUFOU)BOEMJOHࣗಈੜͨ͠ϓϩτίϧ wDPOpSN JOUFOUDPNQMFUJPO ϝιου͕ఆٛ͞Ε͍ͯ·͕ͨ͠ɺͪ͜Βͷ࣮ҙ wΠϯςϯτͷछྨʹԠͯ͡దͳϋϯυϥʔΦϒδΣΫτΛฦ͢ॲཧΛ͍ͯ͠Δ class DoSomethingIntentHandler:
NSObject, DoSomethingIntentHandling { func handle(intent: DoSomethingIntent, completion: @escaping (DoSomethingIntentResponse) -> Void) { guard let taskName = intent.taskName else { completion(DoSomethingIntentResponse(code: .failure, userActivity: nil)) return } // do something. let response = DoSomethingIntentResponse.success(taskName: taskName) completion(response) } }
͜͜·Ͱग़དྷΔͱʁ !59 wΞϓϦΛಈ͔ͯ͠ɺγϣʔτΧοτΛEPOBUF ͢ΔͱɺઃఆΞϓϦͷγϣʔτΧοτҰཡʹ දࣔ͞ΕΔ wಠࣗͷىಈϑϨʔζΛԻՄೳ
4JSJ4IPSUDVUT ͬͯΈ͍ͯͩ͘͞ !60
·ͱΊ !61
·ͱΊ !62 wΫϥεϝιουͷϞόΠϧΞϓϦαʔϏε෦Ͱ༷ʑͳҊ݅ɾࣄ͕ Ͱ͖·͢☺ wϒϩάॻ͖͍ͨਓɺษڧձʹొஃ͍ͨ͠ਓɺւ֎Πϕϯτߦ͖͍ͨਓɺ ߦ͚·͢Α wϦϞʔτϫʔΫͳͲɺ੍͏·͘׆༻͠Α͏ wࢠҭ͍ͯ͢͠Α w4JSJ4IPSUDVUTָ͍͠Α
5IBOLTʂ !63