1
/
5

【Python】Pylanceを使ってPythonをより安全に!

1. はじめに

さて、今回のテーマなのですが、ズバリ Python の型についてです!!


Python 標準ではタイプアノテーションという
「ここはこの型だよ~」くらいの意味合いしかないメモ書きを残すことができます。
各種エディタの拡張機能やライブラリを導入することで、より厳密に型を定義することができます。
今回はそんな拡張機能の1つ「Pylance」を使ってみようと思います!

2. 例

Embed image

こんな感じでよくある足し算をするだけのプログラムを作ってみました。
これを実行してみると・・・

Embed image

まあもちろん結果は期待通りですね!

ただこの状態だと関数に対して一体どのような型の変数を渡して、どのような型の戻り値を返すのか不明ですよね?

そんなときに活躍するのがタイプアノテーションなのです!!

3. タイプアノテーションをつけてみよう

Embed image

早速つけてみました!

こういう形だと、int を渡して int が返ってくることが一目瞭然!!


「ふふふ、これでまた安全にしてしまった」

そう思っていた時期が私にもありました。

では例えば、

Embed image

こんなコードを実行したらどうなるでしょう?

「いやいや、int だって言ってるでしょ!!それじゃエラーになるに決まってるじゃん!!」

Embed image

「Thank you for watching !!」

実はそうなんです。
Python におけるタイプアノテーションは「型ヒント」であり、それ以上でも以下でもないのです。
よって貫通可能です。

「さよなら、私の安全なPythonライフ」

とここで記事閉じようとしたあなた!!!
この記事のタイトルを忘れましたか?
ここからが本題です!!

4. Pylanceの導入

vscode の拡張機能で検索してもらえれば一瞬で見つかると思います。

Embed image

拡張機能の設定からTypeChekingModeを変更してあげましょう。今回は一番厳しいstrictにしました。

Embed image

さてと、これで設定完了!
これで一番最初のコードを見てみましょう!

Embed image

「なんか赤いニョロニョロおる!!!」

マウスを近づけてみると

Embed image

怒ってくれるました!!

「怒ってもらえるのってありがたいなぁ~」

そう思いながらタイプアノテーションをつけていきましょう!

Embed image

無事消えましたね!!

ここまでは予定調和ですね!
さて本題、、

Embed image

「You Win !!」

これで間違えに気づくことができますね!

ここで注意点!!
さっきのコードを実行してみると

Embed image

このように実行はできてしまいます。
エラーとして実行を止めてくれるものではないので、実装段階でエラーは潰しておきましょう!

自動で全ソースなどをテストしたい場合はまた別のライブラリを使うことになりますが、それはまた機会があれば解説したいと思います。

なにはともあれ
これで平和が訪れました(フラグ

5. おわりに

いかがでしたか?
今回はPythonのタイプアノテーションにフォーカスして見ましたが、実際チーム開発で安全なコードを書くためにはまだまだ不十分です。
また機会があれば別の観点で解説できればと思います。
皆様も楽しいPythonライフを!!

ロジカルスタジオではエンジニアを募集しています。

積極的に挑戦をさせてもらえる環境に興味がある方はこちらから↓

システムエンジニア
幅広い業務に携わりたいフリーランスエンジニア募集!!
◼️システムに強いクリエイティブプロダクション  当社は、ソフトウェア開発会社として培った技術力を強みにディレクションからデザイン、システム開発、コーディング、メンテナンスまでワンストップで請け負うクリエイティブプロダクションです。 イラスト・グラフィック・動画制作などのクリエイティブから、データベースが絡むシステム構築まで幅広くカバーできる強みを生かし、さらなる業務拡大を目指しています。
株式会社ロジカルスタジオ


Invitation from 株式会社ロジカルスタジオ
If this story triggered your interest, have a chat with the team?
株式会社ロジカルスタジオ's job postings
6 Likes
6 Likes

Weekly ranking

Show other rankings
Like 矢澤 凌's Story
Let 矢澤 凌's company know you're interested in their content