Visual Studio 2017 RCをインストールしてみました

By | Date : 2016/11/24 ( Last Update : 2016/11/28 ) | 2,230 views

こんにちはー!ニアです。

先日、Visual Studio 2017 RCがリリースされましたね。

Visual Studio 2017 リリース ノート – Microsoft

Xamarin StudioVisual Studio for Macになったり、IntelliSenseがさらに強化されたりと色々話題になっていますが、C#を普段使用している私にとっては、次期バージョンのC# 7.0が楽しみです。

 

早速私は、PCにインストールしてみました。

1. Visual Studio 2017 RCのインストーラーは軽量タイプ

そういえば、Visual Studio 15 Previewをインストールする時、インストーラーは従来タイプ軽量タイプかを選べるのでしたね。ちなみに私は軽量タイプ(下図)を選択しました。

vs15-3

Visual Studio 2017 RCのインストーラーはどちらかというと、軽量タイプでした。

vs2017rc-3

 

2. Visual Studio 2017 RCをインストール

vs2017rc-1

2.1. 開発スタイルに合わせて、機能やコンポーネントなどを選択

Visual Studio 2017 RCのインストーラーを起動すると、インストールする機能やコンポーネントの選択画面が現れます。「ワークロード」では、開発するアプリに必要な機能を選択します。

機能はいくつかグループに分かれており、「Windows」グループには、

  • ユニバーサルWindowsプラットフォーム(UWP)開発
  • .NET デスクトップ開発(WPF、Windowsフォームアプリ、コンソールアプリ)
  • Desktop development with C++(C++によるデスクトップアプリ(MFC、ATL、Microsoft C++)開発)

が含まれています。主にWindowsアプリの開発向けですね。

vs2017rc-3

ということは、C言語でHello Worldのプログラムを書く時は、「Desktop development with C++」にチェックを入れればOKですな。

 

Web & クラウド」には、

  • Web 開発(ASP.NET)
  • Azure の開発
  • Python 開発
  • Node.js 開発
  • データベースの保存と処理
  • データサイエンスと解析のアプリケーション(言語はPythonやR、F#)
  • Office SharePoint 開発

が含まれています。

vs2017rc-4

 

モバイル & ゲーム」には、

  • .NET によるモバイル開発(Xamarin)
  • Unity によるゲーム開発
  • JavaScriptによるモバイル開発
  • C++ によるモバイル開発
  • C++ によるゲーム開発(DirectXやCocos2d)

が含まれています。

vs2017rc-5

Xamarinをインストールしたい場合、「.NET によるモバイル開発」にチェックだぞい!

 

「他のツールセット」には

  • Visual Studio 拡張機能の開発
  • C++ によるLinux 開発

が含まれています。

ついにVisual StudioでLinux用アプリが作れるとは、胸熱です

デバッグはBash on Ubuntu on Windowsで行うのかな?

 

コンポーネント」タブでは、インストールするフレームワークや外部ツールを選択します。

vs2017rc-8

 

2.2. あれ、インストールできない!?

では早速、UWPや.NET、Xamarinなどを選択して、レッツ、インストール!・・・って、あれ?

vs2017rc-7

「インストール」ボタンがグレーアウトして押せない!

 

Visual Studio 15 Previewをインストールしていた場合、それをアンインストールしてからVisual Studio 2017 RCをインストールしましょう。

私の環境では、なぜかVisual Studio 15 Previewのアンインストーラーが行方不明でした。ということでフォルダーの名前を、以前のWindowsフォルダーがWindows.oldと名付けられることに倣い、VS15Preview.oldに変えました。

vs2017rc-10

すると、「インストール」ボタンが有効になりました。よし、これでインストールができるぞい!

vs2017rc-11

 

「インストール」ボタンを押すと、Visual Studio 2017 RCをインストールします。

vs2017rc-14

進行状況画面の右側には、虎の巻みたいなものが表示されています。

 

2.3. Visual Studio 2017 RCを起動

インストールが完了したら、早速Visual Studioを起動します。

※初めて起動した場合、開発者サービスにサインインするかどうかのダイアログが現れます。

vs2017rc-16

UIは、Visual Studio 2012、2013、2015とほぼ同じですね。

vs2017rc-19

 

3. C# 7.0の新機能にトライ

Visual Studio 15 Previewをインストールした時では、「ローカル関数」と「2進数リテラル」について扱いました。

今回は、「タプル型」及び「switch文によるパターンマッチング」について扱います。

RCでは、「条件付きコンパイル シンボル」に「__DEMO__」を入力せずに、C# 7.0の機能が利用できますよ。

 

3.1. タプル型

例えば、2つの値を受け取り、商と余剰を返すメソッドを作るとします。

C# 6.0までは、メソッドから複数の値を返す時

  • .NETのTupleクラス(System名前空間内)を利用する
  • 2つの値を格納する構造体 or クラスを定義
  • out付きの引数を利用する

などで実装していました。

 

C# 7.0のタプル型(ValueTuple構造体)を利用すると、メソッドから複数の値を返すことができます。

タプル型の変数に代入すると、対応するメンバーにそれぞれ値が代入されます。また、代入先のメンバーには、宣言済みの変数を指定することもできます。

 

.NETのTupleクラスやout付き引数には、いくつかの問題点がありましたが、C# 7.0のタプル型では、それらの問題を解決することができます。

問題点 C# 7.0のタプル型で解決できること
.NETのTupleクラスを利用
  • インスタンスの初期化時に、すべてメンバーに値を割り当てる必要がある
  • メンバーの名前は、Item1Item2、・・・と可読性がイマイチ
  • 各メンバー(Item1、Item2、・・・)は、getのみのプロパティなので、読み取り専用
  • 変数の宣言だけをして、必要に応じてメンバーに値を代入することができます。
  • タプル型の各メンバーには、プログラマーが自由に名前を決めることができます。また、Item1、Item2、・・・で対応するメンバーにアクセスできます(おそらく、Tupleクラスとの互換性確保のためだと思います)。
  • 各メンバーは、getとsetのプロパティなので、値の読み書きができます。
専用の構造体やクラスを定義 複数の値を返すためだけの構造体やクラスが乱立してしまう 複数の値を返すためだけの構造体やクラスが不要になり、汎用性の低い構造体やクラスを乱立するのを防ぐことができます。
out付き引数を利用 メソッド内では、非同期メソッドが呼び出せない out付き引数の代わりにタプル型のメンバーとして返すことで、out付き引数が不要になり、メソッド内で非同期メソッド呼び出せるようになります。

 

なお、Visual Studio 2017 RCでタプル型を利用する場合、NuGetパッケージ「System.ValueTuple」をインストールする必要があります。

vs2017rc-20

 

ちなみにF#では、以下のように表すことができます。

C#のタプル型は、F#のものより便利だな~

 

3.2. switch文によるパターンマッチング

例えば、テストの点数でランクを求めるプログラムを作るとします。

 

C# 7.0では、switch文内のcase文が拡張され、データの型や値の範囲を指定してパターンマッチングできるようになりました。

「case 0:」~「case 5:」の部分を、まとめて1つのint型変数に代入し、when句で条件判定します。

ちなみに、F#では以下のようにmatch式で表すことができます。

when句を見て、ふと思った。これはF#のmatch式であると・・・

 

4. おわりに

今回は、Visual Studio 2017 RCをインストールし、C# 7.0の新機能を新たに2つ利用してプログラミングをしてみました。

Visual Studio 15 Previewで扱ったローカル関数や、今回扱ったタプル型とパターンマッチングなど、F#での便利な機能がC#でも利用可能になったのが魅力的ですね。RTM版のリリースが楽しみです。

今度はLinuxアプリでも作ってみようかな。

 

それでは、See you next!

 

参考サイト

 

更新履歴

  • 2016/11/28 : .NETのTupleクラスやout付き引数を利用した時の問題点と、タプル型を利用することで解決できることを表形式にまとめました。また、タプル型のサンプルコードを1つ追加しました。

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ニア(Nia)

紅茶とコーヒーが好きな湘南生まれのプログラマー/ITエンジニアです。主にC#/C++/PHPを使ってプログラミングをしています。趣味は写真撮影と音ゲーです。時々イラストを描いています。プログラミングを勉強している方々と仲良くなりたいです! 興味を持っている分野:UWP/Xamarin/Android Wear/WPF/Windows/Visual Studio/WordPress/KUSANAGI/nginx

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*