はじめに

ライブラリを活用していますか?
プログラムのすべてを自分でコーディングすることはほとんどありません。
通常は、なんらかのライブラリやフレームワークのお世話になることでしょう。
入念にテストされたライブラリを使えばバグの発生数が少なくなりますし、コーディングの手間も削減できて一石二鳥です。
この記事では、C#プログラマーの方のためにC#で使えるオープンソースライブラリを紹介していきます。気になるものがあったらぜひ使ってみてください。

JSON.NET(JSONライブラリ)

サイト:http://www.newtonsoft.com/json
JSON.NETは、その名の通りJSONを扱うためのライブラリです。
JSONはJavaScriptを元にしたデータ記述言語で、データのやり取りに使われています。
JavaScriptと相性がよいため、Web APIのデータ形式として最もよく使われており、XMLと並ぶ標準的なフォーマットになっています。
JavaScriptに依存しているわけではないので、デスクトップアプリケーションの設定ファイルのフォーマットとしても使われています。
JSON自体は単なるテキストデータなため、データとして解釈するにはパースしてやる必要があります。
そのためのライブラリがJSON.NETです。
JSON.NETでは、JSONをパースしてオブジェクトに変換したり、
逆にオブジェクトをJSONに変換したりできます。

特に、ASP.NET Web APIプロジェクトでは標準的に使われるので、基本的な使い方だけでも覚えておきましょう。

NLog(ロギングライブラリ)

サイト: http://nlog-project.org/
NLogは、.NET言語用のロギングライブラリです。
導入が簡単で、アプリケーションのデバッグなどに必要となるログ情報を任意の場所に出力できます。
ログにはFatal・Error・Infoなど6段階のレベルがあり、レベルごとに出力メソッドを使い分けることでログの種類を出し分けることができます。
ログの設定もXMLファイルで簡単に行なえます。

math.net(数学ライブラリ)

サイト: http://www.mathdotnet.com/
math.netは、高度な数学計算をサポートするライブラリです。
C#のBCL(ベースクラスライブラリ)にもMathクラスなどの数値計算用のクラスがありますが、一般的な数値計算しかサポートしていません。
math.netでは、マトリックス(行列)やベクトルを使った高度な数値計算が可能です。
最近ではデータサイエンティストによるデータ分析も行われるようになってきたので、統計学などの数学に興味がある方はmath.netを活用してみてはいかがでしょうか?

moq(モックライブラリ)

サイト:https://github.com/moq/moq4
moqは、.NET言語用のモックライブラリです。
モックとは、テスト時に使う仮のモジュール(クラス)のことです。
テスト対象のクラスが別のクラスに依存しているときには、モックを使って本物のクラスをエミュレートします。
これにより、テスト対象を他のクラスから分離することができ、対象以外の要因でテストが失敗することを防げます。また、依存クラスがまだ実装されていない場合にも有効です。
moqでは引数に応じた返り値を設定することができ、
後で適切な引数で呼び出されたか確認することも可能です。

ネットワークやデータベースにアクセスするクラスをモックにすれば、テストに余計な時間がかかることもなくなり、テスト時間を短縮できます。

Entity Framework(O/Rマッパー)

サイト:https://docs.microsoft.com/ja-jp/ef/
Entity Frameworkは、マイクロソフトが開発しているO/Rマッパーです。
C#コードからデータベース(およびテーブル)を作成することができ、オートマイグレーションにも対応しています。
もちろん、既存のデータベースがある場合でも問題ありません。
データベースレコードの取得・作成・更新・削除時にはSQLが自動生成されるため、
SQLを一切書かずにデータベースとやり取りできます。

モデルクラスに属性を指定することで制約やインデックスも作成されるため、SQLが苦手な方でもデータベースを簡単に扱えます。

TensorFlowSharp(機械学習ライブラリ)

サイト:https://github.com/migueldeicaza/TensorFlowSharp
TensorFlowSharpは、Googleが開発している機械学習ライブラリTensorFlowの.NETバインディングです。機械学習は人工知能の分野のひとつで、TensorFlowを使えば高度な数学知識がなくても比較的簡単に機械学習が行なえます。
機械学習でなにができるかというと、画像認識や需要予測、迷惑メール分類などが挙げられます。
つまり、何かを分類したり、数値を予測したりできるわけです。
最近では白黒のイラストに自動的に着色する人工知能も公開されており、クリエイティブな分野にも人工知能が活用され始めています。
今要注目の技術なので、最先端技術に興味がある方は試してみましょう。

まとめ

最近ではマイクロソフトもオープンソースプロジェクトに積極的になっており、マイクロソフトが手がけるプロジェクトもオープンソースで公開されています。
C#開発元のソースコードを覗けるチャンスですので、C#使いの方は一見の価値ありですよ。