MS-Visual Studio2017でのコンソール開発方法

最近自作キーボードに、いいように弄ばれてきた。
プログラミングのために、キーボードを使いこなすつもりだが、慣れないせいか、キーボードに使われる日々を送っている。
しかし、手をこまねく日々ばかりでは、キーボードの奴隷になってしまう。
と言うことで、数十年ぶりに、WindowsOSのコンソール開発をすることにした。
いかんせん、バージョンが変わり、全く勝手が分からないため、手探りしながら記録に残すことにした。

# 前提
インストール済みであること。
個人開発のこじんまりした勉強であれば、[無償利用](https://visualstudio.microsoft.com/ja/downloads/)が出来るようだ。

![download.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/66dc955e-5814-97d4-68a1-63ef79767aa9.jpeg)

WindowsOSだけでなく、MacOS用もあるようで驚く。

## 今回のバージョン
Version 15.9.1
を使う。

## 言語
不本意ながらC++を使う。

## OS
不本意ながらWindows10を使う。


# プログラミング開始
開始と言うほどのことではないが・・・。

## プロジェクトの新規作成
　　ファイルー新規作成ープロジェクト
の順を追う。

![プロジェクト起動.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/0f5132e5-7670-52e6-65ef-980672def1f9.jpeg)

新しいプロジェクトウィンドウが起動する。
空のプロジェクトを選ぶことが基本だ。

![エンプティ.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/76ae08c4-5b24-ee4b-afb4-95d37105e783.jpeg)

名前を付けて、プロジェクトを保存する。

## プロジェクトの種類変更
プロジェクトを右クリックして、プロパティを選ぶ。

![property.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/0906806a-4f0f-a5ea-84fa-c8a9aeab90ef.jpeg)

左枠の構成プロパティーリンカーーシステム

![console.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/ed5df177-94d8-767b-e73f-2cd2a3f0fcd6.jpeg)

右画面のサブシステムからコンソール(/SUBSYSTEM:CONSOLE)を選ぶ。

## ソースファイルの用意
メニューからプロジェクトー新しい項目の追加を選ぶ。

![項目追加.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/05463a16-5563-f1d8-83a8-a9df0f662ed5.jpeg)

開発用ファイルを選ぶ。
ココでは当たり前のようにC++ファイルを選択する。

![cplusplusFile.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/b20ca925-a8e6-ebcf-4865-bfedb9e54bb1.jpeg)

左枠のインストール済みにない場合は、別途インストール(下側のオンラインから選ぶ)する必要がある。

## 開発開始
ソースコードが用意されたため、そこにプログラミングをする。
もちろん世に出回っている`Hello World`だよね。

![ソースコード.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/3673045b-f322-b875-c5b1-7fea7b1adc34.jpeg)

```cpp:HelloWorld.cpp
#include <iostream>

int main()
{
	std::cout << "Hello, world!" << std::endl;
	return 0;
}
```

C++のソースコードになる。
コピペで問題ない。

## コンパイル
メニューのビルドーソリューションのビルドを選ぶ。

![F7.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/b5480881-9540-6d20-0582-bcbb0e0706e6.jpeg)

コンパイルに問題なければ、エラーが発生せず、正常終了で終わる。

![成功.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/38057b95-15e5-eb8e-c245-f6679dc24b5c.jpeg)

## プログラムの実行
画面に文字を表示させるには、コマンドプロンプトを使う。

![実行ファイルの実行.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/96db3167-5d9a-a45f-311b-53a81725eee4.jpeg)

exeファイルがある場所まで移動し、実行すれば文字が表示される。
もちろんexeファイルは、コンパイルした場所になる(プロジェクトを作った場所)。

![debug.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/56791467-9f4b-7039-8300-41d695d6bad1.jpeg)

上記通りに行えば、デバッグディレクトリに存在しているはず。
私の場合はDドライブにあるため、ディレクトリ移動は`CD`コマンドの他に**/d**オプションを付ける必要があった。

## 完了
ここまで出来れば、プロンプト開発は問題なく進められる。











# 経緯
今回記録に残そうと思った理由は、数年前にWindowsパソコンを持っていないのに、Windows開発本を購入して、ようやく読み進めようと思ったが、古くて時代に合っていないため、その差異を埋めるために記録に残した。
当時は最新版だったのだろう。
Visual Studio 2008
を使って解説している。
今から10年前って・・・。

そして、その書籍はC言語での解説で有り、C++とは無縁の内容になっている。

## コンソール開発方法
バージョンが変わったところで、Windows開発とコンソール開発に違いは出ないと思っていた。
しかし、今回メニューにそれらしいのが見当たらなかったため、探し出した。

[Visual C++ のチュートリアル](https://docs.microsoft.com/ja-jp/cpp/build/vscpp-step-1-create?view=vs-2017)

に、解説があった。
さすが公式だと思うぐらい分かりや・・・す・・・い。
（機械翻訳を考えれば読みやすい）

その公式では、C++なので、そのまま用いることにした。
（C言語は別途解説が設けられているが、VisualStudio関係ない）











# [奇っ怪なキーボード](https://geekhack.org/index.php?topic=86984.0)
ebayで[Datahand Remanufactured Datahands DH-200 Plus (with footswitch)](https://www.ebay.com/itm/231810194254?ssPageName=STRK:MESELX:IT&_trksid=p3984.m1555.l2649)と言う、キーボードという名にふさわしくないほどのキー無しボードが売られていた。

![キーボード.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/ca09d54a-668b-51c7-5fd7-504602f37679.jpeg)

これを使ってプログラミングをする人が居るのだろうか。

未来キーボードの手前に位置するであろう[Tap Wearable Keyboard and Mouse](https://www.youtube.com/watch?v=W5J5mHdq_Bw)キーボードもある。

![ウェアラブルマウスおよびキーボード.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/4872eb70-ca3f-7a8c-ab98-17a25770a2d3.jpeg)

一言返信や矢印キーぐらいにしか使えないように見えるが・・・。

マスドロップでも扱いがある。
[Tap Strap Wearable Keyboard, Mouse & Controller](https://www.massdrop.com/buy/tap-strap-wearable-keyboard-mouse-and-controller?mode=guest_open "マスドロップページ")

![指にはめるキーボード.jpg](https://qiita-image-store.s3.amazonaws.com/0/82414/bf53ee22-3cce-9bf6-2b98-d6f27a1dd7e6.jpeg)

興味はあるけどね...





今回の記事もHHKBを使って執筆した(Helixキーボードはゴミなので・・・残念だ)。

よく考えたらプログラミングは好きではなかったのかも知れないと思うようになってきた。
たしかに、作るのは好きなのだが、プログラムを組むような状況に出会えないと言うことは、プログラマーとは言えないのではないかと思ってきた。
そうだよ。
キーボード好きだからキーボードを触りたくてプログラマーになったのであって、プログラマーだからキーボードを触っているのではない。
今後も自分に合ったキーボード探しをしようと思う。


以上。