Edited at

VisualStudio2017でUnity内のソースコードをクラス図に自動変換する

More than 1 year has passed since last update.


はじめに

他の人のソースコードを読むことはすごく大変ですよね。

Unityのソースコードを楽に読む方法を色々調べたら、自動でクラス図を生成する機能がVisualStudioには備わっているらしいとのこと・・・

半信半疑でGoogleで調べてみました。

結果、「クラスダイアグラムで表示」という機能を使えば出来るので、その過程を備忘録的に残します。


前提条件

・VisualStudio2017

・Unity(筆者のバージョンは5.6.3f)

の以上2つは既にインストールされているものとして進行します。


VisualStudio内でUnity用のプラグインをインストール

まずは、VisualStudioのインストーラを(C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe)開きます。

その後、VS2017の変更を押します。

次に、UnityとVisualStudioを連携させるプラグインが必要なので、以下の画像に従って、必要なコンポーネントをインストールしてください。

※既にインストールしている人は進んでもらって構いません。


VisualStudio内でクラスデザイナー機能をインストール

VisualStudioにてクラス図を作成する機能を持つクラスデザイナーというコンポーネントをインストールしていきます。

上のメニューバーから個別のコンポーネントを指定し、クラスデザイナーという項目にチェックを付けて、右下の変更ボタンを押します。(下図参照)


UnityにてVisualStudioを開く

※既に設定している人は飛ばしてもらって構いません。

Unityのエディター画面上部のツールバーよりEdit>Preferencesを開き、

ExternalTools内のExternalScriptEditorをVisualStudio2017に設定します。

(初期の状態では候補に無いため、Browse...からC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDEdevenv.exeを参照する)

その後、エディター画面のツールバーよりAssets>OpenC#ProjectをクリックしてVisualStudioを立ち上げます。

テラシュールブログ様に詳細が載ってあるため、引用させていただきます。(感謝申し上げます。)

Visual Studio 2017 (RC)をUnityで使う(テラシュールブログ)


クラス図を作成する

最後に、今回の目的であるクラス図作成を行います。

今回記事用に使用するUnityプロジェクトは、以前UnityOneWeekのテーマ「夏」で作成したFireWooksEngineerというゲームのプロジェクトです。

よければ遊んでみてください!(宣伝)ここから遊ぶ

さて、本題に戻ります。

今回は、プロジェクト全体のクラス図を作成します。

VisualStudioのソリューションエクスプローラを右クリックして、ビュー>クラスダイアグラムで表示を選択します。(下図参照)

なんと・・・。

自動的にクラス図が作られました!!

素晴らしい



しっかり依存関係まで確認できますね。

エディタになっているので、好きにパーツを動かすことが出来ます。

プルダウンにてフィールドとメソッドを確認もできます。

更に、エディタ上で右クリックして、”イメージとしてダイアグラムをエクスポート”をクリックすると、画像でクラス図を保存する機能まで備わっています!

どこまで素晴らしいの・・・

個別にクラスの相関関係を確認するためには、ソリューションエクスプローラ内の一つのクラスを選択して、同じ操作を行う事で確認できます。


最後に

他人のソースコードを読む際に、最初はクラスの依存関係を全てホワイトボードに書き出す事をやっていましたが、らちがあきませんでした。

結果、面倒になったので、Google先生に聞いてみました。

軽く調べると簡単に出てきたので、何事も調べることが大事ですね・・・。

元々UnityのコードエディタはVSCodeを使っていましたが、Resharperと今回のこの機能が使えるという事で、乗り換えました。

VisualStudio便利( ^)o(^ )

最後に、引用させていただきましたテラシュールブログ様、重ねてお礼申し上げます。

ありがとうございました。