VS CodeでのPythonコーディングを快適にするエディタ機能の使い方:Visual Studio Codeで快適Pythonライフ(1/2 ページ)
VS Codeのエディタが持つさまざまな機能、Pythonコードの実行方法、複数のファイルをサイドバイサイドで編集できるエディタグループなどについて見てみます。
連載一覧
- 第1回「Visual Studio Codeから「Hello Python」してみよう」
- 第2回「VS Codeでのファイルの作成と編集の第一歩:アクティビティーバーと[エクスプローラー]ビューを使ってみよう」
- 第3回「VS CodeでのPythonコーディングを快適にするエディタ機能の使い方」(本稿)
前回はVisual Studio Code(以下、VS Code)のアクティビティーバーとサイドバーの関係や、サイドバーに[エクスプローラー]ビューを表示して、そこからファイルをオープンし、エディタを使ってコードを記述する方法を見ました。今回は、エディタと中心としたコード記述時のVS Codeの使い方を見ていきます。
エディタでのコード編集
今回は前回に作成したフォルダをオープンして、そのトップレベルにmain.pyファイルを作成したものとします。
以下ではmain.pyファイルにコードを記述しながら、VS Codeでのコード編集の基本的な方法を見ていきましょう。
IntelliSense
ここではmylib.fooモジュールからhello関数とgoodbye関数をインポートして、それらを呼び出してみます。実際に記述したのは以下のコードです。
from mylib.foo import hello, goodbye
def main():
hello()
goodbye()
if __name__ == '__main__':
main()
最初のimport文を入力しようとすると、例えば、次のようにコード補完機能が働いてくれます。キーボードから何文字かを入力して、該当する名前(識別子)を絞り込めれば、そこで[Tab]キーか[Enter]キーを押すか、幾つかの候補が表示されている時点でカーソルキーで適切なものを選択して、[Tab]キーか[Enter]キーを押すだけで、関数やメソッドの名前がサクサクと入力できます。コード補完は名前だけではなく、Pythonで予約されているキーワード(def、ifなど)でも有効ですから、多くのコードを少ないストロークで入力できるでしょう。
上の画像で分かるのは自分が作成したパッケージやモジュール、関数名、クラス名などについても、コード補完が有効であることです。自分が名付けた変数や関数、クラスなどの名前が長い場合でもコード補完機能を使えば、名前を最後まで手入力する必要がありません。ということは、名前を考えるときに無理に短いものにするのではなく、それが何のためのものであるかをきちんと考えた上で命名できるということです。しかも、コード補完機能を使えば、長い名前でも間違いなく入力できるので、ぜひとも使いたい機能といえます(というか、自然と[Tab]キーか[Enter]キーを押すようになるでしょう)。
もちろん、関数やメソッドのパラメーターリストも以下のように表示してくれるので、ドキュメントと首っ引きになる頻度は下がるはずです。以下はprint関数を呼び出すコードを書いてみたところです。ご覧の通り、詳細な説明とともにprint関数のパラメーターリストが表示されています。
[add import]クイックフィックス
Python拡張機能には[add import]クイックフィックスと呼ばれる機能もあります。これは、インポートしていない機能を使おうとしたときに、対応するモジュールやパッケージをマウス操作だけでインポートしてくれるものです。
例えば、以下はmain.pyファイルでmylib.foo.hello関数をインポートせずに使おうとしているところです。
「hello」の下に波線が引かれて、何やらまずい感じに見えますが、ここでマウスカーソルを「hello」に移動すると、次のようなポップアップが表示されます。
なるほど。hello関数をインポートしていないので、「helloという名前は定義されていません」というメッセージは正しいです。そして、このポップアップに[クイック フィックス]というリンクがありますが、これをクリックすると表示が次のように変わります。
[Add import hello from mylib.foo]という項目をクリックすれば、コードが挿入されます(場合によっては複数の選択肢が表示されることもあります)。
あるいは、波線のある箇所をクリックすると以下のように電球マークが表示されるので、これをクリックしても上と同様に[Add import hello from mylib.foo]という項目が表示されるので、これをクリックしてもよいでしょう。
インポートを忘れたままコードを書き出しても、必要なコードをPython拡張機能が教えてくれるのでこれも便利に使えるはずです(とはいえ、全てうまくいくかは分かりません)。
定義箇所や参照箇所の探索
コードを書いたり、デバッグをしたりしていると、「あれ? この〇〇の定義ってどんなんだったっけ?」となることはありませんか。あるいは、「何かの関数を手直ししているときに、この関数ってどこで使っていたっけ?」と考えることもあるかもしれません。
手っ取り早く、関数やクラス、メソッドなどの定義をのぞき見られると、あるいは今自分が手を入れているコードがどこで使われているかを知ることができるとうれしいことがあります。こうしたときに使えるのが、何かの名前(識別子)を右クリックしたときにコンテキストメニューに表示される幾つかの項目です。
コンテキストメニューのトップレベルにある[定義へ移動]と[宣言へ移動]は基本的に、対象の識別子が定義/宣言されているファイルをオープンして、その場所にカーソルを移動するものです(同じエディタグループでそのファイルが既にオープンされているときには、そのエディタにフォーカスが移動します。エディタグループについては後述)。
例えば、main.pyファイルでhello関数呼び出しを右クリックして、コンテキストメニューから[定義へ移動]を選択すると、次のようにfoo.pyファイルがオープンされて、hello関数の定義箇所が表示されます。
一方、[参照へ移動]項目は、それを使用している箇所を現在のエディタ(タブ)中で簡単に調べるのに使えます。例えば、foo.pyファイルでhello関数定義(の先頭行)を右クリックして[参照へ移動]を選択すると次のように表示されます。
上の画像では、ポップアップ表示の右上に「参照設定(3)」とあり、その直下に2つのファイルの名前が書いてあります。ここで、参照箇所を選択して、実際に利用しているコードを確認できます。実際のコードはその左側に表示されています。確かにmain.pyファイルのmain関数でhello関数を使っていることが確認できました。[×]をクリックするか、[ESC]キーを押せば、このポップアップは消えます。
コンテキストメニューのトップレベルには[ピーク]という項目もあります。これには以下のような項目が含まれています。
ここにある項目は全て上で見た[参照へ移動]と同様に、現在のエディタ(タブ)内にポップアップを表示して、そこでコードを参照するためのものです。
[呼び出し階層のプレビュー]はある関数やメソッドが、どこから呼び出されているかを調べるためのものです。例えば、以下はfoo.pyファイルでhello関数の先頭行を右クリックして、コンテキストメニューからこの項目を選んだときの表示です。
今回の例では、main関数からしかhello関数を呼び出していないので、このような表示ですが、もっと複雑なプログラムであれば、ある関数がどこから呼び出されているかをこの機能を使って確認できるというわけです。なお、左上にある電話機マークは対象の関数からどんな関数を呼び出しているかを確認するのに使えます。
その他の項目はトップレベルにある[定義へ移動]などと同様に、ただし現在のエディタ(タブ)内に定義や宣言、参照を表示します。以下にmain.pyファイルでhello関数呼び出しを右クリックして、コンテキストメニューから[ピーク]−[定義をここに表示]を選択した場合の例を示します。
これらの項目のうち、[定義へ移動]には[F12]キーが、[参照へ移動]には[Shift]+[F12]キーが、[ピーク]−[定義をここに表示]にはWindowsでは[Alt]+[F12]キーが、Linuxでは[Ctrl]+[Shift]+[F10]キーが、macOSでは[Option]+[F12]キーがデフォルトで割り当てられています。これらのショートカットキーを覚えておくと、「この〇〇って……」となったときにマウスに手を伸ばすことなく、定義や参照箇所を手早く表示できるので覚えておくとよいでしょう。
今までに見てきた機能を活用すれば、日々のコーディング作業が捗(はかど)るようになるハズです。VS Codeをメインの編集ツールとして使うのであれば、ぜひとも覚えておきましょう。
Copyright© Digital Advantage Corp. All Rights Reserved.