Mac + Visual Studio での開発。IDEのちからを借りることで開発効率を上げる

Visual Studio Codeではありません。あしからず。

IDE便利ですよね。
静的型付け言語だと、特に力を発揮してくれる気がしています。

簡単なプログラムを作りつつ、IDEの使い方を説明します。

## 環境
* OS X EI Capitan 10.11.6
* Visual Studio Community for Mac 7.3.4

## できるようになること
* IDEを使って、からのクラスやメソッドを素早くつくる
* 名前の変更を素早く行う
* 実行する

## 手順
### やること

簡単な数値計算プログラムの作成を通して、IDEの使い方をみてみます。

### やってみよう① ファイルを作成してみる

既にプロジェクトは作成済みだとします。まずは、コードを書いてみます。

```csharp:Program.cs
using System;
using System.Runtime.InteropServices;

namespace HelloWorld
{
	static class Program
	{
		static void Main()
		{
            var a = 1;
            var b = 1;

            MyMath.add(a, b);
		}
	}
}
```

この時点では、MyMathクラスも、addメソッドも存在しないので赤線で警告がでます。

<img width="220" alt="スクリーンショット 2017-12-20 23.35.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/37873/1228f155-9eed-39e3-102c-dac2080144b8.png">

ここで、赤線のところにカーソルを当てて、クラスを作成します。
右クリックで選択していってもよいのですが、ショートカットもあります。
macの場合は、option + enter。

<img width="500" alt="スクリーンショット 2017-12-20 23.27.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/37873/4bc0aef7-0ca9-ffd6-3fe8-e0d4ae84639f.png">

すると勝手にファイル（空のクラスを作成してくれます）。スコープがinternalなのが個人的にはいまいちかな、と思ってます。

```MyMath.cs
namespace HelloWorld
{
    internal class MyMath
    {
    }
}
```

Program.csに戻ります。今度はメソッドがないのでメソッドが赤線になっています。

<img width="207" alt="スクリーンショット 2017-12-20 23.39.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/37873/bc91fca6-1c5e-839e-0817-8689d08fbc61.png">

また同じようにメソッドを作成してみます。

<img width="604" alt="スクリーンショット 2017-12-20 23.41.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/37873/e085a182-b913-4b81-ea8a-256a7ea0be2d.png">

```csharp:MyMath.cs
using System;

namespace HelloWorld
{
    internal class MyMath
    {
        internal static void add(int a, int b)
        {
            throw new NotImplementedException();
        }
    }
}
```

勝手にメソッドの雛形作成されました。後は中身を作っていくだけです。
ちなみに今回の例は、返り値を指定しなかったのでvoidで作られました。

こんな感じに返り値をIDEにわかるように作成すると、もっと簡単にメソッドを作れます。

### やってみよう② 返り値もわかるように

このようにファイルを変更します。
```csharp:Program.cs
using System;
using System.Runtime.InteropServices;

namespace HelloWorld
{
	static class Program
	{
		static void Main()
		{
            var a = 1;
            var b = 1;

            MyMath.add(a, b);

            int ans = MyMath.sub(10, 9);
		}
	}
}
```

subの返り値がわかるようにint ansで結果を受け取るようにしました。
エラー部分を選んで、option + enter、メソッドを作ってみましょう。

作ったら、command + d でメソッドに飛びます。細かいことですが、こういった操作で効率化できますね。

```csharp:MyMath.cs
using System;

namespace HelloWorld
{
    internal class MyMath
    {
        public static void add(int a, int b)
        {
            throw new NotImplementedException();
        }

        // 返り値intできちんとつくられた！
        internal static int sub(int v1, int v2)
        {
            throw new NotImplementedException();
        }
    }
}
```

### やってみよう③ 名前を変えてみよう

MyMathというクラス名がイケてないので、Calculatorという名前に変えてみましょう。

MyMath.add の MyMathの部分を選択して、command + r でリネームできます。ファイル名も一発で変わります！

### やってみよう④ ビルド・実行

ビルドは、command + b
実行は、command + enter

で行います。

## おわりに

C#のパッケージマネージャであるNuGetとか使うともっと便利になりますね。
こういった操作になれると、テスト駆動開発がしやすくなります。

テストファイルを起点として、例えば

* 空のクラスを作成→テスト実行→赤→メソッド作る→赤→メソッド記述する→緑

といった流れをテンポよく行えます。

以前はWindows環境で開発していたので、ショートカットが色々と違ってとまどいました　。VisualStudioいいですよね。

では、良いC#ライフを！！！

## 参考文献

* Visual Studio for Mac の一般的なキーボード ショートカット
  * https://docs.microsoft.com/ja-jp/visualstudio/mac/keyboard-shortcuts