Windowsで作る初心者向けプログラミング環境

## 1時間でWindowsでプログラミング環境を作る
##### 対象読者
windowsでプログラミング環境を作成したい初心者

##### 目標
1.  一時間以内にC言語とPythonでhello worldを行う
2.  可能な限りWindowsの環境を汚さない
3.  ステップアップしても使い続けられるor環境をリセットできるようにする


### 1. WSLの有効化
はじめにWSL(Windows Subsystem for Linux)の有効化を行います。
これはWindows上でLinuxというOSを動かすサービスです。もともとWindowsはプログラミング環境を構築するのがMacOSやLinuxといった他のOSと比べ難しく、WindowsPCしかないけどプログラミングしてみたい!とりあえず大学で習ったC言語でもやってみよう!という初心者(かつての私)のモチベーションを環境構築の段階で折るレベルでした。
一方、Linuxはプログラミング環境を構築するのが非常に簡単なOSですが、LinuxをWindowsPCに入れるという作業はかなり面倒です。嬉しいことにMicrosoftがWSLというサービスを用意してくれているので使いましょう。一昔前では考えられないサービスです。

##### 1.1 コントロールパネルを開く
コントロールパネルは左下のWindowsアイコンを右クリックして出てくる「検索」にコントロールパネルと入力すれば開きます。
##### 1.2 WSLの有効化
コントロールパネルにあるメニューのうち、「プログラムと機能」を選択します。右メニューにあるWindowsの機能の有効化または無効化をクリックします。
##### 1.3 WSLの有効化
開いたウィンドウからWindows Subsystem for Linuxを探し、チェックを入れます。
WSLを有効にするため、一度再起動をしましょう。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572164/d5461bde-1de8-62bf-0524-6e754d6fcbda.png)

### 2. WSL用UbuntuとWindows Terminal, VSCodeの入手
Microsoft StoreからUbuntuというアプリを入手します。これはWSL上で動かすOSのイメージです。Ubuntu, Ubutnu18.04, Ubuntu16.04とありますが、ここではUbuntu18.04を選びましょう。あまり違いはありません。ダウンロードしたら起動してください。
黒い画面が表示されて英語でユーザー名とパスワードの設定を求められるので入力してください。
<img width="602" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572164/95ee48dc-dc0f-5501-fd5c-4101e17b28c2.png">
合わせて、Windows Terminalを入手しましょう。Preview版となっていますが特に問題はありません。
<img width="602" alt="キャプチャ2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572164/c02eda01-af7f-d01a-ce35-e946a037e0d9.png">
また、VSCodeというエディタをダウンロード&インストールしましょう。
https://code.visualstudio.com/

Windows Terminalが起動したら、メニューバーにあるセッティングを開いてください。

![2020-02-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572164/26e8a7b9-afa1-ae07-061f-0d7f54f8bfc2.png)
ここのSettingを開くとVSCodeが立ち上がるはずです。
<img width="511" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572164/22c6cba8-cfa0-2548-3111-72513006594b.png">
画面に上側にある

```json:setting.json
"defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}"
```

"defaultProfile"の値(c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40)を
下スクロールすると現れるUbuntu向けの設定のguid(c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40)

```json:setting.json
            {
                "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
                "hidden": false,
                "name": "Ubuntu-18.04",
                "source": "Windows.Terminal.Wsl"
            }
```
で置き換え、上書き保存してください。これで、Windows terminalを開くと自動でUbuntuのターミナルが開きます。

### 3. Ubuntuのアップデート、必要なツールのインストール
Ubuntuのターミナルを開いて以下のコマンドをコピー＆ペーストしてください。ターミナルへのペーストにはshift+crtl+Vでペーストできます。パスワードを求められるのでUbuntu初回設定時に入力したパスワードを入れてください

```bash:ubuntu.update
sudo apt update
sudo apt upgrade
sudo apt install build-essential          
```
少し時間がかかりますが、Ubuntuの更新だと思って待っていましょう。

### 4. VS Codeに必要な拡張機能のインストール
VSCodeを開き、メニューバーのFile>Setting>Extensionとクリックしていくと、拡張機能をインストールできるメニューが開きます。
そこで、以下の拡張機能をインストールしてください。
##### Japanese Language Pack for VS Code
##### Remote - WSL

再度Ubutuターミナルを開き、

```bash:openvscode
code .         
```
と入力します。これで、VSCodeをUbuntu上で動かすことができるようになります。
また、ターミナルで開いたVSCodeから拡張機能
##### Python
##### C/C++
を入れてください。これらの拡張機能は対応のプログラミング言語の誤りを指摘してくれたり、コードが見やすくなるようなハイライトを加えてくれます。
以上で最低限の環境構築は終了です。

### 5. プログラムの作成
#### 5.1 C言語
VSCodeでC言語のhello worldファイルを作成し、保存しましょう。今回はDesktop化に保存したとします。

```C:hello_world.c
#include <stdio.h>

int main(){
    printf("Hello World!\n");
    return 0;
}      
```
VSCodeのメニューにあるターミナル>新しいターミナルをクリックすると下側にターミナル画面が開くはずです。そのターミナルに

```bash:move_dir
cd Desktop
gcc hello_world.c
./a.out

```
と入力すれば、ターミナルがDesktopフォルダーに移動、hello_world.cファイルをコンパイル、出力したa.outファイルを実行し、ターミナルにHello World!と出力されます。
おめでとうございます!これでC言語の開発環境ができました。どんどんプログラムを作成してコンパイル&実行してみてください。

#### 5.2 Python
Pythonの場合はもっと簡単です。

```Python:hello_world.py
print("Hello World!")
```
を作成し、同様にターミナルから

```bash:move_dir
cd Desktop
python hello_world.py
```
とするだけです。おめでとうございます!Pythonの開発環境もできました!簡単ですね!もしPythonでガリガリ書いて行きたいとお考えでしたら、ターミナルから

```bash:installmojule
sudo apt install python3-pip
pip3 install jupyter
pip3 install ipython
pip3 install numpy scipy matplotlib pandas scikit-learn flask
```
で必要なモジュールをインストールできます。

### 6. さらに別の言語を試す
もちろんC、Pythonだけでなく他のプログラミング言語も簡単に作成できます。
Google検索から

Ubuntu (使用したいプログラミング言語)

で検索して出てきた記事に記載されているコマンドをターミナルで入力し、VSCodeにそのプログラミング言語の拡張機能を入れるだけです。
Golang: https://github.com/golang/go/wiki/Ubuntu
Rust : https://www.rust-lang.org/tools/install

Let's enjoy programming!