Pythonの静的型チェックをコマンドもしくはVS Code拡張機能に自動で行わせる方法
この記事では、Pythonの静的型チェックをコマンドもしくはVS Code拡張機能に自動で行わせる方法について説明します。
この記事では、Pythonの静的型チェックをコマンドもしくはVS Code拡張機能に自動で行わせる方法を説明します。
最初に方法、その後に「何故、それを調べようと思ったのか?」を知りたい方向けに経緯を書いているので、興味のある方はそちらも読んでいただけると嬉しいです。
この記事の内容です。
対象読者
- Pythonの型チェックをコマンドもしくはVS Code上で行いたい方
環境
- VS Code
前提条件
- pipインストール済み
- VS Codeインストール済み
- Pythonで型アノテーションを記述する方法を知っていること (本記事では説明を省略)
Pythonの静的型チェックを行う
コマンドを使用
mypyというライブラリをpipでインストールし使用する。
使用方法は以下の公式ページに書いてあるので、こちらを参照。
VS Codeの拡張機能を使用
以下のページの通り、VS Codeに拡張機能Pylanceをインストールした上で1つ設定を行うと実現可能。
設定方法についてはここで書いてしまうと参照元記事の筆者に申し訳ないので、そちらを参照。
何故調べようと思ったのか
事の発端は趣味でTypeScriptを触ったことによる静的型付け言語熱の再燃
筆者自身が最近趣味でTypeScriptを触り、やっぱり静的型チェックがあるプログラミング言語の方が以下の恩恵を受けることができ、良いなと思ったためです。
- インテリセンスの恩恵をより受けることができる。
- 型周りのバグを自動で減らせる
たまたまPython互換の静的型付け言語を開発された型の記事が流れてきて興味を持つ
ほぼ同タイミングで、Python互換の静的型付け言語を開発された型の記事が流れてきました。
記事はこちらです。
最初は「いいじゃん!」と思ったのですが、自分が欲しい機能を落ち着いて考えてみたところ、以下のツイートに行きつきました。
PythonのTypeScriptポジション言語が登場する方が嬉しいという、率直な感想が出てきた。
— Koki@ITのお仕事に従事している人 (@koki_n22) August 13, 2022
Nimとの出会い
ここで「JavaScriptに対するTypeScriptのような言語が、Pythonにもあるのだろうか?」と思い調べ、
Nim
というプログラミング言語を知ることになります。
軽く触ってみたところ好感触だったのですが、将来的にAWS Lambdaなどで使用することを考えると、ランタイム環境を自前で準備することを考えるとデフォルトで対応されていないと実用は厳しいと考え、それ以上調べることを中断することにしました。
そして本記事冒頭の話へ…
そして、本記事冒頭の話へ繋がります。
「そもそも言語で型アノテーションを記述できるなら、それを元にチェックするコマンドがあるのでは?」というところからmypyの存在を知りました。
次にmypyを触ってみたところ、「いちいちコマンドを実行するのは面倒くさいのでPythonのLinterが無いかな…」と調べてみたところ、Microsoftが開発している拡張機能Pylanceが対応していることを知りました。
以上が、本記事冒頭の内容に辿りつくまでの経緯です。
これで、Pythonを使用したそこそこ以上の規模の開発に対する心理的ハードルが下がりますね。
元になったツイート達
Python、ここまで型情報を記述できるならチェックするコマンドを提供してくれないかなと思っていたら、このライブラリを発見した。
— Koki@ITのお仕事に従事している人 (@koki_n22) August 20, 2022
> What is mypy?
> Mypy is a static type checker for Python.https://t.co/dbkvlLG0Kc
VS Code上でPythonの型チェックを自動で行わせる方法がないかなと調べてみたら、このページがヒットした。https://t.co/3qhnmSIMnQ
— Koki@ITのお仕事に従事している人 (@koki_n22) August 20, 2022