SlideShare a Scribd company logo
1 of 20
Download to read offline
mypy - 待望の3.9型ヒント対応
Kyutatsu
自己紹介
• Kyutatsu ( 西浦久達, にしうらきゅうたつ)


• Webエンジニアをやってます。


• Python, Django, DRF, AWS…


• https://qtatsu.hatenablog.com/ (はてブ: qtatsuの週報)
新しい型ヒント、使った方がいい?
• Python3.9から型ヒントの書き方に変更が入った。
• これからは、新しい書き方を使うべきなのか?
型ヒントとは?
• 参考資料
• 公式ドキュメント https://docs.python.org/3/library/typing.html
• PyCon2021 https://youtu.be/jLQLFFznPIo
• あくまでヒント。
• 型を間違えても、処理が可能なら実行時にエラーは起きない。
mypyとは?
• コードの実行前に、型が正しいかチェックできる。
成功例
$ mypy slide.py


Success: no issues found in 1 source file
• Ref.  https://github.com/python/mypy
mypyとは?
• コードの実行前に、型が正しいかチェックできる。
$ mypy slide.py


slide.py:2: error: Unsupported operand types


for + ("str" and "int")


Found 1 error in 1 file (checked 1 source file)
型に問題があった!
• Ref.  https://github.com/python/mypy
Python3.9: typingモジュールに新機能追加!
ところが…
mypy(0.790)
$ mypy slide.py


slide.py:1: error: "list" is not subscriptable, use "typing.List"
instead


Found 1 error in 1 file (checked 1 source file)
Python3.9の書き方でエラー(あってるのに…)
Python3.9: typingモジュールに新機能追加!
mypy(0.800)が1/22にリリース!
$ mypy slide.py


Success: no issues found in 1 source file
ところが…
新しい記法を試してみる!
mypy(0.800)が対応してくれた、


python3.9(3.10)の新記法を試してみる!
組み込みlist
python3.8以前
• 他、tuple, dict, setなど
• PEP585を反映
python3.9∼
組み込みの list がそのまま利用できるようになった!
組み込みlist
$ mypy slide.py
mypy==0.790
slide.py:1: error: "list" is not subscriptable, use
"typing.List" instead


Found 1 error in 1 file (checked 1 source file)
組み込みlist
Success: no issues found in 1 source file


$ mypy slide.py
mypy==0.800
「 | 」で複数の型を指定
python3.9以前
python3.10∼ ?
PEP604を反映
__future__でPython3.10の機能を先取りできる
• Ref. https://docs.python.org/ja/3/library/__future__.html
• Python側は、3.7以降なら利用可能
• Mypy側は最新の0.800で対応済み!
「 | 」で複数の型を指定
$ mypy slide.py
mypy==0.790
slide.py:3: error: Invalid type comment or
annotation


Found 1 error in 1 file (checked 1 source file)
「 | 」で複数の型を指定
Success: no issues found in 1 source file


$ mypy slide.py
mypy==0.800
古い記法はdeprecated
• Python3.9のtypingモジュールでの変更は多め。


• 古い書き方は非推奨になっている!
• 以下はhttps://docs.python.org/3/library/typing.htmlから引用
“class
 
typing.List(list, MutableSequence[T])


….(省略)…..


バージョン 3.9 で非推奨:
 
builtins.list
 
は
 
[]
 
をサポートするようになり
ました。
 
PEP 585
 
および
 
Generic Alias Type
 
を参照してください。
新しい型ヒント、使った方がいい?
• mypyが対応したので、3.9(3.10)記法で是非書くべき!
• Pythonのバージョンが低くても、__future__を使えば
利用可能(3.7以上)。
• このLTが終わったら、是非
` pip install mypy==0.800` を実行してください!
その他の改善
• https://mypy-lang.blogspot.com/2021/01/mypy-0800-
released.html


• https://docs.python.org/3/library/typing.html
おわり
ご静聴ありがとうございました!

More Related Content

What's hot

インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案Masanori Kado
 
Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Yuya Unno
 
N04_デジタルバンクを目指す北國銀行の挑戦とその歩み [Microsoft Japan Digital Days]
N04_デジタルバンクを目指す北國銀行の挑戦とその歩み [Microsoft Japan Digital Days]N04_デジタルバンクを目指す北國銀行の挑戦とその歩み [Microsoft Japan Digital Days]
N04_デジタルバンクを目指す北國銀行の挑戦とその歩み [Microsoft Japan Digital Days]日本マイクロソフト株式会社
 
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論Tokoroten Nakayama
 
わりとディープ?同値分割↔境界値分析
わりとディープ?同値分割↔境界値分析わりとディープ?同値分割↔境界値分析
わりとディープ?同値分割↔境界値分析scarletplover
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホンYou_Kinjoh
 
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本Hajime Fujita
 
とある診断員とAWS
とある診断員とAWSとある診断員とAWS
とある診断員とAWSzaki4649
 
優れた研究論文の書き方
優れた研究論文の書き方優れた研究論文の書き方
優れた研究論文の書き方Masanori Kado
 
4つの戦犯から考えるサービスづくりの失敗
4つの戦犯から考えるサービスづくりの失敗4つの戦犯から考えるサービスづくりの失敗
4つの戦犯から考えるサービスづくりの失敗toshihiro ichitani
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するHitachi, Ltd. OSS Solution Center.
 
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へYoheiGibo
 
DataDrift in Azure Machine Learning
DataDrift in Azure Machine LearningDataDrift in Azure Machine Learning
DataDrift in Azure Machine LearningKeita Onabuta
 
Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)Hironori Washizaki
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)Takayuki Itoh
 
What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?Yasuharu Nishi
 
デプロイメントパイプラインって何?
デプロイメントパイプラインって何?デプロイメントパイプラインって何?
デプロイメントパイプラインって何?ke-m kamekoopa
 
機械学習 入門
機械学習 入門機械学習 入門
機械学習 入門Hayato Maki
 

What's hot (20)

インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~
 
N04_デジタルバンクを目指す北國銀行の挑戦とその歩み [Microsoft Japan Digital Days]
N04_デジタルバンクを目指す北國銀行の挑戦とその歩み [Microsoft Japan Digital Days]N04_デジタルバンクを目指す北國銀行の挑戦とその歩み [Microsoft Japan Digital Days]
N04_デジタルバンクを目指す北國銀行の挑戦とその歩み [Microsoft Japan Digital Days]
 
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論
 
わりとディープ?同値分割↔境界値分析
わりとディープ?同値分割↔境界値分析わりとディープ?同値分割↔境界値分析
わりとディープ?同値分割↔境界値分析
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
 
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
トップエンジニアが実践する思考整理法~テクニカルライティングを用いた課題解決の基本
 
とある診断員とAWS
とある診断員とAWSとある診断員とAWS
とある診断員とAWS
 
優れた研究論文の書き方
優れた研究論文の書き方優れた研究論文の書き方
優れた研究論文の書き方
 
4つの戦犯から考えるサービスづくりの失敗
4つの戦犯から考えるサービスづくりの失敗4つの戦犯から考えるサービスづくりの失敗
4つの戦犯から考えるサービスづくりの失敗
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
 
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
「DX完全に理解した」「DXわけがわからないよ」なユーザ企業の方へ
 
DataDrift in Azure Machine Learning
DataDrift in Azure Machine LearningDataDrift in Azure Machine Learning
DataDrift in Azure Machine Learning
 
Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)
 
What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?
 
デプロイメントパイプラインって何?
デプロイメントパイプラインって何?デプロイメントパイプラインって何?
デプロイメントパイプラインって何?
 
機械学習 入門
機械学習 入門機械学習 入門
機械学習 入門
 

Similar to mypy - 待望のPython3.9型ヒント対応

Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Tetsuya Morimoto
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介shoma h
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションTetsuya Morimoto
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門kashew_nuts
 
Pipenvのご紹介 v2
Pipenvのご紹介 v2Pipenvのご紹介 v2
Pipenvのご紹介 v2C Y
 
MTプラグイン入門以前
MTプラグイン入門以前MTプラグイン入門以前
MTプラグイン入門以前Hiroshi Yamato
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementationsmasahitojp
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理についてYasutomo Kawanishi
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発shoma h
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトTetsuya Morimoto
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406Shinya Okano
 
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfRyo Higashigawa
 
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Yusuke Miyazaki
 
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LTPyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LTTetsuya Morimoto
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜Katsuhiro Miura
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learningRetrieva inc.
 
LLoT ランゲージアップデート Python
LLoT ランゲージアップデート PythonLLoT ランゲージアップデート Python
LLoT ランゲージアップデート Pythonhirokiky
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 

Similar to mypy - 待望のPython3.9型ヒント対応 (20)

Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
Pipenvのご紹介 v2
Pipenvのご紹介 v2Pipenvのご紹介 v2
Pipenvのご紹介 v2
 
MTプラグイン入門以前
MTプラグイン入門以前MTプラグイン入門以前
MTプラグイン入門以前
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理について
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
 
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
 
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
 
PyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LTPyLadies Tokyo 二周年記念パーティ LT
PyLadies Tokyo 二周年記念パーティ LT
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learning
 
LLoT ランゲージアップデート Python
LLoT ランゲージアップデート PythonLLoT ランゲージアップデート Python
LLoT ランゲージアップデート Python
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 

mypy - 待望のPython3.9型ヒント対応