初心者向け！コマンド9行だけでPython試験にも対応したPython 開発環境を作る（Windows編）

先日の Python 試験のウェビナーで、実際に Python コードを実行しながらデモを行いました。
こちらご好評いただき「デモで実演されていた開発環境を同じように作りたい！」というご意見をいただきました。

そこで、ウェビナーの視聴者の半数以上が初心者ということもありましたので、簡単に Python 開発環境を構築する方法を公開します。
また、せっかくなので Python 試験のバージョンも試せるよう、複数バージョンのインストールも行います。
実際のプログラマの開発環境構築を体験していただきつつ、初心者でも簡単に導入できるようまとめています。
**ウェブブラウザを一切使わず、たった9行のコマンドで開発環境を作ります。**

---

## 本記事のダイジェスト

本記事は下記コマンドを丁寧に解説、確認しながら進める記事になります。
下記コマンドを実行していけば開発環境構築完了です。
**急いでいる方はこのコマンドを実行するだけで環境構築できますが、できるだけ説明を読み確認しながら環境構築してください。**

```powershell
# PowerShell で実行
# scoop
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
iwr -useb get.scoop.sh | iex
scoop install git
scoop bucket add extras
scoop bucket add versions

# Python latest, 3.6, 3.5
scoop install python python36 python35

# Visual Studio Code & Extensions
scoop install vscode-portable
code --install-extension ms-ceintl.vscode-language-pack-ja
code --install-extension ms-python.python
```

> 【☝ワンポイント】
ご覧の通りブラウザ経由でアプリのダウンロードなど一切せず、全部コマンドのみで開発環境を構築しています。
このメモを1行ずつコピペして実行するだけで、どのPCでも同じ開発環境が構築できます。
さらにスクリプトファイル化しておくと、実行するだけで全自動ですべてインストールされるためPCの前にいる必要すらありません。
プログラマとして自動化・効率化できるところはしておきたいですね。

---


## 本記事の開発環境構築について

開発環境の構築方法は、プログラマ個人や会社の方針でまちまちです。正解はありません。
この記事でお伝えする方法は、あくまで私の開発環境構築の方法となります。
ある程度スキルのある方は、この方法を参考に自分なりの開発環境構築方法を確立されるのもよいかと思います。

本記事でご紹介する方法は、下記のような点を重視した開発環境構築方法です。

* 誰でも簡単に構築できる
* 誰でも同じものが構築できる
* 開発環境が Windows 自体に影響を与えにくく、アンインストールしてもゴミデータが残らない
* 開発環境が壊れても最初からやり直しやすい
* **私が実際に環境構築している方法**

### 今回のゴール

次の環境を用意します。

* Python の複数バージョンのインストールと切り替えができる環境
    * 一般社団法人Pythonエンジニア育成推進協会が主催する Python 試験（ https://www.pythonic-exam.com/exam ）向けの環境構築
        * Python3 エンジニア認定基礎試験 用の3.5系バージョン
        * Python3 エンジニア認定データ分析試験 用の3.6系バージョン
    * 通常の Python 勉強のための新しいバージョン向けの開発環境（デモで見せた Python の開発環境）
* Python コードエディタは、**Visual Studio Code** を採用
    * 日本語化やインテリセンスなどは拡張機能をインストールして Python 開発環境を快適にする
* これらを**コマンドだけインストール**する
    * 『Web ページにアクセスして、ここからダウンロードして、次へをクリックして〜』のようなマウス操作でのセットアップは行わない。
    * 開発環境のアップデートやメンテナンスもコマンドだけで行う。


### 【重要】 開発環境構築で重要なこと

先の条件にも上げたとおり、開発環境は不安定になったり壊れることがあります。
ここで重要なことは、「開発環境をもとに戻せる」ということです。
初心者の方は特に意識していただきたいのですが、自分が行った作業内容を必ず記録してください。
記録する先は Windows のメモ帳でもなんでもよいです。
そのメモをあとから見直して、開発環境を同じように再度作れるようにしておいてください。

> 【☝ワンポイント】
手慣れた開発者は、開発環境構築の手順さえもプログラミング（スクリプト化）します。
開発環境構築をスクリプト化する第一歩は、作業内容をできうる限りテキストで残していく工程となります。
私が CLI（コマンドラインインターフェイス）で開発環境を用意するのは、スクリプト化が容易なためです。



## 開発環境の構築

次のような流れで開発環境を構築していきます。

1. PowerShell の起動方法を覚える
2. scoop のインストールと設定
3. Python のインストール
4. Visual Studio Code と拡張機能のインストールと設定

### 1. PowerShell の起動方法

**[スタート] → [Windows PowerShell] → [Windows PowerShell]** から開きます。
![スクリーンショット 2021-03-03 0.12.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252217/4c382233-0d9d-b4b9-519a-5efc854b6c51.png)

本記事でコマンドを入力する先は、この PowerShell 内となります。
![スクリーンショット 2021-03-03 1.21.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252217/eebea2f2-5a09-55a9-65e4-d5df06e84382.png)


> 【☝ワンポイント】
> PowerShell は今後よく使うことになると思うので、タスクバーにピン留めしておくことをおすすめします。
> ![スクリーンショット 2021-03-03 0.14.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252217/eaeb1c11-e900-f61f-7ddc-aceab621a611.png)


### 2. scoop インストール

scoop は主要な開発ツールやアプリをコマンドでインストールできるようにするアプリです。
https://scoop.sh

> 【☝ワンポイント】
Linux 系のサーバーを触ったことがある方は、Ubuntu の apt や apt-get、CentOS の yum や dnf と同じようなものだとお考えください。


PowerShell で scoop をインストールできるようにするためにポリシーを変更します。
（ポリシー変更については今回の内容では重要でないので割愛します。ひとまずおまじないと思っておいてください。）
下記のコマンドをコピペして実行してください。

```powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
```

scoop をインストールします。
このコマンドは、公式ページ（ https://scoop.sh ）に記載があるものと同じです。
下記のコマンドをコピペして実行してください。


```powershell
iwr -useb get.scoop.sh | iex
```


インストールがきちんとされたか確認します。

```powershell
scoop
```

成功していれば、以下のような文字が表示されます。


```powershell
PS C:\> scoop
Usage: scoop <command> [<args>]

```


インストールに失敗した場合、もしくはコマンドを間違えていた場合、以下のようなエラーが赤文字で表示されます。


```powershell
PS C:\> scoop
scoop : 用語 'scoop' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されま
せん。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してく
ださい。
発生場所 行:1 文字:1
+ scoop
+ ~~~~~~
    + CategoryInfo          : ObjectNotFound: (scoop:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
```

このあとの各インストールの確認もコマンドで都度行っていきます。
このあとの各インストールの確認コマンドでは成功の場合のみしか記載しませんので、上記のような赤文字のエラーが出た場合、インストールに失敗しくはコマンドを間違えていることに注意してやり直してください。


#### 2-1. scoop の設定

scoop がインストールされたら、必要な追加設定をコマンドで行います。
まずは git をインストールします。
git はソースコードを分散管理するソフトウェアですが、scoop はこの機能を使っているため必須となっています。

```powershell
scoop install git
```

git のインストールを確認します。

```powershell
git --version
```

成功していれば、以下のような文字が表示されます。

```powershell
PS C:\> git --version
git version 2.30.1.windows.1
```


他のアプリケーションや、Python の複数バージョンをインストールするため、scoop の bucket を追加します。
bucket はアプリケーションのカタログのようなものだと思ってください。
scoop ではアプリケーションのカタログを追加してインストールできるアプリケーションを大幅に増やすことができます。
今回は必要な2つのバケットを追加しておきます。

```powershell
scoop bucket add extras
scoop bucket add versions
```

bucket が正しく追加されたかを確認します。

```powershell
scoop bucket list
```

成功していれば、以下のような文字が表示されます。

```powershell
PS C:\> scoop bucket list
extras
main
versions
```

失敗している場合、main しか表示されません。

```powershell
PS C:\> scoop bucket list
main
```


これで scoop 周りのインストールと設定が完了しました。


### 3. Python インストール

いよいよ Python をインストールします。
Python は複数バージョンを一気にインストールします。


* python : Python3 最新バージョン、現在は Python 3.9系
* Python36 : Python3 エンジニア認定**データ分析試験** 用の Python 3.6系
* python35 : Python3 エンジニア認定**基礎試験** 用の Python 3.5系

```powershell
scoop install python python36 python35
```

Python が正しくインストールされたかを確認します。

```powershell
python -V
python36 -V
python35 -V
```

成功していれば、上から順に以下のような文字が表示されます。
最後の数字はリビジョン番号で、バグ修正などで変更される番号です。2つ目の数字まで（例：3.5.x）まであっていれば問題ないです。

```powershell
PS C:\> python -V
Python 3.9.2
PS C:\> python36 -V
Python 3.6.8
PS C:\> python35 -V
Python 3.5.4
```

これで Python のインストールが完了です。
Python のバージョンを指定して実行する際は、下記のようにコマンドを変えて実行すればOKです。

```powershell
# Python 最新版で実行
python "Pythonファイル.py"

# Python 3.6 系（データ分析試験の環境）で実行
python36 "Pythonファイル.py"

# Python 3.5 系（基礎試験の環境）で実行
python35 "Pythonファイル.py"
```

> 【☝ワンポイント】
> Python のバージョン違いを複数インストールさせる他の方法として、pyenv や Docker コンテナなどの方法もあります。
> 一般的には本記事の scoop でバージョン管理する方法を紹介している記事は少ないです。
> この scoop を使った複数バージョンの管理方法を推奨している理由は、下記の理由のためです。
> * リビジョンの違いを初心者はそこまで気にする必要がないだろうということ
> * pyenv や Docker などの新しい技術を覚える必要性をなくすため
> * コマンドにバージョン情報が入っているのでわかりやすく、コマンドごとに別バージョンの実行が簡単なため

> 【☝ワンポイント】
> ここで紹介した以外の Python の別バージョンをインストールしたい場合は、下記コマンドでインストールできる Python のバージョンを調べることができます。
>
> ```powershell
> scoop search python
> ```


### 4. Visual Studio Code インストール

最後に、Python コードのエディタである Visual Studio Code をインストールします。

```powershell
scoop install vscode-portable
```

Visual Studio Code が正しくインストールされたかを確認します。

```powershell
code
```

成功していれば、Visual Studio Code が起動したはずです。
**起動を確認した後はいったん閉じておいてください。**


> 【☝ワンポイント】
scoop でインストールできる Visual Studio Code 系は、`vscode, vscode-portable, vscode-insiders, vscode-insiders-portable, vscodium, vscodium-portable` の6種類あります。
末尾に `-portable` があるものは、scoop のフォルダ内ですべて設定ファイルも管理できるポータブルアプリ化されており、開発環境がが壊れた際に再構築しやすいので通常はこちらをお勧めします。
デモ実演で使ったものは `vscodium-portable` ですが、これは `vscode-portable` を普段の開発環境で使用しているため代わりに使用しているだけです。
通常は `vscode-portable` をおすすめします。


#### 4-1. Visual Studio Code 拡張機能 インストール

Visual Studio Code は、拡張機能をインストールすることによって使いやすくなります。
Python 開発で最低限必要だと思われる拡張機能をインストールしましょう。

```powershell
# Visual Studio Code 日本語化
code --install-extension ms-ceintl.vscode-language-pack-ja

# Python 拡張機能
code --install-extension ms-python.python
```

デモでは日本語化していませんでしたが、初心者には日本語化しておいたほうが良いということで追加しています。

では、改めて Visual Studio Code を起動してみましょう。
今度はスタートメニューから起動します。
Scoop でインストールしたアプリは、原則スタートメニュー内の [Scoop Apps] フォルダ内にショートカットが作成されます。

**[スタート] → [Scoop Apps] → [Visual Studio Code]**
![スクリーンショット 2021-03-03 0.26.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252217/2ff5c950-0d6f-9482-361b-478ec67217d9.png)

Visual Studio Code が日本語化され起動できました。
![スクリーンショット 2021-03-03 1.36.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252217/8581d1d6-8b4f-183b-d1e9-4c5060de9e08.png)


これで開発環境はすべて構築完了です！
コマンドだとミスが少なく構築できたかと思います。




## 開発環境の管理

Scoop でインストールしたアプリのアップデートやアンインストールなど、よく使う一通りのコマンドを書いておきます。
開発ツールのアップデートなどもコマンドで簡単にできるので、徐々になれていきましょう。
よく使う順序に並べています。

python のアップデートすると pip でグローバルにインストールされているパッケージは再インストールが必要となります。
アップデート後に Python コードが動かなくなった場合は、再度 pip でパッケージをインストールしてください。
（pip でインストールするパッケージもメモしておきましょう。）

```powershell
# Scoop でインストールできるアプリを探す
scoop search "アプリ名"

# アップデートがあるか確認
scoop update; scoop status

# Scoop でインストールしたアプリをすべてアップデート
scoop update *

# 特定のアプリのみアップデート
scoop update "アプリ名"

# 特定のアプリをアンインストール
scoop uninstall "アプリ名"

# Scoop でインストール時に使用したキャッシュを削除
scoop cache rm *

# Scoop でインストールしたアプリの旧バージョンをすべて削除
# Scoop はアップデートを上書きではなく追加で対応しているため前バージョンに戻しやすいです。
# 各アプリの前バージョンが不要になった場合は削除してしまいましょう。
scoop cleanup *

# Scoop でインストールした特定のアプリの旧バージョンをすべて削除
scoop cleanup "アプリ名"

# 特定のアプリのバージョンを固定
# 特定のバージョンで固定したい場合、最新版にバグがありバージョンアップしたくない場合は固定します
scoop hold "アプリ名"

# 特定のアプリのバージョン固定を解除（hold コマンドの解除）
scoop unhold "アプリ名"
```

> 【☝ワンポイント】
> Scoop でインストールされるアプリの保存場所は、`C:¥Users¥(自分のプロファイル)¥scoop` フォルダに原則すべて保存されています。


## おわりに

Windows では本記事にある通り、Scoop を使用して開発環境を作成するのが一番簡単です。
開発環境をコマンドで構築して、ひとつ上のプログラマをめざしましょう！


> 【☝ワンポイント】
> scoop では開発ツール以外のアプリもコマンドでインストールできます。
>
> ```powershell
> # Google Chrome
> scoop install googlechrome
> 
> # Microsoft Office 365
> scoop bucket add nonportable    # このバケットが必要
> scoop install office-365-apps-np
> 
> # Zoom
> scoop install zoom
> ```