C#でドキュメントつきライブラリプロジェクトを作成する

この記事は、シリーズ記事「[「C#のライブラリプロジェクトをGitLabにpushしたら自動でDLLが書き出されてついでにDocFXで作成されたドキュメントがCloud Run上にデプロイされる」っていうやつをやる](https://qiita.com/soumi/items/c13668052209a35a0965)」の一部です。

# はじめに

最近 Adobe Animate の代わりに Unity を使用してUIデモを作成する事が多くなってきました。Unity に限った事ではないのですが、プログラミングをしていると使いまわせそうな機能はライブラリとしてまとめたくなってきます。
Unity は C# を使用して .Net Framework 4.5 相当の機能であれば使用できるので、 Visual Studio を使用して DLL を作成すればライブラリをワンファイルで管理する事が可能になります。

## DLLがあるだけでは使ってもらえない

ライブラリ化するという事は汎用化するという事なので、自分以外の人にも使ってもらえるはずです。
が、ただ DLL があるだけではどう使ったら良いのか分からないので、中々他の人には使ってもらえません。

今回は、 Visual Studio を使用して DLL を作成し、さらに DocFX というパッケージを使って**ライブラリのドキュメントまで書き出してみます。**

## DocFXについて

ここではあまり多くは語らないので、以下の公式ドキュメントを見てみて下さい。

https://dotnet.github.io/docfx/index.html


# 手順

実際の手順をキャプチャを交えて紹介していきます。

## 1.プロジェクト作成

まずはプロジェクトを作成します。
今回はUnity用のライブラリ想定なので、``.Net Framework`` のライブラリを作成しています。

<img width="600px" alt="bc0ea98f-332a-ae08-8e47-8063eba805d7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/bc0ea98f-332a-ae08-8e47-8063eba805d7.png">

名称は何でも構いません。

<img width="600px" alt="fcddaaa8-ffe5-b6fa-2361-401e4de8006e.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/fcddaaa8-ffe5-b6fa-2361-401e4de8006e.png">

作成が完了すると、以下のようなおなじみの画面になると思います。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/a26f7c36-1705-1f3b-0b3a-f69c5224de69.png)

## 2.DocFXを追加

ドキュメント書き出し用に、参照からNuGetパッケージを追加します。

<img width="600px" alt="3de471ef-9da2-f045-ddcc-26cf1a5372b1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/3de471ef-9da2-f045-ddcc-26cf1a5372b1.png">

DocFX を検索して、インストールします。
**``docfx.console`` の方をインストールしてください**

![101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/5b6e6890-be31-29b8-7a0e-941ac845b105.png)

インストールが終わると、以下のような構成になっているはずです。

<img width="400px" alt="85643308-bc6c-afbe-1a64-db3c3cafde7d.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/85643308-bc6c-afbe-1a64-db3c3cafde7d.png">


## 3.コードを記述

今回はサンプルで、適当なコードを書きます。
ドキュメントを書き出すので、以下のような感じでコメントを入れていきます。

```Class1.cs

/// <summary>
/// サンプルクラスライブラリ
/// </summary>
namespace ClassLibrary
{
    /// <summary>
    /// サンプルクラス
    /// </summary>
    public class Class1
    {

        /// <summary>
        /// サンプルプロパティ
        /// </summary>
        public int someNumber = 1;

        /// <summary>
        /// サンプルメソッド
        /// </summary>
        /// <param name="text">サンプル引数</param>
        public void DoSomething(string text) 
        {
            System.Diagnostics.Debug.WriteLine(text);
        }

    }
}
```

## 4.ビルド

ここまで来たら、後はビルドするだけです。

<img width="600px" alt="ab0c4db0-3e02-dbc3-696b-38be7f68df88.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/ab0c4db0-3e02-dbc3-696b-38be7f68df88.png">

書き出しが終わると、DLL と

<img width="600px" alt="c39a4b41-5aae-2a34-327e-702fcb47332d.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/c39a4b41-5aae-2a34-327e-702fcb47332d.png">

_site というフォルダの中にドキュメントも出来上がっています！

<img width="600px" alt="04c06a08-d5db-7be0-23fa-d38f79e0db7e.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/04c06a08-d5db-7be0-23fa-d38f79e0db7e.png">

index.html を開くとドキュメントのトップページが見えます。
ただ、この index.html 内の JavaScript が Ajax でファイルを読みに行くので、 Chrome 等ではセキュリティ的にそこでエラーが出てしまってArticlesやAPI Documentationといったリンクが非表示になってしまいます。

良いか悪いか、Edgeで見ると問題なく見えます。

<img width="600px" alt="bd5ee9de-2333-240b-4eac-506008ec5031.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/bd5ee9de-2333-240b-4eac-506008ec5031.png">
<img width="600px" alt="2a9e75b9-bf7a-ced0-03dc-8606dda18331.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321330/2a9e75b9-bf7a-ced0-03dc-8606dda18331.png">


# おわりに

僕が試した時は、色々試行錯誤してやっとできた感があったのですが、改めて手順としてまとめるととてもシンプルですね。
同じような事で困っている方がいれば、その一助になれば幸いです。