InfoQ

News

Visual Studio 2008のText Template Transformation Toolkit

作者 Abel Avram, 翻訳者 編集部 投稿日 2008年4月21日 午後12時34分

コミュニティ
.NET
トピック
Artifacts & Tools,
Domain Specific Languages
タグ
Visual Studio

Visual Studio 2008には、Domain-Specific Language Toolsの一部としてText Template Transformation Toolkit(T4とも呼ばれる)が含まれており、テキストテンプレートに基づいて、コードを生成するのに使用することができる。T4は、DSL(source)や GAT(source)ツールキットに組み込まれているVisual Studio 2005でも使用することができる。

MSDN(source)の説明では以下のようである。

テキストテンプレートはファイルであり、テキストブロックおよび制御ロジックを含んでいる。テキストテンプレートを変換する際、制御ロジックがテキストブ ロックとモデル内のデータを結合し、出力ファイルを生成する。テキストテンプレートを使用して、コードファイルやHTMLレポートのようなテキスト成果物 を作成することができる。たとえば、ウィザードのように、ユーザインターフェイスの個々のページ間でのフローモデルの制御は、入力としてテキストテンプ レートに渡される。テキストテンプレートは、そのフローの制御を実装するコードおよび構成ファイルを生成する。

テキストテンプレートは、テキストテンプレートファイルを入力として受け取り、それを変換し、出力テキストファイルを生成するという変換プロセスを経る。 変換プロセスには、2つのステップがある。最初のステップでは、T4エンジンがテキストテンプレートを使用して、 仮の変換クラスを生成する。次のステップでは、T4エンジンがその変換クラスをアセンブリーにコンパイルし、コードを実行して出力テキストファイルを生成 する。

「Hello World!」の例は、以下のとおりである。

<#@ template language="C#" #>
<# Write("Hello World!") #>

テキストテンプレートには、Visual BasicまたはC#コードを含めることが可能であるが、指定されていない場合は、C#はデフォルトの言語である。出力ディレクティブは生成済みテキスト ファイルタイプを指定するのに使用される。多くの出力ファイルタイプがあるが、最も一般的なものとしては、.html、.txt、.csおよび.vbであ る。デフォルトの出力ファイルタイプは.csである。出力ディレクティブの使用方法の例は、以下のとおりである。

<#@ output extension=".html" #>

Visual Studioでは、テキストテンプレートの編集サポートが制限されている。Clarius Consultingには、「さまざまなT4テンプレートパーツのカラーライゼーション、IntelliSenseお よびテンプレートの設計時のプレビュー向けのサポートを提供している」フリーエディター(サイト・英語)がある。Visual Studioは、テキストテンプレートのデバッグおよび変換プロセスをサポートするが、 単純ではない。デバッグに関する詳細が、MSDN(sorce)にある。またGareth Jones氏による簡潔なチュートリアル(source)も利用できる。Oleg Sych氏はT4の導入記事(source)を投稿している。より総合的なMSDN文書は、ここ(source)で利用可能である。

原文はこちらです:http://www.infoq.com/news/2008/04/T4

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

ファイルシステムでHello World

この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。

Guice(ジュース)を早飲みしすぎていませんか?

あなたのチームが、既存アプリケーションを「シングルトンの入れ子」設計から依存性注入(DI)へ移行しようとしているなら、この論文に心引かれるでしょうが、DIへの移行は難しいことが分かっています。論文にはGoogleのJava DIコンテナ(Guice)の名を入れていますが、Javaや.NET、Python、Rubyなどにも当てはまります。

チームがキュービクルと引き換えにコミュニケーションスキルを得る手助けをせよ

アジャイルの「自己組織化チーム」のパラダイムでは、チームのメンバに新しいスキルが要求されます。この記事では、発展しつつあるチームの自己組織化を壊さずに、新たなスキルを伝えるためのいくつかの戦略を提案します。そして、新しいスキルを身につけるのに役立つ資料のありかを提示しています。

F#の土台を越えて - 非同期ワークフロー

今回の記事では、非同期ワークフローと呼ばれるワークフロー機能の面白い使用法を考察しますが、非同期ワークフローは.NETの非同期プログラミングモデルを単純化することを目的としています。

言語としてのアーキテクチャ: ストーリー

アーキテクチャは一般に、Word文書に主として見られるような極めて実体のない、ソフトウェアシステムの概念的な側面であるか、または完全に技術によって駆動されるものかのいずれかです。そのどちらも間違っています。では、どう対処すればよいでしょうか? この記事ではアイデアを説明します、そしてアプローチのキーポイントを要約します。

メタプログラミングを使ってRubyにプロパティを追加する

Werner Schuster氏が、簡単な例を示しながら、Javaのようなプロパティをメタプログラミングを使ってRubyに追加する方法を示します。

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。