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
今から始める型安全 Python / Start Python Type Hints
Search
Mitsuki Ogasahara
March 10, 2021
Technology
13
4.8k
今から始める型安全 Python / Start Python Type Hints
#stapy
https://speakerdeck.com/yamitzky/mastering-type-safety-in-python-3-dot-9-era
の内容を加筆して削ったものです
Mitsuki Ogasahara
March 10, 2021
Tweet
Share
More Decks by Mitsuki Ogasahara
See All by Mitsuki Ogasahara
ひとり情シスなCTOがLLMと始めるオペレーション最適化 / CTO's LLM-Powered Ops
yamitzky
0
450
コスト管理から向き合う技術的負債 / Accounting for Technical Debt Through Cost Management
yamitzky
0
29
Utility-first な CSS-in-JS 〜Tailwind CSS と Chakra UI を添えて〜 / Utility-First CSS-in-JS
yamitzky
5
1.5k
技術が好きで好きで好きでたまらないエンジニアが「取締役」になって思う、マネジメントキャリアパス / My Manager's Path
yamitzky
2
1.1k
Python 3.9 時代の型安全な Pythonの極め方 / Mastering Type Safety in Python 3.9 Era
yamitzky
35
30k
なぜサーバーレスとDockerなのか 〜 インフラ運用を最小化するサービス開発 〜 / Why We Choose Serverless AND Docker
yamitzky
0
4k
サーバーレスを活用して少数精鋭で開発するニュースアプリ #devsumi
yamitzky
4
2.9k
ここが辛いよサーバーレス だが私は乗り越えた #builderscon
yamitzky
14
7.8k
会社の開発合宿で Electron-vueで Slackクライアント作ってみた
yamitzky
0
2.7k
Other Decks in Technology
See All in Technology
"サービスチーム" での技術選定 / Making Technology Decisions for the Service Team
kaminashi
1
200
AI導入の理想と現実~コストと浸透〜
oprstchn
0
120
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
150
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
3
230
フィンテック養成勉強会#54
finengine
0
180
KubeCon + CloudNativeCon Japan 2025 Recap
ren510dev
1
260
A2Aのクライアントを自作する
rynsuke
1
220
SalesforceArchitectGroupOsaka#20_CNX'25_Report
atomica7sei
0
250
作曲家がボカロを使うようにPdMはAIを使え
itotaxi
0
280
生まれ変わった AWS Security Hub (Preview) を紹介 #reInforce_osaka / reInforce New Security Hub
masahirokawahara
0
300
5min GuardDuty Extended Threat Detection EKS
takakuni
0
160
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
11
4k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Unsuck your backbone
ammeep
671
58k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Designing for Performance
lara
609
69k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Automating Front-end Workflow
addyosmani
1370
200k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Adopting Sorbet at Scale
ufuk
77
9.4k
Optimizing for Happiness
mojombo
379
70k
Transcript
ࠓ͔Β࢝ΊΔܕ҆શ1ZUIPO খּݪΈ͖ͭ!ZBNJU[LZ TUBQZ
Agenda ಋೖ جຊฤܕͷ֓ཁͱجຊจ๏ 1ZUIPOϓϩάϥϜΛܕ҆શʹ͠Α͏ ܕͰ1ZUIPOΛศརʹ͠Α͏
·ͱΊ
2ීஈɺ1ZUIPOͰܕॻ͖·͔͢ʁ 1. ࠓͷඪ ˡʮܕΛ࢝Ί͍ͨʯ ^
1Z$PO+1ͷϕεττʔΫͷ༰Λ ʮ࢝ΊΔʯਓ͚ʹՃචɾमਖ਼ CJUMZQZUZQF 1. ࠓͷ༰
1. ͓લɺ୭Αʁ w খּݪޫو!ZBNJU[LZ w +9௨৴ࣾऔక$%0 w ͖ͳٕज़ 5ZQF4DSJQUɺ1ZUIPO ʙ
αʔόʔϨεɺ(SBQI2-FUDʜ ˞54ϩΰ$$#:.JDSPTPGU
1. JX௨৴ࣾʹ͍ͭͯ ʮࠓى͖͍ͯΔ͜ͱΛ໌Β͔ʹ͢ΔʯใಓతςΫϊϩδʔϕϯνϟʔ 1Z$PO+1 γϧόʔεϙϯαʔ ར༻ٕज़ ٕज़ͱͷؔΘΓ 8&# %#13&44 ʮαʔόʔϨεಛूʯدߘ
ࣄۀ هऀͷ͍ͳ͍௨৴ࣾͱͯ͠ɺUP#ɾUP$ͰχϡʔεࣄۀΛల։
1. JX௨৴ࣾʹ͍ͭͯ "*ϫΫνϯछ༧ଌ "*ۓٸใαʔϏε ʮ'"45"-&35ʯ
Python ͷνʔϜ։ൃ େنͳ Python ϓϩδΣΫτ ෆຬ͕͋Γ·ͤΜ͔ʁ 1. Python ͷෆຬ
1. Python ͷෆຬ
˞ฐࣾϓϩδΣΫτʹ͋Γ·ͨ͠🤦 1. Python ͷෆຬ
1. Python ͷෆຬ
ಈతܕ͖ݴޠͷෆຬ ʮܕʯͰղܾͰ͖·͢💡 1. Python ͷෆຬ
1ZUIPOͷܕͷ֓ཁͱجຊจ๏ جຊฤ 02
ɾਖ਼໊ࣜশʮ5ZQF)JOU ܕώϯτ ʯ ɾ1&1Ͱ1ZUIPO ʙ ͔Βೖ༷ͬͨ ɾత੩తղੳɺϦϑΝΫλϦϯάɺίʔυੜͳͲ ɾ1ZUIPO͕੩తܕ͖ݴޠʹͳͬͨΘ͚Ͱͳ͘ɺ ɹҙɾޙ͚ͷܕγεςϜ 1ZUIPOͷܕͬͯͳΜͩΖ͏
2. ʮܕʯͷ֓ཁ ˞͜ͷεϥΠυͰʮܕʯͱݴٴ͢Δࡍʮܕώϯτʯͷ͜ͱΛݴ͍·͢
2. ʮܕʯͷ֓ཁ ੩తղੳ ϦϑΝΫλϦϯά
1ZUIPOʮ੩తܕ͖ݴޠʯͰͳ͍ 2. ʮܕʯͷ֓ཁ 2͜ͷίʔυ࣮ߦ࣌ΤϥʔʹͳΔʁ🤔 2ܕͷใTUSʁJOUʁ🤔
1ZUIPOʮ੩తܕ͖ݴޠʯͰͳ͍ 2. ʮܕʯͷ֓ཁ "࣮ߦ࣌ʹΤϥʔൃੜ͠ͳ͍🙆 αʔυύʔςΟʔͷπʔϧΛΈ߹Θͤͯ׆༻👍 "UZQF ͷΓͱͯ͠ܕώϯτແؔ
ΤσΟλ ิͳͲ 1ZUIPOͷʮܕʯΛ औΓר͘αʔυύʔςΟʔ 2. ʮܕʯͷ֓ཁ mypy pyright pytype VSCode
PyCharm Vim pydantic FastAPI ੩తղੳ ࣮ߦ࣌ͷόϦσʔγϣϯͳͲ ࢀߟIUUQTHJUIVCDPNUZQFEEKBOHPBXFTPNFQZUIPOUZQJOH
ɾਖ਼໊ࣜʮ5ZQF)JOUʯΛհ ɾ1ZUIPOಈతܕ͖ݴޠͰ͋Γɺܕώ ϯτڧ੍͞Εͳ͍ ɾ1ZUIPOࣗମܕνΣοΫΛߦΘͳ͍ɻ SEQBSUZπʔϧΛΈ߹ΘͤΔ ͜͜·Ͱͷ·ͱΊ 2. ʮܕʯͷ֓ཁ
ม 2. ܕώϯτͷจ๏ม
ܕਪ 2. ܕώϯτͷจ๏ม ˺ ܕνΣοΧʔ͕ਪ͢ΔͷͰɺ ࣮ͦΜͳʹ໘͘͘͞ͳ͍🙆
ؔ 2. ܕώϯτͷจ๏ؔ
Ҿ͚ͩॻ͍ͯ0,🙆 2. ܕώϯτͷจ๏ؔ Γ͚ͩॻ͍ͯ0,🙆
DMBTT 2. ܕώϯτͷจ๏DMBTT ˡϓϩύςΟͷఆٛ ˡϝιουఆٛ ˡมͷܕͱͯ͠ར༻
ϓϩύςΟͷܕ͕Θ͔Βͳ͍ͱ͖ 2. ܕώϯτͷจ๏"OZ ˡϓϩύςΟͷఆٛ ˡϝιουఆٛ
҉తͳ"OZ 2. ܕώϯτͷจ๏"OZ ˡϓϩύςΟͷఆٛ ˡϝιουఆٛ ˺
MJTU EJDU TFU 2. ܕώϯτͷจ๏σʔλߏ
/POF͕ೖΔ͔͠Εͳ͍ม l͵ΔΆzࢭ ˡ/POF͡Όͳ͍͜ͱΛ͔֬ΊΔͱ ҆શʹ͑Δ ˡ/POFͷՄೳੑͷࢦఠ 2. ܕώϯτͷจ๏0QUJPOBM
ɾมɺؔ ɾDMBTT ɾMJTUɺEJDUɺTFU ɾ0QUJPOBM ɾ"OZ ͜͜·Ͱͷ·ͱΊ 2. ܕώϯτجຊฤ·ͱΊ
ʮܕʯॻ͘ͷ໘ͦ͘͞͏ʜ🤔ͱࢥͬͨํ ˠʮυΩϡϝϯτʯͷྫ͔Βิ͠·͢ 2.ʮܕʯͱυΩϡϝϯτ
ʮܕʯͱυΩϡϝϯτ ʮܕώϯτʯʹ҆શˍεϚʔτͳυΩϡϝϯτ
ʮܕʯͱυΩϡϝϯτ 03. ࠓ·Ͱͷϝλσʔλࢦఆɺܕ͔Βߟ͑Δͱෆࣗવ "1*εΩʔϚ ϞσϧͷϓϩύςΟͷظจࣈྻͰ͋ͬͯɺ$IBS'JFMEɺ4USJOHͷΠϯελϯεͰͳ͍
ʮܕʯͱυΩϡϝϯτ ҆શɾεϚʔτͳϝλσʔλͷࢦఆ ˞UZQJOH"OOPUBUFE1&1 1ZUIPO Ͱಋೖ͞ΕͨɺܕώϯτͱίϯϑϦΫτ͠ͳ͍ϝλσʔλࢦఆ ͷํ๏ɻϥΠϒϥϦͷରԠ͕ඞཁͳͷͰɺ؍ଌൣғͩͱ1ZEBOUJD͙Β͍͔͠ରԠ͍ͯ͠ͳ͔ͬͨ ˞
PythonϓϩάϥϜΛܕ҆શʹͯ͠ΈΑ͏ Ԡ༻ฤ 03
ɾ1ZUIPO੩తܕ͖ݴޠͰͳ͍ ɾ1ZUIPOࣗମܕνΣοΫΛ͠ͳ͍ ˠπʔϧͰܕνΣοΫ🚨 1ZUIPOͷܕώϯτͷݪଇ 3. ܕνΣοΫ
ɾQZUIPONZQZ ɾNJDSPTPGUQZSJHIU ɾHPPHMFQZUZQF ɾGBDFCPPLQZSF ܕνΣοΫπʔϧɺ݁ߏ͋Δ 3. ܕνΣοΧʔ ࡞ΒΕ͍ͯΔݴޠɺΤσΟλ࿈ܞɺܕਪͷݡ͞ɺεύϧλʹҧ͍
3. ܕνΣοΧʔͷൺֱ(Ұྫ) NZQZ QZSJHIU ˞ܕώϯτΛશ͘ॻ͔ͳͯ͘ɺܕ҆શΛࠓ͔Β࢝ΊΔ͜ͱ͕Ͱ͖Δ Γͷܕਪ SFUVSO࿙ΕΔͱΤϥʔ
ɾܕώϯτΛॻ͍ͯͳ͍ίʔυ͕ଟ͘ଘࡏ ɾQZSJHIUʹΑΔܕνΣοΫΛ։࢝ ʮ'"45"-&35ʯͰ$*ͷܕνΣοΫΛ࢝Ίͨࣄྫ 3. JX௨৴ࣾͷҰྫ ˠ$*ʹΈࠐΜͰΈͨͱ͜Ζʜ
ˡOPEFڥ͕ඞཁͳͷ͕গ͠σϝϦοτ ˡίϚϯυࣗମ؆୯
3. JX௨৴ࣾͷҰྫ
3. JX௨৴ࣾͷҰྫ QZSJHIUDPOpHKTPO ˠܕͷΤϥʔΛ8BSOJOHѻ͍ʹ $*Λ௨͢
3. JX௨৴ࣾͷҰྫ ˠਐతʹΦϓτΠϯ͍ͯ͘͠
3. ͲΜͳͱ͖ʹܕώϯτॻ͘ʁ ˡDMBTTͷϓϩύςΟॻ͘ ˡMJTUͷॳظͳͲ ܕਪͰ͖ͳ͍ͷॻ͘ ˡҾɾΓॻ͘ ˡมਪ͞ΕΔͷͰ ݪଇॻ͔ͳ͍
ϥΠϒϥϦʹʮܕʯ͕ͳ͍ͱΤϥʔʹͳΔ😱 3. ܕνΣοΫ͋Δ͋Δ ༁lCPUPzʹܕώϯτͳ͍Α ˞ܕώϯτͷͳ͍ϥΠϒϥϦ݁ߏଟ͍
ཁʮ͖͋ΒΊͯແࢹ͢ΔͷखͰ͢Αʯ 3. ܕώϯτͷͳ͍ϥΠϒϥϦ CJUMZQZUZQF
ϥϯλΠϜΛͬͱศརʹ͢Δ Ԡ༻ฤ 04
ࠓ·Ͱɿ੩తͳܕνΣοΫͷ 4. ܕώϯτͱϥϯλΠϜ ࣮ߦ࣌ ϥϯλΠϜ ʹ ܕͷใऔಘͰ͖Δ
ྫ EBUBDMBTT . ඪ४ϥΠϒϥϦͷ׆༻ྫ !EBUBDMBTTσίϨʔλʔΛ͔ͭ͏ͱ ࣮ߦ࣌ʹ@@JOJU@@ΛࣗಈͰఆٛͯ͘͠ΕΔ
˺EBUBDMBTTʴόϦσʔγϣϯʴγϦΞϥΠζ ྫ QZEBOUJD . ϥϯλΠϜόϦσʔγϣϯ
ྫ 'BTU"1* . API ͷόϦσʔγϣϯ ܕώϯτ͖ͷؔΛఆ͍͚ٛͯͩ͘͠Ͱɺ όϦσʔγϣϯ͖ͭͷ"1*͕Ͱ͖Δ
ܕώϯτ͔Β4XBHHFS 0QFO"1* ࣗಈੜ . FastAPI ˞ଞݴޠͰΘΕΔ"1*༷ɻ"1*ͷܕ͕ఆٛͰ͖Δ
ʮܕώϯτॻ͘ͷ໘͍͘͞🤔ʯ ʮܕώϯτΛॻ͘ͱศར💡ʯ
ɾσίϨʔλʔɺϝλΫϥεͱΈ߹ΘͤΔͱ%3:ʹ ɾܕͷಈతνΣοΫɺ"1*ͷόϦσʔγϣϯɺ4XBHHFS ఆٛͳͲͰ͖Δ ϥϯλΠϜͰͷܕώϯτΛհ . ·ͱΊ
·ͱΊ 05
ܕώϯτΛॻ͘ͱ/POF ܕͷϛεΛνΣοΫͰ͖Δ ·ͱΊ
ܕώϯτϝλσʔλͷ ҆શɾεϚʔτͳॻ͖ํ . ·ͱΊ
ʮܕʯΛॻ͚ͩ͘ͰϥϯλΠϜ͕ศརʹ . ·ͱΊ
NZQZQZSJHIUͰܕνΣοΫ ਪ͞ΕΔʹॻ͔ͳͯ࢝͘ΊΒΕΔ ·ͱΊ ddddddddddddd
ܕώϯτɺ ࢝Ίͨ͘ͳΓ·ͨ͠Ͷʁʁʁʁʁ
Thank you! +9௨৴ࣾͰ ɾܕΛॻ͖͍ͨ1ZUIPOJTUB ɾ.-ΛαʔϏε׆༻͍ͨ͠ΤϯδχΞ Λੵۃ࠾༻͍ͯ͠·͢