【初学者向け】WindowsでC/C++のプログラミングを始める

# 概要
### この記事でできること
プログラミング未経験者が`MinGW`で環境を構築し、`Visual Studio Code`（以下`VSCode`）を使ってC/C++のコードを実行できるようになる。

### 対象読者
- Windows 10 のPCを持っている
- C/C++を始めたいと思っているが何から手を付けたらいいのかわからない
- PCの基本操作(コピペ等)はできる
- 構築される環境に深いこだわりはなく、とにかくC/C++が実行できればいい

### コード実行の仕組み
※実行できればそれでいい！っていう人はこの項は飛ばして読んでも大丈夫です。

C言語/C++言語は**コンパイラ型言語**と呼ばれる言語であり、次のような手順でコードを実行します。

1. **エディタ**でプログラムの内容を入力し、`hello.cpp`などのファイル名で保存する
2. **コンパイラ**で`hello.cpp`を**コンパイル**し、`hello.exe`などのファイル名で保存する
3. `hello.exe`を実行する

簡単にプログラミングをするときは大部分の時間を1.に使い、2.と3.は自動化されていることが多いです。
より複雑なプログラミングをするときは**デバッガ**を導入し、プログラムを実行しながらあれこれやりますが、今回はそこまでは踏み込みません。

プログラムが書かれたファイル`hello.cpp`はテキストファイルであり、（テキスト）エディタでこれを編集します。
おそらく世界で一番有名なエディタはWindowsの「メモ帳」でしょう。
一応メモ帳でもプログラミングはできなくもないですが、普通はよりプログラミングに特化したエディタをインストールして使います。
この記事では`VSCode`（紛らわしいが`Visual Studio`とは別物）をインストールします。

また、コンパイルとは、`.cpp`などのテキストファイルを機械が理解しやすいファイル形式に変換することです。
初期状態のWindowsにはC/C++のコンパイラがインストールされていないため、自分で用意する必要があります。
この記事ではコンパイラの管理ソフト`MinGW`を使って`gcc`というコンパイラを導入します。
さらに、`gcc`を使うということをWindowsのシステムに教えるために、「環境変数 Path」に登録する必要があります。

### 環境構築の手順
1. エディタ`VSCode`をインストールする
1. コンパイラ管理ソフト`MinGW`をインストールする
1. `MinGW`を使ってコンパイラ`gcc`をインストールする
1. `gcc`を環境変数 Pathに登録する
1. コンパイル&実行を試してみる
1. `VSCode`の便利な機能を使ってみる


# エディタVSCodeをインストールする
https://code.visualstudio.com/ にアクセスし、「Download for Windows」をクリックします。

![スクリーンショット (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/baf5eddf-9def-7029-02ce-145e825d8b46.png)

ダウンロードが開始します。
ダウンロードした「VSCodeUserSetup-*.exe」を実行します。
「同意する」を選択し、「次へ」をクリックします。

|![スクリーンショット (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/4389c3c9-d4b2-2145-bd93-cc30441b2eed.png)|
|:--|

特にこだわりがなければ、「次へ」をクリックします。

|![スクリーンショット (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/7bb66c0b-f699-5824-df19-25b28ed3faf7.png)|
|:--|


特にこだわりがなければ、「次へ」をクリックします。

|![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/f94e0495-4b16-d30f-4c10-03eb60f78740.png)|
|:--|

お好みで選択し、「次へ」をクリックします。
よくわからなければデフォルトのままで問題ないです。

|![スクリーンショット (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/1f3540b5-5d49-a10d-1c69-db8cca21d3a1.png)|
|:--|

各項目の意味は次のようになります。

- エクスプローラーのファイル（フォルダ）コンテキストメニューに[Codeで開く]アクションを追加する<br>
→エクスプローラでファイル（フォルダ）を右クリックしたときに`VSCode`で開くメニューを追加します
- サポートされているファイルの種類のエディターとして、Codeを登録する<br>
→`.cpp` `.py`などのファイルを開くデフォルトのプログラムとして`VSCode`を登録します
- PATHへの追加<br>
→`VSCode`を開くコマンド`code`を使えるようになります

「インストール」をクリックします。

|![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/ad933f7b-3a17-bbd0-7ee7-de2c347def46.png)|
|:--|

これで`VSCode`のインストールは完了です。
インストーラの画面は閉じても大丈夫です。

|![スクリーンショット (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/4efd9def-5b14-6665-68ae-f11b1cc302bc.png)|
|:--|


# コンパイラ管理ソフトMinGWをインストールする
http://www.mingw.org/ にアクセスし、「Downloads」をクリックします。

|![スクリーンショット (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/e062f29d-f2b5-506c-c062-761a6bd1a074.png)|
|:--|

下にスクロールし、「MinGW Installation Manager (mingw-get)」をクリックします。

|![スクリーンショット (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/3b0b4125-6e7b-9b17-c96a-7a8aef7e4e92.png)|
|:--|

下にスクロールし、「MinGW-Get Version 0.x.x (Beta)」をクリックします。

|![スクリーンショット (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/713f6f02-d221-a018-f5a7-575f9080d582.png)|
|:--|

下にスクロールし、「mingw-get-setup.exe」をクリックします。

|![スクリーンショット (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/5955387e-1ce2-5084-6a56-4491388759fe.png)|
|:--|

しばらくするとダウンロードが開始します。
ダウンロードした「mingw-get-setup.exe」を実行します。
「Install」をクリックします。

|![スクリーンショット (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/be0b8db2-8f4a-2a89-4aa8-da20d783353c.png)|
|:--|

特にこだわりがなければ「Continue」をクリックします。
なお、インストールディレクトリを変更する場合はパス名にスペースが含まれないように注意してください。

|![スクリーンショット (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/df77e472-3cc2-791c-b4cf-fcd30fb6d9c2.png)|
|:--|

ダウンロードの完了後、「Continue」をクリックします。

|![スクリーンショット (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/3b8fd479-e3ee-e11f-dfc1-74b353ae907d.png)|
|:--|

デスクトップに「MinGW Installation Manager」というショートカットが作成されます。
これで`MinGW`のインストールは完了です。
自動で「MinGW Installation Manager」が起動されます。

|![スクリーンショット (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/de542fe4-105a-2bf4-d173-d824f45efbed.png)|
|:--|

# MinGWを使ってコンパイラgccをインストールする
「MinGW Installation Manager」を起動します。
「mingw32-base」の左のボックスをクリックし、「Mark for Installation」をクリックします。

|![スクリーンショット (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/96303b40-1ea1-2c76-360d-3f731c5bb833.png)|
|:--|

「mingw32-gcc-g++」の左のボックスをクリックし、「Mark for Installation」をクリックします。
これら2つ以外の項目はC/C++を簡単に使う上では不要です。

|![スクリーンショット (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/9593227f-d675-f5b9-6bd8-a240018b5920.png)|
|:--|

左上の「Installation」をクリックし、「Apply Changes」をクリックします。

|![スクリーンショット (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/2136cfa6-6dcd-0374-fbd3-a70acd4a9224.png)|
|:--|

「Apply」をクリックします。

|![スクリーンショット (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/e022a606-b521-0d85-0327-649ac20d478a.png)|
|:--|

ダウンロードが開始します。

|![スクリーンショット (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/db31a278-a421-4131-0f68-da1a5c7f9744.png)|
|:--|

ダウンロードの完了後、「Close」をクリックします。

|![スクリーンショット (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/520d7592-48c2-cb04-54bf-08934ad145a1.png)|
|:--|

これで`gcc`のインストールは完了です。
「MinGW Installation Manager」は閉じても大丈夫です。

# gccを環境変数 Pathに登録する
Windowsの検索バーに「環境変数」と入力し、「環境変数を編集」をクリックします。

|![スクリーンショット (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/897b284d-0278-5c00-293b-50101e7d1f56.png)|
|:--|

「[ユーザー名]のユーザー環境変数」の欄から「Path」を選択し、「編集」をクリックします。

|![スクリーンショット (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/811a1bd2-0330-f738-d4f5-990b12c4c25f.png)|
|:--|

「新規」をクリックし、`[MinGWのインストールフォルダ]\bin`を入力します。
デフォルトの場所に`MinGW`をインストールしていた場合は`C:\MinGW\bin`です。

|![スクリーンショット (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/cbe3826c-9c79-32d1-5395-e653562432c6.png)|
|:--|

「OK」をクリックしてすべてのウィンドウを閉じます。

|![スクリーンショット (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/ccca92b1-f202-d9db-cef0-9128bf1392bf.png)|
|:--|

これで環境変数 Pathへの登録は完了です。

# コンパイル&実行を試してみる
これでC/C++の実行環境は整いました。
試しにC++のプログラムを実行してみましょう。
例として、デスクトップに「src」というフォルダを作成し、`hello.cpp`というファイルを作ることにします。
「src」というフォルダを作ります。

![スクリーンショット (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/553122c5-e038-f8bc-29e7-abf73ef88a35.png)

### プログラム本体を作成する
`VSCode`を開きます。
デフォルトで「Welcome」タブが開かれているかもしれませんが、閉じても大丈夫です。

![スクリーンショット (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/2842831b-5ae4-bdff-e295-d88fa34fa8ef.png)

`Ctrl`+`N`のキーボードショートカットでファイルを新規作成し、`Ctrl`+`S`のキーボードショートカットでファイルを保存します。
保存の画面でファイル名を`hello.cpp`に変更し、`C:\Users\[ユーザー名]\Desktop\src`の場所に移動し、「保存」をクリックします。

![スクリーンショット (32).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/3430195c-a8cb-6927-bddc-3f3281e8b5bb.png)

`hello.cpp`の内容を以下のように編集し、`Ctrl`+`S`で上書き保存します。

```cpp:hello.cpp
#include <iostream>
using namespace std;

int main() {
    cout << "Hello world!" << endl;

    int a, b;
    cin >> a >> b;
    cout << "a + b = " << a + b << endl;

    return 0;
}
```

### PowerShellでソースコードのフォルダに移動する
コンパイル&実行を行うソフトとして、`PowerShell`を使ってみます。
他の記事では`コマンドプロンプト`を使うことも多いですが、この記事では`VSCode`内でのデフォルトに合わせて`PoserShell`を使います。
`Windowsボタン`+`X`のキーボードショートカットを押し、`I`を押すことで「Windows PosheShell」を選択します。

![スクリーンショット (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/6d101e1f-aada-b5e3-6185-07b47dff6085.png)


`PowerShell`が起動したら、`g++ --version`と打って`Enter`を押します。
以下のようにバージョン情報が表示されればgccは導入できています。
（環境によって表示される内容は異なります。）

![スクリーンショット (36).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/c8887925-4e2c-59d1-a9e6-a7b01065cc29.png)

エラーが表示される場合は、以下の確認を行ってください。

- 環境変数 Pathは登録できているか
- 環境変数 Pathに書いてある場所（例：`C:\MinGW\bin`）に「g++.exe」というファイルがあるか<br>→無いなら「MinGW Installation Manager」を使ってインストールする
- `PowerShell`を再起動してもダメか

エラーが表示されなかったら、コマンドを打っていきます。
コンソール画面の左側には

```
PS C:\Users\[ユーザー名]> 
```

と表示されていると思います。
最初の2文字は`PowerShell`のコマンドラインであることを表し、それ以降は現在の作業ディレクトリ（作業フォルダ）を表しています。
作業ディレクトリを`hello.cpp`を作成した場所に変更しましょう。
例では`C:\Users\[ユーザー名]\Desktop\src`に移動します。
作業ディレクトリは`cd [移動したい場所]`というコマンドで変更できるので、以下のように移動できます。 

```
PS C:\Users\[ユーザー名]> cd desktop
PS C:\Users\[ユーザー名]\Desktop> cd src
PS C:\Users\[ユーザー名]\Desktop\src> 
```

### コンパイル&実行をする

C++のコンパイルのコマンドは`g++ [コンパイルされるファイル] -o [出力ファイル名]`です。
出力ファイル名の拡張子（ドット移行の文字）は`.exe`にしてください。
出力されたファイルは`.\[ファイル名]`で実行できます。
今回の場合は、次のようなコマンドで実行できます。

```
PS C:\Users\[ユーザー名]\Desktop\src> g++ hello.cpp -o hello.exe
PS C:\Users\[ユーザー名]\Desktop\src> .\hello.exe
```

今回のプログラムは、実行すると`Hello world!`と出力されます。
次に入力待ちが始まるので、半角スペースで区切って2つの整数を入力し、`Enter`を押すとそれらの和が計算されます。

![スクリーンショット (38).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/ae8b6dfb-3408-9028-f816-ac3aa64c8fcf.png)

C++ではなく純粋なCのコードを書きたい場合は、

- ソースコードの拡張子を`.cpp`から`.c`に変更する
- ソースコードの中身をC言語の書き方で作る
- コンパイルのコマンドとして`g++ *`ではなく`gcc *`をつかう

とすれば実行できます。
ソースコードの中身として、`hello.cpp`と同等のプログラム`hello.c`の内容は次のようになります。

```c:hello.c
#include <stdio.h>

int main() {
    printf("Hello world!\n");

    int a, b;
    scanf("%d%d", &a, &b);
    printf("a + b = %d\n", a + b);

    return 0;
}
```

これでC/C++の実行環境は整いました。
お疲れ様でした！
`VSCode`の真価は豊富な拡張機能を追加できることにあるので、引き続きエディタの環境を整えましょう。

# VSCodeの便利な機能を使ってみる
### 必須級の拡張機能
`Ctrl`+`Shift`+`X`のキーボードショートカットで拡張機能タブが開きます。
検索を使い、次の拡張機能を探してインストールしましょう。

- [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) : IntelliSenseなどの機能が使えるようになります
- [Code Runner](https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner) : ボタンを押すだけでコンパイル/実行を一気にやってくれます
- [Japanese Language Pack for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-ja) : VSCode自体を日本語化してくれます

※英語の質問フォーラムなどをよく見る人は日本語化しないほうが便利かもしれません。

### Code Runner でソースコードを実行する
`Ctrl`+`,`のキーボードショートカットで設定が開きます。
拡張機能の設定も基本的にはここでできます。
「code runner」で検索し、「Code-runner: Run In Terminal」を探してチェックを付けます。

![スクリーンショット (41).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/1c1dabea-0728-8b6a-d3bb-5e68ecbf39a3.png)

`hello.cpp`のファイルを開いている状態で`Ctrl`+`Alt`+`N`のキーボードショートカットを押します。
これだけで、

1. `PowerShell`を開く
1. ファイルがあるディレクトリを作業ディレクトリにする
1. コンパイルする
1. 実行する

の手順が実行されます！

![スクリーンショット (42).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326159/8956ce7c-e9c4-4737-0321-ecf76b92abc6.png)


# 参考にしたサイト
https://qiita.com/aky100200/items/f18a549b1a0b8686e0c0
http://lyncs.hateblo.jp/entry/2018/03/11/032127