Koki's personal blog

Koki's personal blog

Another fine, responsive site template by HTML5 UP.

Pythonの静的型チェックをコマンドもしくはVS Code拡張機能に自動で行わせる方法

この記事では、Pythonの静的型チェックをコマンドもしくはVS Code拡張機能に自動で行わせる方法について説明します。

Koki

4 分で読めます

この記事では、Pythonの静的型チェックをコマンドもしくはVS Code拡張機能に自動で行わせる方法を説明します。
最初に方法、その後に「何故、それを調べようと思ったのか?」を知りたい方向けに経緯を書いているので、興味のある方はそちらも読んでいただけると嬉しいです。

この記事の内容です。

対象読者

  • Pythonの型チェックをコマンドもしくはVS Code上で行いたい方

環境

  • VS Code

前提条件

  • pipインストール済み
  • VS Codeインストール済み
  • Pythonで型アノテーションを記述する方法を知っていること (本記事では説明を省略)

Pythonの静的型チェックを行う

コマンドを使用

mypyというライブラリをpipでインストールし使用する。
使用方法は以下の公式ページに書いてあるので、こちらを参照。

GitHub - python/mypy: Optional static typing for Python
Optional static typing for Python. Contribute to python/mypy development by creating an account on GitHub.
github.com
No Image

VS Codeの拡張機能を使用

以下のページの通り、VS Codeに拡張機能Pylanceをインストールした上で1つ設定を行うと実現可能。
設定方法についてはここで書いてしまうと参照元記事の筆者に申し訳ないので、そちらを参照。

How to enable Python type checking in VSCode
Since version 3.5, Python now has support for type hints. This typing is a cool new feature allowing...
www.emmanuelgautier.com
No Image

何故調べようと思ったのか

事の発端は趣味でTypeScriptを触ったことによる静的型付け言語熱の再燃

筆者自身が最近趣味でTypeScriptを触り、やっぱり静的型チェックがあるプログラミング言語の方が以下の恩恵を受けることができ、良いなと思ったためです。

  1. インテリセンスの恩恵をより受けることができる。
  2. 型周りのバグを自動で減らせる

たまたまPython互換の静的型付け言語を開発された型の記事が流れてきて興味を持つ

ほぼ同タイミングで、Python互換の静的型付け言語を開発された型の記事が流れてきました。
記事はこちらです。

Python互換の静的型付け言語「Erg」
undefined
zenn.dev
No Image

最初は「いいじゃん!」と思ったのですが、自分が欲しい機能を落ち着いて考えてみたところ、以下のツイートに行きつきました。

Nimとの出会い

ここで「JavaScriptに対するTypeScriptのような言語が、Pythonにもあるのだろうか?」と思い調べ、 Nim というプログラミング言語を知ることになります。
軽く触ってみたところ好感触だったのですが、将来的にAWS Lambdaなどで使用することを考えると、ランタイム環境を自前で準備することを考えるとデフォルトで対応されていないと実用は厳しいと考え、それ以上調べることを中断することにしました。

そして本記事冒頭の話へ…

そして、本記事冒頭の話へ繋がります。
「そもそも言語で型アノテーションを記述できるなら、それを元にチェックするコマンドがあるのでは?」というところからmypyの存在を知りました。
次にmypyを触ってみたところ、「いちいちコマンドを実行するのは面倒くさいのでPythonのLinterが無いかな…」と調べてみたところ、Microsoftが開発している拡張機能Pylanceが対応していることを知りました。

以上が、本記事冒頭の内容に辿りつくまでの経緯です。
これで、Pythonを使用したそこそこ以上の規模の開発に対する心理的ハードルが下がりますね。

元になったツイート達

最近の投稿

カテゴリー