<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NVelocity チュートリアル &#8211; FoxDevelop</title>
	<atom:link href="https://www.foxdevelop.com/ja/category/c-ja/c-%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa/nvelocity-%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.foxdevelop.com</link>
	<description>独立ソフトウェア開発スタジオ</description>
	<lastBuildDate>Fri, 14 Aug 2026 03:50:02 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://www.foxdevelop.com/wp-content/uploads/2026/05/fox-svgrepo-com-1.png</url>
	<title>NVelocity チュートリアル &#8211; FoxDevelop</title>
	<link>https://www.foxdevelop.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>エスケープとif条件</title>
		<link>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%a8%e3%82%b9%e3%82%b1%e3%83%bc%e3%83%97%e3%81%a8if%e6%9d%a1%e4%bb%b6/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%a8%e3%82%b9%e3%82%b1%e3%83%bc%e3%83%97%e3%81%a8if%e6%9d%a1%e4%bb%b6/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 03:50:02 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8528</guid>

					<description><![CDATA[バックスラッシュによるエスケープ ＋ #if 条件分岐構文  ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">バックスラッシュによるエスケープ ＋ #if 条件分岐構文</p>



<h4 class="wp-block-heading">1. バックスラッシュ \ エスケープルール</h4>



<p class="wp-block-paragraph">事前定義変数：<code>#set($dog = "woof woof")</code></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>VTLコード</th><th>出力結果</th><th>仕様解説</th></tr></thead><tbody><tr><td><code>$dog</code></td><td>woof woof</td><td>変数を通常通り展開</td></tr><tr><td><code>\$dog</code></td><td>$dog</td><td><strong>バックスラッシュ1つ</strong>：直後の<code>$</code>をエスケープ、変数展開を無効にし文字通り出力</td></tr><tr><td><code>\\$dog</code></td><td>\woof woof</td><td>1つ目の<code>\</code>が2つ目の<code>\</code>をエスケープ→<code>\</code>を出力；<br>残りの<code>$dog</code>は変数展開される</td></tr><tr><td><code>\\\$dog</code></td><td>\$dog</td><td><code>\\</code>で<code>\</code>出力、<code>\$</code>で<code>$</code>出力</td></tr><tr><td><code>\\\\$dog</code></td><td>\woof woof</td><td><code>\\</code>が<code>\</code>、<code>\\</code>が<code>\</code>を出力；<br><code>$dog</code>が変数展開</td></tr></tbody></table></figure>



<ol class="wp-block-list">
<li>Velocityの変数名は<strong>文字から始める必要があり</strong>、<code>$10.0</code>は変数と認識されずそのまま出力。<code>マイクロソフト$10.0ドル</code>のような記述にはエスケープ不要；</li>



<li><strong>連続するバックスラッシュは2つごとに相殺</strong>；<code>\$</code>の組み合わせだけがドル記号をエスケープ可能；</li>



<li>ページ上に<code>$変数名</code>をそのまま表示するには標準で<code>\$dog</code>を使う。</li>
</ol>



<h4 class="wp-block-heading">2. #if による条件分岐構文</h4>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set($ages = 22)</span>
<span class="hljs-comment">#if ($ages &lt;13)</span>
    &lt;h1&gt;あなたは子供です&lt;/h1&gt;
<span class="hljs-comment">#elseif ($ages &lt;18)</span>
    &lt;h1&gt;あなたは少年です&lt;/h1&gt;
<span class="hljs-comment">#elseif ($ages &lt;35)</span>
    &lt;h1&gt;あなたは青年です&lt;/h1&gt;
<span class="hljs-comment">#elseif ($ages &lt;60)</span>
    &lt;h1&gt;あなたは中年です&lt;/h1&gt;
<span class="hljs-comment">#else</span>
    &lt;h1&gt;あなたは高齢者です&lt;/h1&gt;
<span class="hljs-comment">#end</span></code></span></pre>


<h5 class="wp-block-heading">実行結果</h5>



<p class="wp-block-paragraph"><code>$ages=22</code>、条件 <code>22 &lt; 35</code> に該当 → 出力：<code>&lt;h1&gt;あなたは青年です&lt;/h1&gt;</code></p>



<h5 class="wp-block-heading">注意点</h5>



<ol class="wp-block-list">
<li>ブロック終端には<strong>必ず<code>#end</code></strong>を記述。省略すると構文エラー；</li>



<li>キーワード：<code>#elseif</code>（<strong>#else if と空白を入れてはいけません</strong>、これは不正な書き方）；</li>



<li>条件で利用可能：<code>&lt; > &lt;= >= == != &amp;&amp; ||</code> などの演算子；</li>



<li>上から順に判定し、最初に条件成立した分岐だけ実行、以降の分岐は実行されない。</li>
</ol>



<p class="wp-block-paragraph">エスケープとif条件</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%a8%e3%82%b9%e3%82%b1%e3%83%bc%e3%83%97%e3%81%a8if%e6%9d%a1%e4%bb%b6/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>拡張メソッド</title>
		<link>https://www.foxdevelop.com/ja/2026/08/14/%e6%8b%a1%e5%bc%b5%e3%83%a1%e3%82%bd%e3%83%83%e3%83%89/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/14/%e6%8b%a1%e5%bc%b5%e3%83%a1%e3%82%bd%e3%83%83%e3%83%89/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 03:44:48 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8512</guid>

					<description><![CDATA[一、バックエンド Personエンティティコード（C#） C ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">一、バックエンド Personエンティティコード（C#）</h4>


<pre class="wp-block-code"><span><code class="hljs language-cs"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">Person</span>
{
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">string</span> name;
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">string</span> Name
    {
        <span class="hljs-keyword">get</span> { <span class="hljs-keyword">return</span> name; }
        <span class="hljs-keyword">set</span> { name = <span class="hljs-keyword">value</span>; }
    }
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> age;
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> Age
    {
        <span class="hljs-keyword">get</span> { <span class="hljs-keyword">return</span> age; }
        <span class="hljs-keyword">set</span> { age = <span class="hljs-keyword">value</span>; }
    }

    <span class="hljs-comment">//引数なしコンストラクタ</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Person</span>(<span class="hljs-params"></span>)</span>{}
    <span class="hljs-comment">//引数付きコンストラクタ</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Person</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> name, <span class="hljs-keyword">int</span> age</span>)</span>
    {
        <span class="hljs-keyword">this</span>.name = name;
        <span class="hljs-keyword">this</span>.age = age;
    }

    <span class="hljs-comment">//引数なしインスタンスメソッド</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">string</span> <span class="hljs-title">getMyName</span>(<span class="hljs-params"></span>)</span>
    {
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>.name;
    }

    <span class="hljs-comment">//複数引数を持つインスタンスメソッド</span>
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">string</span> <span class="hljs-title">JoinStr</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> str1, <span class="hljs-keyword">string</span> str2</span>)</span>
    {
        <span class="hljs-keyword">return</span> str1 + str2;
    }
}</code></span></pre>


<p class="wp-block-paragraph">C#バックエンドコードでオブジェクト変数を設定</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">Person pTest = <span class="hljs-keyword">new</span> Person(<span class="hljs-string">"Tom"</span>, <span class="hljs-number">22</span>);
context.Put(<span class="hljs-string">"pTest"</span>, pTest);</code></span></pre>


<h4 class="wp-block-heading">二、VTLテンプレートコード &amp; レンダリング解説</h4>


<pre class="wp-block-code"><span><code class="hljs language-php">メソッド呼び出し&lt;br /&gt;
$pTest.getMyName();

<span class="hljs-comment">#set($a = "hello")</span>
<span class="hljs-comment">#set($b = "foxdevelop")</span>

$pTest.JoinStr($a, $b);</code></span></pre>


<h5 class="wp-block-heading">1. <code>$pTest.getMyName()</code></h5>



<ul class="wp-block-list">
<li>オブジェクトの<strong>引数なしメソッド</strong> <code>getMyName()</code>を呼び出す</li>



<li>戻り値：<code>Tom</code></li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Velocity 引数なしメソッド呼び出し：丸括弧<code>()</code>は省略可、<code>$pTest.getMyName</code> は <code>$pTest.getMyName()</code>と同等</p>
</blockquote>



<h5 class="wp-block-heading">2. <code>$pTest.JoinStr($a, $b)</code></h5>



<ul class="wp-block-list">
<li>文字列引数を2つ受け取るメソッドを実行</li>



<li>VTLが先に<code>$a</code>、<code>$b</code>を解釈し、実引数<code>"hello"</code>、<code>"foxdevelop"</code>を渡す</li>



<li>連結結果を返却：<code>hellofoxdevelop</code></li>
</ul>



<h4 class="wp-block-heading">まとめ</h4>



<ol class="wp-block-list">
<li><strong>メソッド名は大文字小文字を区別</strong><br>C# <code>getMyName()</code> ≠ <code>GetMyName()</code>、テンプレートはコードの記述と完全に一致させる必要があります。</li>



<li><strong>引数には変数をそのまま記述</strong><br>クォートは不要、<code>$pTest.JoinStr($a,$b)</code>が正しい。<code>$pTest.JoinStr("$a","$b")</code>と書かないでください（文字列&#8221;$a&#8221;が渡されてしまいます）</li>



<li><strong>プロパティとメソッドの違い</strong></li>
</ol>



<ul class="wp-block-list">
<li><code>$pTest.Name</code> → プロパティアクセス（getter）</li>



<li><code>$pTest.getMyName()</code> → メソッド呼び出し</li>
</ul>



<ol class="wp-block-list">
<li><strong>戻り値は自動出力される</strong><br>テンプレート上で<code>$オブジェクト.メソッド()</code>と記述するとVelocityが戻り値を自動出力。出力不要な場合は<code>#set</code>で結果を受け取ります：</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set($result = $pTest.JoinStr($a,$b))</span></code></span></pre>


<h4 class="wp-block-heading">三、最終ページ出力結果</h4>


<pre class="wp-block-code"><span><code class="hljs">メソッド呼び出し
Tom;

hellofoxdevelop;</code></span></pre>


<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">拡張メソッド</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/14/%e6%8b%a1%e5%bc%b5%e3%83%a1%e3%82%bd%e3%83%83%e3%83%89/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>変数境界に関する補足</title>
		<link>https://www.foxdevelop.com/ja/2026/08/14/%e5%a4%89%e6%95%b0%e5%a2%83%e7%95%8c%e3%81%ab%e9%96%a2%e3%81%99%e3%82%8b%e8%a3%9c%e8%b6%b3/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/14/%e5%a4%89%e6%95%b0%e5%a2%83%e7%95%8c%e3%81%ab%e9%96%a2%e3%81%99%e3%82%8b%e8%a3%9c%e8%b6%b3/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 03:31:33 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8496</guid>

					<description><![CDATA[変数事前定義：#set ($valok = "hello f ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">変数事前定義：<code>#set ($valok = "hello foxdevelop")</code></p>



<h4 class="wp-block-heading">変数の境界 <code>${}</code> と <code>.</code> によるアクセスの違い</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>コード</th><th>描画結果</th><th>仕様解説</th></tr></thead><tbody><tr><td><code>$valok</code></td><td>hello <code>foxdevelop</code></td><td>基本的な変数出力</td></tr><tr><td><code>$valok.</code>com</td><td>hello <code>foxdevelop</code>.com</td><td>Velocityは<code>valok</code>オブジェクトの<code>cn</code>プロパティまたはメソッドを呼び出そうとします。文字列に<code>cn</code>メソッドが存在しないため<strong>変数と接尾辞がそのまま出力</strong>されます</td></tr><tr><td><code>${valok}.com</code></td><td>hello <code>foxdevelop</code>.com</td><td><code>{}</code>で変数範囲を固定。変数<code>valok</code>描画後に文字列<code>.com</code>を連結（推奨の記述方法）</td></tr><tr><td><code>$!valok.com</code></td><td>hello<code>foxdevelop</code>.com</td><td><code>$!</code>サイレント参照：変数が存在すれば<code>$valok</code>と同等、存在しない場合は空文字を出力し<code>$xxx</code>をそのまま表示しません</td></tr><tr><td><code>${valok.com}</code></td><td><strong>空欄</strong></td><td><code>valok.com</code>プロパティの読み取りを試行。文字列に<code>com</code>プロパティが無いため変数無しと判断。空文字を得たい場合は<code>$!{valok.com}</code>を使用</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><br><code>${valok}.cn</code> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 変数＋接尾辞の連結<br><code>${valok.cn}</code> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> valokオブジェクト配下のcnプロパティにアクセス</p>



<h4 class="wp-block-heading">シングルクォート / ダブルクォート &amp; 変数の結合</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>コード</th><th>描画結果</th><th>仕様解説</th></tr></thead><tbody><tr><td><code>what$valok</code></td><td>whathello <code>foxdevelop</code></td><td>直接連結、Velocityが自動で変数の境界を判定</td></tr><tr><td><code>what$"valok"</code></td><td>what$&#8221;valok&#8221;</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" />構文エラー。<code>$</code>直後にクォートを置けず変数を解析できません</td></tr><tr><td><code>what"$valok"</code></td><td>what&#8221;hello <code>foxdevelop</code>&#8220;</td><td>クォートは単なる文字、テンプレート内では文字列構文として扱われず変数は正常に展開されます</td></tr><tr><td><code>what'$valok'</code></td><td>what&#8217;hello <code>foxdevelop</code>&#8216;</td><td>上記と同様、シングルクォートも普通の文字です</td></tr><tr><td><code>$valokwhat</code></td><td>$valokwhat</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" />変数認識失敗！Velocityは<code>valokwhat</code>全体を変数名とみなし、存在しなければ元のテキストを出力</td></tr><tr><td><code>${valok}what</code></td><td>hello <code>foxdevelop</code>what</td><td><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />波括弧で境界を固定、変数と文字が繋がる問題を解決</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">まとめ</h4>



<ol class="wp-block-list">
<li><strong>変数が他の文字と続く場合は必ず <code>${変数名}</code> を使う</strong><br>誤り：<code>$valokwhat</code>；正しい：<code>${valok}what</code></li>



<li><strong>接尾文字列を付けるとき：<code>${valok}.cn</code>、<code>${valok.cn}</code>と書かない</strong></li>



<li><strong><code>$!変数</code> サイレント参照</strong>：変数が無いときは空文字を出力、<code>$xxx</code>が表示されません</li>



<li><strong>テンプレートHTML内の引用符は通常の文字</strong>；<strong>#set代入文の内部だけ</strong>シングルクォート（変数展開しない）とダブルクォート（変数展開する）の挙動が異なります</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set($a = "$valok") // ダブルクォート：変数展開、a=hello bamn</span>
<span class="hljs-comment">#set($a = '$valok') // シングルクォート：変数展開しない、a=$valok</span></code></span></pre>


<p class="wp-block-paragraph">変数境界に関する補足</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/14/%e5%a4%89%e6%95%b0%e5%a2%83%e7%95%8c%e3%81%ab%e9%96%a2%e3%81%99%e3%82%8b%e8%a3%9c%e8%b6%b3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>コレクション走査</title>
		<link>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%b3%e3%83%ac%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e8%b5%b0%e6%9f%bb/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%b3%e3%83%ac%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e8%b5%b0%e6%9f%bb/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 03:16:26 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8480</guid>

					<description><![CDATA[Velocity #foreach コレクションとオブジェク ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Velocity #foreach コレクションとオブジェクトの走査</p>



<h4 class="wp-block-heading">1. 文字列Listを走査する</h4>



<h5 class="wp-block-heading">C#バックエンドコード</h5>


<pre class="wp-block-code"><span><code class="hljs language-cs">List&lt;<span class="hljs-keyword">string</span>&gt; strList = <span class="hljs-keyword">new</span> List&lt;<span class="hljs-keyword">string</span>&gt;() {<span class="hljs-string">"dsd"</span>,<span class="hljs-string">"sdfsd"</span>,<span class="hljs-string">"asdfsd"</span>,<span class="hljs-string">"asdfsdfsd"</span>};
context.Put(<span class="hljs-string">"strList"</span>, strList);</code></span></pre>


<h5 class="wp-block-heading">Velocityテンプレートコード</h5>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#foreach($str in $strList)</span>
    $str &lt;br/&gt;
<span class="hljs-comment">#end</span></code></span></pre>


<p class="wp-block-paragraph">実行結果：リストの各文字列をループで取り出し、改行して出力します。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="406" height="184" src="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-16.png" alt="" class="wp-image-7102" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-16.png 406w, https://www.foxdevelop.com/wp-content/uploads/2026/08/image-16-300x136.png 300w" sizes="(max-width: 406px) 100vw, 406px" /></figure>



<h5 class="wp-block-heading">構文解説</h5>



<p class="wp-block-paragraph"><code>#foreach(ループ変数 in コレクション)</code> でループ開始、<code>#end</code> でループを閉じます。</p>



<h4 class="wp-block-heading">2. 独自エンティティクラスのListを走査</h4>



<h5 class="wp-block-heading">1. Personエンティティ（C#）</h5>


<pre class="wp-block-code"><span><code class="hljs language-cs"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">Person</span>
{
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">string</span> name;
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">string</span> Name
    {
        <span class="hljs-keyword">get</span> { <span class="hljs-keyword">return</span> name; }
        <span class="hljs-keyword">set</span> { name = <span class="hljs-keyword">value</span>; }
    }
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> age;
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> Age
    {
        <span class="hljs-keyword">get</span> { <span class="hljs-keyword">return</span> age; }
        <span class="hljs-keyword">set</span> { age = <span class="hljs-keyword">value</span>; }
    }
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Person</span>(<span class="hljs-params"></span>)</span>{}
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Person</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> name,<span class="hljs-keyword">int</span> age</span>)</span>
    {
        <span class="hljs-keyword">this</span>.name = name;
        <span class="hljs-keyword">this</span>.age = age;
    }
}</code></span></pre>


<h5 class="wp-block-heading">2. バックエンドでListを作成</h5>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-keyword">List</span>&lt;Person&gt; pList = <span class="hljs-keyword">new</span> <span class="hljs-keyword">List</span>&lt;Person&gt;();
pList.Add(<span class="hljs-keyword">new</span> Person(<span class="hljs-string">"Jack"</span>, <span class="hljs-number">1</span>));
pList.Add(<span class="hljs-keyword">new</span> Person(<span class="hljs-string">"Ben"</span>, <span class="hljs-number">11</span>));
pList.Add(<span class="hljs-keyword">new</span> Person(<span class="hljs-string">"Kevin"</span>, <span class="hljs-number">100</span>));
pList.Add(<span class="hljs-keyword">new</span> Person(<span class="hljs-string">"Simon"</span>, <span class="hljs-number">500</span>));
pList.Add(<span class="hljs-keyword">new</span> Person(<span class="hljs-string">"Lulu"</span>, <span class="hljs-number">20</span>));
context.Put(<span class="hljs-string">"pList"</span>, pList);</code></span></pre>


<h5 class="wp-block-heading">3.テンプレートでプロパティにアクセスする書き方</h5>



<p class="wp-block-paragraph">テンプレートコード：</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">#foreach($per in $pList)
<span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>$per.name<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>$per.age<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
#end</code></span></pre>


<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /><strong>データが取得できません！エラーまたは空出力になります</strong></p>



<h4 class="wp-block-heading">根本的な仕組み</h4>



<p class="wp-block-paragraph">Velocityのオブジェクトプロパティアクセスルール：<br><code>$per.xxx</code> は自動的に <strong>公開Getメソッド <code>GetXxx()</code></strong> を探します</p>



<ul class="wp-block-list">
<li><code>$per.name</code> → <code>per.getName()</code>を呼び出そうとします</li>



<li><code>$per.age</code> → <code>per.getAge()</code>を呼び出そうとします</li>
</ul>



<p class="wp-block-paragraph">作成したエンティティ：</p>



<ul class="wp-block-list">
<li>プライベートフィールド：<code>name</code>、<code>age</code></li>



<li><strong>公開プロパティは先頭大文字：<code>Name</code>、<code>Age</code></strong>、対応メソッド <code>GetName()</code>、<code>GetAge()</code></li>
</ul>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />正しいテンプレート記述：</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">#foreach($per in $pList)
<span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>$per.Name<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>$per.Age<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
#end</code></span></pre>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">補足：C#ではプロパティの先頭文字を大文字にする慣習、Javaのエンティティプロパティは小文字が一般的です。初心者がハマりやすい大文字小文字の落とし穴です。</p>
</blockquote>



<h4 class="wp-block-heading">3. #foreach組み込み変数</h4>



<p class="wp-block-paragraph">ループ内で直接利用可能な変数です：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>変数</th><th>役割</th></tr></thead><tbody><tr><td><code>$foreach.index</code></td><td>現在のインデックス、<strong>0から開始</strong></td></tr><tr><td><code>$foreach.count</code></td><td>現在の連番、<strong>1から開始</strong></td></tr><tr><td><code>$foreach.first</code></td><td>最初のレコードかどうか（真偽値）</td></tr><tr><td><code>$foreach.last</code></td><td>最後のレコードかどうか（真偽値）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">サンプル：</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#foreach($per in $pList)</span>
    $foreach.count 、氏名：$per.Name
<span class="hljs-comment">#end</span></code></span></pre>


<h4 class="wp-block-heading">4. テーブル表示</h4>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">table</span> <span class="hljs-attr">border</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">cellpadding</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">cellspacing</span>=<span class="hljs-string">"0"</span>&gt;</span>
#foreach($per in $pList)
    <span class="hljs-tag">&lt;<span class="hljs-name">tr</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>$per.Name<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>$per.Age<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
#end
<span class="hljs-tag">&lt;/<span class="hljs-name">table</span>&gt;</span></code></span></pre>


<h4 class="wp-block-heading">まとめ</h4>



<ol class="wp-block-list">
<li><code>#foreach(変数 in コレクション)</code> + <code>#end</code> がVelocity標準ループ構文；</li>



<li>通常のList走査時は<code>$変数</code>をそのまま出力；</li>



<li>エンティティオブジェクト走査：<code>$オブジェクト.プロパティ名</code> <strong>大文字小文字を一致させ</strong>、プライベートフィールドにアクセスしない；</li>



<li>C#エンティティのプロパティは先頭大文字に統一し、テンプレート側も合わせる；</li>



<li>データが空の場合、まず<strong>プロパティの大文字小文字、getアクセサの存在</strong>を確認してください。</li>
</ol>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">コレクション走査</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%b3%e3%83%ac%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3%e8%b5%b0%e6%9f%bb/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>コメント</title>
		<link>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88-2/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88-2/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 03:10:21 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8464</guid>

					<description><![CDATA[1. テンプレートコメントの違い 記述方法 種別 特徴 &#038;l ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">1. テンプレートコメントの違い</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>記述方法</th><th>種別</th><th>特徴</th></tr></thead><tbody><tr><td><code>&lt;!-- HTMLコメント --&gt;</code></td><td>HTML標準コメント</td><td><strong>最終的なWebページのソースに出力</strong>、ブラウザのソース表示で確認可能</td></tr><tr><td><code>## 1行コメント</code></td><td>Velocity1行コメント</td><td>エンジンのみ認識、<strong>ページに出力されない</strong>、行末まで有効</td></tr><tr><td><code>#* 複数行コメント *#</code></td><td>Velocity複数行コメント</td><td>改行に対応、<strong>ページに出力されない</strong></td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">開発のヒント：業務向けコードコメントは<code>##</code>または<code>#* *#</code>を優先して使い、ソースコードへのコメント漏洩を防ぎます。</p>
</blockquote>



<h3 class="wp-block-heading">2. 変数の命名ルール</h3>



<p class="wp-block-paragraph">公式の基本ルール</p>



<ol class="wp-block-list">
<li>変数の先頭文字は<strong>アルファベット（a‑z / A‑Z）必須</strong></li>



<li>それ以降に使用可：英字、数字<code>0‑9</code>、アンダーバー<code>_</code>、ハイフン<code>-</code></li>
</ol>



<h4 class="wp-block-heading">ハイフン <code>-</code> による演算子の曖昧さ</h4>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set($name-d = "test")</span></code></span></pre>


<p class="wp-block-paragraph">実行時にエラーが発生：<code>Encountered "name" ... Was expecting one of:</code><br><strong>原因：Velocityが <code>-</code> を減算演算子と判断するため！</strong><br>エンジンは<code>$name - d</code>と解釈し、変数<code>$name</code>から変数<code>d</code>を引く処理とみなし構文エラーになります。</p>



<p class="wp-block-paragraph">二つの解決方法：</p>



<ol class="wp-block-list">
<li><strong>推奨：アンダーバーによる命名</strong>（曖昧なし、一般的な慣習）</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set($name_d = "hello world")</span></code></span></pre>


<ol start="2" class="wp-block-list">
<li><strong>波括弧で変数範囲を明示</strong>（ハイフン付き変数名に対応）</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set(${name-d} = "hello world")</span>
${name-d}</code></span></pre>


<h4 class="wp-block-heading">有効・無効な記述例</h4>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment"># <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />正常</span>
<span class="hljs-comment">#set($name_d = "アンダーバー")</span>
<span class="hljs-comment">#set($name12d = "英字始まり＋数字")</span>
<span class="hljs-comment">#set(${name-1_2d} = "ハイフン使用時は波括弧必須")</span>

<span class="hljs-comment"># <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" />波括弧なしでハイフン → 解析エラー</span>
<span class="hljs-comment">#set($name-d = "エラー発生！")</span>
<span class="hljs-comment">#set($name-1_2d = "エラー発生！")</span></code></span></pre>


<h3 class="wp-block-heading">3. #set 構文の記述ルール</h3>



<p class="wp-block-paragraph">標準的な書き方（括弧周囲の空白は柔軟、統一したスタイル推奨）</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set($変数名 = "値")</span></code></span></pre>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">文字列は二重引用符で囲む必要があります。イコールの両側に空白を入れると可読性が向上します。</p>
</blockquote>



<p class="wp-block-paragraph">コメント</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/14/%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>テンプレート再利用</title>
		<link>https://www.foxdevelop.com/ja/2026/08/14/%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e5%86%8d%e5%88%a9%e7%94%a8/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/14/%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e5%86%8d%e5%88%a9%e7%94%a8/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 02:56:55 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8448</guid>

					<description><![CDATA[1. 主な役割 Velocityテンプレートエンジンは #i ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">1. 主な役割</h3>



<p class="wp-block-paragraph">Velocityテンプレートエンジンは <code>#include</code> / <code>#parse</code> によって<strong>テンプレートの再利用</strong>を実現します。<br>ページヘッダーナビゲーション<code>_head.htm</code>、フッターコピーライト<code>_footer.htm</code>といった共通部分を別サブテンプレートに切り出し、各ページから読み込むことでHTMLの重複記述を回避できます。</p>



<h3 class="wp-block-heading">2. 二つの命令の本質的な違い</h3>



<h4 class="wp-block-heading">1. <code>#include("ファイルパス")</code></h4>



<p class="wp-block-paragraph"><strong>ファイルの内容をそのまま出力するだけ。サブテンプレート内のVelocity変数（<code>$!{xxx}</code>）は解釈されません</strong></p>



<ul class="wp-block-list">
<li>サブテンプレート内の <code>$!{testinclude}</code> はレンダリングされず、文字列そのまま出力されます<code>$!{testinclude}</code></li>



<li><strong>複数ファイル</strong>をまとめて読み込み可能：<code>#include("a.htm","b.htm")</code></li>



<li>向いている用途：変数を含まない静的HTML、静的コード断片</li>
</ul>



<h4 class="wp-block-heading">2. <code>#parse("ファイルパス")</code></h4>



<p class="wp-block-paragraph"><strong>サブテンプレートを読み込み、Velocity文法を完全に解釈実行します</strong>。親テンプレートから渡した変数がサブテンプレート内で利用できます。</p>



<ul class="wp-block-list">
<li>サブテンプレートの <code>$!{testinclude}</code> はコンテキスト変数を参照し、バックエンドから渡された値に置き換わります</li>



<li><strong>読み込めるファイルは1つだけ</strong>、複数同時読み込みには対応していません</li>



<li>向いている用途：ヘッダー・フッターなど<strong>変数を使用する共通テンプレート</strong>（ページタイトル、動的コピーライトなど）</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">手元メモより：<br><code>#includeはサブテンプレートのコードを単純に埋め込むだけで解析しない。#parseは文法解析を実行する</code></p>
</blockquote>



<h3 class="wp-block-heading">3. 実演サンプル</h3>



<h4 class="wp-block-heading">1. バックエンドコード（.cs）</h4>


<pre class="wp-block-code"><span><code class="hljs language-javascript">context.Put(<span class="hljs-string">"testinclude"</span>, <span class="hljs-string">"サブテンプレートの文字列："</span>);</code></span></pre>


<h4 class="wp-block-heading">2. サブテンプレート <code>_footer.htm</code> の内容</h4>


<pre class="wp-block-code"><span><code class="hljs">コピーライト $!{testinclude}</code></span></pre>


<h5 class="wp-block-heading">ケース① <code>#include("./themes/default/_footer.htm")</code>を使用</h5>



<p class="wp-block-paragraph">ページ出力結果：</p>


<pre class="wp-block-code"><span><code class="hljs">コピーライト $!{testinclude}</code></span></pre>


<p class="wp-block-paragraph">変数が解釈されず、プレースホルダーがそのまま表示されます。</p>



<h5 class="wp-block-heading">ケース② <code>#parse("./themes/default/_footer.htm")</code>を使用</h5>



<p class="wp-block-paragraph">ページ出力結果：</p>


<pre class="wp-block-code"><span><code class="hljs">コピーライト サブテンプレートの文字列：</code></span></pre>


<p class="wp-block-paragraph">変数が正しく展開されます。プロジェクトでヘッダー・フッターに<strong>#parseを優先する</strong>理由がここにあります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">4. 利用シナリオ推奨</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>命令</th><th>適切な用途</th></tr></thead><tbody><tr><td><code>#include</code></td><td>静的リソース、プレーンテキスト、変数を使わない静的HTML断片</td></tr><tr><td><code>#parse</code></td><td>共通ヘッダー、フッター、サイドバー；<code>$変数</code>、<code>#if</code>などVTL文法を含むテンプレート</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 開発ルール：<br>動的変数が使われる可能性のあるナビゲーションやフッターには<code>#parse</code>を統一利用。完全静的なテキスト・スタイル断片には<code>#include</code>を使います。</p>



<p class="wp-block-paragraph">テンプレート再利用</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/14/%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e5%86%8d%e5%88%a9%e7%94%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>テンプレート内で変数を設定する</title>
		<link>https://www.foxdevelop.com/ja/2026/08/14/%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e5%86%85%e3%81%a7%e5%a4%89%e6%95%b0%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/14/%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e5%86%85%e3%81%a7%e5%a4%89%e6%95%b0%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 02:34:24 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8431</guid>

					<description><![CDATA[これまで学習した変数はC#のコードビハインド側で定義し、テン ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">これまで学習した変数はC#のコードビハインド側で定義し、テンプレートから参照する方式でした。実はテンプレート内部でsetディレクティブを使って直接変数を定義できます。</p>



<h3 class="wp-block-heading">1. 変数定義 <code>#set()</code></h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">変数定義は2通りあります：<br>方法1：バックエンドのC#/Javaコードで事前定義し、テンプレート側で読み込む；<br>方法2：<strong>テンプレート内で直接 <code>#set()</code> を使い変数を定義</strong>（今回の講義のポイント）</p>



<p class="wp-block-paragraph"></p>
</blockquote>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set($name = "hello foxdevelop.com")</span>
<span class="hljs-comment">#set($okay = "common baby")</span>
<span class="hljs-comment">#set($nameokay = "$name|$okay")</span></code></span></pre>


<ul class="wp-block-list">
<li><code>#set(変数 = 値)</code>：文字列、数値、配列、オブジェクトプロパティ、他変数からの代入に対応</li>



<li>弱い型付け。型宣言は不要</li>
</ul>



<h3 class="wp-block-heading">2. 変数出力の記法とルール</h3>



<h4 class="wp-block-heading">2.1 基本書式</h4>



<ul class="wp-block-list">
<li><code>$name</code>：変数が存在しない場合、<code>$name</code> をそのまま出力</li>



<li><code>$!name</code>：<strong>サイレント出力</strong>。変数が無ければ空文字を出力。画面に <code>$xxx</code> が出るのを防ぐため推奨</li>



<li>推奨記法：<strong><code>${name}</code></strong>（波括弧で変数範囲を明確に）</li>
</ul>



<h4 class="wp-block-heading">2.2 境界に関する注意例</h4>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#set($name = "hello")</span>
$namehello     × $namehello という変数として解釈され見つからない
${name}hello   √ $name を展開した後 hello を連結、正しく動作</code></span></pre>


<h3 class="wp-block-heading">3. 1行コメント <code>##</code></h3>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">## ここはコメント。最終的な画面に出力されない</span>
<span class="hljs-comment">#set($name = "test") ## 行末にコメントを書くことも可能</span></code></span></pre>


<ol class="wp-block-list">
<li>コメント内容は<strong>レンダリング結果に出力されません</strong>；</li>



<li>ブラウザでページソースを表示しても<strong>コメントは見えません</strong>（テンプレートエンジン側で破棄される）。</li>
</ol>



<h3 class="wp-block-heading">4. #set で利用できる代入の種類</h3>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">## 文字列代入</span>
<span class="hljs-comment">#set($name = "hello world")</span>

<span class="hljs-comment">## 変数を別変数へ代入</span>
<span class="hljs-comment">#set($obj= $name)</span>

<span class="hljs-comment">## オブジェクトプロパティへ代入</span>
<span class="hljs-comment">#set($obj.Friend = "monica")</span>
<span class="hljs-comment">#set($obj.Blame = $whitehouse.Leak)</span>

<span class="hljs-comment">## メソッド呼び出し戻り値を代入</span>
<span class="hljs-comment">#set($obj.Plan = $spindoctor.weave($web))</span>

<span class="hljs-comment">## 数値代入</span>
<span class="hljs-comment">#set($obj.Number = 123)</span>

<span class="hljs-comment">## 配列代入</span>
<span class="hljs-comment">#set($obj.Say = &#91;"Not", $my, "fault"])</span></code></span></pre>


<h3 class="wp-block-heading">5. 変数が存在しない場合の特殊仕様</h3>


<pre class="wp-block-code"><span><code class="hljs language-php">$sadfsdfsd</code></span></pre>


<p class="wp-block-paragraph">テンプレートエンジンが変数を解決できないとき：</p>



<ul class="wp-block-list">
<li>通常記法 <code>$sadfsdfsd</code>：そのまま文字列 <code>$sadfsdfsd</code> を出力</li>



<li><code>$!sadfsdfsd</code> の場合：変数無しなら空文字を出力</li>
</ul>



<p class="wp-block-paragraph">テンプレート内で変数を設定する</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/14/%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e5%86%85%e3%81%a7%e5%a4%89%e6%95%b0%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>基本テンプレート構文</title>
		<link>https://www.foxdevelop.com/ja/2026/08/14/%e5%9f%ba%e6%9c%ac%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e6%a7%8b%e6%96%87/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/14/%e5%9f%ba%e6%9c%ac%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e6%a7%8b%e6%96%87/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 02:23:52 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=8415</guid>

					<description><![CDATA[一、エンティティオブジェクトをテンプレートへ渡す 1. Pa ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">一、エンティティオブジェクトをテンプレートへ渡す</h3>



<h4 class="wp-block-heading">1. PageInfoエンティティクラス</h4>



<p class="wp-block-paragraph">これまでは単純な文字列だけ渡していましたが、効率が悪く保守も大変です。エンティティクラスにデータをまとめることでコードが読みやすくなります。</p>


<pre class="wp-block-code"><span><code class="hljs language-cs"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">PageInfo</span>
{
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">bool</span> IsShowImage;
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">bool</span> IsShowImage1
    {
        <span class="hljs-keyword">get</span> { <span class="hljs-keyword">return</span> IsShowImage; }
        <span class="hljs-keyword">set</span> { IsShowImage = <span class="hljs-keyword">value</span>; }
    }
}</code></span></pre>


<ul class="wp-block-list">
<li>プライベートフィールド<code>IsShowImage</code>、公開プロパティ<strong><code>IsShowImage1</code></strong>で外部へ公開</li>



<li>テンプレートからのアクセス：<code>$info.IsShowImage1</code></li>
</ul>



<h4 class="wp-block-heading">2. コンテキストへデータをセット</h4>


<pre class="wp-block-code"><span><code class="hljs language-cs"><span class="hljs-comment">//テンプレートコンテキストコンテナ</span>
IContext context = <span class="hljs-keyword">new</span> VelocityContext();

PageInfo pi = <span class="hljs-keyword">new</span> PageInfo();
pi.IsShowImage1 = <span class="hljs-literal">true</span>;

<span class="hljs-comment">//オブジェクトpiをキー名infoでコンテキストに格納</span>
context.Put(<span class="hljs-string">"info"</span>,pi);

<span class="hljs-comment">//文字列変数の例</span>
context.Put(<span class="hljs-string">"infotitle"</span>,<span class="hljs-string">"こんにちは"</span>);</code></span></pre>


<p class="wp-block-paragraph"><code>context.Put("キー名",データ)</code>：テンプレートへデータを渡し、テンプレート側は<code>$キー名</code>で取得します。</p>



<h3 class="wp-block-heading">二、Velocityテンプレートの基本構文</h3>



<h4 class="wp-block-heading">1. ディレクティブ記号 <code>#</code></h4>



<p class="wp-block-paragraph"><code>#</code>から始まる記述がディレクティブです。よく使うもの：<br><code>#if</code>、<code>#else</code>、<code>#end</code>、<code>#foreach</code>、<code>#set</code>、<code>#include</code></p>



<p class="wp-block-paragraph">条件分岐の例：</p>



<p class="wp-block-paragraph">2枚の画像を用意し、サイトルート配下のContents/Imagesへ配置します。IsShowImage1の値を切り替えて表示画像を変更します。</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#if($info.IsShowImage1)</span>
    &lt;img src=<span class="hljs-string">"./Contents/Images/a.gif"</span> /&gt;
<span class="hljs-comment">#else</span>
    &lt;img src=<span class="hljs-string">"./Contents/Images/b.gif"</span> /&gt;
<span class="hljs-comment">#end</span></code></span></pre>


<p class="wp-block-paragraph">ロジック：<code>IsShowImage1=true</code>のときa.gifを表示、それ以外はb.gifを表示</p>



<h4 class="wp-block-heading">2. 変数記号 <code>$</code></h4>



<ul class="wp-block-list">
<li><code>$変数名</code>：変数の値を出力</li>



<li><code>${変数名}</code>：<strong>変数範囲の明示</strong>（重要！）</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">利用シーン：変数直後に文字が続く場合、エンジンが変数名の区切りを判別できなくなる</p>
</blockquote>


<pre class="wp-block-code"><span><code class="hljs language-php">誤った書き方：$infotitlefoxdevelop.com
エンジンは変数名を infotitlefoxdevelop と認識し存在しない扱いになります。

正しい書き方：${infotitle}foxdevelop.com
infotitleを変数として解釈し、後ろにfoxdevelop.comの文字列を連結</code></span></pre>


<h4 class="wp-block-heading">3. サイレント出力修飾子 <code>!</code> → <code>$!変数名</code></h4>



<p class="wp-block-paragraph">既定動作：変数が存在しない場合、ページに<code>$変数名</code>がそのまま出力されます<br><code>$!変数名</code>：変数が無い、またはnullのとき何も出力せず、$記号も表示しません</p>



<p class="wp-block-paragraph">比較例：</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>記述</th><th>変数有り(値=&#8221;こんにちは&#8221;)</th><th>変数無し</th></tr></thead><tbody><tr><td><code>$infotitle</code></td><td>こんにちは</td><td><code>$infotitle</code></td></tr><tr><td><code>$!infotitle</code></td><td>こんにちは</td><td>（何も表示しない）</td></tr><tr><td><code>${infotitle}</code></td><td>こんにちは</td><td><code>${infotitle}</code></td></tr><tr><td><code>$!{infotitle}</code></td><td>こんにちは</td><td>何も表示しない</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">完全なテストコード：</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">${infotitle}foxdevelop.com <span class="hljs-tag">&lt;<span class="hljs-name">br</span>/&gt;</span>
$!infotitlefoxdevelop.com <span class="hljs-tag">&lt;<span class="hljs-name">br</span>/&gt;</span>
$infotitle <span class="hljs-tag">&lt;<span class="hljs-name">br</span>/&gt;</span>
$!infotitle <span class="hljs-tag">&lt;<span class="hljs-name">br</span>/&gt;</span></code></span></pre>


<h3 class="wp-block-heading">まとめ</h3>



<ol class="wp-block-list">
<li>変数の後に文字列を連結するときは必ず <code>${変数}</code> で囲む</li>



<li>運用環境では <code>$!{変数名}</code> を優先して使い、null時に<code>$xxx</code>が出力されレイアウトが崩れるのを防ぐ</li>



<li><code>#if</code>で真偽値プロパティを判定するときは<code>#if($info.IsShowImage1)</code>と記述、<code>==true</code>は不要</li>
</ol>



<p class="wp-block-paragraph">基本テンプレート構文</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/14/%e5%9f%ba%e6%9c%ac%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e6%a7%8b%e6%96%87/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>NVelocity 概要</title>
		<link>https://www.foxdevelop.com/ja/2026/08/01/nvelocity-%e6%a6%82%e8%a6%81/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/01/nvelocity-%e6%a6%82%e8%a6%81/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Sat, 01 Aug 2026 12:42:17 +0000</pubDate>
				<category><![CDATA[NVelocity チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7127</guid>

					<description><![CDATA[.NETプラットフォーム向けテンプレートエンジンで、Java ...]]></description>
										<content:encoded><![CDATA[<p>.NETプラットフォーム向けテンプレートエンジンで、JavaプラットフォームのVelocityを.NETへ移植したものです。</p>


<h4 class="wp-block-heading">概要</h4>



<p class="wp-block-paragraph">ASP.NETプロジェクトで広く利用されています；<br>ASP.NET MVCにはRazorテンプレートが標準搭載；</p>



<p class="wp-block-paragraph">従来の <code>.aspx</code> ページプロジェクトにMVCモデルを導入したい場合、多くの開発者がNVelocityを選択します。</p>



<p class="wp-block-paragraph">NVelocityはすでに保守が停止されており、古い.NET Frameworkのレガシープロジェクトでのみ使用します。新規プロジェクトではRazorやHandlebars.NETなど最新のテンプレートエンジンを優先してください。</p>



<p class="wp-block-paragraph">.NET Frameworkとバージョンの対応一覧</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>.NET Framework バージョン</th><th>NVelocity バージョン</th></tr></thead><tbody><tr><td>.NET 4.0</td><td>1.0（公式最新版）</td></tr><tr><td>.NET 2.0</td><td>0.5</td></tr><tr><td>.NET 1.0</td><td>0.48</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Velocityは古くから存在するJavaテンプレートエンジンで、<code>#</code>、<code>$</code> をテンプレート記号とする簡潔な文法が特徴です。NVelocityはこの文法を完全に移植しています；</p>



<h4 class="wp-block-heading">ダウンロード</h4>



<p class="wp-block-paragraph">公式リポジトリの最終更新は2018年、最新バージョンは1.2.0です</p>



<p class="wp-block-paragraph">下記リンクからソースコードを取得できます</p>



<p class="wp-block-paragraph">オープンソースでGitHubで公開されています <a href="https://github.com/castleproject/NVelocity/tree/master">castleproject/NVelocity: Castle&#8217;s NVelocity</a></p>



<p class="wp-block-paragraph">公式配布ファイルにはコンパイル済みDLLは含まれません。ダウンロード後自身でビルドするか、プロジェクトをソリューションに直接取り込んでください。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="397" height="269" src="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-13.png" alt="" class="wp-image-7081" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-13.png 397w, https://www.foxdevelop.com/wp-content/uploads/2026/08/image-13-300x203.png 300w" sizes="(max-width: 397px) 100vw, 397px" /></figure>



<p class="wp-block-paragraph">Visual Studioでslnソリューションファイルを開く</p>



<p class="wp-block-paragraph">最終リリース版は.NET Core 2.1向けに作成されています。.NET 4.8へアップグレードすることを推奨します</p>



<p class="wp-block-paragraph">ビルド完了後、出力フォルダ内にDLLファイルが生成されます</p>



<figure class="wp-block-image size-full"><img decoding="async" width="372" height="76" src="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-14.png" alt="" class="wp-image-7082" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-14.png 372w, https://www.foxdevelop.com/wp-content/uploads/2026/08/image-14-300x61.png 300w" sizes="(max-width: 372px) 100vw, 372px" /></figure>



<p class="wp-block-paragraph">作成したNVelocity.dllをほかのASP.NET Webプロジェクトに参照追加します。</p>



<h4 class="wp-block-heading">プロジェクト導入</h4>



<p class="wp-block-paragraph">プロジェクトにアセンブリを参照：NVelocity.dll<br>長所：このテンプレートエンジンを利用すると、サイトのテーマ切り替え（スキン変更）を簡単に実装可能</p>



<p class="wp-block-paragraph">サイトルートにThemesフォルダを作成し、すべてのテンプレートのルートディレクトリとします<br>Themes内に複数のテーマフォルダを作成します。例：</p>



<p class="wp-block-paragraph">サイトルートにThemesフォルダを作成し、テーマ保存用ディレクトリとする</p>



<h4 class="wp-block-heading">テーマディレクトリ</h4>



<p class="wp-block-paragraph">defaultフォルダを作成し標準テンプレートとします<br>後からThemes/blue、Themes/darkなど複数のテーマを追加できます</p>


<pre class="wp-block-code"><span><code class="hljs language-php">サイトルート
└── Themes
    ├── <span class="hljs-keyword">default</span>      <span class="hljs-comment"># 標準テーマのテンプレート</span>
    ├── dark         <span class="hljs-comment"># ダークテーマのテンプレート</span>
    └── blue         <span class="hljs-comment"># ブルーテーマのテンプレート</span></code></span></pre>


<p class="wp-block-paragraph">実行時に設定から有効なテーマ名を読み込み、NVelocityが対応するテーマフォルダのテンプレートを読み込みます；<br>テーマ切り替えの仕組み：設定の参照先フォルダを変更するだけで、業務ロジックのコード修正は不要；<br>古いASP.NET WebForm（aspx）プロジェクトのフロントテーマ切り替えに適しています。</p>



<h4 class="wp-block-heading">aspx</h4>



<p class="wp-block-paragraph">サイトルートに <code>Register.aspx</code> を新規作成し、デモ用ページとします。</p>



<p class="wp-block-paragraph"><code>Themes/default</code> 配下に <code>register.htm</code> テンプレートファイルを作成。こちらがNVelocityテンプレートでHTMLとVelocity文法を記述します</p>



<p class="wp-block-paragraph"><code>Register.aspx</code> を開き、<strong>ページディレクティブのみ残し</strong>、その他すべてのHTMLを削除します：</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">%@</span> <span class="hljs-attr">Page</span> <span class="hljs-attr">Language</span>=<span class="hljs-string">"C#"</span> <span class="hljs-attr">AutoEventWireup</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">CodeBehind</span>=<span class="hljs-string">"Register.aspx.cs"</span> <span class="hljs-attr">Inherits</span>=<span class="hljs-string">"NVelocityStudy.Web.Register"</span> %&gt;</span></code></span></pre>


<p class="wp-block-paragraph">aspxファイルは画面描画を行わずエントリーポイントの役割のみを担い、裏側のコードがNVelocityを呼び出し <code>register.htm</code> を読み込んでHTMLを出力します。</p>


<pre class="wp-block-code"><span><code class="hljs language-css">サイトルート
├─ <span class="hljs-selector-tag">Register</span><span class="hljs-selector-class">.aspx</span>          # アクセス入口
├─ <span class="hljs-selector-tag">Register</span><span class="hljs-selector-class">.aspx</span><span class="hljs-selector-class">.cs</span>       # サーバーサイドロジック
└─ <span class="hljs-selector-tag">Themes</span>
    └─ <span class="hljs-selector-tag">default</span>
        └─ <span class="hljs-selector-tag">register</span><span class="hljs-selector-class">.htm</span>   # <span class="hljs-selector-tag">NVelocity</span>テンプレートファイル</code></span></pre>


<p class="wp-block-paragraph">続いて <code>Register.aspx.cs</code> にコードを記述し、現在のテーマの <code>register.htm</code> を読み込み、モデルデータを渡して最終的なHTMLを生成します</p>



<p class="wp-block-paragraph">テーマを切り替える際は参照先のディレクトリ設定を変更するだけで、対応フォルダの <code>register.htm</code> が読み込まれます</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="325" height="357" src="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-15.png" alt="" class="wp-image-7083" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/08/image-15.png 325w, https://www.foxdevelop.com/wp-content/uploads/2026/08/image-15-273x300.png 273w" sizes="auto, (max-width: 325px) 100vw, 325px" /></figure>



<h4 class="wp-block-heading">aspx.cs</h4>



<p class="wp-block-paragraph">サーバーコードファイル <code>Register.aspx.cs</code> を開き、<strong>Page_Load</strong> メソッド内にNVelocity描画処理を記述し、ページ読み込み時にテンプレートを解析・出力します。</p>


<pre class="wp-block-code"><span><code class="hljs language-cs"><span class="hljs-keyword">using</span> System;
<span class="hljs-keyword">using</span> System.Collections.Generic;
<span class="hljs-keyword">using</span> System.Web;
<span class="hljs-keyword">using</span> System.Web.UI;
<span class="hljs-keyword">using</span> System.Web.UI.WebControls;

<span class="hljs-keyword">namespace</span> <span class="hljs-title">NVelocityStudy.Web</span>
{
    <span class="hljs-keyword">public</span> <span class="hljs-keyword">partial</span> <span class="hljs-keyword">class</span> <span class="hljs-title">Register</span> : <span class="hljs-title">System</span>.<span class="hljs-title">Web</span>.<span class="hljs-title">UI</span>.<span class="hljs-title">Page</span>
    {
        <span class="hljs-function"><span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">Page_Load</span>(<span class="hljs-params"><span class="hljs-keyword">object</span> sender, EventArgs e</span>)</span>
        {
            <span class="hljs-comment">// NVelocityでテンプレートを読み込み描画するコードを記述</span>
        }
    }
}</code></span></pre>


<p class="wp-block-paragraph">Page_Load内に下記コードを追加します</p>


<pre class="wp-block-code"><span><code class="hljs language-cs"><span class="hljs-function"><span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">Page_Load</span>(<span class="hljs-params"><span class="hljs-keyword">object</span> sender, EventArgs e</span>)</span>
{
    <span class="hljs-comment">//手順1 VelocityEngineインスタンス作成</span>
    VelocityEngine ve = <span class="hljs-keyword">new</span> VelocityEngine();

    <span class="hljs-comment">//手順2 エンジン設定初期化</span>
    ExtendedProperties pros = <span class="hljs-keyword">new</span> ExtendedProperties();
    pros.AddProperty(RuntimeConstants.RESOURCE_LOADER, <span class="hljs-string">"file"</span>); <span class="hljs-comment">//ファイルからテンプレート読み込み</span>
    pros.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, Server.MapPath(<span class="hljs-string">@""</span>)); <span class="hljs-comment">//テンプレートルートパス</span>
    ve.Init(pros); <span class="hljs-comment">//設定を適用し初期化</span>

    <span class="hljs-comment">//手順3 テンプレートファイル読み込み</span>
    Template template = ve.GetTemplate(<span class="hljs-string">"themes/default/register.htm"</span>);

    <span class="hljs-comment">//手順4 コンテキスト作成、テンプレートに変数受け渡し</span>
    IContext context = <span class="hljs-keyword">new</span> VelocityContext();
    context.Put(<span class="hljs-string">"websiteName"</span>, <span class="hljs-string">"FoxDevelop"</span>);
    context.Put(<span class="hljs-string">"domainName"</span>, <span class="hljs-string">"foxdevelop.com"</span>);

    <span class="hljs-comment">//手順5 テンプレートとデータを結合しHTML描画</span>
    StringWriter writer = <span class="hljs-keyword">new</span> StringWriter();
    template.Merge(context, writer); <span class="hljs-comment">//描画結果をwriterへ保存</span>

    <span class="hljs-comment">//手順6 画面出力</span>
    Response.Write(writer.ToString().Replace(<span class="hljs-string">"\r\n"</span>, <span class="hljs-string">"&lt;br/&gt;"</span>));
}</code></span></pre>


<p class="wp-block-paragraph">このコードはHTMLテンプレートを読み込み変数を作成し、テンプレート内のプレースホルダーを置換する処理です</p>



<ol class="wp-block-list">
<li><strong>VelocityEngineのインスタンス生成</strong> 独立したエンジンオブジェクト。グローバル静的 <code>Velocity.Init()</code> と違い、複数の独立設定を利用可能。</li>



<li><strong>エンジン初期化と設定</strong></li>
</ol>



<ul class="wp-block-list">
<li><code>RESOURCE_LOADER=file</code>：ローカルファイルからテンプレートを読み込む指定；</li>



<li><code>FILE_RESOURCE_LOADER_PATH</code>：テンプレート検索のルートパス設定；</li>



<li><code>ve.Init(pros)</code>：設定を読み込み初期化を実行。</li>
<!-- /wp:post-content --></ul>
<!-- /wp:list -->

<!-- wp:list {"ordered":true,"start":3} -->
<ol start="3" class="wp-block-list"><!-- wp:list-item -->
<li><strong>テンプレート読み込み <code>GetTemplate()</code></strong> 設定されたルートパスを基に <code>themes/default/register.htm</code> を読み込みます。</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>VelocityContext データコンテキスト</strong><code>context.Put(キー, 値)</code> でC#変数をテンプレートに渡し、htmファイル内で<code>$websiteName</code>、<code>$domainName</code> と記述し取得します。</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>テンプレートMerge描画</strong><code>template.Merge(コンテキスト, 出力ストリーム)</code> 変数を埋め込み完全なHTML文字列を作成。<code>StringWriter</code> に描画後のテキストを保持します。</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Response出力</strong> 完成したHTMLをブラウザへ送信；<code>Replace("\r\n","&lt;br/&gt;")</code>：ソースの改行記号をHTML改行タグへ変換。</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">htmテンプレート</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>テーマフォルダ内の<code>register.htm</code>を編集します</p>
<!-- /wp:paragraph -->

<!-- wp:code {"language":"xml"} -->
<pre class="wp-block-code"><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
    &lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    サイト：$websiteName &lt;br /&gt;
    ドメイン：$domainName
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>上記の$xxxxxxxはPage_Loadで定義した変数のプレースホルダーで、描画時に対応する値に置き換わります。</p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol class="wp-block-list"><!-- wp:list-item -->
<li><strong>変数記法 <code>$変数名</code></strong> <code>$websiteName</code>、<code>$domainName</code> はNVelocity(VTL)の変数文法です。コード内 <code>context.Put("websiteName", "FoxDevelop")</code> で値を設定すると、描画時に自動的に置換されます：</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li><code>$websiteName</code> → <code>FoxDevelop</code></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><code>$domainName</code> → <code>foxdevelop.com</code></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>実行結果</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>サイト：FoxDevelop
ドメイン：foxdevelop.com</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>NVelocity 概要</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/01/nvelocity-%e6%a6%82%e8%a6%81/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
