【Anaconda3 + Python】SpyderユーザーがVSCodeに乗り換えた時の手順まとめ

# 目次
- [目次](#目次)
- [この記事を読むと何ができる？](#この記事を読むと何ができる)
- [おことわり](#おことわり)
- [なぜわざわざSpyderからVSCodeに移行するのか？](#なぜわざわざspyderからvscodeに移行するのか)
  - [Spyderの利点](#spyderの利点)
  - [VSCodeの利点](#vscodeの利点)
- [Python実行環境の整備](#python実行環境の整備)
  - [VSCodeの完全アンインストール](#vscodeの完全アンインストール)
  - [VSCodeのインストールからPython実行環境の整備まで](#vscodeのインストールからpython実行環境の整備まで)
- [Spyderの使用感の再現](#spyderの使用感の再現)
  - [IPythonコンソール](#ipythonコンソール)
  - [変数エクスプローラー](#変数エクスプローラー)
  - [プロットペイン](#プロットペイン)
  - [入力補間・構文解析](#入力補間構文解析)
- [VSCodeならではの機能](#vscodeならではの機能)
  - [Git連携](#git連携)
  - [規約チェック](#規約チェック)
  - [codic](#codic)
  - [かっこの色分け](#かっこの色分け)
  - [相対パスのコピー](#相対パスのコピー)
- [まとめ](#まとめ)

# この記事を読むと何ができる？

- Windows10 + **Anaconda環境 + Python 3系** を扱っているユーザーが
- 別のエディタ（Spyder等）で使っていた **Anaconda環境を崩さず** に
- Spyderでの **使用感をある程度維持** しつつ
- **無理なくVSCodeに移行** できる
- そしてSpyderには無かった **様々な便利機能を使える** ようになる

上記がスムーズに進むように記事リンクを並べています。

# おことわり

- あくまで参考にした記事リンクを備忘録的にまとめただけなので、新規情報はほぼありません。
- この記事の順にリンク先を読んでいけば良いので、ネットの海に飛び込むよりは効率的かと思います。
- 執筆者の環境は以下の通りです
  - Windows 10 Pro
  - conda 4.11.0
  - Python 3.9.7
  - Spyder 5.1.5
  - VSCode 1.69.0

# なぜわざわざSpyderからVSCodeに移行するのか？

## Spyderの利点

- IPythonコンソール
- 変数エクスプローラー
- プロットペイン
- 入力補間・構文解析

これらの機能は非常に強力で、私も以前はSpyderを愛用していました。これ以外にも、AnacondaをインストールしてSpyderを起動した時点でnumpyなど主要ライブラリのパスまで通っているので、環境構築で躓きにくいのは大きなポイントです。総じて

- Pythonに特化した便利な機能を
- 少ない労力・学習コストですぐに扱うことができる

のがSpyderの利点だと感じています。

## VSCodeの利点

一方でVSCodeは汎用的なエディタなので、Pythonを便利に扱うには多少の労力をかけて環境構築する必要があります。ただし一度環境構築してしまえば、上記で挙げたSpyderの利点は **VSCodeでもほぼ同じように実現** できます。

その上で、Spyderに無い利点としてぱっと思いつくのは

- 軽量
- 豊富な拡張機能
- Python以外の言語とエディタの使用感を統一できる
- Gitとのシームレスな連携（Spyderも "Projects" という機能でGitと連携できるようですが、コマンド操作のみ）

あたりでしょうか。

そして何より、今流行りのエディタなので **とにかく情報が豊富** です。日本語で書かれた記事が多く、調べる時に困りません。

# Python実行環境の整備

まず大前提として、VSCodeでPythonが使える環境を整備します。この記事は Windows10 + Anaconda3 + Spyder を使っていたユーザーの乗り換えを想定するので、Anacondaのインストールや仮想環境の構築などは済んでいるものとして話を進めます。

## VSCodeの完全アンインストール

リンク : https://kazupon.org/VSCode-how-to-completely-uninstalll/

クリーンインストールしたい方は上記リンクの通りに操作してください。

## VSCodeのインストールからPython実行環境の整備まで

リンク : https://python0to1.com/499/

基本的には上記のリンクの通りで良いのですが、`python.pythonpath` の追加に加えて、 `python.condapath` と入力して `C:\Users\????\Anaconda3\Scripts` も追加してください。
これを追加するとAnaconda Navigatorを経由せずにVSCodeを直接開いても、毎回自動で仮想環境のactivateまで済ませてくれるっぽいです。せっかく軽量なVSCodeを使うのに、起動時にAnaconda Navigatorを毎回経由していたら本末転倒なので必ず設定しておきましょう。（参考 : https://qiita.com/manamana/items/38e963ce04f24de4bbe4 ）

# Spyderの使用感の再現

ここまででPythonが最低限実行できるようになったので、早速Spyderに寄せていきます。

## IPythonコンソール

Spyderでは、エディタで書いたコードを `F5` キーなどで実行した場合、実行結果は右下のIPythonコンソールに出力されます。

![python環境構築_qiita_2022-06-25-14-01-54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/9d15457f-3dc1-77b7-80f7-234128245db4.png)

VSCodeのデフォルトでは右上の実行ボタンをクリックすると画面下側にターミナル等のパネルが開きます。実行結果はこのターミナルに出力されるのですが、IPythonのような補間機能は一切無いためこのままでは不便です。

![python環境構築_qiita_2022-06-25-14-08-42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/24d000ec-eaeb-344d-004d-eda9154ad479.png)

ですが、VSCodeでもJupyterの拡張機能を導入すれば、`.py` ファイルをSpyderのIPythonコンソールに近い使用感で実行することが可能です。「なぜ `.ipynb` でもないのにJupyter？」という疑問への回答はこちらの記事に大変分かりやすくまとまっています。（参考リンク : https://qiita.com/386jp/items/f023de9457c99b964a85 ）

導入は非常に簡単で、VSCodeの拡張機能タブで `jupyter` と入力し、"Jupyter" と "Jupyter Notebook Renderers" をインストールするだけです。（"Jupyter Notebook Renderers" はこの後の画像プロットを正常に表示するために必須です。）

ちなみにAnacondaのbase環境にはデフォルトでJupyterがインストールされているため、巷の紹介記事で書かれている「Jupyterパッケージのインストール」は不要です。

`.py` ファイルの1行目に `# %%` を加えて、エディタ上で `Ctrl` + `Enter` または `Shift` + `Enter` を打つと、隣にIPythonウィンドウが開きます。（この実行方法を使うのであれば下のコンソールパネルは不要なので、`Ctrl` + `@` で閉じてしまえば良いです。）

![python環境構築_qiita_2022-06-25-14-39-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/6cbe5415-6967-b91e-e7d4-deb19f73a00d.png)

IPythonコンソールが右画面を全て占有してしまうのは少し残念ですが、ある程度Spyderに近い感覚で扱えるのではないでしょうか。IPythonに直接入力しての実行も問題ありません。

![python環境構築_qiita_2022-06-25-14-44-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/0c6f2de9-4be6-0a3f-7c9d-5cbb8d0a1678.png)

## 変数エクスプローラー

Spyderの便利機能の筆頭ですが、これもVSCode上で使えます。

![python環境構築_qiita_2022-06-25-15-09-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/489b5dcf-c9e6-1984-1768-8c87b6358070.png)

IPython画面の最上部にある、Variablesをクリックすると下側に新しく"JUPYTER VARIABLES"パネルが開き、変数エクスプローラーが表示されます。

![python環境構築_qiita_2022-06-25-15-13-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/95a1cc8a-3952-216a-72b8-3ae824767d9c.png)

各変数の表示の左端にあるボタンをクリックすると、変数の詳細が新規タブで表示されます。Spyderのように値の大小に対応した色分けがないのは残念ですが、こちらではフィルタ機能を使えるのが嬉しいです。

![python環境構築_qiita_2022-06-25-15-22-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/5a8efc0d-7070-8b6a-0fa0-9ef90d2e3455.png)

## プロットペイン

Spyderでは生成したプロットのみが並ぶ「プロットペイン」が用意されています。

![python環境構築_qiita_2022-07-21-18-02-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/44190ffe-98de-eac0-8c9a-8fcc9e6c12c9.png)

このプロットペインがあるため、Spyderのデフォルト設定ではIPythonコンソールでのインラインプロットがミュートされており、コンソールにはプロットが表示されないようになっています。

（プロットペインの設定から"インラインプロットをミュートする"のチェックを外すと、IPythonコンソールでもインラインプロットが表示されるようになります。）

![python環境構築_qiita_2022-07-21-18-01-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/58828db5-368c-7589-bf43-4c13bcb21c74.png)

VSCodeのJupyterも基本はIPythonの発展版なので、インラインプロットに関してはSpyderとほぼ同じような表示になります。また、プロットにカーソルを合わせると3つのボタンが表示され、左から"copy to clipboard", "Expand image", "Save As"の機能を使うことができます。

![python環境構築_qiita_2022-07-21-18-13-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/83337c99-9ebd-bd04-27ef-f015440d38a3.png)

1つ目の"copy to clipboard"では、選択しているプロットを.png形式でクリップボードにコピーすることができます。.png形式なのでパワポ等にコピペした時に使い勝手が良いです。

2つ目の"Expand image"のボタンを押すと、新しくプロットタブが開いて画像の拡大などを行うことができ、Spyderのプロットペインに近い操作が可能です。

![python環境構築_qiita_2022-07-21-18-21-45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2229832/868bf97c-fe0c-eba8-0338-c363286648c1.png)

Spyderのプロットペインでは **「実行時に生成された全てのプロット」** が **「生成された順番に」** 並んでいきますが、VSCodeのプロットタブでは **「"Expand image"ボタンを押したプロットのみ」** が **「ボタンを押した順番に」** 並んでいきます。このあたりの挙動の違いに最初は戸惑うかもしれませんが、すぐに慣れる程度の違いでしょう。

3つ目の"Save As"は文字通り、選択したプロットに名前を付けて保存する機能です。

総じて、Spyderのプロットペインと完全に同じというわけにはいきませんが、ほぼ同じような使用感を実現できます。

## 入力補間・構文解析

Spyderではデフォルトで入力補間や静的構文解析が行われるようになっていますが、VSCodeでも拡張機能で同じことができます。

リンク：https://qiita.com/simonritchie/items/33ca57cdb5cb2a12ae16

リンク：https://qiita.com/simonritchie/items/870be09620b9df652bf6

とりあえず上記の通りにPylanceとAutoDocstringを入れれば問題ありません。

ここまでで、Spyderの主要な機能はほぼ再現できました。

# VSCodeならではの機能

ここからはVSCodeだからこそできる機能を追加していきます。「○○な機能を使いたい」「○○が無くて不便だ」と感じた時に、**少し調べるだけで何かしらの解決策が見つかる** のが流行りものの最大の長所です。

まずは（既に紹介済みのものも混ざっていますが）下記を参考に。

リンク：https://yurupro.cloud/767/#toc3

特におすすめなのは

- indent-rainbow
- Material Icon Theme
- Python Indent
- Python Docstring Generator
- Pylance

あたりです。

なお、上記リンク先で紹介されているTrailing Spaceに関しては、VSCodeのデフォルト機能として用意されているので拡張機能を入れる必要はありません。

リンク：https://qiita.com/n_oshiumi/items/1ad3f55d58f2d9d48d1e

## Git連携

リンク：https://miya-system-works.com/blog/detail/vscode-github/

これでコマンドライン操作はできるのですが、せっかくVSCodeを使っているので、GUI的な操作も追加して気軽にバージョン管理できるようにしておきたいところです。おすすめはGit HistoryかGit Graphです。

リンク：https://zenn.dev/gunners6518/scraps/907746ae17f9e9

## 規約チェック

Pythonのコーディング規約PEP8に沿ったプログラミングを無理なくできるようになります。

リンク：https://qiita.com/firedfly/items/00c34018581c6cec9b84

（上記リンクでは `pip install` を使っていますが、我々はAnacondaユーザーなので `conda install` を使ってください。念のため。）

また、厳密には規約チェックとは異なりますが、 import文の順番を自動で正しく並び替えてくれるライブラリ "isort" も有効化しておくことをおすすめします。以下の記事では `pip install` を使っていますが、Anacondaならbase環境にデフォルトでインストールされているようです。

リンク：https://zenn.dev/wtkn25/articles/python-isort

## codic

日本語を入力すると"プログラミングっぽい"英単語に変換してくれます。変数名を考えやすくなります。

リンク：https://qiita.com/collapsar/items/49df3edca91089bcc08f

## かっこの色分け

昨年から拡張機能なしでもできるようになりました。

リンク：https://qiita.com/kazuma_f/items/0828e5a5121925b7289a

## 相対パスのコピー

VSCodeのエクスプローラーのパネルから相対パスをコピーする時のひと手間が減ります。

リンク：https://tonari-it.com/windows-vscode-copy-relative-path/

# まとめ

- VSCodeでも環境構築に多少の労力をかければSpyderとほぼ同じ機能を実現できる。
- VSCodeなら様々な便利機能を少し調べるだけで簡単に追加できる。

終わりです。