T4TextTemplatesEngineをUnityで使う

 省力化のお供テンプレートエンジンをUnityでも使ってみました。テンプレートエンジンを使って設定ファイルからコードを自動生成して楽をしよう!というわけです。今回使ったテンプレートエンジンはT4TextTemplatesEngineです。テンプレートエンジン用のプロジェクトをUnityプロジェクトとは別に作る必要がある、というのがポイントです。

コード自動生成のメリット

 コード自動生成により、Apiやデータベースのテーブルの追加の手間が大幅に削減できます。1つApiを増やすたびに関連コードをキッチリ増やすのはなかなかの手間ですし、コード規模が大きくなってくると何を増やせばいいのかを忘れてしまうでしょう。追加手順をドキュメント整備しても、いずれ整備が面倒くさくなってコードとドキュメントが乖離するのは目に見えています。

 また、コード自動生成はTypoを疑わなくても良いのが強みです。Apiの追加をクライアント側・サーバー側でそれぞれ行ったがうまく動かない→片方がTypoしてた、という典型的なミスはよくあるもの。このミスが発生しない+このミスを調査する時間が省ける、というのは大きなメリットです。

T4TextTemplatesEngine

Code Generation and T4 Text Templates

 今回は表題の通り、コード自動生成にT4TextTemplateEngineを使いました。自力で自動生成スクリプトを組む方法もありますが、テンプレートエンジンを使う方が汎用性が高いだろうと思いました。詰まったときにお手製スクリプトを読む必要があるよりは、検索エンジンで解決策が拾える方が良いでしょう。

 T4にしたのはVisualStudioに付属してたから、という消極的な理由です。色々な環境で広く使われるテンプレートエンジンが出てくれば、そちらを選択した方が良いのかな、と思います。  

テンプレートエンジン用のプロジェクトを別途作る

 Unityのプロジェクトの他に、テンプレートエンジン用にプロジェクトを作成する必要があります。Unityのプロジェクトにテンプレートを追加しても、Unityのプロジェクト自動生成に巻き込まれてプロジェクトからテンプレートが外されてしまうからです。

 テンプレートエンジン用プロジェクトを作成する場合のポイントは「リンクとして追加」です。下図のように追加ボタンの▼の中に隠れています。

f:id:kema8351:20180626075429j:plain

 リンクとして追加することにより、Unityプロジェクト内で置いてある場所を気にせずに、T4側のプロジェクトに認識させることができます。