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.9k
今から始める型安全 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
610
コスト管理から向き合う技術的負債 / Accounting for Technical Debt Through Cost Management
yamitzky
0
50
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
31k
なぜサーバーレスとDockerなのか 〜 インフラ運用を最小化するサービス開発 〜 / Why We Choose Serverless AND Docker
yamitzky
0
4.1k
サーバーレスを活用して少数精鋭で開発するニュースアプリ #devsumi
yamitzky
4
3k
ここが辛いよサーバーレス だが私は乗り越えた #builderscon
yamitzky
14
7.9k
会社の開発合宿で Electron-vueで Slackクライアント作ってみた
yamitzky
0
2.7k
Other Decks in Technology
See All in Technology
Introdução a Service Mesh usando o Istio
aeciopires
1
280
Building a cloud native business on open source
lizrice
0
180
RemoteFunctionを使ったコロケーション
mkazutaka
1
100
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
900
Open Table Format (OTF) が必要になった背景とその機能 (2025.10.28)
simosako
1
140
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
1
340
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
3
990
Azure Well-Architected Framework入門
tomokusaba
1
120
AIプロダクトのプロンプト実践テクニック / Practical Techniques for AI Product Prompts
saka2jp
0
110
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
820
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
200
QA業務を変える(!?)AIを併用した不具合分析の実践
ma2ri
0
140
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
The Language of Interfaces
destraynor
162
25k
A Tale of Four Properties
chriscoyier
161
23k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Thoughts on Productivity
jonyablonski
70
4.9k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Unsuck your backbone
ammeep
671
58k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Statistics for Hackers
jakevdp
799
220k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building an army of robots
kneath
305
46k
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 ɾ.-ΛαʔϏε׆༻͍ͨ͠ΤϯδχΞ Λੵۃ࠾༻͍ͯ͠·͢