<?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>スタイルガイド  &#8211;  ConquestArrow.com</title>
	<atom:link href="https://conquestarrow.com/tag/%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89/feed/" rel="self" type="application/rss+xml" />
	<link>https://conquestarrow.com</link>
	<description></description>
	<lastBuildDate>Wed, 05 Sep 2018 17:25:26 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://conquestarrow.com/wp-content/uploads/2018/05/cropped-logo-32x32.png</url>
	<title>スタイルガイド  &#8211;  ConquestArrow.com</title>
	<link>https://conquestarrow.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>UE4のBP内で「_(アンダーバー)」を使うべきではない理由</title>
		<link>https://conquestarrow.com/do-not-use-underbar-in-blueprint-graph/</link>
					<comments>https://conquestarrow.com/do-not-use-underbar-in-blueprint-graph/#disqus_thread</comments>
		
		<dc:creator><![CDATA[Conquest Arrow]]></dc:creator>
		<pubDate>Wed, 11 Jul 2018 14:54:48 +0000</pubDate>
				<category><![CDATA[Blueprint]]></category>
		<category><![CDATA[Gamemakin UE4スタイルガイド]]></category>
		<category><![CDATA[UE4]]></category>
		<category><![CDATA[スタイルガイド]]></category>
		<guid isPermaLink="false">https://conquestarrow.com/?p=345</guid>

					<description><![CDATA[BP内のグラフ・関数・変数の名前には「_(アンダーバー)」は使うべきではない。これらを使用すると見た目上の区別がつかなくなり混乱とバグを生むからだ。 目次 間違い探しに挑戦！答え合わせなんでこんなことがおきるのか？問題が [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>BP内のグラフ・関数・変数の名前には「<code>_</code>(アンダーバー)」は使うべきではない。これらを使用すると見た目上の区別がつかなくなり混乱とバグを生むからだ。</p>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"><li><a href="#toc1" tabindex="0">間違い探しに挑戦！</a><ul><li><a href="#toc2" tabindex="0">答え合わせ</a></li></ul></li><li><a href="#toc3" tabindex="0">なんでこんなことがおきるのか？</a></li><li><a href="#toc4" tabindex="0">問題が起きる条件</a><ul><li><a href="#toc5" tabindex="0">語頭（プレフィックス）に「_」</a></li><li><a href="#toc6" tabindex="0">語尾（ポストフィックス）に「_」</a></li><li><a href="#toc7" tabindex="0">大文字が続かない場合の語中の「_」</a></li><li><a href="#toc8" tabindex="0">余談：単語の区切りに「　(スペース)」</a></li></ul></li><li><a href="#toc9" tabindex="0">まとめ</a></li></ul>
    </div>
  </div>

<h2><span id="toc1">間違い探しに挑戦！</span></h2>
<p>まずは次のグラフを見てほしい。</p>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/07/NoUnderbarNodes.png" alt="間違い探しノード" /></p>
<p>A,B,C,Dの４つのブロック（関数ノード、Get変数ノードの組）がある。A,B,C,Dはすべて異なるノードで構成されている。さて、どの辺が違うのかよく見てほしい。</p>
<p>分かった人は次へ。分からない人も次へ。</p>
<p><span id="more-345"></span></p>
<h3><span id="toc2">答え合わせ</span></h3>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/07/NoUnderbar_Answer.png" alt="答え合わせ" /></p>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/07/NoUnderbar_MyBlueprint.png" alt="MyBlueprintタブでのリスト" /></p>
<div class="scrollable-table"><table>
<thead>
<tr>
<th>ブロック</th>
<th>関数ノード名</th>
<th>Get変数ノード名</th>
</tr>
</thead>
<tbody>
<tr>
<td>A</td>
<td>MyFunction</td>
<td>MyVar</td>
</tr>
<tr>
<td>B</td>
<td>_MyFunction</td>
<td>_MyVar</td>
</tr>
<tr>
<td>C</td>
<td>MyFunction_</td>
<td>MyVar_</td>
</tr>
<tr>
<td>D</td>
<td>My_Function</td>
<td>My_Var</td>
</tr>
</tbody>
</table></div>
<ul>
<li>Aは特に <code>_</code> を使用していない</li>
<li>Bは語頭に <code>_</code> を使用。関数ノード名でスペースが多いことに気が付いた人もいるだろう。</li>
<li>Cは語尾に <code>_</code> を使用</li>
<li>Dは単語の区切りに <code>_</code> を使用</li>
</ul>
<p>おそらく大半の人がBの関数ノード以外の違いを見分けられなかっただろう。</p>
<h2><span id="toc3">なんでこんなことがおきるのか？</span></h2>
<p>グラフエディタ上では<code>_</code>はスペースに変換される、という機能があるため。</p>
<p>元々UE4では名前の命名規則は<a href="https://wa3.i-3-i.info/word13955.html">PascalCase<span class="fa fa-share-square external-icon anchor-icon"></span></a>が採用されている。</p>
<a rel="noopener" href="https://wa3.i-3-i.info/word13955.html" title="https://wa3.i-3-i.info/word13955.html" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://s0.wordpress.com/mshots/v1/https%3A%2F%2Fwa3.i-3-i.info%2Fword13955.html?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">https://wa3.i-3-i.info/word13955.html</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=wa3.i-3-i.info" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">wa3.i-3-i.info</div></div></div></div></a>
<p>このPascalCaseを一般的な英文にして読みやすくするために単語の区切りに自動的にスペースを表示してくれる、というのがBPなどのグラフエディタの便利機能としてある。この時、略字と単語が続く（例：<code>XMLAndHTML</code>）時などにどこからが区切りかわからないために区別がつくように<code>_</code>で単語の区切りを示す書き方があり（例：<code>XML_AndHTML</code>）、この書き方にも対応したために<code>_</code>をスペースに表示する機能になった、と思われる。</p>
<p>なので本来はこれは便利な機能のはずなのだ。</p>
<h2><span id="toc4">問題が起きる条件</span></h2>
<p>見た目でスペースと区別がつかない、という問題が起きる条件は次になる。</p>
<h3><span id="toc5">語頭（プレフィックス）に「_」</span></h3>
<p>テキスト系のスクリプト言語ではグローバルな変数とローカルな変数の名前被りを避け、ローカルであることを明示するために語頭(プレフィックス)に<code>_</code>を付けるルールを設けていることがしばしばある（JavaScriptやPythonなど）。</p>
<p>その感覚でローカルな関数や変数名の頭に<code>_</code>を付けてしまうと、グローバルなものと区別がつかない、という残念なことが起きる。</p>
<div class="comment-box">
本来、グラフ上でグローバル・ローカルの見た目に差がつけばよいと思うのだが、BPのグラフエディタ上ではノードの見た目で区別がつかない残念、、、
</div>
<h3><span id="toc6">語尾（ポストフィックス）に「_」</span></h3>
<p>語頭の場合と異なり意識的につける文化などはないので大きく問題にはなりがちではないが、区別のつかなさでは語頭にあるよりも凶悪でまったく区別がつかない。</p>
<p>語頭にある場合、スペースの幅分でかろうじてわかることもあるが、語尾は無理！<br />
混乱の危険性ではよりこちらのほうが上である。</p>
<h3><span id="toc7">大文字が続かない場合の語中の「_」</span></h3>
<p>前述の通り、 <strong>略字などで単語の区切りなのに大文字が続く場合を除いて</strong> 、語中、特に単語の区切りに<code>_</code>を入れては全く区別がつかなくなる。</p>
<h3><span id="toc8">余談：単語の区切りに「　(スペース)」</span></h3>
<p><code>_</code>ではないが、自動でスペースが入力される位置にスペースを入力するのも危険。<br />
UE4のBPのグラフ・関数・変数名にはスペースが入れられるためにこれも併せて要注意。</p>
<h2><span id="toc9">まとめ</span></h2>
<ul>
<li>BPのグラフ・関数・変数名で次は危険なので避ける
<ul>
<li>語頭（プレフィックス）に「<code>_</code>」</li>
<li>語尾（ポストフィックス）に「<code>_</code>」</li>
<li>大文字が続かない場合の語中の「<code>_</code>」</li>
<li>単語の区切りに「　(スペース)」</li>
</ul>
</li>
</ul>
<p><a href="https://github.com/akenatsu/ue4-style-guide/blob/master/README.jp.md#bp-vars">Gamemakin UE4スタイルガイド<span class="fa fa-share-square external-icon anchor-icon"></span></a>にもこの辺は書いていないので要注意。<br />
新しく始めるプロジェクトでは是非このルールを採用してほしい。</p>
<a rel="noopener" href="https://github.com/akenatsu/ue4-style-guide/blob/master/README.jp.md#bp-vars" title="akenatsu/ue4-style-guide" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://opengraph.githubassets.com/394c8994094e107d1f0f94bd8af5d29ed466e9a428921d7dfb2f9765567ca760/akenatsu/ue4-style-guide" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">akenatsu/ue4-style-guide</div><div class="blogcard-snippet external-blogcard-snippet">An attempt to make Unreal Engine 4 projects more consistent - akenatsu/ue4-style-guide</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=github.com" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>
]]></content:encoded>
					
					<wfw:commentRss>https://conquestarrow.com/do-not-use-underbar-in-blueprint-graph/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>現役GDが考えるUE4ブループリントのきれいな書き方</title>
		<link>https://conquestarrow.com/ue4-beautiful-blueprint-style/</link>
					<comments>https://conquestarrow.com/ue4-beautiful-blueprint-style/#disqus_thread</comments>
		
		<dc:creator><![CDATA[Conquest Arrow]]></dc:creator>
		<pubDate>Mon, 25 Jun 2018 17:56:43 +0000</pubDate>
				<category><![CDATA[Blueprint]]></category>
		<category><![CDATA[Gamemakin UE4スタイルガイド]]></category>
		<category><![CDATA[UE4]]></category>
		<category><![CDATA[スタイルガイド]]></category>
		<guid isPermaLink="false">https://conquestarrow.com/?p=161</guid>

					<description><![CDATA[はじめに UE4のブループリント（以下、BP）はビジュアルスクリプティング言語1と呼ばれるグラフィカルなプログラミング言語である。 ビジュアルスクリプティング言語はテキストベースのスクリプティング言語に比べて歴史が浅く、 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>はじめに</h1>
<p>UE4のブループリント（以下、BP）はビジュアルスクリプティング言語<sup id="fnref-161-visualscripting"><a href="#fn-161-visualscripting" class="footnote-ref" role="doc-noteref">1</a></sup>と呼ばれるグラフィカルなプログラミング言語である。</p>
<p>ビジュアルスクリプティング言語はテキストベースのスクリプティング言語に比べて歴史が浅く、言語ごとに特性も大きく変わることなどから「こう書くべき」というノウハウがあまり溜まっていない。また、UE4のBPはゲームデザイナーやアーティストなどのノンプログラマ向けに作られた経緯もあることから、使用者が書き方・スタイルガイドへの意識やノウハウが少ない。</p>
<blockquote class="twitter-tweet" data-lang="ja">
<p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/UE4?src=hash&amp;ref_src=twsrc%5Etfw">#UE4<span class="fa fa-share-square external-icon anchor-icon"></span></a> のBlueprintはとても良いんだけど、文字通りスパゲッティ化しやすいという欠点も。スタイルフォーマッター的なツールがない ＆ 主に使うノンプログラマはノウハウ持ってない ＆ 見やすいスタイルが固まってない などが理由。</p>
<p>&mdash; K. S. (@ConquestArrow) <a href="https://twitter.com/ConquestArrow/status/856535445429116929?ref_src=twsrc%5Etfw">2017年4月24日<span class="fa fa-share-square external-icon anchor-icon"></span></a></p></blockquote>
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>結果以下のような問題をBPは抱えている；</p>
<ul>
<li>👎ノードをつなぐワイヤーのスパゲッティ化
<ul>
<li>見て理解するのが困難になり生産性が落ちる</li>
<li>問題のある処理を見逃しがちになる</li>
</ul>
</li>
<li>👎ワイヤー繋げなおしの手間がかかることによる処理の移植のしにくさ</li>
<li>👎一画面に処理が収まりきらず処理を理解するために画面スクロール・ズームを多用せざるを得ない
<ul>
<li>UE4のエディタは一般的にDual Displayだと足りないといわれる一因</li>
</ul>
</li>
</ul>
<p>以下紹介する書き方は上記問題を解決し、不具合を防止し生産性を上げるBPの書き方のノウハウになる。</p>
<div class="information-box">
<p>なお、以下に記載以外は原則 <span class="badge badge-blue">出典</span><br />
<a href="https://github.com/akenatsu/ue4-style-guide/blob/master/README.jp.md">Gamemakin UE4スタイルガイド<span class="fa fa-share-square external-icon anchor-icon"></span></a> に従うのが良い。</p>
<a rel="noopener" href="https://github.com/akenatsu/ue4-style-guide/blob/master/README.jp.md" title="akenatsu/ue4-style-guide" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://opengraph.githubassets.com/394c8994094e107d1f0f94bd8af5d29ed466e9a428921d7dfb2f9765567ca760/akenatsu/ue4-style-guide" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">akenatsu/ue4-style-guide</div><div class="blogcard-snippet external-blogcard-snippet">An attempt to make Unreal Engine 4 projects more consistent - akenatsu/ue4-style-guide</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=github.com" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>
</div>
<div class="comment-box">もし、一度もUE4スタイルガイドを見たことがない場合は一度目を通しておくべき。分量がかなりあるのでBPの項目だけでも良い</div>

  <div id="toc" class="toc tnt-none toc-center tnt-none border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ul class="toc-list open"></li><li><a href="#toc1" tabindex="0">基本単位は実行ピンのあるノード単位でまとめ、まっすぐに並べる</a></li><li><a href="#toc2" tabindex="0">実行ピン付ノードの下に実行ピン無しのノードを積み重ねる</a><ul><li><a href="#toc3" tabindex="0">同じ基本単位のノード群は左端でそろえる</a></li><li><a href="#toc4" tabindex="0">実行ピン付ノード引数の順番とノードの積み重ね順を合わせる</a></li><li><a href="#toc5" tabindex="0">ノードの入力ピンが多い場合はノード２つ分の幅を使って並べる</a></li></ul></li><li><a href="#toc6" tabindex="0">入出力ピンから伸びるワイヤーを一本に絞る</a><ul><li><a href="#toc7" tabindex="0">基本単位内で使うものは基本単位内で完結するようにする</a></li><li><a href="#toc8" tabindex="0">複数本の実行ワイヤーは入力ピンにつなぐ前にRerouteノードでまとめる</a></li></ul></li><li><a href="#toc9" tabindex="0">原則、処理の結果は変数に入れ、他の処理単位にワイヤーで繋がない</a></li><li><a href="#toc10" tabindex="0">実行ワイヤーで繋いだ&#8221;行&#8221;はSequenceノードを用いて繋ぐ</a></li><li><a href="#toc11" tabindex="0">&#8220;行&#8221;の途中の折り返しはRerouteノードを使ってノードに被らないよう直線的に引く</a><ul><li><a href="#toc12" tabindex="0">ワイヤーが一つのノードにループして戻ってくる場合は上を通す</a></li></ul></li><li><a href="#toc13" tabindex="0">余談：BP以外での活用方法</a></li><li><a href="#toc14" tabindex="0">まとめ</a><ul><li><a href="#toc15" tabindex="0">ルールと目的まとめリスト</a></li><li><a href="#toc16" tabindex="0">ルールの方針まとめ</a></li></ul></li></ul>
    </div>
  </div>

<h2><span id="toc1">基本単位は実行ピンのあるノード単位でまとめ、まっすぐに並べる</span></h2>
<div class="primary-box"><span class="badge badge-red">ルール</span> 基本単位は実行ピンのあるノード単位でまとめる</div>
<p>まず、<strong>実行ピン</strong><sup id="fnref-161-execpin"><a href="#fn-161-execpin" class="footnote-ref" role="doc-noteref">2</a></sup> が入出力ピンとしてついているノードを基本の単位として考える。</p>
<p>該当するのはフロー制御ノード、イベントノード、普通の関数ノード、変数のSetノード、マクロノード、サブグラフ(折りたたみグラフ)ノード等。</p>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/829ad4739745d44dd727e51e9d72920b.png" alt="「基本単位」の基準になる実行ピン付ノードの例" /></p>
<p>BPの処理は実行ピン同時をつなぐ <strong>実行ワイヤー</strong><sup id="fnref-161-execwire"><a href="#fn-161-execwire" class="footnote-ref" role="doc-noteref">3</a></sup> をたどって処理が行われる。実行ピンの付かないノードはその意味では「脇道」なので基本的な流れを追いかけるのはこの 基本単位<sup id="fnref-161-basicblock"><a href="#fn-161-basicblock" class="footnote-ref" role="doc-noteref">4</a></sup> を追いかければよい。</p>
<div class="primary-box"><span class="badge badge-red">ルール</span> 基本単位同士をまっすぐに並べる</div>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/20973896f11ddf9dc5f2c6e4514529a4.png" alt="実行ワイヤーをまっすぐになるっように実行ピン付ノードを並べる" /></p>
<p>次に、『Gamemakin UE4スタイルガイド』<sup id="fnref-161-styleguide"><a href="#fn-161-styleguide" class="footnote-ref" role="doc-noteref">5</a></sup> を参考に実行ピン付ノード同士を直線状に並べてゆく。</p>
<p>前述のように、BPの処理は実行ピン同時をつなぐ <strong>実行ワイヤー</strong><sup id="fnref2:161-execwire"><a href="#fn-161-execwire" class="footnote-ref" role="doc-noteref">3</a></sup> をたどって処理が行われるので、これらのノードがわかりやすく整列して並んでいないと人間の理解が困難になってゆく。仮に迷路のような並び方をしていた場合、遅かれ早かれバグの温床になってしまう。</p>
<p>実行ピン付ノードをまっすぐに並べる事で、 <strong>どこを目で追いかければよいかが一発で見分けられるようにする</strong> のが目的。<br />
また、以降に記載するルールの恩恵を得るための基本的な前提となる。</p>
<ul>
<li><span class="badge badge-blue">出典</span><span class="badge badge-grey">StyleGuide 3.4.3</span> <a href="https://github.com/akenatsu/ue4-style-guide/blob/master/README.jp.md#343-%E7%99%BD%E3%81%84%E5%AE%9F%E8%A1%8C%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC%E3%82%92%E6%9C%80%E5%84%AA%E5%85%88%E3%81%AB%E3%81%99%E3%82%8B%E3%81%B9%E3%81%8D-">3.4.3 白い実行ワイヤーを最優先にするべき<span class="fa fa-share-square external-icon anchor-icon"></span></a></li>
</ul>
<h2><span id="toc2">実行ピン付ノードの下に実行ピン無しのノードを積み重ねる</span></h2>
<div class="primary-box"><span class="badge badge-red">ルール</span> 実行ピン付ノードの下に実行ピン無しのノードを積み重ねる</div>
<p>実行ピン付のノードには「実行ピンではない入力ピン」（プログラミング用語でいえば関数の引数に当たる）があることがある。<br />
そのピンへワイヤーを繋ぐ元のノードが実行ピン付でない場合は、実行ピン付ノードから位置を離すのではなくすぐ下に重ねるように隣接して設置する。</p>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/67ea63ae9555281419e5913c2eeafbf0.png" alt="ノードを重ねる" /></p>
<p>実行ピン無しノードからさらに実行ピン無しノードが繋がっている場合（例：コンポーネントの変数をGetするときなど）は、さらにその下に配置して、先がなくなるまで下に重ねてゆく。</p>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/555cf664deea5f9228adebbc5fe1adca.png" alt="実行ピンなしノードはどんどん下に重ねる" /></p>
<p>該当するのは、数値の四則演算ノードや変数のGetノード、<code>pure</code>に指定された関数(純粋関数<sup id="fnref-161-pure"><a href="#fn-161-pure" class="footnote-ref" role="doc-noteref">6</a></sup>)ノードなど。</p>
<p>実行ピン付のノードとそれ同士の繋がりを「木の幹」とすると、実行ピンの付かないノードは「木の枝葉」に当たる。<br />
<strong>木の幹と枝葉（本筋と脇道）が一目で分かるように、並べ方で区別がつくようにする</strong> のが一つ目の目的である。</p>
<p>もしこのルールに従わない場合、ワイヤーの色に差があるとはいえメインの処理の流れにみえるように配置することも可能であり、人間の理解が困難になる。</p>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/0349ddf2844f08fb1fd49ed8d416e211.png" alt="幹と枝葉の区別の付きにくい悪い例の図" /></p>
<p>二つ目の目的としては、 <strong>基本単位（実行ピン付きノード＋それから参照される実行ピン無しノード）をブロック状に一定範囲にまとめておくことで矩形選択しやすくする</strong> ことである。矩形選択しやすいということは処理の単位で動かしやすく整理しやすい、コメントノードでくくりやすい<sup id="fnref-161-commentnode"><a href="#fn-161-commentnode" class="footnote-ref" role="doc-noteref">7</a></sup>、あるいはコピーやカットなど移植がしやすいということにつながる。</p>
<p>もしこのルールに従わない場合、グラフを見やすく整理したり、リファクタリングしたり、処理を移動する際に、マウスクリックやコピーペーストなどの作業が何度も発生し、「書くのが大変」という状況になってしまう。</p>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/0f78eaec4535e210356650f24164386e.png" alt="矩形選択しにくい悪い例の図" /></p>
<div class="comment-box">BPに対してテキストベースのほうが書くスピードが速くてマシ、と思っている人は、この方法を試してもらうと大分マシになるだろう。テキストにも書き方のコツがあるように、BPなどのヴィジュアルノードベースにも「書き方」（描き方？）のコツがある。</div>
<h3><span id="toc3">同じ基本単位のノード群は左端でそろえる</span></h3>
<div class="primary-box"><span class="badge badge-red">ルール</span> 同じ基本単位（実行ピン付きノード＋それから参照される実行ピン無しノード群）のノードはその左端でそろえる</div>
<p>そろえることで <strong>基本単位<sup id="fnref2:161-basicblock"><a href="#fn-161-basicblock" class="footnote-ref" role="doc-noteref">4</a></sup>を視覚的に認識しやすくする</strong> のが目的。<br />
ただし、四端どこでもよいわけではなく左端でないといけない。</p>
<p>BPのノードは大きさが可変である。UE4エディタの表示言語を切り替えたり<sup id="fnref-161-changelang"><a href="#fn-161-changelang" class="footnote-ref" role="doc-noteref">8</a></sup>、ノードの入力欄の内容の変化、ノードの対象や属するもの（例：関数ノードの属するBPクラス名）の名称の変更などによって、いくらでも大きさが変わる。</p>
<p>そのため右端でそろえたとしてもいつでもそろわなくなる可能性があり、あまり意味がない（かけた手間が無駄になる可能性が高い）。<br />
左上が原点となるので、下に重ねるノード群も同じ左端でそろえるようにすることで <strong>ノードサイズの可変にも耐えられるようにする</strong> 。</p>
<h3><span id="toc4">実行ピン付ノード引数の順番とノードの積み重ね順を合わせる</span></h3>
<div class="primary-box"><span class="badge badge-red">ルール</span> 引数（入力ピン）が複数あるノードの場合には、そのピンにつながる先のノード群の配置も入力ピンの順番に合わせる</div>
<p><strong>順番を合わせることで理解をしやすく</strong> し、また <strong>矩形選択しやすくする</strong> のが目的。</p>
<p>一つの基本単位に関連するノードを重ねた場合など、縦に大きくなることがしばしばある。この場合、仮に入力ピンの順番と繋がった先のノード群の並びの順番がバラバラであると、どのようにつながっているのかわかりにくい。また矩形選択も関係ないノードが混ざりこむためにしにくくなる。</p>
<h3><span id="toc5">ノードの入力ピンが多い場合はノード２つ分の幅を使って並べる</span></h3>
<div class="primary-box"><span class="badge badge-red">ルール</span> ノードの入力ピンが多い場合はノード２つ分の幅を使って並べる</div>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/013b100e31520f39d6645cf44679fa8c.png" alt="入力ピンが多いノードの並び方のルールの例" /></p>
<p><strong>過剰に縦に長い基本単位ができるのを防ぐ</strong> のが目的。</p>
<div class="comment-box">
<p>なお、入力ピンの先のノードが単純でなく数珠つなぎになる場合はまとめて<code>pure</code>な関数（純粋関数）ノードにまとめることを検討する。</p>
<p><img alt="pureな関数ノードに入力ピンをまとめる" src="https://conquestarrow.com/wp-content/uploads/2018/06/082adca887b0aa86015dafc082cbcc72.png" /></p>
<p>入力ピンが多くない場合でも検討してみるとよい。</p>
</div>
<h2><span id="toc6">入出力ピンから伸びるワイヤーを一本に絞る</span></h2>
<div class="primary-box"><span class="badge badge-red">ルール</span> 入出力ピンから伸びるワイヤーを一本に絞る</div>
<p>１つ目の目的は <strong>スパゲッティ化の防止</strong> 。</p>
<p>特にあるノードの出力ピンから複数のノードでワイヤーが繋がっている場合、まるでタコ足配線のようにあちこちにワイヤーが繋がることになる。このような場合ワイヤーがノードと重なる可能性が高く、ワイヤーを目で追うときに邪魔になって理解がしにくくなる。また、遠く離れたノードからワイヤーを伸ばすことにもなり、画面をスクロールしないと処理が追えないという読みにくさにもつながる。</p>
<div class="alert-box">BPにおいては<strong>出力ピンに複数のワイヤーをつなげることはスパゲッティ化を招く第一歩</strong>であり、避けなければならない。</div>
<p>２つ目の目的は <strong>基本単位の移植時にワイヤーの接続情報を維持する</strong> ことである。</p>
<p>具体的には次のルールに従う。</p>
<h3><span id="toc7">基本単位内で使うものは基本単位内で完結するようにする</span></h3>
<div class="primary-box"><span class="badge badge-red">ルール</span> 基本単位内で繋ぐノードは他から繋ぐのではなく基本単位内で完結するようにそれぞれ配置して繋ぐ</div>
<p>たとえば　基本単位A　と　基本単位B　の２つの基本単位があり、ローカル変数<code>X</code>の値を参照する共通の処理があるとする。</p>
<p>この時何も考えずに思わず、<code>Get X</code>ノードからそれぞれの基本単位内のノードにつなげたくなるが、そうしてしまうとスパゲッティ化の第一歩（２本のワイヤー <strong>だけ</strong> で済むならよいが本当に将来も２本だけなのかは <em>誰にも保障できない</em> 。気が付いたらスパゲッティ化している。）につながるうえに、矩形選択時に一つだけ<code>Get X</code>ノードが漏れるため選択しにくくなってしまう。</p>
<p><iframe loading="lazy" src="https://blueprintue.com/render/vkoeor2p" scrolling="no" width="640" height="640px"></iframe></p>
<p>この例では<code>Get X</code>ノードを２つ配置し、それぞれ　基本単位A　と　基本単位B　のブロックの中に納まるように配置する。</p>
<p><iframe loading="lazy" src="https://blueprintue.com/render/3rt2ffac" scrolling="no" width="640" height="640px"></iframe></p>
<p>こうすることで <strong>将来にわたってもスパゲッティ化を起こさず</strong>、<strong>矩形選択しやすさを維持できる</strong>。</p>
<h3><span id="toc8">複数本の実行ワイヤーは入力ピンにつなぐ前にRerouteノードでまとめる</span></h3>
<div class="primary-box"><span class="badge badge-red">ルール</span> 複数本の実行ワイヤーは入力ピンにつなぐ前にRerouteノードでまとめる</div>
<p>ワイヤーを直接一つのピンにつなぐのではなく、一旦 <code>Reroute</code>ノード<sup id="fnref-161-reroute"><a href="#fn-161-reroute" class="footnote-ref" role="doc-noteref">9</a></sup> で束ねたうえで入力ピンには１本だけ繋ぐようにする。</p>
<p><iframe loading="lazy" src="https://blueprintue.com/render/gwt0my2a" scrolling="no" width="640" height="640px"></iframe></p>
<p>コピー＆ペーストやカットなどで処理を移植する際に、<code>Reroute</code>ノード込みで選択しておくことで、 <strong>ワイヤーのつながりが維持される</strong> のが目的。繋ぎなおす手間、覚えておく手間を減らし、つなぎ間違いによるケアレスミスを防止する。</p>
<p>仮に、いきなりつながったままだと移植後にワイヤーが切れてしまい、繋ぎなおす手間がかかる。また、ちゃんと覚えていられれば良いものの、つなぐ先を間違ってしまい、処理を移植したことでエンバグする恐れがある。</p>
<h2><span id="toc9">原則、処理の結果は変数に入れ、他の処理単位にワイヤーで繋がない</span></h2>
<div class="primary-box"><span class="badge badge-red">ルール</span> 原則、処理の結果は変数に入れ、他の処理単位にワイヤーで繋がない</div>
<p>「<a href="#toc6">基本単位内で使うものは基本単位内で完結するようにする</a>」のメリット、 <strong>スパゲッティ化防止・移植性の維持</strong> を得るために、原則処理結果は変数に確保し、直接ワイヤーで繋がないようにする。</p>
<p><iframe loading="lazy" src="https://blueprintue.com/render/mob6q-8w" scrolling="no" width="640" height="640px"></iframe></p>
<p><iframe loading="lazy" src="https://blueprintue.com/render/jkuj70kt" scrolling="no" width="640" height="640px"></iframe></p>
<div class="alert-box">以下は例外</div>
<ul>
<li><span class="badge badge-pink">例外</span>：
<ul>
<li>１回しか使用しない場合</li>
<li>実行ノード同士が隣接する</li>
</ul>
</li>
</ul>
<div class="comment-box">１回しか使用しないかどうか分からないからといってむやみやたらに変数に入れておく必要はない。１回しか使用せず、ワイヤーがスパゲッティ化する恐れがほとんどないなら問題ないだろう。</div>
<h2><span id="toc10">実行ワイヤーで繋いだ&#8221;行&#8221;はSequenceノードを用いて繋ぐ</span></h2>
<div class="primary-box"><span class="badge badge-red">ルール</span> 意味のある実行ピン付ノードの繋がりを&#8221;行&#8221;とみなし適宜&#8221;改行&#8221;する</div>
<p>基本単位<sup id="fnref3:161-basicblock"><a href="#fn-161-basicblock" class="footnote-ref" role="doc-noteref">4</a></sup> をつないでいくとき、処理の意味として区切りを作ることができる。これを”行”とみなす。<br />
そうとらえることで、”改行”することができる。</p>
<p>&#8220;改行&#8221;をして&#8221;行&#8221;単位で分離することで、<strong>コメントノードで分かりやすく区別できるようにする</strong> ことが目的。また　<strong>行単位での移植性も確保</strong> できる。</p>
<div class="primary-box"><span class="badge badge-red">ルール</span> &#8220;行&#8221;同士を`Sequence`ノードで繋ぐ</div>
<p>&#8220;改行&#8221;の実現方法としてはZの文字のようにワイヤーをつないでいくことができるが、行内の処理を変更するたびにつなぎなおしたり、斜めにワイヤーが張られることでノードにかぶったりとあまり好ましくならない。</p>
<p>そこで <strong><code>Sequence</code>ノード</strong><sup id="fnref-161-sequence"><a href="#fn-161-sequence" class="footnote-ref" role="doc-noteref">10</a></sup> を使って複数の&#8221;行&#8221;をつなぐことで、行末端のノードからワイヤーを排除できる。例えば変数の初期化処理をまとめた行があった場合、Z字につないでいる場合は変数が増えるたびにつなぎなおしが必要になってしまうが、<code>Sequence</code>ノードを使えば単に後ろに初期化のノードを繋いでいくだけでよくなる。</p>
<p><iframe loading="lazy" src="https://blueprintue.com/render/vhdd5q-b" scrolling="no" width="640" height="640px"></iframe></p>
<p><code>Sequence</code>ノードを使った&#8221;改行&#8221;は、 <strong>行単位での移植性をより高めておく</strong> のが目的。</p>
<div class="alert-box">
<p>なお、<code>Sequence</code>ノードはいくつか注意点がある。</p>
<p><span class="badge">例</span> : Delayノードは想定の挙動にならない</p>
<a rel="noopener" href="http://monsho.blog63.fc2.com/blog-entry-159.html" title=" [UE4] Sequence&#12392;Delay&#12398;&#38306;&#20418; - &#12418;&#12435;&#12375;&#12423;&#12398;&#24035;&#31348;blog" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img src="https://s0.wordpress.com/mshots/v1/http%3A%2F%2Fmonsho.blog63.fc2.com%2Fblog-entry-159.html?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title"> [UE4] Sequence&#12392;Delay&#12398;&#38306;&#20418; - &#12418;&#12435;&#12375;&#12423;&#12398;&#24035;&#31348;blog</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img src="https://www.google.com/s2/favicons?domain=monsho.blog63.fc2.com" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">monsho.blog63.fc2.com</div></div></div></div></a>
<p><span class="badge">例</span> : 途中の出力ピンのワイヤー末端で<code>Return</code>ノードが来ると<code>Sequence</code>の処理は中断される。</p>
<p>このような点に注意して使用する。</p>
</div>
<div class="comment-box">
<p>処理が莫大になって大きな画面スペースが必要になってしまった場合の解決方法として、この縦に伸びるようにするルール以外にも関数化・マクロ化・サブグラフ化という手段もある。</p>
<p>同じ処理があった場合はコピペするのではなく、関数化しよう。ほんの少しの差は引数で吸収できる。</p>
<p>同じ処理があり、かつ実行ピンが入力・出力どちらかで複数になる場合はマクロ化する。ただしBPのマクロは遅いので可能な限り使用しないようにする。</p>
<p>上記以外はサブグラフ化してまとめられるが、サブグラフを開いて読む手間というのも存在するのでそのコストは考えたほうが良い。個人的にはよほど大規模でない限り不要、大規模になってしまう場合はそもそも複数人の作業でバッティングする可能性が高いのでファイルを分けることを検討したほうが良いと思う。</p>
</div>
<div class="memo-box">関数化・マクロ化・サブグラフ化のオーバーヘッドに関してはきちんと計測をしたほうが良い。</div>
<h2><span id="toc11">&#8220;行&#8221;の途中の折り返しはRerouteノードを使ってノードに被らないよう直線的に引く</span></h2>
<div class="primary-box"><span class="badge badge-red">ルール</span> &#8220;行&#8221;の途中の折り返しはRerouteノードを使ってノードに被らないよう直線的に引く</div>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/a629c48281925c8bc8c01ce9d70c292c.png" alt="ワイヤーが被らないようにする" /></p>
<p><strong>ワイヤーがノードなどに被ることを防止する</strong> ことが目的。</p>
<p>&#8220;行&#8221;があまりにも横に伸びてしまった場合や、<code>ForEachLoopWithBreak</code>ノード等があった場合、&#8221;行&#8221;の折り返しが必要になる。何も考えずにそのままつなぐと、ノードや基本単位の中にワイヤーがかぶることで処理が追いにくくなってしまう。</p>
<h3><span id="toc12">ワイヤーが一つのノードにループして戻ってくる場合は上を通す</span></h3>
<div class="primary-box"><span class="badge badge-red">ルール</span> ワイヤーが一つのノードにループして戻ってくる場合は上を通す</div>
<p><strong>読みやすさを維持しながら更新のコストを下げる</strong> のが目的。</p>
<p><iframe loading="lazy" src="https://blueprintue.com/render/qegka__x" scrolling="no" width="640" height="640px"></iframe></p>
<p>そのままつなぐと確実にワイヤーとノードが重なって処理が追いにくくなるので<code>Reroute</code>ノードで整理する。</p>
<p>下をぐるっと通すこともできるが、以下の問題がある。</p>
<ul>
<li>これまでのルールでノードを下に重ねるようにしたためかなり大回りになってしまう</li>
<li>処理を追加した場合など繋ぎなおし・<code>Reroute</code>ノードの配置しなおしが発生する</li>
<li><code>ForEachLoopWithBreak</code>ノードの<code>Completed</code>ピンのように下に続きの処理が伸びる時に交差する</li>
</ul>
<p>上を通すことで最小限のメンテコストで見やすさを維持できる。</p>
<p><img src="https://conquestarrow.com/wp-content/uploads/2018/06/595573543d4c77a0dca173b9414a0b60.png" alt="良い例" /><br />
https://blueprintue.com/blueprint/k21kb8k4/</p>
<h2><span id="toc13">余談：BP以外での活用方法</span></h2>
<p>AnimBPのAnimノードグラフやマテリアルのノードグラフの場合、BPのグラフに比べて実行ワイヤーが少ない。その点注意すればこのルールを活用することもできる。</p>
<div class="memo-box">BP以外のUE4のノードのきれいな書き方のルールは別途考えていかないといけないだろう。</div>
<h2><span id="toc14">まとめ</span></h2>
<h3><span id="toc15">ルールと目的まとめリスト</span></h3>
<ul>
<li><span class="badge badge-red">ルール</span> 基本単位は実行ピンのあるノード単位でまとめる</li>
<li><span class="badge badge-red">ルール</span> 基本単位同士をまっすぐに並べる
<ul>
<li>どこを目で追いかければよいかが一発で見分けられるようにする</li>
</ul>
</li>
<li><span class="badge badge-red">ルール</span> 実行ピン付ノードの下に実行ピン無しのノードを積み重ねる
<ol>
<li>木の幹と枝葉（本筋と脇道）が一目で分かるように、並べ方で区別がつくようにする</li>
<li>基本単位（実行ピン付きノード＋それから参照される実行ピン無しノード）をブロック状に一定範囲にまとめておくことで矩形選択しやすくする</li>
</ol>
<ul>
<li><span class="badge badge-red">ルール</span> 同じ基本単位（実行ピン付きノード＋それから参照される実行ピン無しノード群）のノードはその左端でそろえる
<ul>
<li>基本単位<sup id="fnref4:161-basicblock"><a href="#fn-161-basicblock" class="footnote-ref" role="doc-noteref">4</a></sup>を視覚的に認識しやすくする</li>
<li>ノードサイズの可変にも耐えられるようにする</li>
</ul>
</li>
<li><span class="badge badge-red">ルール</span> 引数（入力ピン）が複数あるノードの場合には、そのピンにつながる先のノード群の配置も入力ピンの順番に合わせる
<ul>
<li>順番を合わせることで理解をしやすく</li>
<li>矩形選択しやすくする</li>
</ul>
</li>
<li><span class="badge badge-red">ルール</span> ノードの入力ピンが多い場合はノード２つ分の幅を使って並べる
<ul>
<li>過剰に縦に長い基本単位ができるのを防ぐ</li>
</ul>
</li>
</ul>
</li>
<li>入出力ピンから伸びるワイヤーを一本に絞る
<ul>
<li>スパゲッティ化の防止</li>
<li>基本単位の移植時にワイヤーの接続情報を維持する</li>
<li><span class="badge badge-red">ルール</span> 基本単位内で繋ぐノードは他から繋ぐのではなく基本単位内で完結するようにそれぞれ配置して繋ぐ
<ul>
<li>将来にわたってもスパゲッティ化を起こさず</li>
<li>矩形選択しやすさを維持できる</li>
</ul>
</li>
<li><span class="badge badge-red">ルール</span> 複数本の実行ワイヤーは入力ピンにつなぐ前にRerouteノードでまとめる
<ul>
<li>ワイヤーのつながりが維持される</li>
</ul>
</li>
</ul>
</li>
<li><span class="badge badge-red">ルール</span> 原則、処理の結果は変数に入れ、他の処理単位にワイヤーで繋がない
<ul>
<li>スパゲッティ化防止・移植性の維持</li>
</ul>
</li>
<li>実行ワイヤーで繋いだ&#8221;行&#8221;はSequenceノードを用いて繋ぐ
<ul>
<li><span class="badge badge-red">ルール</span> 意味のある実行ピン付ノードの繋がりを&#8221;行&#8221;とみなし適宜&#8221;改行&#8221;する
<ul>
<li>コメントノードで分かりやすく区別できるようにする</li>
<li>行単位での移植性も確保</li>
</ul>
</li>
<li><span class="badge badge-red">ルール</span> &#8220;行&#8221;同士をSequenceノードで繋ぐ
<ul>
<li>行単位での移植性をより高めておく</li>
</ul>
</li>
</ul>
</li>
<li><span class="badge badge-red">ルール</span> &#8220;行&#8221;の途中の折り返しはRetouteノードを使ってノードに被らないよう直線的に引く
<ul>
<li>ワイヤーがノードなどに被ることを防止する</li>
<li><span class="badge badge-red">ルール</span> ワイヤーが一つのノードにループして戻ってくる場合は上を通す
<ul>
<li>読みやすさを維持しながら更新のコストを下げる</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3><span id="toc16">ルールの方針まとめ</span></h3>
<p>これまでのルールは大きく以下の判断基準に沿ったもの。</p>
<ol>
<li>読みやすさの維持</li>
<li>メンテコストの削減</li>
<li>選択しやすさ・移植性の確保</li>
</ol>
<p>上記に見合うこれら以外に良いルールがあればどんどん採用して「きれいな」BPを書くべし。</p>
<div class="footnotes" role="doc-endnotes">
<hr />
<ol>
<li id="fn-161-visualscripting" role="doc-endnote">
または「<a href="https://ja.wikipedia.org/wiki/%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E">ヴィジュアルプログラミング言語<span class="fa fa-share-square external-icon anchor-icon"></span></a>」とも。&#160;<a href="#fnref-161-visualscripting" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-execpin" role="doc-endnote">
デフォルトで白いピン。<span class="badge badge-purple">公式</span> <a href="http://api.unrealengine.com/JPN/Engine/Blueprints/UserGuide/Nodes/#%E5%AE%9F%E8%A1%8C%E3%83%94%E3%83%B3">実行ピン<span class="fa fa-share-square external-icon anchor-icon"></span></a>&#160;<a href="#fnref-161-execpin" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-execwire" role="doc-endnote">
デフォルトで白いワイヤー。パルスが流れる。<span class="badge badge-purple">公式</span> <a href="http://api.unrealengine.com/JPN/Engine/Blueprints/UserGuide/Nodes/#%E5%AE%9F%E8%A1%8C%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC">実行ワイヤー<span class="fa fa-share-square external-icon anchor-icon"></span></a>&#160;<a href="#fnref-161-execwire" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a> <a href="#fnref2:161-execwire" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-basicblock" role="doc-endnote">
説明の便宜上の名前。実行ピン付ノードとそこに付随するノードをまとめたグラフ上でのノード群・並べるときの単位。&#160;<a href="#fnref-161-basicblock" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a> <a href="#fnref2:161-basicblock" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a> <a href="#fnref3:161-basicblock" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a> <a href="#fnref4:161-basicblock" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-styleguide" role="doc-endnote">
<span class="badge badge-blue">出典</span> <a href="https://github.com/akenatsu/ue4-style-guide/blob/master/README.jp.md">Gamemakin UE4スタイルガイド<span class="fa fa-share-square external-icon anchor-icon"></span></a>&#160;<a href="#fnref-161-styleguide" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-pure" role="doc-endnote">
<span class="badge badge-purple">公式</span>  <a href="http://api.unrealengine.com/JPN/Engine/Blueprints/UserGuide/Functions/#%E7%B4%94%E7%B2%8B%E9%96%A2%E6%95%B0%E3%81%A8%E9%9D%9E%E7%B4%94%E7%B2%8B%E9%96%A2%E6%95%B0">純粋関数と非純粋関数<span class="fa fa-share-square external-icon anchor-icon"></span></a>&#160;<a href="#fnref-161-pure" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-commentnode" role="doc-endnote">
コメントノードは複数のノードを選択した後に「C」キーを押すことでまとめて括って作ることができる。 <span class="badge badge-purple">公式</span> <a href="http://api.unrealengine.com/latest/JPN/Engine/Blueprints/UserGuide/CheatSheet/index.html#%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3">ノードのアクション<span class="fa fa-share-square external-icon anchor-icon"></span></a>&#160;<a href="#fnref-161-commentnode" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-changelang" role="doc-endnote">
ノードの表示言語を日本語化すると検索しにくくなる、という問題もあるため英語で表示をおすすめする。&#160;<a href="#fnref-161-changelang" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-reroute" role="doc-endnote">
<span class="badge badge-purple">公式</span> <a href="http://api.unrealengine.com/JPN/Engine/Blueprints/BP_HowTo/ConnectingNodes/#%E6%8E%A5%E7%B6%9A%E3%81%AE%E5%86%8D%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0">接続の再ルーティング<span class="fa fa-share-square external-icon anchor-icon"></span></a>&#160;<a href="#fnref-161-reroute" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
<li id="fn-161-sequence" role="doc-endnote">
<span class="badge badge-purple">公式</span> <a href="http://api.unrealengine.com/latest/JPN/Engine/Blueprints/UserGuide/FlowControl/index.html#sequence">Sequence<span class="fa fa-share-square external-icon anchor-icon"></span></a>&#160;<a href="#fnref-161-sequence" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a>
</li>
</ol>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://conquestarrow.com/ue4-beautiful-blueprint-style/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
