C#初心者による初心者のためのオススメ勉強サイト3選レビュー

# レビュワーについて
筆者です。歴1年を超えたばかりの幼児プログラマです。
下流が大好きな下流工程のエンジニアです。
基本的に業務アプリを作るC#.NETエンジニアです。

文系卒の完全未経験から転職した、現在も歴の浅いC#エンジニアとして、初学者～初心者の目線に立ったレビューを行っていきます。

# 「基礎」「基本」「入門」「初心者向け」という表記、思ってるよりレベル高い
はじめに注意書きとして。
実務未経験者や歴半年未満ぐらいのプログラマがこれらの言葉を聞くと、あたかも自分向けなのかなと思ってしまいがちですが、そうじゃない場合のほうが多いと感じます。

実際は歴半年～歴3年までぐらいの若手が対象ではないかと思います。さらに、それ以上の中堅やベテランでも「これなんだっけ」と復習したい時に読めば十分満足できる内容になっていることが多いと思います。
むしろ「中級者向け」「上級者向け」を謳う記事はあまり見かけないです。
なので「初心者でも分かる！」と謳う内容が理解できなくても落ち込まないでください。

**(((じゃあ「初心者」ですらない自分って一体何者なの…？)))**
「初**学**者」、あるいはキツい言い方だと「ど素人」だと認識しておきましょう。つまり新生児・乳児です。「初心者」は物心がついてきたぐらいの幼児以降です。

**(((じゃあ「初学者」はまず何を読めばいいの…？)))**
「初学者向け」や「**超**基礎」と書いてある場合は本当に初学者向けが多いと思います。
たいてい体系的な構成で、ざっくり下記のような目次が多いと思います。
C#に限らずオブジェクト指向言語ではほとんど同じです。

1. 変数、データ型
2. 式、演算子
3. 制御文（分岐、ループ）
4. メソッド
5. クラス
6. インスタンス
7. 継承
8. インタフェース
9. カプセル化
10. ポリモーフィズム

初学者にとって、特に後半は「こういう仕組みがあるんだな」とは分かっても「何のために？」が理解できずハテナだらけ。メソッド前後までは理解できたのに、そこからなかなか先へ進めず挫折してしまう人も少なくないでしょう。この最初の山場をどう越えるかという話はまたの機会にできればと思います。

# レビューするサイト

いずれもC#でネット検索すると上位に出てきやすい人気サイトばかりなのですが、**「何が知りたいか」によって読むべきサイトが異なる**ので、そこに重点を置いてレビューしていきたいと思います。

- **++C++; // 未確認飛行C**
歴半年～の初心者が**C#への理解を深め**て実装力を上げたいときにオススメです。

- **DOBON.NET**
実務未経験や歴半年未満でもOK！**とりあえず動くものを作りたいとき**にオススメです。
- **ピーコックアンダーソン**
本当の初学者にオススメの超基礎コーナーと、基本が身についたあと詳細設計レベルになりたい人にオススメのコーナーの両方があります。


# ++C++; // 未確認飛行C

https://ufcpp.net/

:::note
中身の詰まったC#エンジニアになりたい人が読むべきサイト
:::

主なスコープ：C#の文法・構文・仕様
構成：体系的
各記事の独立性：★★★★☆
即効性：★★☆☆☆
知識性：★★★★★
初入門向け度:★★☆☆☆
再入門向け度:★★★★★

「未確認飛行しー」と読むそうです。
C言語やC++みたいな名前ですが、がっつりC#のサイトです。

「C#初心者やこれからプログラミングを始める人が対象」と書かれてあり、敷居が低そうな感じに紹介されていますが、初学者（当時 歴半年未満）には普通に難しかったです…。
初心者向けの話も理解できない私って…と落ち込むこともあり、一時期は読むのを避けていたほどですw

.NETつよつよ上司にも「**C#についてはこれ読んどけば十分**」とオススメされたのですが、当時は「私には読める気がしないんだよなあ…」と絶望的でした。

ところが、C#エンジニアになって半年経った頃から急にサクサク読めるようになってきました。以前は「こう書いたらこう動く」という表面的なコーディングにしか意識が至らなかったためにこのサイトの内容が理解できなかったのだと思います。（大半のガチ初心者はこれぐらいの意識だろうと思います。）半年が経ち、C#の構文を単純に覚えるだけでは満足しなくなり、「**何のためにこの構文が用意されているんだろう？**」という疑問を持ち始めたとき、このサイトにすべての答えが載っていることに気づきました。歴1年が過ぎた今ではこのサイト無しにはやっていけないほどです。

何となくしか知らなかった知識の補強や、一度忘れてしまったことを復習したい時などの「**再入門**」にすごく向いていると思います。細かい文法まで解説があるので、再入門でも「へえ～こんな書き方もあったんだ」と初めて知ることが多いです。

**体系的**な構成ではありますが、基本的には1記事ごとや短い章ごとで区切られており、かいつまんで読むことができるので、知りたい部分だけをすぐに知ることができます。

サンプルコードはたくさん登場しますが、コピペしてすぐ使うためのものではなく、仕組みを理解するためのものになっていることが多いです。もちろんその書き方を自分のプログラムに取り入れることは大いに可能です。

「MicroSoft公式やっぱ何言ってるか分からん…」ってときにこっちを読んだら理解できますw
実践的というよりは、C#の構文や仕様を知りたいなって時に読むことが多いですが、単純に文法・構文をつらつらと説明するだけのサイトではなく、**「何でこんな仕様なの？」という疑問まで解消できる**のが良いところだと感じます。こうして実践に至るための材料が豊富に揃っていくのを感じます。
**中身の詰まったC#エンジニア**になるために、これからも読みます。

# DOBON.NET
https://dobon.net/

:::note
初心者の悩みに即効性を発揮するサンプルコード集
:::

主なスコープ：C#のサンプルコード
構成：分散的
各記事の独立性：★★★★★
即効性：★★★★★
知識性：★☆☆☆☆
初入門向け度:★★★★★
再入門向け度:★☆☆☆☆

筆者は未経験時代、初めてのC#で Windows Forms に取り組んでいました。
思い通りの動きが実現できない…！とまさに"ドボン"したときにネット検索するとこちらのサイトがよくヒットしました。
**よくあるお悩み解決事例集**といった雰囲気です。
記事タイトルは例えば「TextBoxコントロールのEnabledプロパティをFalseにしても前景色と背景色を変えないようにする」など、とても具体的です。
Windows Forms 関連以外の記事もあるみたいですが、私はもっぱら **Windows Forms** でお世話になりました。

初心者にとっては**ほぼコピペで動くサンプルコード**が多い点がとても有難かったです。
**動くものが作りたい！** という初心者の切な願いを叶えてくれるサイトです。
このサイトのおかげで動くものが作れたという実績ができ、自分に自信がつきました。

**1つずつの記事が短く、仕組みの解説は少ない**ですが、このサイトに辿り着くような初心者は「はやく動かしたい！」という気持ちが先行しており、長い説明を読むのも負担なので、むしろ有難いです。
また、仕組みが分からないなりにも「**こういう書き方で動くんだ**」と知っておくことで、後々の吸収力が大幅に変わると思います。

# ピーコックアンダーソン

https://anderson02.com/main/

:::note
超初心者向けの超基礎だけがまとまったコーナーあり！
実は下流のつよつよを目指せる壮大なサイト
:::

主なスコープ：下流全般（C#の文法・構文、フレームワーク特有のコーディング、設計思想、下流の勉強方法）
構成：体系的
各記事の独立性：★★☆☆☆（前の記事や他の章の続きになっていることが多い）
即効性：★★★☆☆
知識性：★★★☆☆（知識というよりは思想）
初入門向け度:★★★★★（※超基礎系の章）
再入門向け度:★★★★★（※超基礎系以外の章）

ピーコックアンダーソンさんというベテランC#エンジニアの方が書いているサイトです。
名前から外国人の方なのかなーと思っていたのですが、Udemyで彼を知る人いわく多分普通に日本人だという噂なので、こだわりのペンネームなのでしょうか。

平易な言葉づかいが初学者にも分かりやすいです。
様々な章に分かれており、かなりの基礎文法から詳細設計に関することまで、このサイトを卒業したあかつきには下流のつよつよになっているであろう、豊富な記事量です。

初学者にオススメの超基礎系の章はその一部だけになりますが

- C#初心者のための基礎文法
- 基礎文法
- C#コーディングルール
- WindowsFormsプログラミング

です。
これらの章は、未確認飛行Cと比較すると、本当の初心者が最低限これ知っておいたらOKというレベルに絞った解説になっています。1つずつの記事も短めなので疲れずに読めます。なので本当の初学者向けだと思います。

ただし、ある記事が前の記事の続きになっていることも多いので、順番通りに読み進めていくのがオススメです。

超基礎系の章以外にも、
- 各種.NETフレームワークの章（Windows Forms系、WPF系、Xamarin系）
- SQL Serverの章
- 可読性の高いコードの書き方の章
など様々にあり、とてもボリューミーです。

そして最終的なゴールは**ドメイン駆動開発**の章となっています。ドメイン駆動開発はソフトウェアの設計手法の1つであり、この章は初学者にはすぐには理解できないです。なので詳細設計が絡むその他の章や、別サイト、実務などでオブジェクト指向や詳細設計に関する知識・経験をいくらか身に着けてから読んだほうがいいと思います。つまり今すぐではなく、数か月後～数年後に手を出すべき内容だと思います。下流エンジニアには、その場その場のコーディング止まりで詳細設計レベルに一生たどり着けない人が多く存在すると聞くので、そういった人達と差をつけるためにも有効だと思います。

入口はC#の超基礎、出口は詳細設計という、わりと壮大なフローですが、初学者は先述した超基礎系の記事までで十分だと思います。

私は今、現場経験からオブジェクト指向が身についてきた＆興味に応じてデザインパターンを学び始めたぐらいのフェーズです。なので今すぐではないですが、もうすぐ読めるかもと楽しみにしています。

→【2023.8 追記】読みました！ドメイン駆動開発の書籍には堅く難解なものが多いと聞き、敷居が高いと感じていましたが、ピーコックさんの記事は噛み砕かれていて、歴が浅くてもドメイン駆動開発にちゃんと入門させてもらえて貴重でした。