急にWindowsでプログラムを書くことになった人向けのクイックスタートガイド

急にWindowsでプログラムを書くハメになった人向けに、Visual Studio CommunityのインストールからC#言語仕様の学習、基本フレームワークを把握するために必要な情報源へのリンクをまとめました。
暇を見つけ次第随時更新していきます。

# Visual Studio 2013
## 各エディションの概要
### Visual Studio Ultimate 2013
何でも出来ます。90日間無償で使用することが出来ます。Ultimateにしかない機能を利用することが明らかなのであればこれを使用します。
### Visual Studio Community 2013
Professionalと同等の機能を無償で利用出来ます。個人利用であればこれが最もおすすめです。
### Visual Studio Express 2013
Visual Studio Community 2013がリリースされる以前は、無料で使えるVisual Studioはこれしかありませんでした。今はあえてこれを選択する必要は無いでしょうか。

Expressのそれぞれのエディションの使い分けは以下の通り：

- ストアアプリを作りたい
 - Express 2013 for Windows
- デスクトップアプリを作りたい
 - Express 2013 for Windows Desktop
- ASP.NETをやりたい
 - Express 2013 for Web

## ダウンロード
Visual Studio 2013のダウンロードはこちらから。
- http://www.visualstudio.com/downloads/download-visual-studio-vs

# Visual Studio 2013の使い方を学ぶ
MSDNのチュートリアルがよく出来てるのでそれをこなしましょう。

- Windowsフォームアプリケーション（昔ながらのWindowsアプリケーション）を作りたい
 - http://msdn.microsoft.com/ja-jp/library/dd492171.aspx
- WPFアプリケーション（カッコいい見た目のアプリケーション）を作りたい
 - http://msdn.microsoft.com/ja-jp/library/ee649089%28v=vs.110%29.aspx

# C#の言語仕様を学ぶ
MSDNの『C#プログラミングガイド』に網羅されています。

- http://msdn.microsoft.com/ja-jp/library/67ef8sbd.aspx

ただ、辞書的なので順を追って読むにはちょっとしんどいです。
そういう場合は『連載 改訂版C#入門』by ＠ITを読みます。

- http://www.atmarkit.co.jp/ait/subtop/features/dotnet/csharp_abc2_index.html

古い内容もあるので、同ページからリンクされている『C# 2.0入門』『C# 3.0入門』にも目を通して「あたらしいやり方はどうなのか」を把握しながら学習しましょう。なぜか『C# 4.0入門』にはリンクが貼られていないのでこちらも忘れずに。

- http://www.atmarkit.co.jp/fdotnet/csharp4/index/index.html

## デリゲート・匿名メソッド・ラムダ式
ちょっとつまずきやすい（慣れるまで時間がかかりそう）なところなのでこの章で書いておきます。
Cで言うところの関数ポインタ、Perlで言うところの無名関数と同じ（と言い切るには無理がありますが）ものがもちろんC#にもあります。それはデリゲート・匿名メソッドです。
例えばPerlでは、

```pl:func.pl
my $func = sub {...};
```

と簡単に書けましたがC#の場合はやや複雑です。
まずは「デリゲートとは」といったところをこちらのページを参照して理解しましょう。

- http://www.atmarkit.co.jp/ait/articles/0211/13/news001.html

そしてクラスライブラリに用意されているデリゲート型をこちらのページで把握しておきます。

- http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_06/extremecs_06_02.html

↑のページからリンクされているスコープやキャプチャ仕様もしっかり把握しましょう。初心者がつまずきやすいポイントです。

その後、こちらの素晴らしい記事を一読すればデリゲート・匿名メソッド・ラムダ式はマスターです。

- [【LINQの前に】ラムダ式？デリゲート？Func<T, TResult>？な人へのまとめ【知ってほしい】](http://qiita.com/RyotaMurohoshi/items/740151bd772889cf07de)

# C#でよく使うデータ構造
リスト・キュー・ハッシュ等はSystem.Collections.Genericに定義されています。車輪の再発明をする前にこちらに目を通しましょう。

- http://msdn.microsoft.com/ja-jp/library/system.collections.generic%28v=vs.110%29.aspx

# C#の実践的なコード
逆引き的に「あれってどうやるの？」という時はこちらを参照します。

- http://jeanne.wankuma.com/tips/csharp/all.html

もっと豊富な例を参照したい場合はこちら。

- http://code.msdn.microsoft.com/windowsdesktop/

# トレンドを学ぶ
## データベースの利用
「Windowsプログラムでも定番のO/Rマッパーとかあるんでしょ？」と思っているとまずここでくじけます。
.NETでは「ADO.NET」というフレームワークのもとに様々なDBへのアクセス手段が構成されています。どんな手段があるの？というのはまずこちらのページで把握しましょう。

- http://msdn.microsoft.com/ja-jp/library/e80y5yhx%28v=vs.110%29.aspx

それらが現場ではどういうふうに使い分けされているのかは、こちらのページが参考になります。

- http://www.atmarkit.co.jp/fdotnet/chushin/chushinmeeting_01/chushinmeeting_01_03.html

ORMで生SQLに近く軽いのは「dapper」です。

- https://code.google.com/p/dapper-dot-net/

似た物として「DbExecutor」もあります。

- http://dbexecutor.codeplex.com/

上記2つは多言語でORMを利用してた人にも使いやすいのではないでしょうか。
IDEの支援付きでGUIでグリグリやるとコードがガリガリ書かれるものが欲しい場合は「Lightspeed」。

- http://www.mindscapehq.com/products/lightspeed

同様の物でMSイチオシなのが「Entity Framework」です。

- http://www.atmarkit.co.jp/fdotnet/ef4basic/index/
- http://fnya.cocolog-nifty.com/blog/2014/01/entity-frame-13.html

## ASP.NET
「ASP.NET」と言った時に何か特定のWebアプリケーションフレームワークを指す時代は終わりました。ASP.NETはMSが提供するWebテクノロジの総称になりました（それを明確にする呼び方として「One ASP.NET」という呼称があります）。
以下2つのページ（ASP.NET SignalRの解説と、ASP.NET Web APIの解説）に概念図があるので、「なるほど今はASP.NETと言えばこうなのか」というのを把握しましょう。

- http://www.atmarkit.co.jp/ait/articles/1303/19/news099.html
- http://www.atmarkit.co.jp/ait/articles/1307/30/news077.html

# その他の情報源
メジャーなサイトはこちらのページにまとめられています。

- [.NET開発者がよく使うサイト、本当に使えるサイト【2015年度版】](http://www.atmarkit.co.jp/ait/articles/1504/09/news015.html)