概要
数ヶ月前からVS CodeでPythonのProjectを開くと「Pylanceという拡張機能をインストールしますか?」というポップアップが表示されるようになった。
ので、仕事中にインストールしてかえって環境が壊れたりしたら嫌だなと思ってインストールしていなかったが、年末年始の機会に試してみた。
どんな機能が追加されるのか
以下の公式ドキュメントに主な機能の一覧が書いてある。
marketplace.visualstudio.com
字面だけ見ると、docstringとかimportとか、コード補完系の便利そうな機能が色々並んでいる気がする。
また、以下のブログに貼られている動画からいくつかの機能のデモを見ることができる。
devblogs.microsoft.com
インストール&有効化する
インストール
他のextension同様、Marketplaceからインストールできる。
検証の前提
以下の環境で検証する。
- フォーマッターやliterが入っていると、Pylanceの機能なのか分からなくなってしまうので、blackやisortやflake8はインストールしていない環境で検証する。
- docstringに関しては、普段は「Python Docstring Generator」というPluginを使っているが、こちらも同様の理由で無効にする。
検証する
公式ドキュメントに紹介されている機能の中から、気になるものを検証していくことにする。
1.docstring
「docstring」としか書いてなかったので、最初はdocstringの雛形を自動生成してくれる機能がPylanceには標準で搭載されたのかと思った。
しかし、以下のissueを読んだところ、そうではなく、メソッドやクラスを使用している箇所でカーソルを合わせるとdocstringが吹き出しで表示される機能のことのようである。
【検証結果】
上記のように、確かにメソッドのdocstringが表示された。
これはこれで地味だが嬉しい機能だと思う。
ただ、「Python Docstring Generator」は依然として必要ということが分かった。
2.Auto-imports
既にimportしているモジュールに関して、同一モジュール配下の新たなクラスやメソッドを使おうとすると、自動でサジェストを表示してくれて、サジェストを承認するとさらにimport文の追加まで自動で行ってくれる。
例えば、以下のように既にos.path.exists
をimport済みであるとする。
この時に、「j」と入力すると、join
メソッドがサジェストされる。
サジェストを承諾すると、os.path.join
がimportに自動で追加される。
「Auto-imports 」機能に関しては以下のブログでもデモを見ることができる。
devblogs.microsoft.com
3.IntelliCode compatibility
AIがコードを自動補完してくれる機能である。
これがすごく便利だった。
以前から存在していたようだが、Microsoftの標準のLanguage Serverを使用していた時には有効になっていなかった気がする。
以下のような記事もあったので互換性に問題があったのかもしれない。
PylanceではFeaturesの一つに
IntelliCode compatibility
と謳っている通り、問題なく使うことができた。
例えば、以下のように「os.」と入力すると一般的に利用頻度が高そうな「environ」と「path」をサジェストしてくれる。
「path」を選択すると、さらに利用頻度が高そうな「join」と「dirname」メソッドをサジェストしてくれる。
さらにすごいのが、もし以下のようにif文の条件の中で「os.path.」と入力すると「exists」と「isfile」をサジェストしてくれる。
このように、コードの文脈によって適切なコードをサジェストしてくれるのは本当にすごいと思った。
なお、IntelliCodeが有効になっていない場合、サジェストは表示されるが、以下のようにモジュールがアルファベット順に表示されるだけになってしまうので、便利さが大分違う。
その他のTips
メソッドの丸括弧部分の補完を有効にする。
以下のように、デフォルトではサジェストに基づいてメソッドを選択した際に、丸括弧が補完されないのが少し不便に感じた。
これはpython.analysis.completeFunctionParens
という設定値がデフォルトでは無効になっていることが原因である。
有効にすれば、丸括弧部分まで補完されるようになるので、私は有効にした。
なお、以下の公式ドキュメントに編集可能な設定値については一覧が記載されている。
marketplace.visualstudio.com
感想
まだ数ある機能のいくつかを試しただけだが、良さげだったこと及び、公式のブログにも以下のように書かれており、MSもじょじょにPylanceに寄せていく方針のようなので、今後は仕事でも使ってみようかなと思った。
Our long-term plan is to transition our Microsoft Python Language Server users over to Pylance and eventually deprecate and remove the old language server as a supported option.
【引用元】
devblogs.microsoft.com