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
420
コスト管理から向き合う技術的負債 / Accounting for Technical Debt Through Cost Management
yamitzky
0
27
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
実践! AIエージェント導入記
1mono2prod
0
160
How Community Opened Global Doors
hiroramos4
PRO
1
110
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
3
1.2k
プロダクトエンジニアリング組織への歩み、その現在地 / Our journey to becoming a product engineering organization
hiro_torii
0
130
Understanding_Thread_Tuning_for_Inference_Servers_of_Deep_Models.pdf
lycorptech_jp
PRO
0
110
急成長を支える基盤作り〜地道な改善からコツコツと〜 #cre_meetup
stefafafan
0
120
OpenHands🤲にContributeしてみた
kotauchisunsun
1
420
“社内”だけで完結していた私が、AWS Community Builder になるまで
nagisa53
1
350
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
200
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
140
ハノーバーメッセ2025座談会.pdf
iotcomjpadmin
0
160
CSS、JSをHTMLテンプレートにまとめるフロントエンド戦略
d120145
0
280
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Visualization
eitanlees
146
16k
Bash Introduction
62gerente
614
210k
Git: the NoSQL Database
bkeepers
PRO
430
65k
VelocityConf: Rendering Performance Case Studies
addyosmani
330
24k
How STYLIGHT went responsive
nonsquared
100
5.6k
Music & Morning Musume
bryan
46
6.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Unsuck your backbone
ammeep
671
58k
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 ɾ.-ΛαʔϏε׆༻͍ͨ͠ΤϯδχΞ Λੵۃ࠾༻͍ͯ͠·͢