初めに
PlantUMLで初めてクラス図を書いた。クラス図の素晴らしさに気付いた…
という事でクラス図からC#のスケルトンコードを生成してくれる機能が形になってきたので公開します。
Unityのエディタ拡張で作った機能になります。
※PlantUMLの書き方が自分基準のため、動作しない場合があります
PlantUMLとは
テキストベースでUMLが作れるツールです。
↓こんなのができます。今回作った機能の大まかなクラス図です。
機能
スクリプトファイルの作成
クラス図に書かれているクラス名とかのcsファイルを作ります。
対応しているのは
・class
・abstract class
・interface
・enum
です。
「class ~」とか書かれておらず、名前だけ出てきた場合はクラスとして扱われます。
メンバの宣言
作成したファイルの中に書かれているメンバを宣言します。
+とか-もpublic、privateに変換します。
変数の場合は最後に「;」がなければ付けてくれます。
メソッドの場合は最後に「{}」を付けます。返り値も一応記述されます。
他はクラス図に書かれているものをそのまま宣言するので気を付けてください。
継承元のメソッド宣言
abstractなメソッドやinterface内のメソッドは継承したクラスにも宣言します。
using宣言
使用している型を元に必要なusing宣言をしてくれます。
例)
「List<*>」を使用すると
↓
using System.Collections.Generic;
をスクリプトの最初に宣言します。
指定using宣言
enumを除くファイル全てに指定したusingの宣言をします。
使い方
ウィンドウを開く
メニューバーの「UML/ConvertWindow」をクリックするとウィンドウが表示されます。
↓
項目の説明
・対象クラス図
変換したいクラス図を指定して下さい。
TextAssetに対応した拡張子じゃないと駄目です。
きっとそのうち修正します。
・生成フォルダ
生成するスクリプトを入れるフォルダのパスです。
・矢印パターン
クラスとかに線を引くときの矢印のパターンです。正規表現です。
「(?:)」の中に書いて下さい。左パターン右パターン両方書かなくちゃいけません。
かなり面倒だから何とかならないか考え中です。
「{dir}」の部分は「@"(?:|right|left|up|down|r|l|u|d)"」に置き換わります。
設定しなくても動きますが「class ~~」といった宣言を行わない場合は生成されません。
最初から設定されている矢印は「<|--、--|>、<--、-->」の4パターンです。
使用している矢印のパターンを書きましょう。
・左継承矢印パターン
継承を指している矢印のパターンです。
継承処理が行われませんが設定しなくても動きます。
・右継承矢印パターン
継承を指している矢印のパターンです。
継承処理が行われませんが設定しなくても動きます。
・名前空間の非生成
チェックを入れるとネームスペースの宣言を行いません。
・メンバの非生成
チェックを入れるとメンバ宣言を行いません。
・宣言するusing
enumを除く全ファイルに宣言されるusing名を指定できます。
・オプション保存ボタン
今まで設定したオプションを保存できます。
・オプション読み込みボタン
保存したオプションを読み込めます。
・チェックボタン
ファイル作成は行わず、Debug.Logで生成内容を確認出来ます。
「----ファイルパス----」から「----end----」で囲まれているのが内容になります。
・生成開始ボタン
ファイル作成を開始します。
同名のファイルがあった場合は上書きされません。おそらく。
自己責任でお願いします。
実践
スクリプトを使用したいUnityプロジェクトへ
https://github.com/Tanakancolle/Core
https://github.com/Tanakancolle/PlantProject
の二つのスクリプトを使用したいUnityプロジェクトの「Assets」フォルダ内に持ってきましょう。
git管理を行っているならサブモジュールとして持ってくるのが楽です。
※画像はSourceTreeでサブモジュールを追加する場合です
↓
実行前
実行後
実行後の画像です。Testフォルダ以下にスクリプトファイルが出来ます。
Git
本体:https://github.com/Tanakancolle/PlantProject
依存:https://github.com/Tanakancolle/Core