PylanceとVisual Studio Codeでバックエンドサーバを爆速開発

こんにちは。Marketing Solution Division(MSD)でAnalytics Platform(APF)を開発している山中です。MSDはデータ分析による顧客のマーケティングコンサルティング、機械学習マーケティング施策支援ツールの開発・導入支援を行っています。

今年の6月にリリースされたPylanceをAPF開発にも採用しており、日々その恩恵にあずかっています。今回はPylanceの素晴らしさを実際の業務で感じた点にフォーカスして皆さんに紹介したいと思います。

 

Pylanceとは?

PylanceはVisual Studio Code(VScode)の拡張機能であり、Pythonの言語サポートを行ってくれます。下記に主だった機能を提供します。

  • コード補完
  • 自動import(import文の自動挿入・削除)
  • 型チェック
  • docstring参照
  • シグネチャ参照
  • クラス定義参照

詳細については公式ページ(https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance)を参照してください。

ではこれらがAPF開発にどのように寄与するのでしょうか?

APFのバックエンドサーバーはDjango REST Framework(DRF)というPythonフレームワークで構築されています。フレームワークの活用により、迅速なREST APIの構築が可能となります。

しかしフレームワークで開発業務が効率化されるからといってコーディング作業自体は無くなりません。むしろフレームワークに沿った定型的で退屈な作業が増加します。

またフレームワークが敷いてくれたレール通りに開発を行う場合には問題になりませんが、フレームワークの挙動を一部変更する・新たに機能を追加するといった高度な取り組みが必要になったときにはソースコードを読み解いてクラスの設計やそれらがどのように処理されているかを理解する必要があります。

そのような場合にPylanceの採用には下記のメリットがあります。

  1. 自動補完・サジェスト・auto importによるコーディング作業の効率化
  2. サジェスト機能・定義参照機能による挙動理解の効率化

それぞれについて次節で詳しく見ていきましょう。

1. 自動補完・サジェスト・auto importによるコーディング作業の効率化

Pylanceはフレームワークが提供する独自の型を持つインスタンスについても自動補完サポートします。あらかじめインスタンスの呼び出し時にtype hintをしておくことで、そのインスタンスメソッドについてサジェストや自動補完を行ってくれます。これによってコーディングの効率化やタイプミスの防止に貢献してくれます。

(VScodeのスニペット機能と組み合わせることでより効率化できるかもしれません)

またimport文の記述を行わずにソースコードを記述してもauto import機能が自動で必要なモジュールのimport文の挿入します。逆に使用しなくなったモジュールのimport文については自動で削除してくれます。

2.定義参照機能による挙動理解の効率化

Pylanceを導入しているとimportされているクラスやtype hintされているインスタンス(とそのメソッド)をマウスホバーすると、docstringやシグネチャを参照することが出来ます。

またcommandキー + クリックでクラスやメソッドの定義を素早く参照することも可能です。

以上の機能は、フレームワークが提供するインスタンスメソッドをオーバーライドして挙動を変更する際に、元々の挙動の確認やインスタンスがクラスがどのように呼び出されているか、ソースコードレベルで確認する際に役立ちます。

(毎回ググってソースコードをgithubまで見に行く手間が省けます。)

おわりに

今回はPylanceの素晴らしさを、フレームワークを使った開発作業の効率化という点にフォーカスして紹介させていただきました。

現在は他ツールと組み合わせてより開発の効率化が出来ないか模索中です。

機会がありましたら今回ご紹介できなかった効率化の取り組みについても追加でご紹介できたらと思います。