Help us understand the problem. What is going on with this article?

「かごんま .NET 2020.06 便利なツール・ライブラリたち」に参加した

TL;DR

1. 紹介されたツール、モジュール

1.1. Winget

Wingetについて

Microsoft公式のコマンドラインパッケージマネージャーがリリース(2020年6月2日現在プレビュー版)
ソフトウェアの必要な場所からのダウンロードとインストールを自動化できる。最新バージョン(または指定した正確なバージョン)を検索してインストール

1.2. Chocolatey

【Chocolatey入門】導入から注意点、今後の可能性まで

Windowsでもコマンドラインでパッケージ管理可能なツール。
- コマンドでソフトウェアインストール・アンインストール・更新
- ソフトウェアインストール時に依存解決
- 複数のソフトウェアをまとめて更新
- インストール済みソフトウェアのリストをエクスポートして別マシンにインポート

1.3. Ansible(Azure環境構築の自動化)

Azure での Ansible の使用

Ansible を使用すると、仮想マシン、コンテナー、およびネットワークをプロビジョニングし、クラウド インフラストラクチャを完成させることができます。 また、Ansible を使用すると、環境でのリソースの展開と構成を自動化することもできます。

Azureの構築はansibleでコマンドを作成しておいたほうがよい。手順書を作成した場合に比べ、間違いを減らし同一環境の作成を自動化できる。

1.4. CSVHelper

C# > CSV取り込みを劇的に簡単にするCsvHelper

CSV取り込みしたのち、クラスにマッピングしてくれるライブラリ「CsvHelper」
改行の扱いだけであればMicrosoft.VisualBasic.FileIO.TextFieldParserでもよいが、TextFieldParserと比べるとクラスマッピングまでしてくれるのが素晴らしい!
クラスメンバーの属性で取り込み対象の列、インデックスを指定する。

1.5. CSVHelper.Excel

christophano/CsvHelper.Excel

Excel読み込み時に使用する(個人的には、最近更新されていないのが気になるところ)

1.6. Open XML SDK

Open XML SDK 2.5 for Office へようこそ

Microsoft公式のOfficeで読み書きできるOffice Open XML ファイル形式を扱うことができるSDKです。

1.7. Moq

Moq : Mocking Framework for .NET

テストダブル(=単体テスト用の代役オブジェクト)を簡単に作るためのライブラリ。

テスト対象の依存オブジェクトが、ネットワーク通信が必要・データベースアクセスが必要など、外部に依存する場合、そのままでは単体テストを作りにくいです。
これを解決するために、実際のオブジェクトの代わりを用意できる。

1.8. Castle

【連載】ASP.NET Web API を使おう:第6回 Castle.Core DynamicProxy で AOP

例えばWeb APIを作成する場合、提供する(ほとんど)全てのAPIに、ほぼ同じ要求が求めらるでしょう。

ユーザー認証
トランザクション管理
ロギング処理
例外処理
などです。これらを地道に実装すると、全てのAPIのメソッドが、共通のコードとtry-catchの山になってしまいます。当然全てのメソッドで上にあげた共通処理をすべてテストする必要もあります。AOPを利用することでこれらの問題を解決する事ができるます。

具体的には、メソッド呼び出しをインターセプトしてメソッドの呼び出し前後に共通処理を編み込む感じです。

1.9. AsyncEX

StephenCleary/AsyncEx

いまさら恥ずかしくてAsyncをawaitした

モニター系・カーネルオブジェクト系の同期処理を模倣し、非同期対応にしたライブラリです。await可能なlockとして使える AsyncSemaphoreを使えば、 同時進行するタスク数を制御可能

1.10. Hangfire

Hangfire
Hangfireで実現する.NETアプリのバックグランドジョブ

.NET環境で利用できるバックグラウンドジョブのライブラリ。

ASP.NETでウエブアプリを作成した場合に、処理をある程度の粒度で切り出して、応答を返すプロセスとは別のプロセスで処理したい場合に使用する。例えば、予約完了処理の中でメール送信部分だけを別のプロセスで処理する、など。

1.10.1. Hangfire Dashboard

Using Dashboard — Hangfire Documentation

バックグラウンド ジョブに関するすべての情報を確認できる。
基本的には開発時に使用する。

動作環境では別の方法を検討したほうが良い。

1.11. Bogus

bchavez/Bogus
【.NET】BogusとCsvHelperでダミーデータのCSVを生成する

ダミーデータを生成するライブラリ。

日本語にも対応しており、名前、住所、電話番号など様々なデータを作成することができる。

1.12. Fluent Validation

FluentValidation • Home

検証コードをFluent(流れるように、連続して)で.でつなげて書くことができる。

public class CustomerValidator : AbstractValidator<Customer> {
  public CustomerValidator() {
    RuleFor(x => x.Surname).NotEmpty();
    RuleFor(x => x.Forename).NotEmpty().WithMessage("Please specify a first name");
    RuleFor(x => x.Discount).NotEqual(0).When(x => x.HasDiscount);
    RuleFor(x => x.Address).Length(20, 250);
    RuleFor(x => x.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode");
  }

  private bool BeAValidPostcode(string postcode) {
    // custom postcode validating logic goes here
  }
}

1.13. CommandLine Parser

C#とF#向けコマンドラインパーサーCommandLineParserの紹介

コンソールアプリを作成する際に使用する、コマンドライン引数の処理を扱いやすくすることができるツール

1.14. PostSharp

PostSharp | C# design patterns without boilerplate
C#のAOPライブラリ(PostSharp) - Status Code 303 - See Other

AOP(Aspect Oriented Programming)?
ログ出力や例外処理など、メソッド全体に共有な処理を重複定義せず一か所に定義したいことがある。

もし、全部それぞれにコピペなどで定義しまった場合。
その部分に修正が入った場合、全てのメソッドを直さないといけなくなり、保守性が低下する。
さらに、本来クラスにさせたい処理でないため、コードの見通しや可読性が低下する。

このような共有処理を側面(Aspect)として定義した後、メソッドに適用する手法。

PostSharpはC#では有名なAOPライブラリ。本来は有料だが、Expressエディションを使えば適用数が制限されるが、無料で実行できる。(プロジェクト単位:最大10個、ソリューション:最大50個)

どんなとき使うの?
- プロパティ値が変更されたときの通知
- UndoとRedo
- 契約プログラミング(事前条件/事後条件確認)
- ログ・監視・プロファイリング
- 例外発生時の制御
- トランザクション制御
- マルチスレッド時の挙動制御(バックグランド・フォアグランド制御、不変性・同期など)
- セキュリティ(入力チェック、認証など)

1.15. ReSharperコマンドラインツール

ReSharperコマンドラインツール

Visual Studioの外部で多数のReSharperコードインスペクションを実行し、さらに、コードの重複を発見する、無料のスタンドアロン型コマンドラインツールセットです。 このツールはReSharperをインストールしなくても使用でき、継続的インテグレーションまたはコード品質管理サーバーと統合できます。

1.15.1. ReSharperReports

NuGet Gallery | ReSharperReports 0.4.0

ReSharperのレポートを作成するためのツール

2. その他

2.1. コードメトリックス

結合度と凝集度

2.2. ソフトウェア開発の原則

2.2.1. SOLIDの原則

開発者が知っておくべきSOLIDの原則

  • S:SRP、単一責任の原則
  • O:OCP、解放閉鎖の原則
  • L:LSP、リスコフの置換原則
  • I:ISP、インタフェース分離の原則
  • D:DIP、依存性逆転の原則

2.2.2. KISSの原則

KISSの原則

2.2.3. DRYの原則

Don't repeat yourself

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした