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
Option Type
Search
wagyu298
June 01, 2016
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Option Type
Swift Option Type pitfalls
wagyu298
June 01, 2016
More Decks by wagyu298
See All by wagyu298
Swagger Codegen
wagyu298
1
2.8k
HTTP/2 Mobile
wagyu298
0
1k
Android VM
wagyu298
0
750
process.nextTick differences between node-v0.8 and node-v0.11
wagyu298
1
1.8k
Other Decks in Programming
See All in Programming
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
420
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
590
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
2
1.2k
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
690
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
190
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
250
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
170
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
480
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
120
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
17k
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
620
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Docker and Python
trallard
47
4k
How to train your dragon (web standard)
notwaldorf
97
6.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
WENDY [Excerpt]
tessaabrams
11
39k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
810
Exploring anti-patterns in Rails
aemeredith
3
450
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
Site-Speed That Sticks
csswizardry
13
1.4k
Transcript
0QUJPO5ZQF !XBHZV
ࠓͷϙΠϯτ w ओʹ4XJGUͷ͠·͢ w ࠷ۙͷ/VMM͕ೖͰ͖ͳ͍ϓϩάϥϛϯάݴޠ͕૿͑ͯΔ w )BTLFMM 4DBMB ' 3VTU
4XJGU ,PUMJO FUD w ࣮ݱ͢ΔΈͷҰ͕ͭ0QUJPO5ZQF w ʢ4XJGUͰ0QUJPOBMɺ,PUMJOͰ/VMMBCMFͱݴ͍·͢ʣ w ࠷ۙͷྲྀߦΓͳͷͰ+BWB4DSJQUͱ͔ʹ͖͡ʹೖΔ͔ w ϥΠϒϥϦϕʔεͩͱOPEFPQUJPOTͱ͔͋ΔΜ͚ͩͲݴޠαϙʔτ͕ͳ͍ ͱ͠ΜͲ͍ w ͬͯΈΔͱͪΐ͍ͪΐ͍τϥοϓ͕͋ΔͷͰͦͷลΛڞ༗
CJMMJPOEPMMBSNJTUBLF w *DBMMJUNZCJMMJPOEPMMBSNJTUBLF*UXBTUIFJOWFOUJPOPGUIFOVMMSFGFSFODFJO"U UIBUUJNF *XBTEFTJHOJOHUIFpSTUDPNQSFIFOTJWFUZQFTZTUFNGPSSFGFSFODFTJOBO PCKFDUPSJFOUFEMBOHVBHF "-(0-8 .ZHPBMXBTUPFOTVSFUIBUBMMVTFPGSFGFSFODFT TIPVMECFBCTPMVUFMZTBGF XJUIDIFDLJOHQFSGPSNFEBVUPNBUJDBMMZCZUIFDPNQJMFS#VU*
DPVMEOUSFTJTUUIFUFNQUBUJPOUPQVUJOBOVMMSFGFSFODF TJNQMZCFDBVTFJUXBTTPFBTZ UPJNQMFNFOU5IJTIBTMFEUPJOOVNFSBCMFFSSPST WVMOFSBCJMJUJFT BOETZTUFNDSBTIFT XIJDIIBWFQSPCBCMZDBVTFEBCJMMJPOEPMMBSTPGQBJOBOEEBNBHFJOUIFMBTUGPSUZZFBST w ͦΕԯυϧʹ૬͢ΔࢲͷޡΓͩɻOVMMࢀরΛൃ໌ͨ͠ͷͷ͜ͱͩͬͨɻ࣌ɺ ࢲΦϒδΣΫτࢦݴޠ "-(0-8 ʹ͓͚ΔࢀরͷͨΊͷแׅతܕγεςϜΛઃܭ͍ͯͨ͠ɻ ඪɺίϯύΠϥͰͷࣗಈνΣοΫͰશͯͷࢀর͕શʹ҆શͰ͋Δ͜ͱΛอূ͢Δ͜ͱͩͬ ͨɻ͔͠͠ɺࢲ୯ʹͦΕ͕༰қͩͱ͍͏͚ͩͰɺແޮͳࢀরΛؚΊΔ༠ʹ߅Ͱ͖ͳ͔ͬͨɻ ͜Εɺޙʹ͑Εͳ͍աͪɺ੬ऑੑɺγεςϜΫϥογϡΛҾ͖ى͜͠ɺաڈؒͰ ԯυϧ૬ͷۤ௧ͱଛΛҾ͖ىͨ͜͠ͱΈΒΕΔɻ w IUUQXXXJOGPRDPNQSFTFOUBUJPOT/VMM3FGFSFODFT5IF#JMMJPO%PMMBS.JTUBLF5POZ )PBSF
4XJGU w 4XJGUJTBHFOFSBMQVSQPTFQSPHSBNNJOH MBOHVBHFCVJMUVTJOHBNPEFSOBQQSPBDIUP TBGFUZ QFSGPSNBODF BOETPGUXBSFEFTJHO QBUUFSOT w IUUQTTXJGUPSHBCPVU
ҎԼɺ4XJGUͷσϞΛ ަ͑ͳ͕Βߦ͖·͢
/VMMFSSPS w 4XJGUͷී௨ OPOPQUJPOBM ͷม/VMMඇڐ༰Ͱ͢ w 4XJGUͰOJM͕/VMMͰ͢ w OJMΛมʹೖ͢ΔͱΤϥʔʹͳΓ·͢ w
దʹ4XJGU৮Δͱଟ࠷ॳʹૺ۰͢ΔίϯύΠϥΤϥʔ w Α͔ͬͯ͘ͳ͍ͱΠϥΠϥ͢Δ w 4XJGUݴޠʹΈࠐ·Ε͍ͯΔػೳͰ͢
/VMMFSSPS WBSTUS4USJOHOJM
ॳظԽ w มඇOJMͰॳظԽ͠·͢ w ʢͪͳΈʹ4XJGUͰWBS͕WBSJBCMFɺMFU͕ DPOTUBOUͳͷͰ͕͢ɺҰൠతͳมʗఆͱ؆୯ ʹଊ͑Δͱ৭ʑ͍͕͋͜͠Γ·͢ͷͰɺWBS MFUΛ۠ผͤͣมͱදه͍ͯ͠·͢ʣ
ॳظԽ WBSTUS4USJOHl999z
0QUJPOBM w OJMͰॳظԽ͍ͨ͠߹0QUJPOBMܕมΛ༻ ͠·͢ w ܕͷޙΖʹ Λ͚Δͱ0QUJPOBMܕมʹͳΓ· ͢
0QUJPOBM WBSTUS4USJOH OJM QSJOU TUS
0QUJPOBM w ඇ0QUJPOBMܕมʹ0QUJPOBMܕมΛೖ͢Δ ͜ͱͰ͖·ͤΜ w 4XJGUΛͬͯదʹίʔσΟϯά͢Δͱଟ࠷ॳ ʹૺ۰͢Δҙຯෆ໌ͳίϯύΠϥΤϥʔ
0QUJPOBM GVODG TUS4USJOH \ QSJOU TUS ^ WBSTUS4USJOH OJM
G TUS
6OXSBQ w 0QUJPOBMܕม͔Βඇ0QUJPOBMܕͷΛऔΓग़ ͢͜ͱΛ4XJGUͰ6OXSBQͱݺͼ·͢ɻ w 6OXSBQ͢Δʹ0QUJPOBMܕมͷޙΖʹΛ ͚·͢ɻ
6OXSBQ GVODG TUS4USJOH \ QSJOU TUS ^ WBSTUS4USJOH """
G TUS
0QUJPOBM$IBJOJOH w 0QUJPOBMܕมͷϝϯό 1SPQFSUZNFUIPE ʹ ҆શʹΞΫηε͢Δํ๏Ͱ͢ɻ w 0QUJPOBMมͷޙΖʹ Λ͚ͯϝϯόʹΞΫη ε͢ΔͱɺOJMඇOJMΘͣϝϯόʹΞΫηεͰ͖
·͢ɻ
0QUJPOBM$IBJOJOH DMBTT5\ WBSTUS4USJOH999 ^ WBSU5 5 WBSTUSU TUS QSJOU
TUS UOJM TUSU TUS QSJOU TUS
0QUJPOBM$IBJOJOH w 0QUJPOBM$IBJOJOH͕ฦ͢0QUJPOBMܕʹͳΓ ·͢ w 0QUJPOBM$IBJOJOHͰऔಘͨ͠Λඇ0QUJPOBMܕ มඇ0QUJPOBMܕҾΛड͚औΔؔʹͦ͏ ͱ͢ΔͱίϯύΠϧΤϥʔ͕ൃੜ͠·͢ w 4XJGU͕͔͖ͬͯͨͱࢥ͏͜Ζʹૺ۰͢Δͱࢥ
͍·͢
0QUJPOBM$IBJOJOH DMBTT5\ WBSTUS4USJOH999 ^ GVODG T4USJOH \ QSJOU T
^ WBSU5 5 G U TUS
0QUJPOBM$IBJOJOH w ༨ஊͰ͕͢ w ͋͘·Ͱ0QUJPOBM$IBJOJOHͳͷͰඌ ʹ͚Ε·ͤΜ w $P⒎FF4DSJQUॻ͍ͯΔͱΑ͔͘Βͳ͘ͳΔ w 6OXSBQͳͷ͚Ε·͢
0QUJPOBM$IBJOJOH DMBTT5\ WBST4USJOH 99 ^ WBSD5 WBSTDT WBSUDT
JGMFUHVBSEFMTF w 0QUJPOBMܕͷม0QUJPOBM$IBJOJOHͨ͠ʹ ҆શʹΞΫηε͍ͨ͠߹JGMFU͔HVBSEFMTF ߏจ͕ศརͰ͢
JGMFU DMBTT5\ WBSTUS4USJOH999 ^ GVODG T4USJOH \ QSJOU T
^ WBSU5 5 JGMFUTU TUS\ G T ^
HVBSEFMTF GVODG T4USJOH \ HVBSEMFUUTFMTF\ SFUVSO ^ QSJOU U
^ G OJM
*NQMJDJUMZ6OXSBQQFE 0QUJPOBM w *NQMJDJUMZ҉త w ͱ͔ Λॻ͔ͳͯ͘ɺ҉తʹ6OXSBQ͞Ε Δ0QUJPOBMܕͷ͜ͱͰ͢
*NQMJDJUMZ6OXSBQQFE 0QUJPOBM WBST4USJOHOJM JGTOJM\ QSJOU T ^
NPOBE w 0QUJPOBMܕʹNBQͱqBU.BQͱ͍͏ϝιου ͕ఆٛ͞Ε͍ͯ·͢ɻ w NBQ0QUJPOBMܕม͕ඇOJMΛ࣋ͭ߹ʹؔ Λద༻͠0QUJPOBMܕͰฦ͠·͢ɻ w qBU.BQ0QUJPOBMܕม͕ඇOJMΛ࣋ͭ߹ʹ ؔΛద༻͠ඇ0QUJPOBMܕͰฦ͠·͢ɻ
NPOBE WBST4USJOH 999 WBSUTNBQ\ """ ^ QSJOU U
UTqBU.BQ\ """ ^ QSJOU U WBSVTNBQ\ 0QUJPOBM4USJOH """ ^ QSJOU V UTqBU.BQ\ 0QUJPOBM4USJOH """ ^ QSJOU U
࣮໘ͷ w 0QUJPOBM*NQMJDJUMZ6OXSBQQFE0QUJPOBMܕม (FOFSJDͰ࣮͞Ε͍ͯ·͢ w ΛΘͣ(FOFSJDߏจͰมఆٛ͢Δ͜ ͱՄೳͰ͢ w 4XJGUʹݶΒͣଞͷݴޠࣅ༷ͨͳײ͡Ͱ͢
࣮໘ͷ WBST0QUJPOBM4USJOH""" WBSU*NQMJDJUMZ6OXSBQQFE0QUJPOBM4USJOH"""
ϓϩάϥϛϯάαϙʔτ w ͜ͷลͰOJMॳظԽΤϥʔͱ͔ग़ͯ͠·͢ w IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFS JODMVEFTXJGU"45 %JBHOPTUJDT4FNBEFG-- w IUUQTHJUIVCDPNBQQMFTXJGUCMPCNBTUFS MJC4FNB$4%JBHDQQ-
0QUJPO5ZQFͷఆٛ w 0QUJPO5ZQF/POF͔4PNF WBMVF Λฦ͢ 5BHHFE6OJPO λά͖ڞ༻ମ Ͱ͢ return: A
! A? = a 7! Just a bind: A? ! ( A ! B? ) ! B? = a 7! f 7! ( Nothing if a = Nothing f a0 if a = Just a0
͓ΘΓ