(俺の周りで)あまり知られていない「Visual Studio」の便利な機能

##余談
Visual Studioとは統合開発環境です。
公式ページ：https://www.microsoft.com/ja-jp/dev/default.aspx
参考Wiki：https://ja.wikipedia.org/wiki/Microsoft_Visual_Studio

##内容の概要
簡単に内容を伝えますと、使いそうなオプションの内容とクラス作成とプロファイラーについてです。

##テーマ色及びコマンド色
こんなこと知っとるわっていう人が多いと思いますがそうでもなかったりしました。
Visual Studioの見た目やプログラムコードの文字色を変える方法です。

　まず、[ツール]にある[オプション]を開いてすぐのところにある[環境]→[全般]の[配色テーマ]という項目からVisual Studioの見た目を変えれます。

![1.png](https://qiita-image-store.s3.amazonaws.com/0/252485/7aa98cc5-c70a-8672-4347-580afb381862.png)


私は明るいと目が辛くなるのでいつも濃色で行っています。

![2.png](https://qiita-image-store.s3.amazonaws.com/0/252485/d50d4bac-e036-80ee-bad8-7d53f9244ce7.png)


　そのオプションの中にある[フォントおよび色]というところからプログラムコードを変えることができます。私は特に変えてないです。

![3.png](https://qiita-image-store.s3.amazonaws.com/0/252485/452c0f26-0efe-eaa3-f7c5-7ebe5c825514.png)


また、更新されてからVisual Studioに現れたプログラムコードの縦の破線ですが消すこともできます。
[テキストエディタ―]→[全般]にある[構造のガイド線を表示する]のチェックを外せば消すことができます。

私の周りでは更新しなかったために破線が出ていなくて何故だ！何故だ！と問い詰められた思い出があります。


##クラス作成
※私はC++でのプロジェクトの作成をよく行うので今回のクラス作成はC++のクラスという形です。

　.cppや.hを作成するにあたってよく使うのは[新しい項目の追加]だと思います。私はゲームを作ることが多いため、main.cppや.hlslのためにこの項目は使います。

ですが一つのクラスのために.cppと.hをいちいち作成するのはとても手間です。そのため、簡単に生成することができるのが[クラスの追加]というものです。
![4.png](https://qiita-image-store.s3.amazonaws.com/0/252485/be0db96b-500a-4166-ee0f-16f92aaf9012.png)

　そこでクラス名を決め、基底クラスがある場合はここで基底クラスを打ち込むことでいちいち書いていた「 : public Apple」を書かなくて済みます。
ちなみに間違った基底クラスを書くとはじかれるのでそういうミスを無くせます。
![6.png](https://qiita-image-store.s3.amazonaws.com/0/252485/a2416cc9-eb95-7569-c144-bd6ac40dbd30.png)


このような感じになります。基底クラスがはじかれる要因としてはヘッダーを自動でインクルードしてくれるっていうのがありそうですね。
![7.png](https://qiita-image-store.s3.amazonaws.com/0/252485/eed6640e-0f38-8f7b-1bc5-99fa0f3a7811.png)


　ちなみにこれはクラスの作成とは違って関数の作成の話ですが、適当に関数を作ったとしたら毎回下に緑色の波線が出ると思います。理由はご存知の通り関数の中身（定義）が書かれていないからです。

　ですがここからいちいち.cppにうつって「void Foo::関数名(){}」とするのは少しめんどうですし継承クラスとなれば間違えて基底クラスを呼ぶ可能性もなくはないような気もします。いや、ないな。

そのためのこんなビックリマークがあったりします。
![8.png](https://qiita-image-store.s3.amazonaws.com/0/252485/d9ea3381-6b6b-dbce-6fa7-ad189aeb8509.png)

![9.png](https://qiita-image-store.s3.amazonaws.com/0/252485/69295e31-faf5-60ac-d99d-0e5ce70b7ae3.png)

いや、これ便利です。周りは誰も知らなかったです。
この状態で記述するのもいいですが.cppで記述したかったら×を押して閉じればそっちの方にありますのでそれで書けます。
ちなみにこれ、クラスで宣言した関数の順番で作成されるので探しやすいです。


##プロファイラー
公式ページ：https://msdn.microsoft.com/ja-jp/library/mt210448.aspx
まずプロファイラーって何？っていう方は私に問わないで調べてください。私もメモリリークを調べる便利なものっていう意味でしか捉えていなく、詳しいことは知りません。

プロファイラーは[デバッグ]の中にあります。
![10.png](https://qiita-image-store.s3.amazonaws.com/0/252485/3d48e649-3e5f-8bb4-85b5-a82c8e2c4a90.png)

私がよく行うのはこの[パフォーマンスプロファイラー]というものです。よく行うっていうのは意味合い的に危なそうですが大丈夫です。確認のためであって実際リークしてるのなんてそうそうないです。

他の項目に[Unityデバッガーのアタッチ]というのがありますが、私はUnityでゲームを作ったことが今のところないのでどういったものか試したことないのでよくわかりません、すみません。


それでパフォーマンスプロファイラーを開くとこのようになっています。
![11.png](https://qiita-image-store.s3.amazonaws.com/0/252485/fa7fe00e-13aa-faaa-0613-a9d01be0681a.png)

このようにCPUだったりGPUの使用率を調べてくれます。私が良く使うのはメモリ使用量です。
ちなみにパフォーマンスプロファイラーはDebugでは黄色い警告を出されます。だから何だと言って、私は普通にDebugで使っていたりします。

使ってみるとこのようになっています。これはリークしていない状態です。（のはず）
![12.png](https://qiita-image-store.s3.amazonaws.com/0/252485/1ff154dd-f2f5-49ea-f50e-751a48391974.png)


例えば一枚の画像をマイループ読み込むとこのようになります。
ノートパソコンの排熱の音がだんだんうるさくなってきてとても怖いです。
![13.png](https://qiita-image-store.s3.amazonaws.com/0/252485/f5cae66d-2318-8cc7-0ac5-956f26b27449.png)

このような形でメモリリークが起こしているかどうかを調べられます。


※関連記事にて、この記事の方がリーク場所を調べる方法について分かりやすく書かれていました。
https://qiita.com/ryo-pinus/items/8141c749168ea321937c

ですが、それではどこでリークしているかを調べられないと思います。
そのためのスナップショットです。図では黄色い注意マークで説明されてると思います。
プロファイラー中にVisual Studio上の画面でスナップショットを撮るという項目があるのでクリックすればスナップショットが作成されます。

これ以降の内容は本当に正しいのか怪しいので間違った使用や解釈をしていたらすみません。

※今回やってるものがゲーム画面を映してはいけないのでスナップショットを表示させたところから言葉のみの説明です。

スナップショットの画面に[MB]という表記にカーソルを合わせると「ヒープサイズの詳細を表示する」という説明が出てきます。表示してみます。

項目をたどることで右のサイズ数からどこがリークしているかの大体の位置を知ることができます。
この場合はWinMainのLoadGraphというのが怪しいみたいです。というか実際危ないことしてます。
![14.png](https://qiita-image-store.s3.amazonaws.com/0/252485/543a3643-acdb-48c1-5cee-72b1113b09ea.png)


そういったことから調べられると思います。


##まとめ
今回はVisual Studioのテーマ色とコマンド色、クラス作成及び関数作成、プロファイラーについて書きました。
ですが、Visual Studioにはもっと便利な機能がたくさんあると思います。
実際数分前まで毎回Sourcetreeを開いてコミットしていたいのがVisual Studio内だけで完結できるというのを知りませんでした(/ω＼)