.NET/C#関連の情報収集に利用するサイトのまとめ（随時更新）

# 記事の概要

c#/.NET関連の情報収集に利用しているサイト/ブログ/動画/コミニティ/講演を共有する。
また、開発で利用するサイトも記載する。

# 記事の用途

* 新しい技術情報を収集するサイトの蓄積。
* 公式サイト、非公式サイトからの情報検索時間の短縮する。
    * Microsoftの公式ドキュメントは膨大すぎて、目的の記事に辿りつくのに時間がかかる。 
    * 公式サイトだけで問題を解決できず、知見者にヒントをもらって解決したことがある。非公式サイトも載せる。 
* 過去に見つけ、役立ったサイトの蓄積。
    * 「あれ、どこ？」と検索する時間を省く。


情報収集用
---

# 近年のソフトウエア技術トレンド

情報サイトInfoQが発表した2020年以降の技術トレンドレポートを下記リンクに記載する。
技術調査のご参考に。
[近年のソフトウエア技術トレンド](https://qiita.com/SY81517/items/8e19a2bea37603ba9826)


# Microsoftの公式情報

## ドキュメント

| No | リンク | 説明 |
|:-|:-|:-|
|1|<b>[Microsft Docs](https://docs.microsoft.com/ja-jp/documentation/)</b>|公式ドキュメント。|
|2|<b>[.NET API ブラウザー](https://docs.microsoft.com/ja-jp/dotnet/api/?view=netframework-4.7.1&redirectedfrom=MSDN)</b>|.NET ベースのAPIを検索するために利用する。|
|3|<b>[Reference Source](https://referencesource.microsoft.com/)</b>|.NET FrameworkのAPIの内部ソースを参照できる。|
|4   |[Microsoft Developer Blogs](https://devblogs.microsoft.com/) |開発者ブログ。最新情報の入手に役立つ。|
|5  |[MSDNマガジン](https://docs.microsoft.com/ja-jp/archive/msdn-magazine/msdn-magazine-issues) |開発者がMicrosoft社の技術を紹介した公式の記事。開発に役立つノウハウが多い。2019年頃に廃刊。|
|6  |<b>[Microsoft Learn](https://docs.microsoft.com/ja-jp/learn/) </b>|Microsoftが提供する学習コンテンツ。|
|7  |[.NET用語集](https://docs.microsoft.com/ja-jp/dotnet/standard/glossary?sccid=tw_org_20220323&ocid=AID3035068_TWITTER_oo_spl100002990334402) |タイトルの通り用語集。|

※よく利用するものは、<b>太字</b>

## GitHub

| No | リンク | 説明 |
|:-|:-|:-|
|1|[Monthly resources](https://github.com/microsoft/monthlyresources?ocid=AID3044100)|毎月特定のテーマに関するコンテンツをリリースするMicrosoftのリポジトリ。|


## 動画チャンネル

# YouTube
## Microsoft公式

| No | チャンネル | 備考 |
|:-|:-|:-|
|1   |<b>[Microsoft Developer](https://www.youtube.com/channel/UCsMica-v34Irf9KVTh6xx-g)</b> |Microsoft開発者の動画。|
|2   |[dotNET](https://www.youtube.com/channel/UCvtT19MZW8dq5Wwfu6B0oxw) |.NET チームの公式YouTubeチャンネルです。<br>C#関連はCSharpFritzなど。|

※視聴頻度が高いものを太字。

## Microsoft公式以外
| No | チャンネル | 備考 |
|:-|:-|:-|
|1   |[.NET Foudation](https://www.youtube.com/channel/UCiaZbznpWV1o-KLxj8zqR6A)|OSS開発を行う[.NET Foundation](https://ja.wikipedia.org/wiki/.NET_Foundation)のチャンネル。  |
|2 |[Microsoft Visual Studio](https://www.youtube.com/channel/UChqrDOwARrxdJF-ykAptc7w)|Visual Studioの情報を発信したサイト。|
|3|<b>[NDC Conferences](https://www.youtube.com/channel/UCTdw38Cw6jcm0atBPA39a0Q)<b>|NDCは.NETとアジャイル開発のために発足したヨーロッパの会議。|
|4|<b>[Update Conference Prague](https://www.youtube.com/channel/UCw2tgmmR0bwhIkZ_tRib2SA)</b>|Update Conference Pragueはヨーロッパの中心部で開催される.NET開発者会議。|
|5|[C# Corner](https://www.youtube.com/c/CsharpCorner1/featured)|C#開発者コミュニティが発信している動画|
|6|<b>[Nick Chapsas](https://www.youtube.com/channel/UCrkPsvLGln62OMZRO6K-llg)<b>|[Microsoft MVP](https://mvp.microsoft.com/ja-jp/PublicProfile/5003297?fullName=Nick%20Chapsas)のチャンネル。C#のコーディング技術、.NETで使えるツールを動画で紹介している。|
|7|[Raw Coding](https://www.youtube.com/channel/UCP_jWxjn__YXmo4iU7Low0g)|C#/デザインパターン/設計原則とかの動画が多い。|

※視聴頻度が高いものを太字。

# コミュニティ

## 国内のコミニティ
| No | 名称(リンク) | 活動日 | 説明 |
|:-|:-|:-|:-|
|1 |[.NETラボ 勉強会](https://dotnetlab.connpass.com/)|毎月第4土曜日|.NET技術やマイクロソフト製品について勉強するコミュニティ。<br>オンライン講演、交流会がメイン。<br>connpassでグループ登録すれば、過去の講演資料を参照できる。<br>[2022/01までの講演](https://www.youtube.com/channel/UCcJUa0W0NDSIoZzP0HN8SpA)<br>[dotnetlabチャンネル 2022/01からの講演](https://www.youtube.com/channel/UCRWmiX0D7wX0uNJSz-jWkEA)|

## 国外のコミニティ

| No | 名前(リンク) | 説明 |
|:-|:-|:-|
|1   |[C# Corner](https://www.c-sharpcorner.com/)   |米国のオンライングローバルコミニティ。ソフトウェアのニュース、記事、チュートリアル、QAなどを無料で公開している。   |
|2   |[Code Project](https://www.codeproject.com/)   |ソフトウエア開発者のコミュニティ。メンバーがソースコード、記事、チュートリアルなどを無料で共有している。   |

# イベント

| No | 名前(リンク)  | 説明 |
|:-|:-|:-|
|1 |[.NET Conf](https://www.dotnetconf.net/)|Microsoft社イベント|


# 検索サイト

<b>アメリカのGoogle</b>
英語圏の人々の方が、日本人より多い。情報格差があるから、英語で検索する。
https://www.google.com/webhp?gl=us&hl=en&gws_rd=cr
検索のノウハウに関しては、[ググり力、それはエンジニアには必須の能力である](https://qiita.com/dodonki1223/items/955819806297ee554b31)が参考になる。

# NuGetパッケージの調査、比較用

| No | 名前(リンク) | 説明 |
|:-|:-|:-|
|1   |[NuGet](https://www.nuget.org/)   |NuGetの公式ページ|
|2   |[nuget TRENDS](https://nugettrends.com/)   |パッケージのダウンロード数を比較できる。|
|3   |[Github Compre](https://www.githubcompare.com/xunit/xunit+nunit/nunit+microsoft/testfx)   |Githubのリポジトリを比較できる|


# 情報サイト

| No | 名前(リンク)  | 説明 |
|:-|:-|:-|
|1 |[Visual Studio Magazine](https://visualstudiomagazine.com/pages/topic-pages/c-sharp-vb-tutorials.aspx)|Visual Studio関係の記事が紹介されている。|
|2|[@IT .NET TIPS](https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html)|.NET プログラミングに役立つテクニックやヒントが集まっている。2019年01/08から更新止まっているみたい|
|3|[InfoWorld](https://www.infoworld.com/category/application-development/)|開発者向けの情報を発信しているサイト。|
|4 |[<b>.NET Ketchup</b>](https://dotnetketchup.com/)|世界中から最新の.NETニュースを収集するサイト|
|5 |[Zenn](https://zenn.dev/about)|エンジニアのための新しい情報共有コミュニティ|
|6 |[WeekRef.NET](https://weekref.net/)|.NET 関連の情報を配信しているサイト|

※よく使うのを太字。


# Qiita

| No | 名前(リンク)  | 説明 |
|:-|:-|:-|
|1 |[【C#/.NET】【長期】Qiitaの今読んでおくべき記事１００選【毎週自動更新](https://qiita.com/j5c8k6m8/items/24e680e8a7ca30f2f177)|Qiita内の記事がLGTM順位付けされている。|
|2 |[【C#/.NET】【短期】Qiitaの今読んでおくべき記事１００選【毎週自動更新】](https://qiita.com/j5c8k6m8/items/0fed714f955cd045ac64)|Qiita内の記事がLGTM順位付けされている。|
|3   |[読みごたえのある .NET 技術書](https://qiita.com/CodeOne/items/a0cb4fdfeb753ede640d)|.NET関連書籍がまとめられているQiitaの記事|


# Q＆Aサイト

システム開発で躓いたときに使用するQ＆Aサイト

| No | 名前(リンク) | 説明 |
|:-|:-|:-|
|1   |[Stack Overflow](https://stackoverflow.com/)   |英語で遭遇している問題のキーワードを検索して、回答を探す。|
|2   |[teratail](https://teratail.com/)   |日本語で遭遇している問題の回答がないか、検索する。  |

# JetBrains社
Rider/ReSharper(後述)などのIDE/拡張機能を手掛けるJetBrains社の情報リンク。

| No | 名前(リンク) | 説明 |
|:-|:-|:-|
|1 |[JetBrains .NET Days Online](https://pages.jetbrains.com/dotnet-days-2021/)|JetBrains社イベント|
|2   |[The JetBrains Blog:Matthias Koch](https://blog.jetbrains.com/author/matkoch/)   |Matthias Kochさんが投稿したブログ|


# 知見者のブログの一覧
個人でウォッチしている知見者のサイトをまとめる。<b>並び順に意味は有りません。</b>

## 国内の知見者サイト

| No | お名前 | 備考 |
|:-|:-|:-|
|1|[岩永　信之さん](https://mvp.microsoft.com/ja-jp/PublicProfile/4028921?fullName=Nobuyuki%20Iwanaga)|[未確認飛行](https://ufcpp.net/study/csharp/)のオーナー。[YouTueチャンネル](https://www.youtube.com/c/ufcppdotnet)|
|2|[河合　宣文さん@neue](https://mvp.microsoft.com/ja-jp/PublicProfile/4032612?fullName=Yoshifumi%20Kawai)|C#のOSS開発をなさっている。[ブログ](http://neue.cc/)と[SlideShare](https://www.slideshare.net/neuecc?utm_campaign=profiletracking&utm_medium=sssite&utm_source=ssslideview)がとても勉強になる。|
|3|[大田 一希さん@Kazuki Ota](https://twitter.com/okazuki)|技術系記事のアウトプットがとても多く、とても読みやすい。<br>[Zenn](https://zenn.dev/okazuki)<br>[Qiita](https://qiita.com/okazuki)<br>[Hatena Blog](https://blog.okazuki.jp/)|
|4|[鈴木　孝明さん@xin9le](https://mvp.microsoft.com/ja-jp/PublicProfile/4039817?fullName=Takaaki%20Suzuki)|FastEnumの作者さん。[今日からできる!簡単.NET高速化Tips](https://www.slideshare.net/xin9le/dotnetperformancetips-170268354)など役立つトピックを発信してる。[講演スライド](https://www.slideshare.net/xin9le?utm_campaign=profiletracking&utm_medium=sssite&utm_source=ssslideview)を見ることが多い。|
|5|[出井　秀行さん](https://mvp.microsoft.com/ja-jp/PublicProfile/21146?fullName=Hideyuki%20Idei)|[書籍:実戦で役立つ C#プログラミングのイディオム/定石&パターン](https://gihyo.jp/book/2017/978-4-7741-8758-7)の著者さん。この書籍は、「なぜC#でそのように書くのか？」を丁寧に解説しており、いつも大変お世話になっています。[Qiita](https://qiita.com/gushwell)でも記事の投稿をなさっている。|
|6|[松井　幸治さん](https://mvp.microsoft.com/ja-jp/PublicProfile/5001336)|ブログは[Kekyoの丼](https://www.kekyo.net/)です。なぜC#でそのように書くのか？疑問についてブログで記載している。|

## 国外の知見者サイト

| No | お名前 | 備考 |
|:-|:-|:-|
|1   |[David McCarterさん](https://mvp.microsoft.com/ja-jp/PublicProfile/4040072?fullName=David%20McCarter)|[C# Corner MVP](https://www.c-sharpcorner.com/members/david-mccarter2)。この方が編集長を務める[DotNetTips](https://dotnettips.wordpress.com/)がとても勉強になる。|
|2   |[Steve Gordonさん](https://mvp.microsoft.com/en-us/PublicProfile/5002866)   |[ブログ](https://www.stevejgordon.co.uk/)は.NET Core/ASP.NETの投稿が中心。[Turbocharged: Writing High-Performance C# and .NET Code](https://www.youtube.com/watch?v=CwISe8blq38)って講演を行っている。blogにも上がっている([リンク](https://www.stevejgordon.co.uk/writing-high-performance-csharp-and-dotnet-code))。  |
|3   |[Brandon Minnickさん](https://codetraveler.io/about/)   |Microsoft社のXamarinの開発者のようです。[ブログ](https://codetraveler.io/)はXamarinの投稿が中心。   |
|4   |[VINCENT MAVERICK DURANOさん](https://mvp.microsoft.com/ja-jp/PublicProfile/4025491?fullName=Vincent%20Maverick%20Sanchez%20Durano)|[CodeProject](https://www.codeproject.com/Articles/ProudMonkey#Article)でMVPに輝くなど情報のアウトプット量が非常に多い方。[ブログ](https://vmsdurano.com/author/vincent/)には、ASP.NET関連の投稿内容が多い。|
|5   |Adam Sitnikさん   |BenchmarkDotNetの作者さん。Microsoft .NETチームの方みたい。[ブログ](https://adamsitnik.com/)にパフォーマンス周りの投稿が多い。|
|6   |[Kevin Gosseさん](https://mvp.microsoft.com/ja-jp/PublicProfile/5003493?fullName=Kevin%20Gosse) |デバック、パフォーマンスの知見者の方みたい。[ブログ](https://kevingosse.medium.com/)の中でまた読みたいと思った記事は次に記載したもの。[Performance best practices in C#](https://kevingosse.medium.com/performance-best-practices-in-c-b85a47bdd93a)　[.NET ThreadPool starvation, and how queuing makes it worse](https://medium.com/criteo-engineering/net-threadpool-starvation-and-how-queuing-makes-it-worse-512c8d570527) |
|7   |[Konrad Kokosaさん](https://mvp.microsoft.com/en-us/PublicProfile/5002437) |[Pro .NET Memory Managemen](https://www.amazon.co.jp/Pro-NET-Memory-Management-Performance/dp/148424026X)という書籍の著者さん。[ブログ](https://tooslowexception.com/)もメモリ関連投稿が多い。[High-performance code design patterns in C#](https://www.youtube.com/watch?v=p-kj5oezNQU)というタイトルの講演動画を観る。|
|8   |[Steven Smithさん](https://mvp.microsoft.com/en-us/PublicProfile/7716?fullName=Steven%20A.%20Smith)   |ASP.NETやクラウドのアーキテクチャの知見者。[SlideShare](https://www.slideshare.net/ardalis/presentations)にアーキテクチャに関する資料を投稿している。[ブログのリンク](https://ardalis.com/category/software-development/)。 |
|9   |[Marc Gravellさん](https://stackoverflow.com/users/23354/marc-gravell)|StackOverflow で上位0.01%に食い込み凄腕<br>[ブログ](https://blog.marcgravell.com/)|
|10   |[Andrew Lockさん](https://twitter.com/andrewlocknet)|Microsoft MVP.主にASP.NET Coreに注力している<br>[ブログ](https://andrewlock.net/)|
|11   |Joydip Kanjilalさん   |[ブログ](https://www.infoworld.com/blog/microsoft-coder)にHow to 的な内容の記事が多い。比較的に新しい技術のものが多いので、助かる。|

# 類似した情報が掲載されているサイト

本記事を公開後に似たまとめを発見した。更新が止まっているが、さらに情報を集めたい人の役に立つ（？）かもしれないので掲載しておく。

| No | 名前 | 備考 |
|:-|:-|:-|
|1   |[.NET開発者がよく使うサイト、本当に使えるサイト【2016年度版】](https://www.atmarkit.co.jp/ait/articles/1604/22/news023.html)   |2016年から更新されていない。|
|2   |[tech.guitarrapc.cóm](https://tech.guitarrapc.com/entry/2016/04/25/060920)   |「わたしが C# を学ぶにあたって教わっている先達のサイトをまとめてみる(2016-04-25)」って記事に本記事と類似した内容が掲載されている。|


開発関連
---

# 設計

## アーキテクチャ
| No | リンク | 説明 |
|:-|:-|:-|
|1  |[一般的な Web アプリケーション アーキテクチャ](https://docs.microsoft.com/ja-jp/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures) |Microsoftの一般的な Web アプリケーション アーキテクチャに関する記事。<br>Nレイヤーアーキテクチャ、Clean Architectureに関する解説あり。|


## RESTful Web API
| No | リンク | 説明 |
|:-|:-|:-|
|1  |[RESTful Web API の設計のベストプラクティス](https://docs.microsoft.com/ja-jp/azure/architecture/best-practices/api-design) |MicrosoftのWeb API設計に関するベストプラクティス 。|
|2  |[RESTful Web API のガイドライン](https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md) |Microsoft REST API Guidelines|

## DI(IoCコンテナ)について

.NETではDIコンテナが標準でサポートされるようになった。[関連リンク](https://docs.microsoft.com/ja-jp/dotnet/core/extensions/dependency-injection)

| NO | リンク | 備考 |
|:-|:-|:-|
|1   |[Ioc Performance](https://github.com/danielpalme/IocPerformance)|標準のDIコンテナーでは、速度要件を満たせない場合がある。<br>GithubにDIコンテナのパフォーマンス計測結果が掲載されているため、選定の際に参考になる。|



# オンラインコンパイラ

| NO | リンク | 備考 |
|:-|:-|:-|
|1   |[Sharplab](https://sharplab.io/)|SharpLabはC#/VB/F#コードをコンパイル/デコンパイルできる。<br>内部処理の解析に役立ち、URLを介してコード共有が可能である。|
|2   |[.NET Fiddle](https://dotnetfiddle.net/) |オンラインコンパイラでコードをオンラインで作成、実行、共有できる。|
|3   |[Try.NET](https://try.dot.net/) |Microsoft社のオンラインコンパイラ。ドキュメントは[こちら](https://dotnet.microsoft.com/en-us/platform/try-dotnet)。|

# コーディング

## CodingGuideline(全般)

| No | リンク | 備考 |
|:-|:-|:-|
|1  |[C#のコーディング規約](https://docs.microsoft.com/ja-jp/dotnet/csharp/fundamentals/coding-style/coding-conventions)   |MicrosoftのC#コーディングガイド   |
|2  |[C# at Google Style Guide ](https://google.github.io/styleguide/csharp-style.html)|GoogleのC#コーディングガイドライン<br>日本語版は[こちら](https://gist.github.com/hideyukisaito/d298075c63b97f56825b0d413d8e4dc5)を参照 |
|3  |[C# Coding Guidelines and Practices - 2021](https://vmsdurano.com/c-coding-guidelines-and-practices/)|[VINCENT MAVERICK DURANOさん](https://mvp.microsoft.com/ja-jp/PublicProfile/4025491?fullName=Vincent%20Maverick%20Sanchez%20Durano)がまとめたガイドライン。避けるべき書き方／推奨する書き方の組み合わせが計35個記載されている。|
|4  |[clean-code-dotnet](https://github.com/thangchung/clean-code-dotnet#clean-code-net)|Clean Code実装例の.NETバージョン|

## CodingGuideline(Web API)

| No | リンク | 備考 |
|:-|:-|:-|
|1  |[Web API実装](https://docs.microsoft.com/ja-jp/azure/architecture/best-practices/api-implementation)|Microsoft Azure/アーキテクチャ/ベストプラクティスに記載されたWeb API実装のガイド|


## IDEについて

### Rider/ReSharper

実装の生産性を底上げするIDE (Rider)/ Visual Studioの拡張機能(ReSharper)の紹介です。
これらのツールは、実装中に「良くない実装」を検出して、「修正方法」を提案してくれる機能を持ちます。
バグを未然に防ぐことで生産性が向上します。
そのほかにも実装を支援する機能が充実しています。詳しくは下記を参照のこと。

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[JetBrains ReShaper](https://www.jetbrains.com/ja-jp/resharper/)|JetBrain ReShaperのページ|
|2   |[JetBrains Rider](https://www.jetbrains.com/ja-jp/rider/)|JetBrain Riderのページ|
|3   |[SlideShare Riderはいいぞ](https://www.slideshare.net/UnityTechnologiesJapan002/rider-193757507)|.NET Conf2019講演。Riderの凄さが語られている。|

ライセンス形式が特殊で、年間サブスクリプションを購入すると、購入したバージョンの永久ライセンスを得ることができるらしい。下記を参照。
[永久fallbackライセンス](https://sales.jetbrains.com/hc/ja/articles/207240845-%E6%B0%B8%E4%B9%85fallback%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%A8%E3%81%AF-)

### コードスニペットについて

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[Visual Studio C#コードスニペット早見表](https://qiita.com/Kosen-amai/items/248e44dff958be901a84)|Qiita記事 |
|2   |[C# コードスニペット](https://docs.microsoft.com/ja-jp/visualstudio/ide/visual-csharp-code-snippets?view=vs-2019)|Microsoft ドキュメント|

### よく使うショートカットについて

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[Visual Studio のショートカットに関するヒント](https://docs.microsoft.com/ja-jp/visualstudio/ide/productivity-shortcuts?view=vs-2019)|生産性あがるショートカット |

## ネーミング

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[プログラミングの変数・メソッドの命名でよく使う英単語まとめ](https://arakan-pgm-ai.hatenablog.com/entry/2019/04/15/000000)   |プログラミングでよく使われる英単語をまとめたカンニングペーパ的なサイト|
|2   |[プログラミングで変数名や関数名のネーミングに迷ったときに便利なカンニングペーパーまとめ](https://nelog.jp/programming-words)   |ネーミングに役立つサイトへのリンクがまとめられている。|
|3   |[Qiita:プログラミングでよく使う英単語のまとめ【随時更新】](https://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923)   |Qiitaのネーミングに利用する英単語のまとめの記事   |
|4|[Qiita:Naming-名前付け-](https://qiita.com/Koki_jp/items/f3d3e824f98d182d4100)|Qiitaのネーミングの指針に関する記事|

## Dispose()について

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[C# のファイナライザ、Dispose() メソッド、IDisposable インターフェースについて](https://qiita.com/Zuishin/items/9efc9c8cbb98300bbc64)   |ファイナライザ、Dispose()についてのQuiita記事。違いの説明に便利。|
|2   |[C# の Dispose を正しく実装する](https://qiita.com/hkuno/items/e35c7e306e852ced375d)|ファイナライザ、Dispose()についてのQuiita記事。違いの説明に便利。|

## 非同期プログラミング

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[【C#】async awaitを用いた非同期処理-役立つサイトまとめ-](https://qiita.com/SY81517/items/7ccd34814f206ebb906d)| async awaitに役立つサイトをまとめた。|
|2   |[Joe AlbahariによるC＃でのスレッド化](http://www.albahari.com/threading)| C#のスレッドに関してまとまっている|

## データ形式

### JSON

#### JSON.NET
Nuget上だとNewtonsoft.Jsonと表記される。

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[公式ドキュメント](https://www.newtonsoft.com/json/help/html/Introduction.htm) |   |
|2   |[JSONデータを作成／解析するには？](https://atmarkit.itmedia.co.jp/ait/articles/1709/13/news018.html)   |わかりやすい記事|
|3   |[C# の Json.NET を理解する](https://qiita.com/TsuyoshiUshio@github/items/4f497bfdd660a3142561)   |Qiitaの記事。他のサイトであまり解説されていないLINQ to JSONも紹介されている。|

### CSV

#### Cinchoo ETL

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[Githubのページ](https://github.com/Cinchoo/ChoETL) |OSSの紹介、ドキュメント、StackOverFlowへのリンクが掲載されている。|

### ログ(テキスト)

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[方法: ログ ファイルを開いて情報を追加する](https://docs.microsoft.com/ja-jp/dotnet/standard/io/how-to-open-and-append-to-a-log-file) |OSSを使用しない場合、無難なのが.NET標準の[StreamWriter](https://docs.microsoft.com/ja-JP/dotnet/api/system.io.streamwriter?view=net-6.0)<br>[StreamReader](https://docs.microsoft.com/ja-JP/dotnet/api/system.io.streamreader?view=net-6.0)でテキスト出力する方法。|
|2   |[Serilog](https://serilog.net/) |ログの構造化に便利なOSS。|

## 正規表現

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[.NETの正規表現](https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions)|Microsoft社の正規表現に関するページ。<br>.NETで正規表現を使用する際のトピックがまとめられている。|



# テスト

## 単体テスト

[単体テストのベストプラクティス](https://docs.microsoft.com/ja-jp/dotnet/core/testing/unit-testing-best-practices)

### テストフレームワーク

xUnit、NUnit、MSTestの3つの選択肢があり、xUnitが人気である。下記記事を参考。
[.Net 5 時代のテストフレームワーク比較](https://qiita.com/KoKeCross/items/29ad6a4e6a95dd646465)
[NUnit vs. XUnit vs. MSTest: Comparing Unit Testing Frameworks In C#](https://www.lambdatest.com/blog/nunit-vs-xunit-vs-mstest/)

#### xUnit

| No | リンク | 備考 |
|:-|:-|:-|
|1|[xUnit公式ページ](https://xunit.net/)|　|
|2|[C#のテストフレームワークを MSTest から xUnit に乗り換えたい時にその理由を同僚に説明できるようにする](https://qiita.com/kojimadev/items/c451196fb703cbf99e86)| xUnitの良さをチームメンバーに説明するときの参考資料。|



#### NUnit

| No | リンク | 備考 |
|:-|:-|:-|
|1|[NUnitドキュメント](https://docs.nunit.org/articles/nunit/intro.html)|公式ドキュメント|
|2|[NUnitのサンプル](https://docs.nunit.org/articles/nunit/getting-started/samples.html)|開発言語ごとに準備されている|
|3|[Most Complete NUnit Unit Testing Framework Cheat Sheet](https://www.automatetheplanet.com/nunit-cheat-sheet/)|チートシート|

#### MSTest

| No | リンク | 備考 |
|:-|:-|:-|
|1|[チュートリアル: マネージド コードの単体テストを作成し、実行する](https://docs.microsoft.com/ja-jp/visualstudio/test/walkthrough-creating-and-running-unit-tests-for-managed-code?view=vs-2022)|チュートリアル。|
|2|[単体テストでの MSTest フレームワークの使用](https://docs.microsoft.com/ja-jp/visualstudio/test/using-microsoft-visualstudio-testtools-unittesting-members-in-unit-tests?view=vs-2022)|テストの目的別にMSTestが提供する機能を俯瞰するのに利用する。|
|3 |[MsTestによるユニットテストの解説](https://qiita.com/mima_ita/items/55394bcc851eb8b6dc24)|Visual Studioのバージョンが古いけどよく纏まっている。|

### Moq

| No | リンク | 備考 |
|:-|:-|:-|
|1|[moq: Quickstart](https://github.com/Moq/moq4/wiki/Quickstart)|チュートリアル。|

## 通信

| No | リンク | 備考 |
|:-|:-|:-|
|1|[ネットワーク プログラミング方法のトピック](https://docs.microsoft.com/ja-jp/dotnet/framework/network-programming/network-programming-how-to-topics)|Microsoft Doc　ネットワークプログラミング方法のリンク一覧。|


### HTTP通信

#### クライアント評価用

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[WireMock.Net](https://qiita.com/SY81517/items/e2d35cac9e8e9301833f)|HTTP APIの動作を簡単に模倣できるツール。モックサーバーとして使える。|
|2   |[Playwright](https://speakerdeck.com/takas0522/playwrightdeshi-merue2etesuto)|E2Eテストを自動化するMicrosoftのOSS。Playwrightを紹介したスライドのリンクを貼る。|


#### サーバー評価用

個人的には、Swaggerをオススメする。ASP.NET Coreだと[Swagger/OpenAPI](https://swagger.io/)を標準でサポートしている。

自前でSwaggerを組み込む場合は下記のライブラリを用いる。
- [Swashbuckle](https://github.com/domaindrivendev/Swashbuckle.WebApi)
- [NSwag](https://github.com/RicoSuter/NSwag)
具体的な方法は下記が参考になる。
[Swagger/OpenAPI を使用する ASP.NET Core Web API のドキュメント](https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-6.0)

Swaggerを用いずにやる場合は下記方法。

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client)|Visual Studio Codeの拡張機能。<br>HTTP要求を送信し、Visual StudioCodeで応答を直接表示できる。|


## UI

| No | リンク | 備考 |
|:-|:-|:-|
|1   |[UI オートメーションによる自動テスト](https://docs.microsoft.com/ja-jp/dotnet/framework/ui-automation/using-ui-automation-for-automated-testing)| UI自動テスト機能。WPFをサポート|

# ライセンス
| No | リンク | 備考 |
|:-|:-|:-|
|1   |[たくさんあるオープンソースライセンスのそれぞれの特徴のまとめ](https://qiita.com/tukiyo3/items/58b8b3f51e9dc8e96886)| 製品開発にOSSは当たり前。<br>ライセンスの特徴を知るのに便利。|