<?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>blog.wonder-boys.net</title>
	<atom:link href="http://blog.wonder-boys.net/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.wonder-boys.net</link>
	<description>css,javascript,actionscriptを中心に勉強したことをまとめるブログ</description>
	<lastBuildDate>Tue, 27 Sep 2011 05:25:47 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>アクセス解析の基礎まとめ</title>
		<link>http://blog.wonder-boys.net/?p=765</link>
		<comments>http://blog.wonder-boys.net/?p=765#comments</comments>
		<pubDate>Sun, 03 Jul 2011 11:19:20 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[others]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=765</guid>
		<description><![CDATA[Web担の連載、

Webサイトの”見える化”&#38;”カイゼン”講座　基本編

を一通り読んで、箇条書きですがまとめてみました。
とはいえ、実践にはうまく活用できませんが・・・。

基礎知識

単純にPVが多いからと [...]]]></description>
			<content:encoded><![CDATA[<p>Web担の連載、</p>
<blockquote><p>
<a href="http://web-tan.forum.impressrd.jp/l/2876" target="_blank">Webサイトの”見える化”&amp;”カイゼン”講座　基本編</a>
</p></blockquote>
<p>を一通り読んで、箇条書きですがまとめてみました。<br />
とはいえ、実践にはうまく活用できませんが・・・。</p>
<p><span id="more-765"></span></p>
<h2>基礎知識</h2>
<ul>
<li>単純にPVが多いからといっていいわけではない。<br />
商品なら詳細ページが見られているかどうか、一覧から誘導出来ているかどうか等も見るべき。</li>
<li>PDFは95%が直帰する</li>
<li>約75%が下層ページから入ってくる。（ほとんどが末端の詳細ページ）</li>
<li>末端のページはニーズを持ったユーザを受ける最前線のページ。そこからの導線を考える。（どこに誘導したら良いか）</li>
<li>検索やリスティング広告から入ってきたユーザは自分の得たい情報関連でより詳しい情報を求める。このとき、グローバルナビゲーションはより浅い階層へのリンクになるので、あまり活用されない場合が多い。</li>
<li>サイトの場合、何をすればいいか迷ったら、帰ってしまう。</li>
<li>更新頻度が高いページ（CMS等）、Q&amp;A、サポートページ、詳細ページが上位に来やすい。</li>
<li>実店舗がある場合、店舗で商品を買ったユーザがネットを利用すると得をする仕組みを考えると良い。（サイトへの流入が増える）</li>
<li>価格.comからのユーザは引き留めにくい。</li>
</ul>
<h2>トップページについて</h2>
<ul>
<li>トップページから入ってくる人は約35%しかいない（1999年時は70%）</li>
<li>時間が経つにつれトップページ以外からの流入が増える（リピータ、SEOによる）</li>
<li>トップページの入り口率はあげなくていい。</li>
<li>トップページからくるユーザは顧客ではない場合が多い。取引先等。</li>
<li>トップページから会社情報等をアピールすることで取引先に対して有効。</li>
<li>トップページのPVが低い場合、アピールコンテンツはトップだけでは不十分。</li>
</ul>
<h2>導線</h2>
<p>サイト内のコンバージョンを高めるためには、ページを作るだけではだめ。</p>
<p>リンクを設定し、しっかりと目的のページに誘導することが必要。</p>
<p>（※ユーザのモチベーションを高めるようなリンクにする。）</p>
<p>同時に、ゴールとなるページへの導線を知ることが重要。</p>
<ul>
<li>ゴールとなるページはどこから誘導されているのか。</li>
<li>誘導できているページを強化する。もしくは、誘導できるページを増やす。</li>
<li>導線を見極めて、定期的に観測する。保守していく。同時に新たな導線を探す。</li>
</ul>
<h2>ゴール</h2>
<ul>
<li>サイトのゴールを設定する。<br />
どのブランドが重要か、どういうコンテンツが重要か等を決める。</li>
<li>ゴールとなるページはどこから誘導されているのか。</li>
<li>ゴールとなるページを見ているユーザはどのページから誘導されているか。</li>
<li>そのページを強化する。もしくは誘導できるページを増やす。</li>
<li>ゴールとなるページを解析してどのようなユーザがゴールにたどり着いているか。</li>
<li>ゴールにたどりついているユーザの属性を調べ、同じ属性のユーザの流入を増やすように対策する。</li>
<li>ゴールに到達したユーザの入り口ページ</li>
<li>ゴールに到達したユーザの検索キーワード</li>
<li>ゴールに到達したユーザの経由ページ　など</li>
</ul>
<h2>平均PVを活用</h2>
<p>単純にPVを追うのではなく、1ユーザあたりの平均PVを活用するとより良い解析ができる。</p>
<p>このとき、設定したゴールによってどの程度平均PVが必要かを算出する。</p>
<p>（※お問い合わせがゴールなら、入力・確認・完了ページで最低3PV必要）</p>
<p>この最低ラインの平均PVを常に維持するようにする。</p>
<h2>平均PVの伸ばし方</h2>
<p>伸ばす方法は2つのタイプがある。</p>
<h3>【すぐに帰らない人を増やす】</h3>
<p>サイトに訪れるユーザをターゲットに近いものにする。（通りすがりを少なくする）</p>
<p>適切なキーワードでSEOをする等。</p>
<h3>【すぐに帰る人を引きとめる】</h3>
<p>サイトに訪れたユーザに対し、ユーザにあったコンテンツへ誘導したり、サイトの構成をわかりやすくするなど。</p>
<p>※サイトのターゲットにあっていない人なら引きとめる必要なし</p>
<h2>ページの解析方法</h2>
<p>ページを入り口数と直帰数によって4つのタイプに分けて対策を考える</p>
<p>1.集客が多いが直帰も多い</p>
<p>→直帰させない対策を練る。どんなキーワードで来ているか、どこから来ているか。</p>
<p>2.集客が少なく、直帰は多い</p>
<p>→対策が必要だが緊急ではない。じっくり育てる。キーワードの追加等</p>
<p>3.集客は少ないが、直帰も少ない</p>
<p>→良いページになる可能性大。集客を増やしていく。ページを訪れすユーザのニーズを解析し、集客する。</p>
<p>4.集客が多く、帰らせないページ</p>
<p>→この状態を目指す！</p>
<h2>入り口ページ</h2>
<p>入り口ページとは、サイトに訪れるユーザが一番最初に閲覧するページのこと。</p>
<p>入り口ページを解析の対象にすることでコンバージョンを改善する手がかりとなる。</p>
<p>特に、入り口ページの直帰率を下げることでサイト内を回遊するユーザを増やすことができる。</p>
<ul>
<li>入り口になっているのに直帰率が高いページを探す</li>
<li>その動機を調査する（どんなキーワードできたか、どんなサイトからきたか）</li>
<li>訪問者が望んでいる情報があるか、またはその情報へのリンクはあるか。なければ改善していく。</li>
</ul>
<p>その他、</p>
<ul>
<li>どうしてこのページは入り口になっているのか？ 訪問者の動機は？</li>
<li>このページからどこへ移動しているのか？ ゴールとなるページに移動しているだろうか？</li>
<li>重要なキーワードにおいて、望ましくないページが入り口になっていないか？</li>
<li>訪れた人のキーワードなどからそのニーズを捉え、そうしたニーズを持った人ならどんな情報を見たいと思うかを考える。</li>
</ul>
<p>など。</p>
<h2>キーワード</h2>
<p>キーワード：単体キーワード</p>
<p>検索フレーズ：複合キーワード</p>
<p>とする。</p>
<p>検索フレーズをばらしてカウントすると隠れていたキーワードが見えてくる。</p>
<p>フレーズを見てみるとブランディングが見えてくる。</p>
<p>（※どんな印象を与えているのか、どう思われているのか）</p>
<ul>
<li>下位キーワードに注目。対策をしていないのに来ているのはニーズが高い証拠。</li>
<li>キーワードリストとサイトの方向性を照らし合わせる。</li>
<li>商品の特徴を3つ程度書き出し、そのキーワードに関連するキーワードを調査する。</li>
<li>洗い出したキーワードをページに埋め込んでいく。</li>
<li>関係ないキーワードから訪れる通りすがりもいる。
<p>→無理に引きとめる必要はないが、対策はしておいて損はない。</li>
</ul>
<p>キーワードを分類する。</p>
<p>分類したキーワードをもとに重要なものを割り出していく。</p>
<p>コンテンツに力を入れている、訪問が少ない　→　対策を急ぐ、実はテキストが少ない？</p>
<p>コンテンツに力を入れていない、訪問が多い　→　コンテンツを作成する等育てていく</p>
<p>コンテンツに力を入れていない、訪問が多いかつ判別できないキーワード　→　解析してみる</p>
<p>※ちからを入れていないのに訪問があるキーワードとは</p>
<ol>
<li>実は全体の検索数が多い</li>
<li>検索者がアクティブで下位までチェックしている</li>
<li>ライバルが少ない（重要視されていない）</li>
</ol>
<p>既存のキーワードを強化する。</p>
<p>新規のキーワードを抽出する。</p>
<p>の2点</p>
<h2>Q&amp;A</h2>
<p>Q&amp;Aの導線によってニーズが見えてくる。</p>
<p>Q&amp;Aから目的のページへ到達しているなら、その導線の強化とそのニーズをもったユーザの拡大を狙う。</p>
<h2>用語集</h2>
<p>いろいろなキーワードを入れるのに適している。</p>
<p>解析をしてどの用語でユーザを集められているかを調べる。</p>
<p>そのキーワードは競合が少ないので狙い目。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=765</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascriptでの論理演算子の評価方法</title>
		<link>http://blog.wonder-boys.net/?p=746</link>
		<comments>http://blog.wonder-boys.net/?p=746#comments</comments>
		<pubDate>Mon, 27 Jun 2011 03:43:47 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[論理演算子]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=746</guid>
		<description><![CDATA[先日このコードを見まして、自分でもあまりよく理解できていなかったのであらためて。

javascriptに置ける論理演算子についての実験 &#8211; jsdo.it &#8211; share JavaScript, [...]]]></description>
			<content:encoded><![CDATA[<p>先日このコードを見まして、自分でもあまりよく理解できていなかったのであらためて。</p>
<p><script src="http://jsdo.it/blogparts/nQD4/js?view=design" type="text/javascript"></script></p>
<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a title="javascriptに置ける論理演算子についての実験" href="http://jsdo.it/shigu_yuki/nQD4">javascriptに置ける論理演算子についての実験 &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<p><span id="more-746"></span></p>
<h2>論理積演算子（&amp;&amp;）</h2>
<p>&amp;&amp;は前と後ろにオペランドを持ちます</p>
<blockquote><p>A &amp;&amp; B</p></blockquote>
<p>単純な理解でいくと、</p>
<blockquote><p>AとBの両方がtrueの場合true、どちらかがfalseの場合falseを返す</p></blockquote>
<p>ということですが、実際の挙動はもうちょっと複雑なようです。<br />
javascript 第5版によると、</p>
<blockquote><p>まず、&amp;&amp;記号の左側にあるオペランド（式）を評価します。この式の値がfalseに変換できる場合（例えば、左側のオペランドの評価結果がnull,0,&#8221;",未定義値のいずれかである場合）、左側の式の評価結果を返します。それ以外の場合は右側のオペランド（式）の評価結果を返します。</p></blockquote>
<p>と書かれています。<br />
trueを返すというよりは評価結果を返すということだったんですね。</p>
<p>翻って上記のコードを見てみます。</p>
<h3>■両方trueの場合</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="nu0">1</span> <span class="sy0">&amp;&amp;</span> <span class="nu0">2</span><span class="br0">&#41;</span></pre></div></div>

<p>このように両方trueになりうる場合は、</p>
<ol>
<li>「1」を評価する。</li>
<li>trueなので、「2」を評価する。</li>
<li>「2」を返す。</li>
</ol>
<p>で、「2」がalertされます。</p>
<h3>■左はtrueで右はfalseの場合</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="nu0">1</span> <span class="sy0">&amp;&amp;</span> <span class="nu0">0</span><span class="br0">&#41;</span></pre></div></div>

<p>この場合の挙動は上記と同じです。</p>
<ol>
<li>「1」を評価する。</li>
<li>trueなので、「0」を評価する。</li>
<li>「0」を返す。</li>
</ol>
<p>結果、返される値がfalseになりうる値なので、if文等に使用した場合はfalseとして評価されるわけです。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw1">if</span><span class="br0">&#40;</span><span class="nu0">1</span> <span class="sy0">&amp;&amp;</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="co1">// 0が返るのでfalseと評価される</span>
    <span class="co1">//実行されない</span>
<span class="br0">&#125;</span></pre></div></div>

<h3>■左はfalseで右はtrueの場合</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="nu0">0</span> <span class="sy0">&amp;&amp;</span> <span class="nu0">2</span><span class="br0">&#41;</span></pre></div></div>

<p>このような場合は、</p>
<ol>
<li>「0」を評価する。</li>
<li>falseなので、「0」を返す。</li>
</ol>
<p>となります。<br />
右側の式、「2」は評価すらされません。</p>
<h3>■両方falseの場合</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="nu0">0</span> <span class="sy0">&amp;&amp;</span> <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span></pre></div></div>

<p>もうお分かりのように、右側の式はほぼ関係ありません。<br />
同じように、「0」が返ります。</p>
<h3>いくつもつなげて書く</h3>
<p>&amp;&amp;はいくつもつなげて書くこともできます。<br />
評価方法は同じように、左から右へと進んでいきます。</p>
<p>ただ、&amp;&amp;自体は前と後にオペランドを持つだけですので仕組みとしては</p>
<blockquote><p>A &amp;&amp; B &amp;&amp; C</p></blockquote>
<p>と書いた場合は、</p>
<blockquote><p>(A &amp;&amp; B) &amp;&amp; C</p></blockquote>
<p>という評価方法になるんですかね。<br />
これは論理和演算子（||）でも同じです。</p>
<h2>論理和演算子（||）</h2>
<p>||も同じく前と後ろにオペランドを持ちます</p>
<blockquote><p>A || B</p></blockquote>
<p>単純な理解でいくと、</p>
<blockquote><p>AとBのどちらかがtrueの場合true、両方falseの場合falseを返す</p></blockquote>
<p>ということですが、実際の挙動について調べると、</p>
<p>まず、演算子（||）の左側のオペランド（式）を評価します。この式の値がtrueに変換できる場合は、左側の式の値をそのまま変換せずに返します。<br />
falseの場合は右側のオペランド（式）を評価し返します。※1</p>
<p>※1 最後の一文は明記されていませんでしたが、そういう挙動になります。</p>
<p>と書かれています。<br />
&amp;&amp;と同じように評価されたものが返されます。</p>
<h3>■両方trueの場合</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="nu0">1</span> <span class="sy0">||</span> <span class="nu0">2</span><span class="br0">&#41;</span></pre></div></div>

<p>このような場合は、</p>
<ol>
<li>「1」を評価する。</li>
<li>trueなので、「1」を返す。</li>
</ol>
<p>となります。<br />
左側がtrueの場合は右側は評価すらされません。<br />
これは右側がfalseの場合も同様です。</p>
<h3>■左はtrueで右がfalseの場合</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="nu0">1</span> <span class="sy0">||</span> <span class="nu0">0</span><span class="br0">&#41;</span></pre></div></div>

<p>これは上記と同じ。「1」が返って、右側は評価されません。</p>
<h3>■左はfalseで右がtrueの場合</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="nu0">0</span> <span class="sy0">||</span> <span class="nu0">2</span><span class="br0">&#41;</span></pre></div></div>

<p>この場合は、</p>
<ol>
<li>「0」を評価する。</li>
<li>falseなので、「2」を評価する。</li>
<li>「2」を返す。</li>
</ol>
<p>です。<br />
もうだんだんわかってきましたね。</p>
<h3>■両方falseの場合</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">alert</span><span class="br0">&#40;</span><span class="nu0">0</span> <span class="sy0">||</span> <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span></pre></div></div>

<p>同じように、</p>
<ol>
<li>「0」を評価する。</li>
<li>falseなので、「&#8221;"」を評価する。</li>
<li>「&#8221;"」を返す。</li>
</ol>
<p>ということです。<br />
&amp;&amp;と同じように、if文等の中に入った場合はどちらかの値が返されそれがbooleanに変換されて評価されるわけですね。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw1">if</span><span class="br0">&#40;</span> <span class="nu0">0</span> <span class="sy0">||</span> <span class="st0">&quot;&quot;</span> <span class="br0">&#41;</span><span class="br0">&#123;</span><span class="co1">// &quot;&quot;が返され、booleanに変換、falseになる</span>
    <span class="co1">//実行されない</span>
<span class="br0">&#125;</span></pre></div></div>

<h2>応用</h2>
<p>論理演算子を使用する際のポイントとしては、</p>
<ol>
<li>どちらかの式の評価がそのまま返される。</li>
<li>評価できるのは式。</li>
</ol>
<p>ということでしょうか。<br />
これらを応用するといろんな面白いコードが書けるようです。</p>
<blockquote><p><a href="http://d.hatena.ne.jp/nitoyon/20071227/cmpop" target="_blank"> 論理演算子（&amp;&amp;と||）を応用する &#8211; てっく煮ブログ </a></p></blockquote>
<p>また、オライリーにはこんな例文も載っています。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">var</span> max <span class="sy0">=</span> max_width <span class="sy0">||</span> preference.<span class="me1">max_width</span> <span class="sy0">||</span> <span class="nu0">500</span><span class="sy0">;</span></pre></div></div>

<p>どれか、trueとなる値が使われるということです。<br />
まあ、思いついた人はほんとすごいなあとしかいいようがないですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=746</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery Mobileを使ってみた</title>
		<link>http://blog.wonder-boys.net/?p=732</link>
		<comments>http://blog.wonder-boys.net/?p=732#comments</comments>
		<pubDate>Tue, 22 Feb 2011 09:19:40 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[markup]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=732</guid>
		<description><![CDATA[先日、スマートフォン用のサイトを作る機会がありまして。
この機会にと、jQuery Mobileを使ってみましたのでいろいろと思ったことなどを。

何ができるのか
まあ、スマートフォン用とはいってもアプリみたいになるわけ [...]]]></description>
			<content:encoded><![CDATA[<p>先日、スマートフォン用のサイトを作る機会がありまして。<br />
この機会にと、jQuery Mobileを使ってみましたのでいろいろと思ったことなどを。</p>
<p><span id="more-732"></span></p>
<h2>何ができるのか</h2>
<p>まあ、スマートフォン用とはいってもアプリみたいになるわけでもないので、普通にHTML組んだっていいんですよね。<br />
じゃあjQuery Mobileを使うと何ができるのかっていうと、主には</p>
<ul>
<li>スマートフォン用のUIの提供</li>
<li>スマートフォン用の遷移</li>
<li>スマートフォン用の設定（viewport等）</li>
<li>クロスデバイス対応</li>
</ul>
<p>あたりを、「簡単に」実装できるということでしょうか。<br />
デモを見ると分かりやすいかと思います。</p>
<blockquote><p><a href="http://jquerymobile.com/demos/1.0a3/#docs/api/../../" target="_blank"> jQuery Mobile:Demos and Documentation </a></p></blockquote>
<p>あとは下記のものもとても分かりやすいです。<br />
資料がjQuery Mobileで作られていますね。</p>
<blockquote><p><a href="http://yst.web.infoseek.co.jp/jquerymobile.html" target="_blank"> jQuery Mobile:第12回HTML5とか勉強会 </a></p></blockquote>
<h2>jQuery Mobileについて少し</h2>
<ul>
<li>スマートフォンサイト構築用フレームワーク</li>
<li>現在Alpha版リリース（2011/2/22現在）</li>
<li>マークアップドリブン（マークアップ中心に構築していく）</li>
<li>もちろんjQueryベース</li>
<li>ファイル自体も軽量</li>
<li>ライセンスはMIT。商用利用可。</li>
</ul>
<p>です。<br />
まだ、正式リリースではないんですね。<br />
今後は、テーマのを簡単に修正できるツールがでるとか、DreamWeaverと連携できるようになるとか、なんとか。<br />
期待のフレームワークです。</p>
<p>じゃあ、ちょっと使い方を。</p>
<h2>1.ファイルを読み込む</h2>
<p>まずは、使用するファイルを読み込みます。<br />
こちらで使用するファイルをダウンロード</p>
<blockquote><p><a href="http://jquerymobile.com/download/" target="_blank"> http://jquerymobile.com/download/ </a></p></blockquote>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/link.html"><span class="kw2">link</span></a> <span class="kw3">rel</span><span class="sy0">=</span><span class="st0">&quot;stylesheet&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;jquery.mobile-1.0a3.min.css&quot;</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;jquery-1.5.min.js&quot;</span>&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;jquery.mobile-1.0a3.min.js&quot;</span>&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a>&gt;</span></pre></div></div>

<p>パスは使用する環境に合わせてください。(※2011/2/23 CSSファイルへのパスが抜けていたので訂正)<br />
ダウンロードもいいですが、ネット上のものを使うのも。</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/link.html"><span class="kw2">link</span></a> <span class="kw3">rel</span><span class="sy0">=</span><span class="st0">&quot;stylesheet&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css&quot;</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;http://code.jquery.com/jquery-1.5.min.js&quot;</span>&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js&quot;</span>&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/script.html"><span class="kw2">script</span></a>&gt;</span></pre></div></div>

<p>どちらでも。</p>
<h2>2.ベースとなるHTMLを記述</h2>
<p>ファイルを読み込んだらベースとなるHTMLを記述します。<br />
jQuery Mobileはほとんどスクリプトは触りません。<br />
決められたHTMLを書くことで、スクリプト側で置換され色々なUIを実装しているようです。</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        Contents
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span></pre></div></div>

<p>基本の形です。<br />
「header」、「footer」、「content」の3つのブロックに分かれます。<br />
みての通り「header」はページ上部にタイトルのような形で、「footer」はページ下部に。<br />
コンテンツ内容は「content」内に書いていきます。</p>
<p>上記の記述で1ページの表示になります。</p>
<h2>3.ページを遷移させる</h2>
<p>さて次に別ページへの遷移方法について。<br />
同一ファイル内に同じようなページの記述を追加して、id属性を付けます。</p>
<p>これで、#リンクを貼ることでスライドやポップアップなどの遷移をさせることができます。</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#about&quot;</span>&gt;</span>to About<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
&nbsp;
<span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;about&quot;</span>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        this is About
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span></pre></div></div>

<p>別のファイルへのリンクについては、指定がない場合コンテンツをファイルに読み込む形で表示します。</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc-1">&lt;!--             index.htmlファイル                --&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;other.html&quot;</span>&gt;</span>to Other<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc-1">&lt;!--             index.htmlファイル                --&gt;</span>
&nbsp;
<span class="sc-1">&lt;!--             other.htmlファイル                --&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        遷移先だよ
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc-1">&lt;!--             other.htmlファイル                --&gt;</span></pre></div></div>

<p>上記のように書いてあった場合、index.htmlにother.htmlファイルが読み込まれ指定した遷移方法で遷移します。<br />
（※通常は横スライド）<br />
このときURLも「hogehoge.com#other.html」のようになります。</p>
<p>PCサイトと同じように、別ページへ遷移するには</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">rel=&quot;external&quot;</pre></div></div>

<p>を追加、もしくは</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">target=&quot;_blank&quot;</pre></div></div>

<p>を設定します。<br />
こうすることで、「hogehoge.com/other.html」に遷移するようになります。</p>
<blockquote><p><a href="http://wonder-boys.net/test/js/jm01.html" target="_blank"> 遷移テスト </a></p></blockquote>
<p>※注意<br />
別ページをAjaxで読み込んで遷移する場合、エラーになる場合があります。<br />
（読み込むファイルの容量？要調査）<br />
別ページへの遷移はrel=&#8221;external&#8221;のほうが確実かもしれません。</p>
<p>ちなみに、一度エラーがおきてしまうと、その後ページをリロードするまでリンクがきかなくなってしまいます。</p>
<p>これで、ページの遷移は終了。<br />
簡単ですね。<br />
ちなみに、戻るリンクなんかは自動的にヘッダに追加されます。<br />
あとはこの基本HTMLに属性値を追加することで、色々なUIが作成できます。</p>
<h2>4.いろいろな設定をしてみる</h2>
<h3>リスト表示</h3>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/ul.html"><span class="kw2">ul</span></a>&gt;</span>
	<span class="sc2">&lt;<a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;</span>リスト表示<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;</span>
	<span class="sc2">&lt;<a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;other.html&quot;</span>&gt;</span>リスト1<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;</span>
	<span class="sc2">&lt;<a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;other.html&quot;</span>&gt;</span>リスト2<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/ul.html"><span class="kw2">ul</span></a>&gt;</span></pre></div></div>

<h3>ボタン</h3>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;other.html&quot;</span>&gt;</span>ボタン<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;</span></pre></div></div>

<p>※data-iconの指定方法を変更することでアイコン変更可能</p>
<h3>アコーディオン</h3>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/h2.html"><span class="kw2">h2</span></a>&gt;</span>アコーディオンタイトル<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h2.html"><span class="kw2">h2</span></a>&gt;</span>
アコーディオン内容アコーディオン内容アコーディオン内容アコーディオン内容アコーディオン内容<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span></pre></div></div>

<p>アコーディオンタイトルはh1～h6の見出しタグならなんでも使えます。</p>
<h3>フォーム</h3>
<p>フォームはそのままの記述でUIが実装されます。</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/input.html"><span class="kw2">input</span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/input.html"><span class="kw2">input</span></a> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;search&quot;</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/select.html"><span class="kw2">select</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/option.html"><span class="kw2">option</span></a> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;1&quot;</span>&gt;</span>1<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/option.html"><span class="kw2">option</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/option.html"><span class="kw2">option</span></a> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;2&quot;</span>&gt;</span>2<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/option.html"><span class="kw2">option</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/option.html"><span class="kw2">option</span></a> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;3&quot;</span>&gt;</span>3<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/option.html"><span class="kw2">option</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/select.html"><span class="kw2">select</span></a>&gt;</span></pre></div></div>

<p>など。</p>
<h3>ヘッダにボタン追加</h3>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Header<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">class</span><span class="sy0">=</span><span class="st0">&quot;ui-btn-right&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#about&quot;</span>&gt;</span>About<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span></pre></div></div>

<h3>フッタにバナー風ボタン追加</h3>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
        <span class="sc2">&lt;<a href="http://december.com/html/4/element/ul.html"><span class="kw2">ul</span></a>&gt;</span>
	    <span class="sc2">&lt;<a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">rel</span><span class="sy0">=</span><span class="st0">&quot;external&quot;</span> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;index.html&quot;</span>&gt;</span>ホーム<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;</span>
	    <span class="sc2">&lt;<a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;http://blog.wonder-boys.net&quot;</span>&gt;</span>ブログ<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/li.html"><span class="kw2">li</span></a>&gt;</span>
        <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/ul.html"><span class="kw2">ul</span></a>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>Footer<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/h1.html"><span class="kw2">h1</span></a>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/div.html"><span class="kw2">div</span></a>&gt;</span></pre></div></div>

<h3>デザインテーマを変更する</h3>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">data-theme=&quot;a&quot; // a～dを指定</pre></div></div>

<p>を追加することでページ単位やパーツ単位でデザインテーマを変更出来ます。</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;</span>
<span class="sc2">a <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;other.html&quot;</span>&gt;</span>ボタンa<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;other.html&quot;</span>&gt;</span>ボタンb<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;other.html&quot;</span>&gt;</span>ボタンc<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;other.html&quot;</span>&gt;</span>ボタンd<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/a.html"><span class="kw2">a</span></a>&gt;</span></pre></div></div>

<blockquote><p><a href="http://wonder-boys.net/test/js/jm02.html" target="_blank"> 設定テスト </a></p></blockquote>
<p>他にも色々な設定があるので組み合わせてページを作ることが出来ます。<br />
下部参考サイト参照。</p>
<h2>5.使ってみての懸念</h2>
<ul>
<li>一つのページに要素を詰めすぎると読み込みが遅くなるので、適度に分割する。</li>
<li>を画面いっぱいに設置すると画面のフリック移動がやりづらい。（リストにフォーカスが当たってしまう）</li>
<li>デザインの変更がめんどくさい。（cssファイルをダウンロードして修正）</li>
<li>フッターの下部固定に注意。（見づらい）</li>
</ul>
<p>くらいでしょうか。<br />
デザインについては、独自のCSSファイルを作成して当てることもできます。<br />
（※ただし、HTMLについてはスクリプトで置き換わる箇所があるので注意）</p>
<p>フッターについては、設定で下部に固定することができますが（常に画面内下部に表示されている感じ）、コンテンツが見づらくなってしまうためあまり良いとは言えませんでした。</p>
<h2>まとめ</h2>
<p>フレームワーク自体はUIを簡単に作成できる分、使ってみる価値はあるかと思います。<br />
jQuery Mobile以外にも色々なフレームワークが出てきているので使い分けていくのも必要かもしれません。</p>
<blockquote><p><a href="http://jqtouch.com/" target="_blank"> jQTouch</a><br />
<a href="http://www.extjs.co.jp/products/touch/" target="_blank"> Sencha Touch</a><br />
<a href="http://www.winktoolkit.org/" target="_blank"> WINK TOOLKIT </a></p></blockquote>
<h2>参考サイト</h2>
<blockquote><p><a href="http://jquerymobile.com/demos/1.0a3/#docs/api/../../" target="_blank"> jQuery Mobile:Demos and Documentation</a><br />
<a href="http://yst.web.infoseek.co.jp/jquerymobile.html" target="_blank"> jQuery Mobile:第12回HTML5とか勉強会</a><br />
<a href="http://yst.web.infoseek.co.jp/jquerymobile/#1" target="_blank"> jQuery Mobile [基礎編]</a><br />
<a href="http://d.hatena.ne.jp/pikotea/20101019/1287484040" target="_blank"> jQuery Mobile リファレンス的なもの </a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=732</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ExternalInterface.callがIEできかない</title>
		<link>http://blog.wonder-boys.net/?p=720</link>
		<comments>http://blog.wonder-boys.net/?p=720#comments</comments>
		<pubDate>Mon, 31 Jan 2011 09:26:54 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[as3.0]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ExternalInterface]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=720</guid>
		<description><![CDATA[actionscript3.0からjavascriptの関数を使いたい時は、ExternalInterfaceクラスを使います。
が、なぜかIEではうまく動かないんです・・。
前にちょっと調べたなあと思いながらググったの [...]]]></description>
			<content:encoded><![CDATA[<p>actionscript3.0からjavascriptの関数を使いたい時は、ExternalInterfaceクラスを使います。<br />
が、なぜかIEではうまく動かないんです・・。</p>
<p>前にちょっと調べたなあと思いながらググったのでメモ。<br />
<span id="more-720"></span></p>
<h2>actionscript3.0側</h2>
<p>actionscript3.0側ではとりあえずこんな感じで使います。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw3">import</span> flash.<span class="me1">external</span>.<span class="me1">ExternalInterface</span>;
&nbsp;
ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;getCookie&quot;</span>,<span class="st0">&quot;start&quot;</span><span class="br0">&#41;</span>;</pre></td></tr></table></div>

<p>クラスをimportして、任意の関数内で、ExternalInterface.callを実行します。<br />
引数は、使用するjavascriptの関数名。<br />
第二引数以降は、使用する関数に渡す引数になります。</p>
<p>今回、こちら側は特に問題なし。</p>
<h2>javascript側</h2>
<p>じゃあ、javascript側はというと、普通の関数を用意しておくだけ。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">var</span> getCookie <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span>key<span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="co1">//処理を書く</span>
    <span class="kw3">alert</span><span class="br0">&#40;</span>key<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>こんな感じ。関数の中身は割愛します。<br />
ここでのkeyは上記でいくと&#8221;start&#8221;が入りますね。<br />
で、alertされると。</p>
<p>こちら側もまったく問題ないようです。</p>
<p>では、どこが問題だったかというと、FlashをHTMLに埋め込む際のコードに問題がありました。</p>
<h2>埋め込みコード</h2>
<p>通常以下のようなコードを動的に書き出してFlashを表示させていました。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/object.html"><span class="kw2">object</span></a> <span class="kw3">classid</span><span class="sy0">=</span><span class="st0">&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;200&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;200&quot;</span>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/param.html"><span class="kw2">param</span></a> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;movie&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;パス&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/param.html"><span class="kw2">param</span></a> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;FlashVars&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;value&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;embed <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;パス&quot;</span> quality<span class="sy0">=</span><span class="st0">&quot;high&quot;</span> pluginspage<span class="sy0">=</span><span class="st0">&quot;http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;application/x-shockwave-flash&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;200&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;200&quot;</span>&gt;&lt;<span class="sy0">/</span>embed&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/object.html"><span class="kw2">object</span></a>&gt;</span></pre></td></tr></table></div>

<p>この埋め込み用コードは色々書き方があると思うのでスルーをしていただいていいんですが、IEではobjectタグにid値が必要ということなのだそうです。<br />
しかもid値に「external」という文字が含まれていないといけないとか。<br />
（※さらに「external」だけでもダメ！）</p>
<p>なんということでしょう。</p>
<p>ということで、id値を以下の通り設定したら無事機能しました。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/object.html"><span class="kw2">object</span></a> <span class="kw3">classid</span><span class="sy0">=</span><span class="st0">&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;200&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;200&quot;</span> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;externalid&quot;</span>&gt;</span> //id値を追加
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/param.html"><span class="kw2">param</span></a> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;movie&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;パス&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;<a href="http://december.com/html/4/element/param.html"><span class="kw2">param</span></a> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;FlashVars&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;value&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;embed <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;パス&quot;</span> quality<span class="sy0">=</span><span class="st0">&quot;high&quot;</span> pluginspage<span class="sy0">=</span><span class="st0">&quot;http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;application/x-shockwave-flash&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;200&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;200&quot;</span>&gt;&lt;<span class="sy0">/</span>embed&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/object.html"><span class="kw2">object</span></a>&gt;</span></pre></td></tr></table></div>

<p>今回の場合、id名だけで済むのでそれほど大掛かりにはなりませんでしたが、ほんとにIEはたまらんですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=720</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DataGrid内にボタンを配置する</title>
		<link>http://blog.wonder-boys.net/?p=709</link>
		<comments>http://blog.wonder-boys.net/?p=709#comments</comments>
		<pubDate>Tue, 28 Sep 2010 10:40:46 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[itemrenderer]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=709</guid>
		<description><![CDATA[ここんとこFlex三昧で大変充実しております。
さて、今回ちょとはまった部分を。
mxml中心でいきます。

DataGridにボタンを入れたい
DataGridは通常文字列なり数字なりが入ります。
基本的なDataGridは、

1
2
3
4
5
6
7
8
9
10
11
12
13
&#60;mx:DataGrid width=&#34;100%&#34; height=&#34;100%&#34;&#62;
    &#60;mx:ArrayCollection&#62;
        &#60;mx:Object func=&#34;開く&#34; contents=&#34;お知らせですよ1&#34; /&#62;
        &#60;mx:Object func=&#34;開く&#34; contents=&#34;お知らせですよ2&#34; /&#62;
        &#60;mx:Object func=&#34;開く&#34; contents=&#34;お知らせですよ3&#34; /&#62;
        &#60;mx:Object func=&#34;開く&#34; contents=&#34;お知らせですよ4&#34; /&#62;
     [...]]]></description>
			<content:encoded><![CDATA[<p>ここんとこFlex三昧で大変充実しております。<br />
さて、今回ちょとはまった部分を。<br />
mxml中心でいきます。</p>
<p><span id="more-709"></span></p>
<h2>DataGridにボタンを入れたい</h2>
<p>DataGridは通常文字列なり数字なりが入ります。<br />
基本的なDataGridは、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc3"><span class="re1">&lt;mx:DataGrid</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:ArrayCollection</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ1&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ2&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ3&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ4&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ5&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:ArrayCollection</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:columns</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;func&quot;</span> headerText=<span class="st0">&quot;操作&quot;</span> width=<span class="st0">&quot;200&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;contents&quot;</span> headerText=<span class="st0">&quot;内容&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:columns</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/mx:DataGrid</span><span class="re2">&gt;</span></span></pre></td></tr></table></div>

<p>こんな感じです。<br />
カラムが2つでそれぞれに内容が入ります。</p>
<p>さて、このDataGrid内にボタンを追加します。<br />
DataGridの各カラムの表示方法はitemRendererを使います。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;func&quot;</span> headerText=<span class="st0">&quot;操作&quot;</span> width=<span class="st0">&quot;200&quot;</span>　itemRenderer=<span class="st0">&quot;mx.contorols.Button&quot;</span> <span class="re2">/&gt;</span></span></pre></td></tr></table></div>

<p>itemRenderer属性をつけます。<br />
値はコンポーネントの種類になりますので、今回は「mx.contorols.Button」となります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc3"><span class="re1">&lt;mx:DataGrid</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:ArrayCollection</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ1&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ2&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ3&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ4&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ5&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:ArrayCollection</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:columns</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;func&quot;</span> headerText=<span class="st0">&quot;操作&quot;</span> width=<span class="st0">&quot;200&quot;</span>　itemRenderer=<span class="st0">&quot;mx.contorols.Button&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;contents&quot;</span> headerText=<span class="st0">&quot;内容&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:columns</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/mx:DataGrid</span><span class="re2">&gt;</span></span></pre></td></tr></table></div>

<p>これででるでしょうか？<br />
ラベルがでませんね。<br />
これ、このままだとラベルの設定ができないんですね。<br />
こういう場合は、属性値ではなくて子要素にコンポーネントを追加します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;func&quot;</span> headerText=<span class="st0">&quot;操作&quot;</span> width=<span class="st0">&quot;200&quot;</span>　<span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:itemRenderer</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Component</span><span class="re2">&gt;</span></span>
            <span class="sc3"><span class="re1">&lt;mx:Button</span> label=<span class="st0">&quot;ラベルです&quot;</span><span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;/mx:Component</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:itemRenderer</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/mx:DataGridColumn</span><span class="re2">&gt;</span></span></pre></td></tr></table></div>

<p>itemRendererタグの中にcomponentを入れて、さらに表示させたいコンポーネントタグを入れます。<br />
こうしておいて、ラベルの設定をします。</p>
<p>さらに、dataProviderとして持っているArrayCollectionの値を使いたいなあと言う場合はデータを取得します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;func&quot;</span> width=<span class="st0">&quot;200&quot;</span>　<span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:itemRenderer</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Component</span><span class="re2">&gt;</span></span>
            <span class="sc3"><span class="re1">&lt;mx:Button</span> label=<span class="st0">&quot;{data.func}&quot;</span><span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;/mx:Component</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:itemRenderer</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/mx:DataGridColumn</span><span class="re2">&gt;</span></span></pre></td></tr></table></div>

<p>これで、ArrayCollection側で設定したラベルを出すことができます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc3"><span class="re1">&lt;mx:DataGrid</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:ArrayCollection</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ1&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ2&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ3&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ4&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ5&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:ArrayCollection</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:columns</span><span class="re2">&gt;</span></span>        
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;func&quot;</span> headerText=<span class="st0">&quot;操作&quot;</span> width=<span class="st0">&quot;200&quot;</span>　<span class="re2">&gt;</span></span>
            <span class="sc3"><span class="re1">&lt;mx:itemRenderer</span><span class="re2">&gt;</span></span>
                <span class="sc3"><span class="re1">&lt;mx:Component</span><span class="re2">&gt;</span></span>
                    <span class="sc3"><span class="re1">&lt;mx:Button</span> label=<span class="st0">&quot;{data.func}&quot;</span><span class="re2">/&gt;</span></span>
                <span class="sc3"><span class="re1">&lt;/mx:Component</span><span class="re2">&gt;</span></span>
            <span class="sc3"><span class="re1">&lt;/mx:itemRenderer</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;/mx:DataGridColumn</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;contents&quot;</span> headerText=<span class="st0">&quot;内容&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:columns</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/mx:DataGrid</span><span class="re2">&gt;</span></span></pre></td></tr></table></div>

<h2>ボタンにイベントを設定したい</h2>
<p>今回ボタンにしましたが、ボタンにしたなら当然クリックしたときにアクションをさせたくなります。<br />
ちょっとやってみます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;mx:Script&gt;</span>
<span class="sc2">    &lt;![CDATA[</span>
<span class="sc2">    import mx.controls.Alert;</span>
<span class="sc2">    import flash.events.MouseEvent;</span>
&nbsp;
<span class="sc2">    private function showMessege(e:MouseEvent):void {</span>
<span class="sc2">        Alert.show(&quot;hello!&quot;);</span>
<span class="sc2">    }</span>
<span class="sc2">    ]]&gt;</span>
<span class="sc2">&lt;/mx:Script&gt;</span>
&nbsp;
<span class="sc3"><span class="re1">&lt;mx:DataGrid</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:ArrayCollection</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ1&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ2&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ3&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ4&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ5&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:ArrayCollection</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:columns</span><span class="re2">&gt;</span></span>        
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;func&quot;</span> width=<span class="st0">&quot;200&quot;</span>　<span class="re2">&gt;</span></span>
            <span class="sc3"><span class="re1">&lt;mx:itemRenderer</span><span class="re2">&gt;</span></span>
                <span class="sc3"><span class="re1">&lt;mx:Component</span><span class="re2">&gt;</span></span>
                    <span class="sc3"><span class="re1">&lt;mx:Button</span> label=<span class="st0">&quot;{data.func}&quot;</span> headerText=<span class="st0">&quot;操作&quot;</span> click=<span class="st0">&quot;showMessege( event )&quot;</span> <span class="re2">/&gt;</span></span>
                <span class="sc3"><span class="re1">&lt;/mx:Component</span><span class="re2">&gt;</span></span>
            <span class="sc3"><span class="re1">&lt;/mx:itemRenderer</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;/mx:DataGridColumn</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;contents&quot;</span> headerText=<span class="st0">&quot;内容&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:columns</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/mx:DataGrid</span><span class="re2">&gt;</span></span></pre></td></tr></table></div>

<p>こんな感じで関数を呼び出してみますが、うまくいきません。</p>
<blockquote><p>
Call to possibly undefined method showMessage.
</p></blockquote>
<p>なんてエラーがでます。<br />
関数が認識されていないようです。</p>
<p>いろいろ調べてみるとどうやら直接は呼べないようで以下のようにouterDocumentが必要だということでした。<br />
さらに、関数側もpublicにしておくようです。<br />
なるほど、スコープが違うんでしょうかね・・。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;mx:Script&gt;</span>
<span class="sc2">    &lt;![CDATA[</span>
<span class="sc2">    import mx.controls.Alert;</span>
<span class="sc2">    import flash.events.MouseEvent;</span>
&nbsp;
<span class="sc2">    private function showMessege(e:MouseEvent):void {</span>
<span class="sc2">        Alert.show(&quot;hello!&quot;);</span>
<span class="sc2">    }</span>
<span class="sc2">    ]]&gt;</span>
<span class="sc2">&lt;/mx:Script&gt;</span>
&nbsp;
<span class="sc3"><span class="re1">&lt;mx:DataGrid</span> width=<span class="st0">&quot;100%&quot;</span> height=<span class="st0">&quot;100%&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:ArrayCollection</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ1&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ2&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ3&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ4&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:Object</span> func=<span class="st0">&quot;開く&quot;</span> contents=<span class="st0">&quot;お知らせですよ5&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:ArrayCollection</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;mx:columns</span><span class="re2">&gt;</span></span>        
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;func&quot;</span> headerText=<span class="st0">&quot;操作&quot;</span> width=<span class="st0">&quot;200&quot;</span>　<span class="re2">&gt;</span></span>
            <span class="sc3"><span class="re1">&lt;mx:itemRenderer</span><span class="re2">&gt;</span></span>
                <span class="sc3"><span class="re1">&lt;mx:Component</span><span class="re2">&gt;</span></span>
                    <span class="sc3"><span class="re1">&lt;mx:Button</span> label=<span class="st0">&quot;{data.func}&quot;</span> click=<span class="st0">&quot;outerDocument.showMessege( event )&quot;</span> <span class="re2">/&gt;</span></span>
                <span class="sc3"><span class="re1">&lt;/mx:Component</span><span class="re2">&gt;</span></span>
            <span class="sc3"><span class="re1">&lt;/mx:itemRenderer</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;/mx:DataGridColumn</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;mx:DataGridColumn</span> dataField=<span class="st0">&quot;contents&quot;</span> headerText=<span class="st0">&quot;内容&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/mx:columns</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/mx:DataGrid</span><span class="re2">&gt;</span></span></pre></td></tr></table></div>

<p>これでイベントも設定できるようになりました。<br />
なかなかクセがあって慣れるまでは大変ですね。</p>
<div style="text-align:center;width:465px;margin:0 auto 10px auto;">
<script type="text/javascript" src="http://wonderfl.net/blogparts/vUYv/js"></script>
<p class="ttlBpWonderfl" style="width: 465px; margin: 0 auto; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/vUYv" title="itemRendererにイベントを設定">itemRendererにイベントを設定 &#8211; wonderfl build flash online</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=709</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>デザインリニューアルしました</title>
		<link>http://blog.wonder-boys.net/?p=681</link>
		<comments>http://blog.wonder-boys.net/?p=681#comments</comments>
		<pubDate>Thu, 16 Sep 2010 03:24:07 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[others]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=681</guid>
		<description><![CDATA[この度、約2年ぶりにデザインをリニューアルしました。
やろうやろうと思いながらも後へ後へとしてきましたが、やっとのことたどりつくことができました。
一安心です。
さて、今回ポイントとしたところをご紹介します。

マークア [...]]]></description>
			<content:encoded><![CDATA[<p>この度、約2年ぶりにデザインをリニューアルしました。<br />
やろうやろうと思いながらも後へ後へとしてきましたが、やっとのことたどりつくことができました。<br />
一安心です。</p>
<p>さて、今回ポイントとしたところをご紹介します。</p>
<p><span id="more-681"></span></p>
<h2>マークアップはhtml5</h2>
<p>やはりマークアップを勉強している身としてはhtml5でしょうということでhtml5でマークアップしました。<br />
以前少し勉強したので、ぜんぜん分からなかったことはないんですが、やはりsectionとか見出しのタグ付けをどうするかは少し迷いました。<br />
まあ、それなりにはできたと思っています。</p>
<h2>デザインはシンプルに</h2>
<p>とりあえず極力シンプルなデザインにしたいなあと。<br />
レイアウトはあまり変えていないので色数を減らしたり要素を減らしたり。<br />
タグのあたりはちょっと修正が必要かなあ・・。</p>
<h2>記事の検索方法</h2>
<p>以前にはなかった、サイト内検索とタグやカテゴリの一覧ページを作りました。<br />
少しは探しやすくなったと思います。</p>
<h2>コードはWP-Syntaxで</h2>
<p>今回のコード部分はWP-SyntaxとWP-Syntax Hacktifyを使いました。<br />
こんな感じです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">var</span> hoge <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;hello!&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>なんか黒くてかっこいいです。</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/wp-syntax/" target="_blank">WP-Syntax</a></li>
<li><a href="http://wordpress.org/extend/plugins/wp-syntax-hacktify/" target="_blank">WP-Syntax Hacktify</a></li>
</ul>
<h2>その他</h2>
<p>とりあえずのリニューアルはできましたが、過去の記事の見栄えが崩れてしまっています。<br />
これを早急に修正したいと思っています。<br />
あとは、プロフィールページを作ってないので、これもしっかり作ろうと思います。</p>
<h2>Special thanks!!</h2>
<p><a href="http://twitter.com/paz__para" target="_blank">@paz__para</a></p>
<p>WordPressの大部分を組んでいただきました。<br />
ほんとにありがとうございました！</p>
<p>これほどまでに、わからないとは自分が情けないです。<br />
ちゃんと勉強します！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=681</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>三角関数の基本</title>
		<link>http://blog.wonder-boys.net/?p=446</link>
		<comments>http://blog.wonder-boys.net/?p=446#comments</comments>
		<pubDate>Wed, 01 Sep 2010 09:52:17 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[around js]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[math]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=446</guid>
		<description><![CDATA[三角関数の基本部分を復習してみようと思います。

数学的な三角関数
さて、まずいわゆる学校で習う三角関数についての復習をしてみます。
高校で習っているはずですね！数学I・Aでやりましたね！

図のような「直角三角形」にお [...]]]></description>
			<content:encoded><![CDATA[<p>三角関数の基本部分を復習してみようと思います。</p>
<p><span id="more-446"></span></p>
<h2>数学的な三角関数</h2>
<p>さて、まずいわゆる学校で習う三角関数についての復習をしてみます。<br />
高校で習っているはずですね！数学I・Aでやりましたね！</p>
<p style="padding:0 0 15px 0;text-align:center;"><img src="image/math01.png" alt="" /></p>
<p>図のような「直角三角形」において、角度が分かると辺の比率の関係を表しているのが三角関数です。<br />
公式は、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">sinθ <span class="sy0">=</span> a <span class="sy0">/</span> c　<span class="co1">//サイン</span>
cosθ <span class="sy0">=</span> b <span class="sy0">/</span> c　<span class="co1">//コサイン</span>
tanθ <span class="sy0">=</span> a <span class="sy0">/</span> b　<span class="co1">//タンジェント</span></pre></td></tr></table></div>

<p>となります。<br />
例えば、角度が45°のときの辺cと辺aの比率は、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">sin45° <span class="sy0">=</span> <span class="nu0">1</span> <span class="co2">/ √2 = a /</span> c　※角度に対する比率というのは決まっています。</pre></td></tr></table></div>

<p>ですね、よって</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">a <span class="sy0">:</span> c <span class="sy0">=</span> <span class="nu0">1</span> <span class="sy0">:</span> √<span class="nu0">2</span></pre></td></tr></table></div>

<p>となるわけです。</p>
<p>つまり、三角関数の基本的な意味とは、</p>
<blockquote><p>・角度と辺の比率の関係を表す。<br />
・角度から辺の比率が分かる。<br />
・辺の比率から角度が分かる。</p></blockquote>
<p>ということです。</p>
<h2>javascriptでの三角関数の書き方</h2>
<p>まあ、これは書くまでもないですが、一応。<br />
今回はjavascriptでの書き方。</p>
<p>javascriptではMathクラスが予め用意されています。<br />
このMathクラスのメソッドを使います。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">Math.<span class="me1">sin</span><span class="br0">&#40;</span> 角度 <span class="br0">&#41;</span>
Math.<span class="me1">cos</span><span class="br0">&#40;</span> 角度 <span class="br0">&#41;</span>
Math.<span class="me1">tan</span>（ 角度 ）</pre></td></tr></table></div>

<p>と書きます。<br />
返り値は辺の比率が小数点で返ってきます。<br />
このとき重要なのは、角度に入る部分が「度」ではなくて「ラジアン」だということです。</p>
<blockquote><p><a href="http://ja.wikipedia.org/wiki/ラジアン" target="_blank"> ラジアン　wikipedia </a></p></blockquote>
<p>ラジアンの意味は上記を見てもらうとしまして、角度とラジアンの関係は</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="nu0">360</span>度 <span class="sy0">=</span> <span class="nu0">2</span>π（パイ）ラジアン</pre></td></tr></table></div>

<p>になります。<br />
javascriptでいくと、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="nu0">360</span>度 <span class="sy0">=</span> Math.<span class="me1">PI</span> <span class="sy0">*</span> <span class="nu0">2</span></pre></td></tr></table></div>

<p>です。<br />
つまり、sin360°を求めたいときは</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">Math.<span class="me1">sin</span><span class="br0">&#40;</span> Math.<span class="me1">PI</span> <span class="sy0">*</span> <span class="nu0">2</span> <span class="br0">&#41;</span></pre></td></tr></table></div>

<p>と書きます。<br />
ちょっとめんどくさいですね。</p>
<h2>座標における三角関数：sinとcosの意味</h2>
<p>ここからは実際にプログラミング中での使い方を見ていきます。<br />
実際に使う箇所として一番多いのは、図形やいろんなオブジェクトを運動させる（アニメーション）ときではないかと思います。<br />
つまり、ある座標上のx値とy値をもとに動かしていくわけです。</p>
<p>座標上における三角関数というのはどのようなものでしょうか。</p>
<p style="padding:0 0 15px 0;text-align:center;"><img src="image/math02.png" alt="" /></p>
<p>上記の図を見てもらうと分かりますが、この三角形の「点Ｂ」において、x座標はb、y座標はaになります。<br />
つまり、点Bの座標は（ b, a ）ということになりますね。<br />
さらに、点Bの座標を知りたければ、辺bと辺aを知ればよいということになります。</p>
<p>さて、どうやるのか。<br />
一番上の三角関数の基本に戻ると</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">sinθ <span class="sy0">=</span> a <span class="sy0">/</span> c
cosθ <span class="sy0">=</span> b <span class="sy0">/</span> c</pre></td></tr></table></div>

<p>この公式がありましたね。<br />
この式を変形すると、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">a <span class="sy0">=</span> sinθ <span class="sy0">*</span> c
b <span class="sy0">=</span> cosθ <span class="sy0">*</span> c</pre></td></tr></table></div>

<p>になります。<br />
cは対辺と呼ぶので</p>
<blockquote><p>cosに対辺をかけたものがx座標<br />
sinに対辺をかけたものがy座標</p></blockquote>
<p>になります。<br />
また、</p>
<blockquote><p>基準点からの角度と対辺の長さが分かれば座標を取得できる</p></blockquote>
<p>ということにもなります。<br />
ちなみにtanについてふれていませんが、実際あまりつかわないのでここではそっとしておきましょう。</p>
<h2>三角関数を使って円運動</h2>
<blockquote><p>基準点からの角度と対辺の長さが分かれば座標を取得できる</p></blockquote>
<p>と書きましたが、この方法を使って表現できる一番スタンダードなものは円運動です。<br />
円運動させたい図形の座標を「点B」、円運動する円の中心点を「点Ａ」とみたてて三角形を書いてみます。</p>
<p style="padding:0 0 15px 0;text-align:center;"><img src="image/math03.png" alt="" /></p>
<p>どうでしょうか。<br />
半径と中心点の座標を決めて、角度だけ変えていけば点Bは図の円の上を移動することになりますね。<br />
これを利用して円運動をさせます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="co1">//基準点</span>
<span class="kw2">var</span> centerX <span class="sy0">=</span> <span class="nu0">200</span><span class="sy0">;</span>
<span class="kw2">var</span> centerY <span class="sy0">=</span> <span class="nu0">200</span><span class="sy0">;</span>
&nbsp;
<span class="co1">//半径</span>
<span class="kw2">var</span> radius <span class="sy0">=</span> <span class="nu0">50</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>としてみます。<br />
これを使い座標を取得します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">var</span> posX <span class="sy0">=</span> Math.<span class="me1">cos</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span> <span class="sy0">*</span> radius<span class="sy0">;</span>
<span class="kw2">var</span> posY <span class="sy0">=</span> Math.<span class="me1">sin</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span> <span class="sy0">*</span> radius<span class="sy0">;</span></pre></td></tr></table></div>

<p>angleには角度が入ります。<br />
5度づつ動かしたい場合は、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="co1">//角度の初期値</span>
<span class="kw2">var</span> angle <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
<span class="co1">//変化率（5度）</span>
<span class="kw2">var</span> per <span class="sy0">=</span> Math.<span class="me1">PI</span> <span class="sy0">/</span> <span class="nu0">36</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>としておきます。</p>
<p>それから、実際に動かすとわかりますが、このままでは原点（0,0）を中心に動いてしまいます。<br />
設定した点を中心に周るように点をずらします。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">var</span> posX <span class="sy0">=</span> Math.<span class="me1">cos</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span> <span class="sy0">*</span> radius <span class="sy0">+</span> centerX<span class="sy0">;</span>
<span class="kw2">var</span> posY <span class="sy0">=</span> Math.<span class="me1">sin</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span> <span class="sy0">*</span> radius <span class="sy0">+</span> centerY<span class="sy0">;</span></pre></td></tr></table></div>

<p>これらをまとめて、定期的に動作させます。</p>
<div style="text-align:center;width:465px;margin:0 auto 10px auto;">
<script src="http://jsdo.it/blogparts/1IkM/js" type="text/javascript"></script> <a title="円運動" href="http://jsdo.it/_wonder/1IkM">円運動 &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a>
</div>
<p>これが円運動の基本です。</p>
<h2>三角関数を使って円運動（2）</h2>
<p>上記の座標算出方法は、</p>
<ol>
<li>中心点を決める</li>
<li>円運動させる円の半径を決める。</li>
<li>角度を決め、角度を増やしていく。</li>
</ol>
<p>という方法でした。 「基準点を決めて半径がこのくらいで円運動させる」というように、あらかじめ全ての情報が分かっている場合は特に問題ないです。  ただ、例えば座標上に一つ点があってそれをある基準点の周りを円運動させたいときなんかは少し面倒なことになります。</p>
<ul>
<li>点が基準点からみて角度が何度あるのか。</li>
<li>点と基準点との距離（円運動させる円の半径）はいくつか。</li>
</ul>
<p>という処理をはさまなければいけません。 この処理は、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">var</span> targetX<span class="sy0">;</span> <span class="co1">//移動する点のx座標とする</span>
<span class="kw2">var</span> targetY<span class="sy0">;</span> <span class="co1">//移動する点のy座標とする</span>
&nbsp;
<span class="co1">//角度を求める</span>
<span class="kw2">var</span> dx <span class="sy0">=</span> targetX <span class="sy0">-</span> centerX<span class="sy0">;</span>
<span class="kw2">var</span> dy <span class="sy0">=</span> targetY <span class="sy0">-</span> centerY<span class="sy0">;</span>
&nbsp;
<span class="kw2">var</span> angle <span class="sy0">=</span> Math.<span class="me1">atan2</span><span class="br0">&#40;</span> dy<span class="sy0">,</span> dx <span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//点と点の距離から角度を求める式</span>
&nbsp;
<span class="co1">//距離を求める</span>
<span class="kw2">var</span> radius <span class="sy0">=</span> Math.<span class="me1">sqrt</span><span class="br0">&#40;</span> dx<span class="sy0">*</span>dx <span class="sy0">+</span> dy<span class="sy0">*</span>dy <span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//ピタゴラスの定理</span></pre></td></tr></table></div>

<p>とやって初めて角度と距離を取得することが出来ます。 ちなみに距離を求める方法はピタゴラスの定理です。覚えてますか？ サンプルはこちら。  </p>
<div style="text-align:center;width:465px;margin:0 auto 10px auto;">
<script src="http://jsdo.it/blogparts/9C6Z/js" type="text/javascript"></script></p>
<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a title="三角関数（2）" href="http://jsdo.it/_wonder/9C6Z">三角関数（2） &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
</div>
<p>設定した位置から基準点に対して円運動します。</p>
<h2>三角関数の数値を使った運動</h2>
<p>ここまでは三角関数を使ってある点との角度を求めたり位置を求めたりしましたが、ちょっと視点を変えてみようと思います。<br />
<a href="http://ja.wikipedia.org/wiki/ファイル:Sin_and_cos.png" target="_blank"> wikipedia</a>さんからちょっと拝借させて頂きました。ごめんなさい。</p>
<p style="padding:0 0 15px 0;text-align:center;"><img src="image/math04.png" alt="" /></p>
<p>これを見るとわかりますが、sinやcosというのは-1.0～1.0の値をいったりきたりしています。<br />
これに注目してみましょう。。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">Math.<span class="me1">sin</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>angleを少しづつ増やしていくと、sinは</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="nu0">0</span>　→　<span class="nu0">1.0</span>　→　<span class="nu0">0</span>　→　<span class="sy0">-</span><span class="nu0">1.0</span>　→　<span class="nu0">0</span></pre></td></tr></table></div>

<p>となっていきます。<br />
この値を例えば位置に加え続けてみます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">var</span> vx <span class="sy0">=</span> posX <span class="sy0">+</span> Math.<span class="me1">sin</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span><span class="sy0">;</span>
angle <span class="sy0">+=</span> <span class="nu0">0.1</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>という感じですね。<br />
これで、ある範囲を往復する運動になります。<br />
しかもちょっとイージング（加速したり減速したりする）気味で。</p>
<div style="text-align:center;width:465px;margin:0 auto 10px auto;">
<script src="http://jsdo.it/blogparts/aN51/js" type="text/javascript"></script> <a title="三角関数（3）" href="http://jsdo.it/_wonder/aN51">三角関数（3） &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a>
</div>
<p>同じように、図形の大きさに適用してみます。  </p>
<div style="text-align:center;width:465px;margin:0 auto 10px auto;">
<script src="http://jsdo.it/blogparts/cqow/js" type="text/javascript"></script></p>
<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a title="三角関数（4）" href="http://jsdo.it/_wonder/cqow">三角関数（4） &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
</div>
<p>なんか面白い動きになりましたね。</p>
<h2>まとめ</h2>
<p>以上で基本終わりです。<br />
なかなか奥が深い三角関数ですので気になる方は色々と調べてみてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=446</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JS + Canvas = 3D しました</title>
		<link>http://blog.wonder-boys.net/?p=436</link>
		<comments>http://blog.wonder-boys.net/?p=436#comments</comments>
		<pubDate>Fri, 27 Aug 2010 09:46:03 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[3D]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=436</guid>
		<description><![CDATA[javascriptとCanvasを使って3Dオブジェクトを作ってみました。

サンプル
こんな感じで。
四角い箱がぐるぐる回ります。
let&#8217;s play !!
 3D Cube &#8211; jsdo. [...]]]></description>
			<content:encoded><![CDATA[<p>javascriptとCanvasを使って3Dオブジェクトを作ってみました。</p>
<p><span id="more-436"></span></p>
<h2>サンプル</h2>
<p>こんな感じで。<br />
四角い箱がぐるぐる回ります。<br />
let&#8217;s play !!</p>
<p><script src="http://jsdo.it/blogparts/44zk/js" type="text/javascript"></script> <a title="3D Cube" href="http://jsdo.it/_wonder/44zk">3D Cube &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<p>簡単にコードの解説を。</p>
<h2>座標の決定は遠近法を使う</h2>
<p>3Dの描画を行う場合データとしては、x、y、zの座標を持たないといけません。<br />
 しかし、スクリーン上は2次元なのでx、yしかありません。<br />
そこで遠近法を使って&#8221;3Dっぽく&#8221;見せる必要があります。<br />
奥行きを感じる絵を描くのと同じ感覚でしょうかね。</p>
<blockquote><p><a href="http://ja.wikipedia.org/wiki/遠近法" target="_blank">遠近法 Wikipedia</a></p></blockquote>
<p>具体的には、消失点（上記ページ参照）を作り、その座標点を考慮して点を配置します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">106</span>行目
<span class="kw2">var</span> Point3D <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span> posX<span class="sy0">,</span> posY<span class="sy0">,</span> posZ <span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">x</span> <span class="sy0">=</span> posX<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">y</span> <span class="sy0">=</span> posY<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">z</span> <span class="sy0">=</span> posZ<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">cx</span> <span class="sy0">=</span> posX<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">cy</span> <span class="sy0">=</span> posY<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">cz</span> <span class="sy0">=</span> posZ<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">centerX</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">centerY</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">centerZ</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
    <span class="kw1">this</span>.<span class="me1">fl</span> <span class="sy0">=</span> <span class="nu0">250</span><span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">vpX</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">vpY</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
Point3D.<span class="me1">prototype</span> <span class="sy0">=</span> <span class="br0">&#123;</span>
    setVanishingPoint<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span> vpX<span class="sy0">,</span> vpY <span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">vpX</span> <span class="sy0">=</span> vpX<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">vpY</span> <span class="sy0">=</span> vpY<span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
    setCenter<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span> centerX<span class="sy0">,</span> centerY<span class="sy0">,</span> centerZ <span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">centerX</span> <span class="sy0">=</span> centerX<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">centerY</span> <span class="sy0">=</span> centerY<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">centerZ</span> <span class="sy0">=</span> centerZ<span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
    screenX<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">vpX</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">centerX</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">x</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">getScale</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
    screenY<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">vpY</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">centerY</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">y</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">getScale</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
    getScale<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
  <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">fl</span> <span class="sy0">/</span> <span class="br0">&#40;</span> <span class="kw1">this</span>.<span class="me1">fl</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">z</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">centerZ</span> <span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>これが基本となるオブジェクト。<br />
点の座標を管理します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw1">this</span>.<span class="me1">vpX</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
<span class="kw1">this</span>.<span class="me1">vpY</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>ここが消失点を持つプロパティです。<br />
インスタンス化した後に外部から設定できるようにしてあります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">277</span>行目
<span class="kw1">for</span><span class="br0">&#40;</span> <span class="kw2">var</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> points.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span> <span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw2">var</span> point <span class="sy0">=</span> points<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">;</span>
    point.<span class="me1">setVanishingPoint</span><span class="br0">&#40;</span> stage.<span class="me1">stageWidth</span> <span class="co2">/ 2, stage.stageHeight /</span> <span class="nu0">2</span> <span class="br0">&#41;</span><span class="sy0">;</span>
    point.<span class="me1">setCenter</span><span class="br0">&#40;</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">50</span><span class="br0">&#41;</span><span class="sy0">;</span>
    stage.<span class="me1">setPoint</span><span class="br0">&#40;</span> point <span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></td></tr></table></div>

<p>ステージのちょうど真ん中を消失点に設定しています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">132</span>行目
screenX<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">vpX</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">centerX</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">x</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">getScale</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">,</span>
screenY<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">vpY</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">centerY</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">y</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">getScale</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></td></tr></table></div>

<p>screenXとsccreenYというメソッドを使って、スクリーン上に配置する場所を計算しています。<br />
x値とy値が同じでもz値が大きくなるとその分消失点に近づいていくというわけです。</p>
<h2>3Dの回転</h2>
<p>3Dの座標回転は三角関数を使います。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">51</span>行目
rotateX<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span> point<span class="sy0">,</span> angle <span class="br0">&#41;</span><span class="br0">&#123;</span>
    cosX <span class="sy0">=</span> Math.<span class="me1">cos</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span><span class="sy0">;</span>
    sinX <span class="sy0">=</span> Math.<span class="me1">sin</span><span class="br0">&#40;</span> angle <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    y1 <span class="sy0">=</span> point.<span class="me1">cy</span> <span class="sy0">*</span> cosX <span class="sy0">-</span> point.<span class="me1">cz</span> <span class="sy0">*</span> sinX<span class="sy0">;</span>
    z1 <span class="sy0">=</span> point.<span class="me1">cz</span> <span class="sy0">*</span> cosX <span class="sy0">+</span> point.<span class="me1">cy</span> <span class="sy0">*</span> sinX<span class="sy0">;</span>
&nbsp;
    point.<span class="me1">y</span> <span class="sy0">=</span> y1<span class="sy0">;</span>
    point.<span class="me1">z</span> <span class="sy0">=</span> z1<span class="sy0">;</span>
<span class="br0">&#125;</span></pre></td></tr></table></div>

<p>この関数はx方向の軸を中心に回転させるメソッドです。 angleというのは角度。<br />
原点を中心として現在の位置から何度回転させるか。で位置を決めています。<br />
同じ原理で、y軸、z軸の回転もできます。</p>
<h2>面の描画（ポリゴン）</h2>
<p>上記にあったPoint3Dクラス（※正確にはクラスじゃないけど）の座標を元に面を描く場合三角形を使います。<br />
Point3Dインスタンスを3つ集めて三角形を描きます。これがいわゆるポリゴンですね。</p>
<blockquote><p>
<a href="http://ja.wikipedia.org/wiki/ポリゴン" target="_blank">ポリゴン　Wikipedia</a></p></blockquote>
<p>三角形というのはどうやらいろいろと使いやすいものだそうです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">145</span>行目
<span class="kw2">var</span> Triangle <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span> pointA<span class="sy0">,</span> pointB<span class="sy0">,</span> pointC<span class="sy0">,</span> color <span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">a</span> <span class="sy0">=</span> pointA<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">b</span> <span class="sy0">=</span> pointB<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">c</span> <span class="sy0">=</span> pointC<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">color</span> <span class="sy0">=</span> color<span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">light</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>メソッド部分は割愛しますが、Triangleクラスを使っています。<br />
引数に入るPoint3Dインスタンス3つを使って三角形を描くようにします。<br />
実際に描くのはCanvasですが。</p>
<p>Triangleクラスは三角形データの保持です。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">86</span>行目
<span class="kw1">this</span>.<span class="me1">canvas</span>.<span class="me1">moveTo</span><span class="br0">&#40;</span> triangle.<span class="me1">a</span>.<span class="me1">screenX</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> triangle.<span class="me1">a</span>.<span class="me1">screenY</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">this</span>.<span class="me1">canvas</span>.<span class="me1">lineTo</span><span class="br0">&#40;</span> triangle.<span class="me1">b</span>.<span class="me1">screenX</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> triangle.<span class="me1">b</span>.<span class="me1">screenY</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">this</span>.<span class="me1">canvas</span>.<span class="me1">lineTo</span><span class="br0">&#40;</span> triangle.<span class="me1">c</span>.<span class="me1">screenX</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> triangle.<span class="me1">c</span>.<span class="me1">screenY</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">this</span>.<span class="me1">canvas</span>.<span class="me1">lineTo</span><span class="br0">&#40;</span> triangle.<span class="me1">a</span>.<span class="me1">screenX</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> triangle.<span class="me1">a</span>.<span class="me1">screenY</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>こんな感じで。</p>
<h2>陰面消去</h2>
<p>ポリゴンを使って三角形を描画すると奥に配置されるべきポリゴンが手前に来てしまうことがあります。<br />
これはちょっとよろしくないので、裏側になるポリゴンは描画しないようにします。<br />
これが、陰面消去。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">159</span>行目
isBackFace<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw2">var</span> cax <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">c</span>.<span class="me1">screenX</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">a</span>.<span class="me1">screenX</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw2">var</span> cay <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">c</span>.<span class="me1">screenY</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">a</span>.<span class="me1">screenY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw2">var</span> bcx <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">b</span>.<span class="me1">screenX</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">c</span>.<span class="me1">screenX</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw2">var</span> bcy <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">b</span>.<span class="me1">screenY</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">c</span>.<span class="me1">screenY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">return</span> cax <span class="sy0">*</span> bcy <span class="sy0">&amp;</span>gt<span class="sy0">;</span> cay <span class="sy0">*</span> bcx<span class="sy0">;</span>
<span class="br0">&#125;</span></pre></td></tr></table></div>

<p>3つの点の配置順をチェックして面が裏面なのか表面なのかを判断します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">77</span>行目
<span class="kw1">if</span><span class="br0">&#40;</span> triangle.<span class="me1">isBackFace</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="kw1">continue</span><span class="sy0">;</span> <span class="br0">&#125;</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>こんな感じで裏面だったら描画しないようにします。</p>
<h2>3D照明</h2>
<p>ついでに、面の位置によって明るさを調整できるとリアルに感じますね。<br />
光源データを持つクラスを作ります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">204</span>行目
<span class="kw2">var</span> Light <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span> posX<span class="sy0">,</span> posY<span class="sy0">,</span> posZ<span class="sy0">,</span> brightness <span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">x</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">100</span><span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">y</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">100</span><span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">z</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">100</span><span class="sy0">;</span>
    <span class="kw1">this</span>.<span class="me1">brightness</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
&nbsp;
    <span class="kw1">if</span><span class="br0">&#40;</span> arguments<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="kw1">this</span>.<span class="me1">x</span> <span class="sy0">=</span> posX<span class="sy0">;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span> arguments<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="kw1">this</span>.<span class="me1">y</span> <span class="sy0">=</span> posY<span class="sy0">;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span> arguments<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="kw1">this</span>.<span class="me1">z</span> <span class="sy0">=</span> posZ<span class="sy0">;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span> arguments<span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="kw1">this</span>.<span class="me1">brightness</span> <span class="sy0">=</span> brightness<span class="sy0">;</span>
<span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
Light.<span class="me1">prototype</span> <span class="sy0">=</span> <span class="br0">&#123;</span>
    setBrightness<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span> num <span class="br0">&#41;</span><span class="br0">&#123;</span>
  <span class="kw1">this</span>.<span class="me1">brightness</span> <span class="sy0">=</span> Math.<span class="me1">max</span><span class="br0">&#40;</span> num<span class="sy0">,</span> <span class="nu0">0</span> <span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="kw1">this</span>.<span class="me1">brightness</span> <span class="sy0">=</span> Math.<span class="me1">min</span><span class="br0">&#40;</span> <span class="kw1">this</span>.<span class="me1">brightness</span><span class="sy0">,</span> <span class="nu0">1</span> <span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span><span class="sy0">;</span></pre></td></tr></table></div>

<p>位置とか。明るさとか。<br />
このクラスに対して面がどっちを向いているかを算出します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">179</span>行目
getLightFactor<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw2">var</span> ab <span class="sy0">=</span> <span class="kw2">new</span> Object<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    ab.<span class="me1">x</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">a</span>.<span class="me1">x</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">b</span>.<span class="me1">x</span><span class="sy0">;</span>
    ab.<span class="me1">y</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">a</span>.<span class="me1">y</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">b</span>.<span class="me1">y</span><span class="sy0">;</span>
    ab.<span class="me1">z</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">a</span>.<span class="me1">z</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">b</span>.<span class="me1">z</span><span class="sy0">;</span>
&nbsp;
    <span class="kw2">var</span> bc <span class="sy0">=</span> <span class="kw2">new</span> Object<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    bc.<span class="me1">x</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">b</span>.<span class="me1">x</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">c</span>.<span class="me1">x</span><span class="sy0">;</span>
    bc.<span class="me1">y</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">b</span>.<span class="me1">y</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">c</span>.<span class="me1">y</span><span class="sy0">;</span>
    bc.<span class="me1">z</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">b</span>.<span class="me1">z</span> <span class="sy0">-</span> <span class="kw1">this</span>.<span class="me1">c</span>.<span class="me1">z</span><span class="sy0">;</span>
&nbsp;
    <span class="kw2">var</span> norm <span class="sy0">=</span> <span class="kw2">new</span> Object<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    norm.<span class="me1">x</span> <span class="sy0">=</span> <span class="br0">&#40;</span> ab.<span class="me1">y</span> <span class="sy0">*</span> bc.<span class="me1">z</span> <span class="br0">&#41;</span> <span class="sy0">-</span> <span class="br0">&#40;</span> ab.<span class="me1">z</span> <span class="sy0">*</span> bc.<span class="me1">y</span> <span class="br0">&#41;</span><span class="sy0">;</span>
    norm.<span class="me1">y</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="br0">&#40;</span><span class="br0">&#40;</span> ab.<span class="me1">x</span> <span class="sy0">*</span> bc.<span class="me1">z</span> <span class="br0">&#41;</span> <span class="sy0">-</span> <span class="br0">&#40;</span> ab.<span class="me1">z</span> <span class="sy0">*</span> bc.<span class="me1">x</span> <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    norm.<span class="me1">z</span> <span class="sy0">=</span> <span class="br0">&#40;</span> ab.<span class="me1">x</span> <span class="sy0">*</span> bc.<span class="me1">y</span> <span class="br0">&#41;</span> <span class="sy0">-</span> <span class="br0">&#40;</span> ab.<span class="me1">y</span> <span class="sy0">*</span> bc.<span class="me1">x</span> <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="kw2">var</span> dotProd <span class="sy0">=</span> norm.<span class="me1">x</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">x</span> <span class="sy0">+</span> norm.<span class="me1">y</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">y</span> <span class="sy0">+</span> norm.<span class="me1">z</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">z</span><span class="sy0">;</span>
    <span class="kw2">var</span> normMag <span class="sy0">=</span> Math.<span class="me1">sqrt</span><span class="br0">&#40;</span> norm.<span class="me1">x</span> <span class="sy0">*</span> norm.<span class="me1">x</span> <span class="sy0">+</span> norm.<span class="me1">y</span> <span class="sy0">*</span> norm.<span class="me1">y</span> <span class="sy0">+</span> norm.<span class="me1">z</span> <span class="sy0">*</span> norm.<span class="me1">z</span> <span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw2">var</span> lightMag <span class="sy0">=</span> Math.<span class="me1">sqrt</span><span class="br0">&#40;</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">x</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">x</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">y</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">y</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">z</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">z</span> <span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">return</span> <span class="br0">&#40;</span> Math.<span class="me1">acos</span><span class="br0">&#40;</span>dotProd <span class="co2">/ (normMag * lightMag)) /</span> Math.<span class="me1">PI</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw1">this</span>.<span class="me1">light</span>.<span class="me1">brightness</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></td></tr></table></div>

<p>とっても難しいので理解できません。<br />
また、この結果をもとに色を調節します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">■<span class="nu0">166</span>行目
getAdjustedColor<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    <span class="kw2">var</span> color <span class="sy0">=</span> parseInt<span class="br0">&#40;</span> <span class="st0">'0x'</span><span class="sy0">+</span><span class="br0">&#40;</span> <span class="kw1">this</span>.<span class="me1">color</span>.<span class="me1">charAt</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="st0">&quot;#&quot;</span> <span class="sy0">?</span> <span class="kw1">this</span>.<span class="me1">color</span>.<span class="me1">substring</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="sy0">:</span> <span class="kw1">this</span>.<span class="me1">color</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw2">var</span> red <span class="sy0">=</span> <span class="br0">&#40;</span> color <span class="sy0">&amp;</span>amp<span class="sy0">;</span> 0xff0000 <span class="br0">&#41;</span> <span class="sy0">&amp;</span>gt<span class="sy0">;&amp;</span>gt<span class="sy0">;</span> <span class="nu0">16</span><span class="sy0">;</span>
    <span class="kw2">var</span> green <span class="sy0">=</span> <span class="br0">&#40;</span> color <span class="sy0">&amp;</span>amp<span class="sy0">;</span> 0x00ff00 <span class="br0">&#41;</span> <span class="sy0">&amp;</span>gt<span class="sy0">;&amp;</span>gt<span class="sy0">;</span> <span class="nu0">8</span><span class="sy0">;</span>
    <span class="kw2">var</span> blue <span class="sy0">=</span> <span class="br0">&#40;</span> color <span class="sy0">&amp;</span>amp<span class="sy0">;</span> 0x0000ff <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="kw2">var</span> lightFactor <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">getLightFactor</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    red <span class="sy0">*=</span> lightFactor<span class="sy0">;</span>
    green <span class="sy0">*=</span> lightFactor<span class="sy0">;</span>
    blue <span class="sy0">*=</span> lightFactor<span class="sy0">;</span>
    color <span class="sy0">=</span> red <span class="sy0">&amp;</span>lt<span class="sy0">;&amp;</span>lt<span class="sy0">;</span> <span class="nu0">16</span> <span class="sy0">|</span> green <span class="sy0">&amp;</span>lt<span class="sy0">;&amp;</span>lt<span class="sy0">;</span> <span class="nu0">8</span> <span class="sy0">|</span> blue <span class="sy0">;</span>
    <span class="kw1">return</span> <span class="st0">&quot;#&quot;</span> <span class="sy0">+</span> color.<span class="me1">toString</span><span class="br0">&#40;</span><span class="nu0">16</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></td></tr></table></div>

<p>一度、RGBに分けて各色ごとに調整して元に戻しています。ビット演算ですね。<br />
まあこの辺もあんまり理解してないんですけど。</p>
<h2>というわけで</h2>
<p>簡単な解説でした。 ここまでこればあとはどんなものでも描けそうです。<br />
球体とかも。</p>
<p><script src="http://jsdo.it/blogparts/y279/js" type="text/javascript"></script></p>
<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a title="3D Sphere" href="http://jsdo.it/_wonder/y279">3D Sphere &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
<p>それから、この球体にテクスチャを貼り付けたりとかしたいです。<br />
やりかたわからないけど。</p>
<h2>参考サイト</h2>
<p>こちらを読めばもっと理解が深まるかも。（actionscriptですけど！）</p>
<blockquote><p><a href="http://d.hatena.ne.jp/nitoyon/20080616/as_3d_lessen1" target="_blank">AS3.0 で 3D プログラミングを１から勉強する (1)　てっく煮ブログ</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=436</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>テキストの使用（text要素）</title>
		<link>http://blog.wonder-boys.net/?p=434</link>
		<comments>http://blog.wonder-boys.net/?p=434#comments</comments>
		<pubDate>Sun, 01 Aug 2010 11:33:24 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[markup]]></category>
		<category><![CDATA[svg]]></category>
		<category><![CDATA[text]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=434</guid>
		<description><![CDATA[SVGではテキストを使用することもできます。

text
SVGでテキストを使用する場合はtext要素を使用します。
表示させたいテキストはtext要素で囲むことで表示されます。
色(fill)、境界線(stroke)、 [...]]]></description>
			<content:encoded><![CDATA[<p>SVGではテキストを使用することもできます。</p>
<p><span id="more-434"></span></p>
<h2>text</h2>
<p>SVGでテキストを使用する場合はtext要素を使用します。<br />
表示させたいテキストはtext要素で囲むことで表示されます。<br />
色(fill)、境界線(stroke)、透明度(opacity)、座標(x、y)、等図形と同じ属性値を設定することができます。<br />
フォントサイズはfont-size属性にて設定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> x<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;20&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span>&gt;</span>
    テキストを使用します。
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<p>デフォルト座標はテキストの左下になりますので、x座標y座標を指定しない場合はエリアから外にでてしまいます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;20&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span>&gt;</span>
    テキストを使用します。　//デフォルト座標値は（0,0）なのでエリア外に配置されてしまう。
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<blockquote><p><a href="http://wonder-boys.net/test/svg/svg-text01.html" target="_blank"> SVGサンプル &#8211; テキストの配置 </a></p></blockquote>
<h2>テキスト要素の装飾</h2>
<p>上記以外にも、テキストの装飾をすることができます。</p>
<p><strong>・font-family</strong><br />
[serif, Verdana, Arial ....]</p>
<p>フォントの種類を指定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span> font-family<span class="sy0">=</span><span class="st0">&quot;Verdana&quot;</span>&gt;</span>テキストを使用します。its text<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<p><strong>・font-weight</strong><br />
[normal, bold ....]</p>
<p>フォントの太さを指定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span> font-weight<span class="sy0">=</span><span class="st0">&quot;bold&quot;</span>&gt;</span>テキストを使用します。its text<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<p><strong>・font-style</strong><br />
[normal, italic, oblique ....]</p>
<p>フォントのスタイルを指定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span> font-<span class="kw3">style</span><span class="sy0">=</span><span class="st0">&quot;italic&quot;</span>&gt;</span>テキストを使用します。its text<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<p><strong>・text-decoration</strong><br />
[none, underline, overline, line-through]</p>
<p>下線や打消し線等フォントの装飾を指定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span> text-decoration<span class="sy0">=</span><span class="st0">&quot;underline&quot;</span>&gt;</span>テキストを使用します。its text<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<p><strong>・word-spacing</strong><br />
[数値]</p>
<p>単語と単語の間隔を指定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc1">&amp;lt;</span>text font-size=&quot;12&quot; fill=&quot;blue&quot; word-spacing=&quot;2&quot;<span class="sc1">&amp;gt;</span>テキストを使用します。its text<span class="sc1">&amp;lt;</span>/text<span class="sc1">&amp;gt;</span></pre></td></tr></table></div>

<p><strong>・letter-spacing</strong><br />
[数値]</p>
<p>文字と文字の間隔を指定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span> letter-spacing<span class="sy0">=</span><span class="st0">&quot;2&quot;</span>&gt;</span>テキストを使用します。its text<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<p>HTMLやCSSで指定する要素とほとんど同じなので分かりやすいと思います。</p>
<blockquote><p><a href="http://wonder-boys.net/test/svg/svg-text02.html" target="_blank"> SVGサンプル &#8211; テキストの装飾 </a></p></blockquote>
<h2>テキスト要素の部分的な装飾の指定</h2>
<p>text要素の内部でtspan要素を追加することで、部分的に違う装飾を指定することができます。<br />
tspanにはtextと同じ装飾を指定することができます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span>&gt;</span>テキストを使用します。<span class="sc2">&lt;tspan fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span> text-decoration<span class="sy0">=</span><span class="st0">&quot;underline&quot;</span>&gt;</span>its text<span class="sc2">&lt;<span class="sy0">/</span>tspan&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<p>tspanには、xやy等の座標も独自に設定することができます。<br />
ただし、親要素になるtext要素の座標は継承しません。原点からの絶対座標になります。<br />
CSSでいうと、position: absoluto;を指定したようなものです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> y<span class="sy0">=</span><span class="st0">&quot;20&quot;</span> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span>&gt;</span>テキストを使用します。<span class="sc2">&lt;tspan fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;30&quot;</span>&gt;</span>its text<span class="sc2">&lt;<span class="sy0">/</span>tspan&gt;&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<blockquote><p><a href="http://wonder-boys.net/test/svg/svg-text03.html" target="_blank"> SVGサンプル &#8211; 部分的なテキストの装飾 </a></p></blockquote>
<h2>テキストの配置（寄せ）</h2>
<p>テキストは通常左寄せで表示されます。<br />
テキストのセンタリングや右寄せをする場合はtext-anchorを指定します。<br />
通常の寄せと少し違うのが、<br />
指定していない場合はx=&#8221;0&#8243;がテキストの左端になりますが、middleやendを指定するとx=&#8221;0&#8243;がテキストの中央もしくは、右端になります。</p>
<p><strong>・text-anchor</strong><br />
[start, middle, end]</p>
<p>指定する名称からして、どこからテキストを始めるかという感じで覚えるといいかと思います。<br />
デフォルトはstartです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span> text-anchor<span class="sy0">=</span><span class="st0">&quot;start&quot;</span>&gt;</span>テキストを使用します。左寄せです。<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span> text-anchor<span class="sy0">=</span><span class="st0">&quot;middle&quot;</span>&gt;</span>テキストを使用します。中央寄せです。<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span>
<span class="sc2">&lt;<a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a> font-<span class="kw3">size</span><span class="sy0">=</span><span class="st0">&quot;12&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;blue&quot;</span> text-anchor<span class="sy0">=</span><span class="st0">&quot;end&quot;</span>&gt;</span>テキストを使用します。右寄せです。<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/text.html"><span class="kw2">text</span></a>&gt;</span></pre></td></tr></table></div>

<blockquote><p><a href="http://wonder-boys.net/test/svg/svg-text04.html" target="_blank"> SVGサンプル &#8211; テキストの配置（寄せ） </a></p></blockquote>
<h2>まとめ</h2>
<p>テキスト要素の配置については、そんなに戸惑うことなくできました。<br />
装飾についてもCSSと同じような指定でいけるので助かります。</p>
<p>あとは、SVGでテキストを配置するべきか、通常のHTML内に用意するべきかの判断を見極めたいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=434</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>要素のグループ化と参照</title>
		<link>http://blog.wonder-boys.net/?p=432</link>
		<comments>http://blog.wonder-boys.net/?p=432#comments</comments>
		<pubDate>Tue, 27 Jul 2010 09:52:41 +0000</pubDate>
		<dc:creator>_wonder</dc:creator>
				<category><![CDATA[markup]]></category>
		<category><![CDATA[svg]]></category>
		<category><![CDATA[defs]]></category>
		<category><![CDATA[g]]></category>
		<category><![CDATA[symbol]]></category>
		<category><![CDATA[use]]></category>
		<category><![CDATA[xlink]]></category>

		<guid isPermaLink="false">http://blog.wonder-boys.net/?p=432</guid>
		<description><![CDATA[SVGの各要素をグループ化することで効率よく管理することが出来ます。

グループ化の方法
各要素をグループ化する方法は3つあります。

1
2
3
&#60;g&#62; 要素を単純にグループ化します。
&#60;symbol [...]]]></description>
			<content:encoded><![CDATA[<p>SVGの各要素をグループ化することで効率よく管理することが出来ます。</p>
<p><span id="more-432"></span></p>
<h2>グループ化の方法</h2>
<p>各要素をグループ化する方法は3つあります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;g&gt;</span> 要素を単純にグループ化します。
<span class="sc2">&lt;symbol&gt;</span> 各要素をグループ化しシンボルにします。
<span class="sc2">&lt;defs&gt;</span> 参照が想定される要素をグループ化するためのもの。</pre></td></tr></table></div>

<h2>g要素</h2>
<p>要素をグループ化して共通の装飾をすることができます。<br />
また、id属性を指定しておくことで、グループ単位でのアニメーション等に使用できます。<br />
g要素に指定された属性値は内部の要素に継承されます。<br />
内部の要素では属性値を上書きすることもできます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;g <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;figs&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;lightgreen&quot;</span> stroke<span class="sy0">=</span><span class="st0">&quot;darkgreen&quot;</span> stroke-dasharray<span class="sy0">=</span><span class="st0">&quot;2,2&quot;</span>&gt;</span>
    <span class="sc2">&lt;rect x<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;circle cx<span class="sy0">=</span><span class="st0">&quot;170&quot;</span> cy<span class="sy0">=</span><span class="st0">&quot;60&quot;</span> r<span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span>g&gt;</span></pre></td></tr></table></div>

<p>文書構造的には、HTMLのdiv要素のような意味合いに近いかもしれません。<br />
title要素やdesc要素と一緒に使用することで的確な意味づけを行うことができます。</p>
<blockquote><p><a href="http://wonder-boys.net/test/svg/svg-g.html" target="_blank">SVGサンプル &#8211; 図形のグループ化：g</a></p></blockquote>
<h2>symbol要素</h2>
<p>各要素をグループ化することに関してはg要素と同じですが、symbolはグループ化した時点では描画されません。<br />
use要素を使い参照することで描画されます。<br />
use要素を使って描画されたものはsymbol要素でグループ化された図形のインスタンスになります。<br />
Flashのシンボル機能に近いと思います。</p>
<p>※下記にも記載しますが、use要素のhrefを使うときは、xlinkの名前空間が必要になります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;symbol <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;figs&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;lightgreen&quot;</span> fill-opacity<span class="sy0">=</span><span class="st0">&quot;0.5&quot;</span>&gt;</span>
    <span class="sc2">&lt;rect <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;rect x<span class="sy0">=</span><span class="st0">&quot;20&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;20&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span>symbol&gt;</span></pre></td></tr></table></div>

<p>g要素と違うのは、</p>
<ul>
<li>参照されなければ、描画されないこと</li>
<li>viewBox属性とpreserveAspectRatio属性を持つことができること</li>
</ul>
<p>です。<br />
HTML文書にsvgを読み込むような感じに近いです。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;symbol <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;figs2&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;70&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;70&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;lightgreen&quot;</span> fill-opacity<span class="sy0">=</span><span class="st0">&quot;0.5&quot;</span> viewBox<span class="sy0">=</span><span class="st0">&quot;0 0 100 100&quot;</span>&gt;</span>
    <span class="sc2">&lt;rect <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;rect x<span class="sy0">=</span><span class="st0">&quot;20&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;20&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span>symbol&gt;</span>
&nbsp;
<span class="sc2">&lt;use x<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> xlink:<span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#figs2&quot;</span><span class="sy0">/</span>&gt;</span></pre></td></tr></table></div>

<blockquote><p><a href="http://wonder-boys.net/test/svg/svg-symbol.html" target="_blank">SVGサンプル &#8211; 図形のグループ化：symbol</a></p></blockquote>
<h2>defs要素</h2>
<p>参照が想定される要素をグループ化するためのもの。<br />
symbolと同じようにdefs要素内は参照されない限り描画されません。<br />
gやsymbolと似ていますが仕様書によると、</p>
<blockquote><p>&#8216;defs&#8217; 要素は被参照要素のためのコンテナ要素である。可読性と アクセシビリティ の要求から、参照される可能性のある要素は可能ならこの要素内に定義することが推奨される。<br />
<a href="http://www.hcn.zaq.ne.jp/___/REC-SVG11-20030114/struct.html#DefsElement" target="_blank"> http://www.hcn.zaq.ne.jp/___/REC-SVG11-20030114/struct.html#DefsElement</a></p></blockquote>
<p>とあるので、参照されるもの全体を包みこむように使うのが良いと思われます。<br />
上記で書いた例でも、全体をdefsで囲むほうが良いですね。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;defs&gt;</span>
    <span class="sc2">&lt;g <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;figs&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;lightgreen&quot;</span> stroke<span class="sy0">=</span><span class="st0">&quot;darkgreen&quot;</span> stroke-dasharray<span class="sy0">=</span><span class="st0">&quot;2,2&quot;</span>&gt;</span>
        <span class="sc2">&lt;rect x<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span> <span class="sy0">/</span>&gt;</span>
        <span class="sc2">&lt;circle cx<span class="sy0">=</span><span class="st0">&quot;170&quot;</span> cy<span class="sy0">=</span><span class="st0">&quot;60&quot;</span> r<span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span>g&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span>defs&gt;</span></pre></td></tr></table></div>

<p>また、id属性を付けることは出来ますが、どうやら参照してまとめて描画させることはできないようです。<br />
個別にidを付けて参照します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;defs <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;figs&quot;</span>&gt;</span>
    <span class="sc2">&lt;g <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;figs-in&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;lightgreen&quot;</span> stroke<span class="sy0">=</span><span class="st0">&quot;darkgreen&quot;</span> stroke-dasharray<span class="sy0">=</span><span class="st0">&quot;2,2&quot;</span>&gt;</span>
        <span class="sc2">&lt;rect x<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span> <span class="sy0">/</span>&gt;</span>
        <span class="sc2">&lt;circle cx<span class="sy0">=</span><span class="st0">&quot;170&quot;</span> cy<span class="sy0">=</span><span class="st0">&quot;60&quot;</span> r<span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span>g&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span>defs&gt;</span>
&nbsp;
<span class="sc2">&lt;use xlink:<span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#figs&quot;</span><span class="sy0">/</span>&gt;</span> //描画されない
<span class="sc2">&lt;use xlink:<span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#figs-in&quot;</span><span class="sy0">/</span>&gt;</span> //描画される</pre></td></tr></table></div>

<blockquote><p><a href="http://wonder-boys.net/test/svg/svg-defs.html" target="_blank">SVGサンプル &#8211; 図形の参照</a></p></blockquote>
<h2>use要素</h2>
<p>上記の挙げた、グループ化要素を参照することでインスタンス化して再利用できるようになります。<br />
使いまわせるという事ですね。<br />
参照は、idを使います。<br />
use要素のhref属性値に「#hoge」のように参照先のidを指定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;defs&gt;</span>
    <span class="sc2">&lt;g <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;figs-in&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;lightgreen&quot;</span> stroke<span class="sy0">=</span><span class="st0">&quot;darkgreen&quot;</span> stroke-dasharray<span class="sy0">=</span><span class="st0">&quot;2,2&quot;</span>&gt;</span>
        <span class="sc2">&lt;rect x<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span> <span class="sy0">/</span>&gt;</span>
        <span class="sc2">&lt;circle cx<span class="sy0">=</span><span class="st0">&quot;170&quot;</span> cy<span class="sy0">=</span><span class="st0">&quot;60&quot;</span> r<span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span>g&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span>defs&gt;</span>
&nbsp;
<span class="sc2">&lt;use xlink:<span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#figs-in&quot;</span><span class="sy0">/</span>&gt;</span> //g要素を参照して描画</pre></td></tr></table></div>

<p>注意するべき点は、use要素のhref属性値に参照先を指定する際、xlinkという規格を用います。<br />
xlinkはxmlの規格の一種なのでnamespaceを指定します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;svg xmlns<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/2000/svg&quot;</span> xmlns:xlink<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/1999/xlink&quot;</span>&gt;</span></pre></td></tr></table></div>

<p>use要素を使用するときには、忘れないようにします。<br />
その他、a要素等でも使うので予め指定しておいてもいいかもしれません。</p>
<blockquote><p><a href="http://www.doraneko.org/xml/xlink/19980303/Overview.html" target="_blank">XMLリンク言語（xLink）</a></p></blockquote>
<p>use要素ですが、座標を設定することで、位置をずらすこともできます。<br />
また、いくつでも参照して描画できます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="sc2">&lt;defs&gt;</span>
    <span class="sc2">&lt;g <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;figs-in&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;lightgreen&quot;</span> stroke<span class="sy0">=</span><span class="st0">&quot;darkgreen&quot;</span> stroke-dasharray<span class="sy0">=</span><span class="st0">&quot;2,2&quot;</span>&gt;</span>
        <span class="sc2">&lt;rect x<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;10&quot;</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">&quot;100&quot;</span> fill<span class="sy0">=</span><span class="st0">&quot;red&quot;</span> <span class="sy0">/</span>&gt;</span>
        <span class="sc2">&lt;circle cx<span class="sy0">=</span><span class="st0">&quot;170&quot;</span> cy<span class="sy0">=</span><span class="st0">&quot;60&quot;</span> r<span class="sy0">=</span><span class="st0">&quot;50&quot;</span> <span class="sy0">/</span>&gt;</span>
    <span class="sc2">&lt;<span class="sy0">/</span>g&gt;</span>
<span class="sc2">&lt;<span class="sy0">/</span>defs&gt;</span>
&nbsp;
<span class="sc2">&lt;use xlink:<span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#figs-in&quot;</span><span class="sy0">/</span>&gt;</span> //g要素を参照して描画
<span class="sc2">&lt;use x<span class="sy0">=</span><span class="st0">&quot;50&quot;</span> y<span class="sy0">=</span><span class="st0">&quot;20&quot;</span> xlink:<span class="kw3">href</span><span class="sy0">=</span><span class="st0">&quot;#figs-in&quot;</span><span class="sy0">/</span>&gt;</span> //いくつでも描画できる</pre></td></tr></table></div>

<p>参照できる要素としては、上記のグループ化要素をはじめ、svg、各図形要素（rect、circle等前回の記事参照）も参照することができます。<br />
何回も使用する予定のあるものはuseで使いまわしたほうが良さそうです。</p>
<blockquote><p><a href="http://wonder-boys.net/test/svg/svg-use.html" target="_blank">SVGサンプル &#8211; 図形の参照</a></p></blockquote>
<h3>まとめ</h3>
<p>やろうと思えばどの要素を使ってもできるようなので、どの要素をいつ使うかっていう所が重要なのかなあと思います。<br />
HTMLもdivの使いどころに迷うように、また迷いそうな気がします。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.wonder-boys.net/?feed=rss2&amp;p=432</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

