DoxygenをVBに対応させたい

#対象者
・これはDoxygenをすでに入れている方でVB.NETのソースコードをDoxygenでドキュメント作成を行いたいと思っている方に向けて書いているものです。
・また私はWindowsでVB.NETに対応させたため、MacやLinuxの方は少し手順が変わるかもしれないことをご了承ください。
・今回の方法はLinuxのawkを用いて対応させるので、Linuxの方でもし間違いがあればコメント欄で指摘してくださればありがたいです。

#Doxygenとは
>・ソースコード・ドキュメンテーション・ツールである。
・Doxygenは、C++、C、Java、Objective-C、Python、IDL (Corba、Microsoft 風)、Fortran、VHDL、PHP、C# 向けのドキュメンテーション・システムです。 D にもある程度対応しています。 
**日本語版Doxygenサイト(http://www.doxygen.jp/) から引用**


##Doxygenのメリット
・個人的にはクラスの関係図、継承図、依存図などを**自動で作成する**(設定は必要ですが)のがありがたいです。
・出力方法が、HTML、PDF、TEXなどをサポートしている。
・ドキュメントを作成することにより、ソースコードを変更したい時、どの部分を変更すべきか短時間で判断することができる。

#ともかくVB.NETでDoxygenを動かす
前置きが長くなりましたが、DoxygenをVB.NETで動かす手順を下に連ねていきます。
・準備編(DoxygenをVB.NETに対応させるためのファイルを用意する)
・設定編(Doxygen側の設定を行う)
の順で書いていきます。


#準備編
1.まずDoxygenをVB.NETに対応させるために、フィルター用のフォルダ(ここではDoxy_filterとします。)を任意の場所に作成します。
[ここ](https://sourceforge.net/projects/unxutils/files/latest/download)を開くと数秒後に自動的にダウンロードダイアログが開くため任意の場所に保存してください。


2.ダウンロードしたUnxUtils.zipを解凍し、その中から"sh.exe"、"tee.exe"、"gawk.exe"を上記のDoxy_filter内に保存します。"sh.exe"はbinフォルダ内に、残りの2つは\usr\local\wbinにあります。("sh.exe"のアイコンは他の二つと違いますが気にしないでください。)


3.次にsavoku氏がGitHubで公開しているdoxygen-vb-filterという名前のリポジトリがあるので[ここ](https://github.com/sevoku/doxygen-vb-filter)から下の画面に行けるので、そこからダウンロード右上の"Clone or download"から"Download ZIP"をクリックし、任意の場所にダウンロードしてください。
![vb-filter.png](https://qiita-image-store.s3.amazonaws.com/0/110736/50ea9fd9-761b-8c65-adc1-b878e78869b5.png)



4.ダウンロードしたzipフォルダを解凍し、先ほどのDoxy_filterフォルダ内に"vbfilter.bat","vbfilter.awk"を移動する。
![doxy_filter_tri.png](https://qiita-image-store.s3.amazonaws.com/0/110736/eac5bfe9-df1e-4686-78e2-920d98ef1b8f.png)
これで、準備編は終わりです。次に設定編に移りたいと思います。



#設定編
1.まずdoxywizard.exeを開き、フォームの一番上にある出力先を任意で決めておきます。(この項目はDoxy_filterではないので注意)

2.ExpertタブのProject項目**CREATE_SUBDIRS**にチェックを入れます。![doxywizard_Project_aft.png](https://qiita-image-store.s3.amazonaws.com/0/110736/2c88cbee-a69c-e277-9424-256af7d7703c.png)

3.Project項目の下部分の**EXTENSION_MAPPING**にに".vb=csharp"と入力し+ボタンを押す。
![doxywizard_Project_2.png](https://qiita-image-store.s3.amazonaws.com/0/110736/66cd6ab0-bcac-e084-15d1-4fc47034f108.png)

4.Build項目の**EXTRACT_ALL**，**EXTRACT_PRIVATE**，**EXTRACT_PACKAGE**，**EXTRACT_STATIC**，**EXTRACT_LOCAL_METHODS**，**EXTRACT__ANON_NSPACES**の6項目にチェックを入れる
![doxywizard_Project_3.png](https://qiita-image-store.s3.amazonaws.com/0/110736/51fe5fa3-81dd-36b3-af58-44458c49cc65.png)

5.Input項目の**INPUT**に読ませたいファイルパス、**Input_ENCODING**をshift-jisに、**INPUT_FILTER**に準備編で作成した、Doxy-filterフォルダ内の**vbfilter.bat**のパスを指定する。
![doxywizard_Input_1.PNG](https://qiita-image-store.s3.amazonaws.com/0/110736/edf9757b-6118-0f94-502f-f8944428e46c.png)

![doxywizard_Input_2.PNG](https://qiita-image-store.s3.amazonaws.com/0/110736/37e35d19-1dd9-f20f-fe82-f76baf466405.png)


以上で終わりです。
ドキュメントを作成するだけであれば、あとはRun項目の"Run doxygen"を押せば任意の出力先に出てきているはずです。
クラスの関係図などを自動で作成する場合には、上記に続いて以下の設定をしてください。

### クラス関係図を作成する場合の設定  
`まずGraphvizが入っていることが前提です。Graphvizがわからない方は、Doxygenとは で検索していただくと有益なサイトがあると思いますのでそちらを参考にしてください。`
1.doxywizardのExpert項目のDot項目の**GMSCGEN_PATH**に\Graphviz\binを指定する。
2.同じExpert項目の**HAVE_DOT**と**CALL_GRAPH**にチェックをつける
3.同じExpert項目の**DOT_PATH**は上記の**GMSCGEN_PATH**と同じパスを指定する。

#補足(ヘッダコメントについて)
・上記を設定した時点で、ヘッダコメントを用いてドキュメントを作成することができます。
・使用可能箇所はメソッドやクラス、構造体、変数に使用可能です。
・使用方法はVB.NETクラスや、メソッドの初めの分の上にシングルクォーテーションを3つ並べると<summery>ヘッダなどが自動生成されその中にテキストを入れ込むことでドキュメント生成されます。
・私の知識不足ですが、これ以外にも変更を加えれば、ヘッダコメントに代わるオリジナルのドキュメント用の記号を作成することができると思います。ヘッダコメントだと、1つのクラスで必ず数行はとられてしまうので、もっと行数を少なくしたいという方は検討してはどうでしょうか。

また稚拙な内容なので、改善すべき点があれば(ここわかりにくいや、意味違うよなど)コメント欄に残していただけるとありがたいです。またこの方法でできないなどあればまたコメントいただければできる限り直していきたいと思います。