<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<language>ja-jp</language>
		<title>アシアルブログ</title>
		<link>http://blog.asial.co.jp/</link>
		<description>アシアルブログ最新投稿</description>
		<pubDate>Thu, 02 Sep 2010 20:58:17 +0900</pubDate>
		<lastBuildDate>Thu, 02 Sep 2010 21:06:51 +0900</lastBuildDate>
		<managingEditor>info@asial.co.jp</managingEditor>
		<webMaster>info@asial.co.jp</webMaster>
		<copyright>Copyright  All rights reserved.</copyright>
				<item>
			<pubDate>Thu, 02 Sep 2010 20:58:17 +0900</pubDate>
			<title>もうすぐ健康診断があるんだ・・・</title>
			<link>http://blog.asial.co.jp/746</link>
			<description><![CDATA[ こんにちは。阿部です。<br />
<br />
皆様、健康的な生活を送っていらっしゃいますでしょうか。<br />
<br />
アシアルではもうじき定期健康診断にいかなければいけません。。。<br />
もう。。自分の体重が会社に保管されると思うと憂鬱です。<br />
<br />
体重おとさないと！と思いつつも運動はしたくないし、お菓子はやめたくないというこの気持ち。<br />
世の中のぽっちゃりさんには理解していただけると思います。<br />
<br />
ダイエット時のおやつは100kcalまで、といわれますが、100kcalなんて一瞬ですよね。<br />
飴を何粒か食べたら終了です。おっそろしい。<br />
<br />
しかもそれを消費するためには、ウォーキングなら30分くらい、ジョギングなら15分くらい（体格によります）運動しなければいけません。おっそろしい。<br />
<br />
しかしながら、運動しないダイエットをすると筋肉がつかないので、リバウンドしやすい・・・らしいですね。<br />
<br />
ずっと楽して痩せる方法を探してきましたが、リバウンドしたくないなら、そして健康的に痩せたいなら、やっぱり適度な食事制限と運動するのが一番のようです。<br />
あとは、カロリーだけでなく、糖質とか脂質にも気をつけないといけないそうです。<br />
めんどい。<br />
<br />
私にとっては、すんごい難題ですが、、まずは柔軟体操から頑張ります＞＜<br />
お菓子は我慢できないからどこかで調整しつつ頑張ります＞＜<br />
とブログに書いてしまって頑張らないといけない状況にしてみます＞＜<br />
<br />
アシアルの肥満予備軍の方々も一緒に頑張りましょうね（- - ]]></description>
			<author>阿部恵</author>
			<category>日常</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/746</guid>
		</item>
				<item>
			<pubDate>Wed, 01 Sep 2010 19:27:10 +0900</pubDate>
			<title>Photoshopで壁紙を作りながら、基本的な使い方を覚える</title>
			<link>http://blog.asial.co.jp/745</link>
			<description><![CDATA[ こんにちは、鴨田です。<br />
<br />
もう９月だというのに、相変わらずうだるような暑さが続いていますね。<br />
席が窓際にあるので、陽が傾くと、微妙に太陽が当たって、灼熱地獄です。<br />
<br />
さて、今日はPhotoshopを使って、写真を元に壁紙を作りながら、<br />
基本的なPhothshopの使い方の説明をしたいと思います。<br />
<br />
デザイナーの方々には、特になんのTIPSにもなりませんが、<br />
業務でちょっとしたことをデザイナーにオペレートしてもらうのも、<br />
ちょっと気が引けるというような方や、<br />
会社でPhotoshopが使えるけど、持て余してるという方には、<br />
まずここから覚えるといいかもしれません。<br />
<br />
○実作業<br />
<br />
1.Photoshopを立ち上げて、壁紙にしたい写真を開く<br />
<br />
メニュー：ファイル→開く<br />
ショートカット：Ctrl+O<br />
ファイルを直接Photoshopにドラッグアンドドロップ<br />
<br />
で開くことができます。<br />
<br />
ここでは、自分で撮ったベルリンの戦勝記念塔(ジーゲスゾイレ)の写真を使います。<br />
大きさは1600px*1200pxなので、そのままの大きさで使用したいと思います。<br />
もし画像サイズを変える場合でも、まずは大きいまま加工して、<br />
最後に画像サイズを換えることをオススメします。<br />
<br />
<a href="/read_file.php?id=1244&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1244" /></a><br />
<br />
2.念のため、16bit画像にする<br />
<br />
メニュー：イメージ→モード→16bit/チャンネル<br />
を選択します。<br />
<br />
<a href="/read_file.php?id=1254&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1254" /></a><br />
<br />
画像を加工すると、細かな部分のグラデーションなどが飛んでしまうことがあるので、<br />
マシンパワーに余裕がある場合、設定を一時的に16bitにした方がよろしいと思います。<br />
作業が終わったら、逆に8bitに戻しから、出力します。<br />
<br />
<br />
3.写真の明るさを調整する<br />
<br />
メニュー：イメージ→色調補正→トーンカーブ<br />
ショートカット：Ctrl+M<br />
<br />
<a href="/read_file.php?id=1255&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1255" /></a><br />
<br />
この写真はちょっと暗いので明るくするために、カーブを山なりにします。<br />
メリハリを出したいときは、左側が下がるようになだらかな波を描くようにします。<br />
<br />
<a href="/read_file.php?id=1245&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1245" /></a><br />
<br />
同じような機能として、レベル補正があります。<br />
<br />
メニュー：イメージ→色調補正→レベル補正<br />
ショートカット：Ctrl+L<br />
<br />
<a href="/read_file.php?id=1256&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1256" /></a><br />
<br />
左の黒い三角と右の白い三角をそれぞれ山の始まりと終わりに持って行きます。<br />
すると、画像にメリハリが出て、ぐっと引き締まります。<br />
<br />
<a href="/read_file.php?id=1246&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1246" /></a><br />
<br />
この作業はどんな画像に対しても適応できるので、<br />
画像加工における必須の作業になります。<br />
<br />
<br />
4.看板の文字を読みやすく(強調)する<br />
<br />
まずは看板の周りをなげなわツールで囲います。<br />
<br />
<a href="/read_file.php?id=1247&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1247" /></a><br />
<br />
メニュー：イメージ→色調補正→色の置き換え<br />
<br />
<a href="/read_file.php?id=1257&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1257" /></a><br />
<br />
元画像の左の看板の白い文字のところをクリックして、色を置き換える選択範囲に指定します。<br />
そのままだと右側の看板の一番右の文字が指定範囲に含まれづらいので、<br />
<br />
<a href="/read_file.php?id=1258&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1258" /></a><br />
<br />
スポイトにプラスマークの付いたアイコンをクリックして、<br />
元画像の右側の看板の文字部分をクリックして、指定範囲を広げます。<br />
<br />
許容量と明度の調整をして、ＯＫを押します。<br />
<br />
<a href="/read_file.php?id=1248&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1248" /></a><br />
<br />
<br />
5.画像を鮮やかにする<br />
<br />
メニュー：イメージ→色調補正→色相・彩度<br />
ショートカット：Ctrl+L<br />
<br />
像の金色、看板の青みを見ながら、<br />
最適と思えるところに数値を合わせます。<br />
<br />
<a href="/read_file.php?id=1259&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1259" /></a><br />
<br />
あまりやりすぎると、ノイズが混じってくるので、<br />
ほどほどにしておきます。<br />
<br />
<a href="/read_file.php?id=1249&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1249" /></a><br />
<br />
<br />
6.背景の透明化<br />
<br />
先程の彩度の調整などで、空にノイズが混じってしまったので、<br />
いっそのこと、背景を透明にしてしまいたいと思います。<br />
<br />
念のため、元のレイヤーをコピーして取っておき、非表示にします。<br />
<br />
背景レイヤーを右クリック→「レイヤーを複製」<br />
背景レイヤーをつかんだまま、新規レイヤー作成アイコンにドラッグ＆ドロップ<br />
<br />
<a href="/read_file.php?id=1268&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1268" /></a><br />
<br />
のどちらかで、レイヤーを複製して、<br />
レイヤー名の左にある目玉アイコンをクリックします。<br />
<br />
<a href="/read_file.php?id=1269&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1269" /></a><br />
<br />
コピーした方のレイヤーに対して、自動選択ツールで範囲を選択します。<br />
許容値：20 アンチエイリアス：オン　隣接：オン<br />
<br />
<a href="/read_file.php?id=1274&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1274" /></a><br />
<br />
の設定で、Shiftを押しながら、ひとつひとつ丁寧にやります。<br />
面倒くさかったら、許容値を増やして(32程度)、隣接のチェックを外してください。<br />
精度は低くなりますが、クリック数は減ると思います。<br />
<br />
<a href="/read_file.php?id=1250&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1250" /></a><br />
<br />
選択し終わったら、選択部分をマスクに追加します。<br />
レイヤーパレットの下側にある左から３番目のマスクアイコンを<br />
クリックするだけです。<br />
<br />
<a href="/read_file.php?id=1271&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1271" /></a><br />
<br />
<a href="/read_file.php?id=1251&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1251" /></a><br />
<br />
そのままだと、像が逆に切り取られている状態なので、<br />
<br />
レイヤーのマスク部分を選択して、<br />
<br />
メニュー：イメージ→色調補正→階調の反転<br />
ショートカット：Ctrl+I<br />
<br />
で、マスクを反転しましょう。<br />
<br />
<a href="/read_file.php?id=1272&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1272" /></a><br />
<br />
画像のマスク部分が逆転します。<br />
<br />
<a href="/read_file.php?id=1252&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1252" /></a><br />
<br />
<br />
7.空を新しく作る<br />
<br />
「背景のコピー」レイヤーの下に、新しくレイヤーを作ります。<br />
<br />
<a href="/read_file.php?id=1273&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1273" /></a><br />
<br />
グラデーションツールで、空を作ります。<br />
<br />
左端はスポイトツールを使って、像の足元に残った空の色を使い、<br />
真ん中と右端はお好みの色でＯＫです。<br />
<br />
<a href="/read_file.php?id=1275&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1275" /></a><br />
<br />
グラデーションツールの塗り方を、<br />
通常の線形グラデーションから円形グラデーションに変えます。<br />
像の足元から、左上に向かって、ドラッグします。<br />
<br />
<a href="/read_file.php?id=1276&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1276" /></a><br />
<br />
<a href="/read_file.php?id=1253&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1253" /></a><br />
<br />
比較すると、こんな感じです。<br />
<br />
<a href="/read_file.php?id=1277&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1277" /></a><br />
<br />
以上で、基本的な部分は出来上がりましたが、<br />
これだけだと物足りない気がするので、<br />
次回、装飾を施していきたいと思います。<br />
<br />
こんな感じになる予定です。<br />
<br />
<a href="/read_file.php?id=1278&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1278" /></a><br />
<br />
<a href="/read_file.php?id=1279&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1279" /></a> ]]></description>
			<author>鴨田健次</author>
			<category>Tech</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/745</guid>
		</item>
				<item>
			<pubDate>Wed, 01 Sep 2010 13:15:54 +0900</pubDate>
			<title>はじめての共同作業 Canvas編 (node.js + websocket)</title>
			<link>http://blog.asial.co.jp/744</link>
			<description><![CDATA[ こんにちは、中川です。<br />
先月無事に結婚をした開発者が一名おり、近年アシアルでは徐々に既婚者が増えてきている状況です。<br />
ということで、結婚といえば共同作業ですよね。<br />
<br />
今までは、一人で作業していて大変なことが色々あったと思いますが、<br />
二人（複数）でやれば、乗り越えられることもあることでしょう。<br />
Webアプリでも最近は、より共同作業がしやすい環境ができつつあるように思います。<br />
<br />
そこで、今回はWebSocketを使ったリアルタイム通信でのやり取りを行い、<br />
一緒にお絵描きができるサンプルアプリを作ってみました。<br />
<br />
<center><a href="/read_file.php?id=1243&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1243" /></a></center><br />
<br />
<strong>■■■概要■■■</strong><br />
・アプリ概要<br />
・・Canvas + WebSocket<br />
<br />
・対応ブラウザ<br />
・・Chrome or Safari (他、WebSocketが使えるブラウザ）<br />
<br />
・サーバ側プログラム<br />
・・<a href="http://nodejs.org/">node.js 0.2.0</a><br />
・・<a href="http://expressjs.com/">express@1.0.0rc2</a><br />
・・<a href="http://github.com/miksago/node-websocket-server">websocket-server@1.3.50 </a><br />
<br />
※express, websocket-server は node.js のパッケージ管理システムの npm ( <a href='http://github.com/isaacs/npm'>http://github.com/isaacs/npm</a> ) でインストールしました。<br />
<br />
node.js用のwebsocketサーバは何個かあるみたいですが<br />
( 参照： <a href='http://github.com/ry/node/wiki/modules'>http://github.com/ry/node/wiki/modules</a> )、<br />
今回は、比較的更新もされていて、手軽に利用できそうな node-websocket-server を使ってみました。<br />
<br />
<br />
<strong>■■■アプリ構成■■■</strong><br />
<ol class="boxcode-main no-number"><li>.</li><li>`--<wbr />&nbsp;canvas-share</li><li><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;|--<wbr />&nbsp;public</li><li><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;|<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;|--<wbr />&nbsp;index.html</li><li><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;|<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;`--<wbr />&nbsp;js</li><li><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;|<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;`--<wbr />&nbsp;client.js</li><li><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;`--<wbr />&nbsp;server.js</li></ol><br />
プログラム一式ダウンロード：<a href="http://blog.asial.co.jp/sample/744/canvas-share.tar.gz">canvas-share.tar.gz</a><br />
<br />
<strong>■■■プログラム内容■■■</strong><br />
<br />
・index.html<br />
<ol class="html-main"><li><span class="html-brackets">&lt;</span><span class="html-code">!</span><span class="html-var">DOCTYPE</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">html</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;</span><span class="html-reserved">html</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;</span><span class="html-reserved">head</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">meta</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">charset</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">UTF-8</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"><wbr />&nbsp;</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">title</span><span class="html-brackets">&gt;</span><span class="html-code">Canvas<wbr />&nbsp;Share<wbr />&nbsp;Demo</span><span class="html-brackets">&lt;/</span><span class="html-reserved">title</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;/</span><span class="html-reserved">head</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;</span><span class="html-reserved">body</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">canvas</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">layer0</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">class</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">canvas</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">style</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">position:<wbr />&nbsp;absolute;<wbr />&nbsp;top:<wbr />&nbsp;0;<wbr />&nbsp;left:<wbr />&nbsp;0;<wbr />&nbsp;border:<wbr />&nbsp;10px<wbr />&nbsp;solid<wbr />&nbsp;#dddddd;</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">width</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">900px</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">height</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">600px</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;&lt;/</span><span class="html-reserved">canvas</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">input</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">button</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">clear</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">value</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">Clear</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">style</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">position:absolute;</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-brackets">/&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;</span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;</span><span class="html-reserved">script</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">src</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">text/javascript</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">charset</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">utf-8</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;&lt;/</span><span class="html-reserved">script</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;</span><span class="html-reserved">script</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">text/javascript</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">src</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">/js/client.js?t=1149</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;&lt;/</span><span class="html-reserved">script</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;</span><span class="html-reserved">script</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">text/javascript</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code">$(function(){</span></li>
<li><span class="html-code"><wbr />&nbsp;</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;var<wbr />&nbsp;painter<wbr />&nbsp;=<wbr />&nbsp;new<wbr />&nbsp;Painter('layer0');</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;//<wbr />&nbsp;WebScoket対応の場合は、コネクションを設定</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;if<wbr />&nbsp;(window[&quot;WebSocket&quot;])<wbr />&nbsp;{</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;var<wbr />&nbsp;conn<wbr />&nbsp;=<wbr />&nbsp;new<wbr />&nbsp;WebSocket(&quot;ws://&quot;<wbr />&nbsp;+<wbr />&nbsp;document.location.host<wbr />&nbsp;+<wbr />&nbsp;&quot;/&quot;);</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;painter.setConnection(conn);</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;}<wbr />&nbsp;else<wbr />&nbsp;{</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;alert('This<wbr />&nbsp;browser<wbr />&nbsp;is<wbr />&nbsp;not<wbr />&nbsp;supported.');</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;}</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;$('#clear').click(function()<wbr />&nbsp;{</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;painter.clear();</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;});</span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;</span></li>
<li><span class="html-code">});</span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;/</span><span class="html-reserved">script</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;/</span><span class="html-reserved">body</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;/</span><span class="html-reserved">html</span><span class="html-brackets">&gt;</span></li></ol><br />
・js/client.js<br />
※通信部分関連のみ抜粋<br />
<br />
<ol class="js-main"><li><span class="js-comment">/**</span></li>
<li><span class="js-comment"><wbr />&nbsp;<wbr />&nbsp;*<wbr />&nbsp;マウス移動時の処理</span></li>
<li><span class="js-comment"><wbr />&nbsp;<wbr />&nbsp;*/</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">Painter</span><span class="js-code">.</span><span class="js-identifier">prototype</span><span class="js-code">.</span><span class="js-identifier">move</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-code">!</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">isDrawing</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">return</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">points</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">bx</span><span class="js-code">:<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">beforeX</span><span class="js-code">,</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">by</span><span class="js-code">:<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">beforeY</span><span class="js-code">,</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">ax</span><span class="js-code">:<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">clientX</span><span class="js-code"><wbr />&nbsp;-<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code">,</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">ay</span><span class="js-code">:<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">clientY</span><span class="js-code"><wbr />&nbsp;-<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code">,</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">c</span><span class="js-code">:<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">strokeStyle</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">conn</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;各座標をjson形式でサーバに通知</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">conn</span><span class="js-code">.</span><span class="js-identifier">send</span><span class="js-brackets">(</span><span class="js-identifier">JSON</span><span class="js-code">.</span><span class="js-identifier">stringify</span><span class="js-brackets">(</span><span class="js-identifier">points</span><span class="js-brackets">))</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"><wbr />&nbsp;</span><span class="js-reserved">else</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">drawLine</span><span class="js-brackets">(</span><span class="js-identifier">points</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">beforeX</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">points</span><span class="js-code">.</span><span class="js-identifier">ax</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">beforeY</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">points</span><span class="js-code">.</span><span class="js-identifier">ay</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span><span class="js-comment">/**</span></li>
<li><span class="js-comment"><wbr />&nbsp;<wbr />&nbsp;*<wbr />&nbsp;キャンバスのクリア処理</span></li>
<li><span class="js-comment"><wbr />&nbsp;<wbr />&nbsp;*/</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">Painter</span><span class="js-code">.</span><span class="js-identifier">prototype</span><span class="js-code">.</span><span class="js-identifier">clear</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(</span><span class="js-identifier">conn</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">conn</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;CLEAR処理をサーバに通知</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">conn</span><span class="js-code">.</span><span class="js-identifier">send</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">@CLEAR</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"><wbr />&nbsp;</span><span class="js-reserved">else</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">clearCanvas</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span><span class="js-comment">/**</span></li>
<li><span class="js-comment"><wbr />&nbsp;<wbr />&nbsp;*<wbr />&nbsp;WebSocketのコネクション設定</span></li>
<li><span class="js-comment"><wbr />&nbsp;<wbr />&nbsp;*/</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">Painter</span><span class="js-code">.</span><span class="js-identifier">prototype</span><span class="js-code">.</span><span class="js-identifier">setConnection</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(</span><span class="js-identifier">conn</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">conn</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">conn</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">conn</span><span class="js-code">.</span><span class="js-identifier">onclose</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">()</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-identifier">console</span><span class="js-code">.</span><span class="js-identifier">log</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">Close</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code">;</span><span class="js-brackets">}</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">conn</span><span class="js-code">.</span><span class="js-identifier">onopen</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(){</span><span class="js-identifier">console</span><span class="js-code">.</span><span class="js-identifier">log</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">Connected</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code">;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">self</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//メッセージ受信時の処理(クリアと描画)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">this</span><span class="js-code">.</span><span class="js-identifier">conn</span><span class="js-code">.</span><span class="js-identifier">onmessage</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">data</span><span class="js-code">.</span><span class="js-identifier">indexOf</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">@</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;&gt;<wbr />&nbsp;-</span><span class="js-number">1</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">data</span><span class="js-code">.</span><span class="js-identifier">indexOf</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">@CLEAR</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;&gt;<wbr />&nbsp;-</span><span class="js-number">1</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">self</span><span class="js-code">.</span><span class="js-identifier">clearCanvas</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"><wbr />&nbsp;</span><span class="js-reserved">else</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">d</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">JSON</span><span class="js-code">.</span><span class="js-identifier">parse</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">data</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">self</span><span class="js-code">.</span><span class="js-identifier">drawLine</span><span class="js-brackets">(</span><span class="js-identifier">d</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code">;</span></li></ol><br />
WebSocketが有効な場合は、マウスの移動座標と色をサーバに通知するようにし、また、受信したJSONデータからCanvasへの描画処理を行います。<br />
<br />
<br />
・server.js<br />
<ol class="js-main"><li><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">sys</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">require</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">sys</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">,</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">ws</span><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">require</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">websocket-server</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">/**</span></li>
<li><span class="js-comment"><wbr />&nbsp;*<wbr />&nbsp;web-server</span></li>
<li><span class="js-comment"><wbr />&nbsp;*/</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">express</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">require</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">express</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"></span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">app</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">express</span><span class="js-code">.</span><span class="js-identifier">createServer</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"></span><span class="js-identifier">app</span><span class="js-code">.</span><span class="js-identifier">configure</span><span class="js-brackets">(</span><span class="js-reserved">function</span><span class="js-brackets">(){</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;ファイルをそのまま出力するディレクトリの設定</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">app</span><span class="js-code">.</span><span class="js-identifier">use</span><span class="js-brackets">(</span><span class="js-identifier">express</span><span class="js-code">.</span><span class="js-identifier">staticProvider</span><span class="js-brackets">(</span><span class="js-identifier">__dirname</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-quotes">'</span><span class="js-string">/public</span><span class="js-quotes">'</span><span class="js-brackets">))</span><span class="js-code">;</span></li>
<li><span class="js-code"></span><span class="js-brackets">})</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">/**</span></li>
<li><span class="js-comment"><wbr />&nbsp;*<wbr />&nbsp;websocket-server</span></li>
<li><span class="js-comment"><wbr />&nbsp;*/</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-comment">//var<wbr />&nbsp;json<wbr />&nbsp;=<wbr />&nbsp;JSON.stringify;</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">server</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">ws</span><span class="js-code">.</span><span class="js-identifier">createServer</span><span class="js-brackets">({</span><span class="js-identifier">server</span><span class="js-code">:<wbr />&nbsp;</span><span class="js-identifier">app</span><span class="js-brackets">})</span><span class="js-code">;</span></li>
<li><span class="js-code"></span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">points</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-brackets">[]</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-identifier">server</span><span class="js-code">.</span><span class="js-identifier">addListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">listening</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(){</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">sys</span><span class="js-code">.</span><span class="js-identifier">log</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">Listening<wbr />&nbsp;for<wbr />&nbsp;connections.</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"></span><span class="js-brackets">})</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-identifier">server</span><span class="js-code">.</span><span class="js-identifier">addListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">connection</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(</span><span class="js-identifier">conn</span><span class="js-brackets">){</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">sys</span><span class="js-code">.</span><span class="js-identifier">log</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">Hello</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//server.broadcast(&quot;@HELLO&quot;);</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;全てのログを初回接続時に送信</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-identifier">points</span><span class="js-code">.</span><span class="js-identifier">length</span><span class="js-code"><wbr />&nbsp;&gt;<wbr />&nbsp;</span><span class="js-number">0</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">for</span><span class="js-brackets">(</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">i</span><span class="js-code"><wbr />&nbsp;</span><span class="js-reserved">in</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">points</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">conn</span><span class="js-code">.</span><span class="js-identifier">send</span><span class="js-brackets">(</span><span class="js-identifier">points</span><span class="js-brackets">[</span><span class="js-identifier">i</span><span class="js-brackets">])</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;メッセージ受信処理</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">conn</span><span class="js-code">.</span><span class="js-identifier">addListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">message</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(</span><span class="js-identifier">message</span><span class="js-brackets">){</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-identifier">message</span><span class="js-code">.</span><span class="js-identifier">indexOf</span><span class="js-brackets">(</span><span class="js-quotes">'</span><span class="js-string">@</span><span class="js-quotes">'</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;&gt;<wbr />&nbsp;-</span><span class="js-number">1</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">points</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-brackets">[]</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">server</span><span class="js-code">.</span><span class="js-identifier">broadcast</span><span class="js-brackets">(</span><span class="js-identifier">message</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"><wbr />&nbsp;</span><span class="js-reserved">else</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">points</span><span class="js-code">.</span><span class="js-identifier">push</span><span class="js-brackets">(</span><span class="js-identifier">message</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">server</span><span class="js-code">.</span><span class="js-identifier">broadcast</span><span class="js-brackets">(</span><span class="js-identifier">message</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">})</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-brackets">})</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-identifier">server</span><span class="js-code">.</span><span class="js-identifier">addListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">close</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-brackets">(</span><span class="js-identifier">conn</span><span class="js-brackets">){</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//server.broadcast(&quot;@BYE&quot;);</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-brackets">})</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-identifier">server</span><span class="js-code">.</span><span class="js-identifier">listen</span><span class="js-brackets">(</span><span class="js-number">3333</span><span class="js-brackets">)</span><span class="js-code">;</span></li></ol><br />
expressは、単純に静的ファイル(html,js)を出力しているだけですので、今回は特に必要性はありませんが、プログラム記述の楽がしたかっただけです。<br />
<br />
WebSocketサーバ側の処理では、投げられたjson文字列データをログ配列に保持し、そのまま broadcast で接続中のクライアントに返すようにしています。<br />
<br />
<br />
<strong>■■■動作確認■■■</strong><br />
<br />
サーバを起動します。<br />
<ol class="boxcode-main no-number"><li>$<wbr />&nbsp;cd<wbr />&nbsp;canvas-share/</li><li>$<wbr />&nbsp;node<wbr />&nbsp;server.js</li></ol><br />
あとは、対応ブラウザを複数ウィンドウ立ち上げて、それぞれ <br />
http: //example.com:3333/ にアクセスすれば動作します。<br />
<br />
<center><a href="/read_file.php?id=1243&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1243" /></a></center><br />
<br />
<strong>■■■最後に■■■</strong><br />
<br />
今回の実装はかなりやっつけな部分もありますがご容赦いただければと思います。<br />
<br />
現行のIEやFirefoxなど主要ブラウザがまだWebScoketに対応していませんが、<a href="http://socket.io/">socket.io</a> などのライブラリもあるようですので、対応させることもできそうです。<br />
<br />
node.jsを利用すれば、phpでは難しい大量の同時接続をさばくこともできますので、このようなリアルタイムコラボレーション系のWebアプリも簡単につくることができそうですね。<br />
今後も色々と試していきたいと思います。 ]]></description>
			<author>中川善樹</author>
			<category>Tech</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/744</guid>
		</item>
				<item>
			<pubDate>Thu, 26 Aug 2010 12:40:43 +0900</pubDate>
			<title>「PHP×Flex（後編）」PHPテクニカルセミナー（無料）第４弾の募集を開始しました！！</title>
			<link>http://blog.asial.co.jp/743</link>
			<description><![CDATA[ 皆さま。こんにちは。<br />
和田でございます。<br />
<br />
みなさま、もうご存知かとは思いますが、現在アシアルでは、全5回にわけて「開発者向け、一歩先を行くためのテクニカルセミナー（無料）」を開催しております。<br />
おかげさまで、昨日開催いたしました第３回「PHP×Flex（前編）」も定員の100名を超える方々からのご参加をいただき、大盛況のうちに幕となりました。<br />
お忙しい中、セミナーに参加して下さった皆さま、誠にありがとうございました。<br />
<br />
さて今回は、そんな大盛況だった「PHP×Flex」の後編「第４回　PHP×Flex（後編）:Flexを用いたWebシステム開発」のご紹介です。<br />
<br />
開催日は9月29日（水）。申し込みも開始しております。<br />
今回も第１線で活躍している弊社のエンジニアが講演いたしますので、皆さまふるってご応募ください！！！<br />
<br />
FlexとPHPの連携の基礎を学びながら簡単なFlexアプリケーションを作成していきますので、ご興味のある皆さま、そして前編に参加されていない皆さまもチェックしていただけたらと思います。<br />
<br />
お申し込みは、以下URLよりお願い致します。<br />
今回は、「第４回　PHP×Flex（後編）」のみの応募となりますのでご注意ください。<br />
<a href="http://www.asial.co.jp/seminar/"><a href='http://www.asial.co.jp/seminar/'>http://www.asial.co.jp/seminar/</a></a><br />
<br />
<a href="http://www.asial.co.jp/seminar/"><img class="no-lightbox" src="/read_file.php?id=1242" /></a><br />
<br />
<br />
【開催概要】<br />
<br />
日程： 9月29日(水） 10:00 ～ 12:00（※ 開始30分前より入室可能）<br />
会場： 山王健保会館2F 多目的ホール<br />
交通： 地下鉄銀座線・南北線：溜池山王駅 7出口　徒歩3分<br />
　　　 地下鉄千代田線：赤坂駅 1出口　徒歩5分<br />
　　　 地下鉄銀座線・丸ノ内線：赤坂見附駅出口　下車徒歩7分<br />
主催： アシアル株式会社<br />
受講対象者： Webシステムにおいて1～3年の開発経験のある方<br />
定員： 100名（※ 定員となり次第、受付を終了させていただきます 。）<br />
参加費： 無料（事前登録制）<br />
<br />
<br />
【第４回　PHP×Flex（後編）】Flexを用いたWebシステム開発<br />
<br />
近年、システム開発の現場では、従来型のWebアプリケーションに加え、FlexやSilverlightといったRIAの技術を用いた、インタラクティブなアプリケーション開発のニーズが高まってきています。<br />
<br />
この講演では、RIAの中で最も普及しているFlexを取り上げ、サーバ側のPHPと連携させる簡単なアプリケーションを作成していきながら、Flex4の基本的な機能について解説していきます。<br />
<br />
※ PHP×Flex編は前後編の2回構成です。<br />
今回の後編では、前編で学んだActionScript3.0の知識をベースに、簡単なアプリケーションを作成しながらFlexの魅力に触れていきます。<br />
FlashやActionScriptを少しでも触ったことがある方のステップアップとなるセミナーですので、後編から参加しても充分理解できる内容となっております。<br />
前編出られていない方もふるってご参加ください。<br />
<br />
講演者：アシアル株式会社　橋本 章史（ハシモト　アキフミ）アシアル株式会社のPHPプログラマー兼Flexプログラマー<br />
以前は大手SIerでSEとして開発に携わっていたが、その中で「もっとプログラミングに深く携わりたい」という気持ちを持ち、アシアル株式会社に入社。<br />
Flex、Javascriptを用いたインタラクティブなWebシステムの開発を得意とする。<br />
現在は最も得意とするFlexを用いたシステム開発に従事し、充実した日々を送っている。<br />
<br />
<br />
<br />
【第３回 「PHP×Flex（前編）」セミナーを受講された皆さまの声】<br />
<br />
------------------------------------------------------<br />
・Flexでの開発の流れを知れたのが良かった<br />
・業務用に使えそう<br />
・Flexを使ってみようとおもった<br />
・Flexは想像していたよりははじめ易いと思った<br />
・自分で開発を行ううえでのイメージが出来た<br />
・「何で?!」と思うような点のTipsも含まれていたので実践に役立ちそう<br />
・Flexを使った動的コンテンツの作成について詳しく知れた<br />
・内容が濃くて良かった。スピード感も良い<br />
・プログラム作成者の観点で資料がまとまっていた<br />
・PHPとActionScriptの書き方の比較がありイメージしやすかった<br />
・Flex、ActionScriptnitについて詳しく知りたくなりました<br />
・基本的な部分を丁寧に説明してくれていたため、とても分かりやすかった<br />
------------------------------------------------------ ]]></description>
			<author>和田記光</author>
			<category>日常</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/743</guid>
		</item>
				<item>
			<pubDate>Wed, 25 Aug 2010 14:27:28 +0900</pubDate>
			<title>【HTML5】Canvasでお絵かきしてみた（前編）</title>
			<link>http://blog.asial.co.jp/742</link>
			<description><![CDATA[ こんにちは、橋本です。<br />
<br />
今回はHTML5シリーズ第二弾ということで、canvasを使ってお絵かきしてみました。<br />
今回は前編で、基本的な機能について触れてみたいと思います。<br />
<br />
さっそくサンプルコードを以下に。<br />
<br />
canvas_sample.html<br />
<ol class="html-main"><li><span class="html-brackets">&lt;</span><span class="html-reserved">html</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">lang</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">ja</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;</span><span class="html-reserved">head</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">meta</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">charset</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">UTF-8</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">script</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">src</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">js/canvas.js</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">text/javascript</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;&lt;/</span><span class="html-reserved">script</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">link</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">media</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">all</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">rel</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">stylesheet</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">href</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">css/main.css</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">text/css</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-brackets">/&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">title</span><span class="html-brackets">&gt;</span><span class="html-code">canvas<wbr />&nbsp;test</span><span class="html-brackets">&lt;/</span><span class="html-reserved">title</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;/</span><span class="html-reserved">head</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;</span><span class="html-reserved">body</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">div</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">container</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">div</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">leftContainer</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">class</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">clearfix</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">canvas</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">layer0</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">class</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">canvas</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">style</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">position:<wbr />&nbsp;absolute;<wbr />&nbsp;top:<wbr />&nbsp;0;<wbr />&nbsp;left:<wbr />&nbsp;0;<wbr />&nbsp;border:<wbr />&nbsp;10px<wbr />&nbsp;solid<wbr />&nbsp;#dddddd;</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">width</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">900px</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">height</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">600px</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;&lt;/</span><span class="html-reserved">canvas</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">div</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">div</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">rightContainer</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">div</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">controler</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">section</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">color</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">ul</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">label</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">for</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">red</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code">R:</span><span class="html-brackets">&lt;/</span><span class="html-reserved">label</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">input</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">red</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">class</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">colorBar</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">range</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">min</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">0</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">max</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">255</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">label</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">for</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">green</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code">G:</span><span class="html-brackets">&lt;/</span><span class="html-reserved">label</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">input</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">green</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">class</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">colorBar</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">range</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">min</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">0</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">max</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">255</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">label</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">for</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">blue</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code">B:</span><span class="html-brackets">&lt;/</span><span class="html-reserved">label</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">input</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">blue</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">class</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">colorBar</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">range</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">min</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">0</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">max</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">255</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">label</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">for</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">alpha</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code">A:</span><span class="html-brackets">&lt;/</span><span class="html-reserved">label</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">input</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">alpha</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">class</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">colorBar</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">range</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">min</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">0</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">max</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">100</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">canvas</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">colorSample</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">height</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">30px</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">width</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">30px</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;&lt;/</span><span class="html-reserved">canvas</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">input</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">colorText</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">text</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">value</span><span class="html-code">=</span><span class="html-quotes">&quot;&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">readonly</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">true</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">ul</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">section</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">section</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">line</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">ul</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">label</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">for</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">lineWidthRange</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code">line<wbr />&nbsp;width:</span><span class="html-brackets">&lt;/</span><span class="html-reserved">label</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">input</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">lineWidthRange</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">range</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">min</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">0</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">max</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">50</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">canvas</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">lineSample</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">width</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">50</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">height</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">50</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;&lt;/</span><span class="html-reserved">canvas</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">ul</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">section</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">section</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">other</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">ul</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">label</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">for</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">erase</span><span class="html-quotes">&quot;</span><span class="html-brackets">&gt;</span><span class="html-code">erase<wbr />&nbsp;mode:</span><span class="html-brackets">&lt;/</span><span class="html-reserved">label</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;</span><span class="html-reserved">input</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">id</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">erase</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-var">type</span><span class="html-code">=</span><span class="html-quotes">&quot;</span><span class="html-string">checkbox</span><span class="html-quotes">&quot;</span><span class="html-code"><wbr />&nbsp;</span><span class="html-brackets">/&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">li</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">ul</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">section</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">div</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">div</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="html-brackets">&lt;/</span><span class="html-reserved">div</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;/</span><span class="html-reserved">body</span><span class="html-brackets">&gt;</span><span class="html-code"></span></li>
<li><span class="html-code"></span><span class="html-brackets">&lt;/</span><span class="html-reserved">html</span><span class="html-brackets">&gt;</span></li></ol><br />
canvas.js<br />
<ol class="js-main"><li><span class="js-brackets">(</span><span class="js-reserved">function</span><span class="js-brackets">(){</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">canvas</span><span class="js-code">,</span><span class="js-identifier">context</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">null</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">beforeX</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">beforeY</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">null</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">isDrawing</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">selectedColor</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">colorVars</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">colorText</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">colorSample</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">erase</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">restore</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">lineWidthRange</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">lineSample</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">isErase</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-builtin">window</span><span class="js-code">.</span><span class="js-identifier">addEventListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">load</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">){</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">canvas</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-builtin">document</span><span class="js-code">.</span><span class="js-identifier">getElementById</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">layer0</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">canvas</span><span class="js-code">.</span><span class="js-identifier">getContext</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">2d</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">erase</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-builtin">document</span><span class="js-code">.</span><span class="js-identifier">getElementById</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">erase</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">restore</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-builtin">document</span><span class="js-code">.</span><span class="js-identifier">getElementById</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">restore</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">lineWidthRange</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-builtin">document</span><span class="js-code">.</span><span class="js-identifier">getElementById</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">lineWidthRange</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;イベントリスナーの設定</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">canvas</span><span class="js-code">.</span><span class="js-identifier">addEventListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">mousemove</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">canvas_mouseMoveHandler</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">canvas</span><span class="js-code">.</span><span class="js-identifier">addEventListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">mouseup</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">canvas_mouseUpHandler</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">canvas</span><span class="js-code">.</span><span class="js-identifier">addEventListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">mousedown</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">canvas_mouseDownHandler</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">canvas</span><span class="js-code">.</span><span class="js-identifier">addEventListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">mouseout</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">canvas_mouseOutHandler</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">erase</span><span class="js-code">.</span><span class="js-identifier">addEventListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">click</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">erase_clickHandler</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">lineWidthRange</span><span class="js-code">.</span><span class="js-identifier">addEventListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">change</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">lineWidthRange_changeHandler</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-comment">//controlerの設定</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">colorBars</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-builtin">document</span><span class="js-code">.</span><span class="js-identifier">getElementsByClassName</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">colorBar</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">obj</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-brackets">{}</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">length</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">colorBars</span><span class="js-code">.</span><span class="js-identifier">length</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">for</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">i</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-number">0</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-identifier">i</span><span class="js-code"><wbr />&nbsp;&lt;<wbr />&nbsp;</span><span class="js-identifier">length</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-identifier">i</span><span class="js-code">++</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">bar</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">colorBars</span><span class="js-brackets">[</span><span class="js-identifier">i</span><span class="js-brackets">]</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">bar</span><span class="js-code">.</span><span class="js-identifier">value</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">bar</span><span class="js-code">.</span><span class="js-identifier">id</span><span class="js-code"><wbr />&nbsp;==<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-string">alpha</span><span class="js-quotes">&quot;</span><span class="js-code"><wbr />&nbsp;?<wbr />&nbsp;</span><span class="js-number">100</span><span class="js-code"><wbr />&nbsp;:<wbr />&nbsp;</span><span class="js-number">0</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">bar</span><span class="js-code">.</span><span class="js-identifier">addEventListener</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">change</span><span class="js-quotes">&quot;</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">colorBar_changeHandler</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">obj</span><span class="js-brackets">[</span><span class="js-identifier">bar</span><span class="js-code">.</span><span class="js-identifier">id</span><span class="js-brackets">]</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">bar</span><span class="js-code">.</span><span class="js-identifier">value</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">colorSample</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-builtin">document</span><span class="js-code">.</span><span class="js-identifier">getElementById</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">colorSample</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">colorText</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-builtin">document</span><span class="js-code">.</span><span class="js-identifier">getElementById</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">colorText</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">colorStr</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">convertColorObjToStr</span><span class="js-brackets">(</span><span class="js-identifier">obj</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setColorText</span><span class="js-brackets">(</span><span class="js-identifier">colorStr</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setSelectedColor</span><span class="js-brackets">(</span><span class="js-identifier">colorStr</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setColorSample</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">lineWidthRange</span><span class="js-code">.</span><span class="js-identifier">value</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">lineSample</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-builtin">document</span><span class="js-code">.</span><span class="js-identifier">getElementById</span><span class="js-brackets">(</span><span class="js-quotes">&quot;</span><span class="js-string">lineSample</span><span class="js-quotes">&quot;</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setLineSample</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">convertColorObjToStr</span><span class="js-brackets">(</span><span class="js-identifier">obj</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">return</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">obj</span><span class="js-brackets">[</span><span class="js-quotes">&quot;</span><span class="js-string">red</span><span class="js-quotes">&quot;</span><span class="js-brackets">]</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-string">,<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-identifier">obj</span><span class="js-brackets">[</span><span class="js-quotes">&quot;</span><span class="js-string">green</span><span class="js-quotes">&quot;</span><span class="js-brackets">]</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-string">,<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-identifier">obj</span><span class="js-brackets">[</span><span class="js-quotes">&quot;</span><span class="js-string">blue</span><span class="js-quotes">&quot;</span><span class="js-brackets">]</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-string">,<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-identifier">obj</span><span class="js-brackets">[</span><span class="js-quotes">&quot;</span><span class="js-string">alpha</span><span class="js-quotes">&quot;</span><span class="js-brackets">]</span><span class="js-code"><wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-string"><wbr />&nbsp;100);</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;}</span></li>
<li><span class="js-string"><wbr />&nbsp;</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;function<wbr />&nbsp;setColorSample()</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;{</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;var<wbr />&nbsp;context<wbr />&nbsp;=<wbr />&nbsp;colorSample.getContext(&quot;2d&quot;);</span></li>
<li><span class="js-string"><wbr />&nbsp;</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;context.beginPath();</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;context.strokeStyle<wbr />&nbsp;=<wbr />&nbsp;selectedColor;</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;context.fillStyle<wbr />&nbsp;=<wbr />&nbsp;selectedColor;</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;context.fillRect(0,<wbr />&nbsp;0,<wbr />&nbsp;colorSample.width,<wbr />&nbsp;colorSample.height);</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;}</span></li>
<li><span class="js-string"><wbr />&nbsp;</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;function<wbr />&nbsp;setLineSample()</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;{</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;var<wbr />&nbsp;context<wbr />&nbsp;=<wbr />&nbsp;lineSample.getContext(&quot;2d&quot;);</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-quotes">//</span><span class="js-string"><wbr />&nbsp;今の状態をリセット</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;context.clearRect(0,<wbr />&nbsp;0,<wbr />&nbsp;lineSample.width,<wbr />&nbsp;lineSample.height);</span></li>
<li><span class="js-string"><wbr />&nbsp;</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;context.beginPath();</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;context.arc(lineSample.width<wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-code"><wbr />&nbsp;</span><span class="js-number">2</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">lineSample</span><span class="js-code">.</span><span class="js-identifier">height</span><span class="js-code"><wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-string"><wbr />&nbsp;2,<wbr />&nbsp;lineWidth<wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-code"><wbr />&nbsp;</span><span class="js-number">2</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-number">0</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-builtin">Math</span><span class="js-code">.</span><span class="js-identifier">PI</span><span class="js-code">*</span><span class="js-number">2</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-identifier">isErase</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">strokeStyle</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-string">rgba(0,<wbr />&nbsp;0,<wbr />&nbsp;0,<wbr />&nbsp;1)</span><span class="js-quotes">&quot;</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">stroke</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">else</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">strokeStyle</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">selectedColor</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">fillStyle</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">selectedColor</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">fill</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">setColorText</span><span class="js-brackets">(</span><span class="js-identifier">colorStr</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">colorText</span><span class="js-code">.</span><span class="js-identifier">value</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">colorStr</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">setSelectedColor</span><span class="js-brackets">(</span><span class="js-identifier">colorStr</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">selectedColor</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-string">rgba(</span><span class="js-quotes">&quot;</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-identifier">colorStr</span><span class="js-code"><wbr />&nbsp;+<wbr />&nbsp;</span><span class="js-quotes">&quot;</span><span class="js-string">)</span><span class="js-quotes">&quot;</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">colorBar_changeHandler</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">obj</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-brackets">{}</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">length</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">colorBars</span><span class="js-code">.</span><span class="js-identifier">length</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">for</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">i</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-number">0</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-identifier">i</span><span class="js-code"><wbr />&nbsp;&lt;<wbr />&nbsp;</span><span class="js-identifier">length</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-identifier">i</span><span class="js-code">++</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">bar</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">colorBars</span><span class="js-brackets">[</span><span class="js-identifier">i</span><span class="js-brackets">]</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">obj</span><span class="js-brackets">[</span><span class="js-identifier">bar</span><span class="js-code">.</span><span class="js-identifier">id</span><span class="js-brackets">]</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">bar</span><span class="js-code">.</span><span class="js-identifier">value</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">colorStr</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">convertColorObjToStr</span><span class="js-brackets">(</span><span class="js-identifier">obj</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setColorText</span><span class="js-brackets">(</span><span class="js-identifier">colorStr</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setSelectedColor</span><span class="js-brackets">(</span><span class="js-identifier">colorStr</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setColorSample</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setLineSample</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">canvas_mouseOutHandler</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">isDrawing</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">canvas_mouseDownHandler</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">isDrawing</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">true</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">beforeX</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">clientX</span><span class="js-code"><wbr />&nbsp;-<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">beforeY</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">clientY</span><span class="js-code"><wbr />&nbsp;-<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">canvas_mouseUpHandler</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">isDrawing</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-reserved">false</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">canvas_mouseMoveHandler</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">if</span><span class="js-code"><wbr />&nbsp;</span><span class="js-brackets">(</span><span class="js-code">!</span><span class="js-identifier">isDrawing</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">return</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">isErase</span><span class="js-code"><wbr />&nbsp;?<wbr />&nbsp;</span><span class="js-identifier">eraseLine</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"><wbr />&nbsp;:<wbr />&nbsp;</span><span class="js-identifier">drawLine</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">drawLine</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">fixedX</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">clientX</span><span class="js-code"><wbr />&nbsp;-<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">fixedY</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">clientY</span><span class="js-code"><wbr />&nbsp;-<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">beginPath</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">strokeStyle</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">selectedColor</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">lineWidth</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">lineCap</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-quotes">'</span><span class="js-string">round</span><span class="js-quotes">'</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">lineJoin</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-quotes">'</span><span class="js-string">round</span><span class="js-quotes">'</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">moveTo</span><span class="js-brackets">(</span><span class="js-identifier">beforeX</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">beforeY</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">lineTo</span><span class="js-brackets">(</span><span class="js-identifier">fixedX</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">fixedY</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">stroke</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">closePath</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">beforeX</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">fixedX</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">beforeY</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">fixedY</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">eraseLine</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">var</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">x</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">clientX</span><span class="js-code"><wbr />&nbsp;-<wbr />&nbsp;</span><span class="js-number">10</span><span class="js-code"><wbr />&nbsp;-<wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-code"><wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-string"><wbr />&nbsp;2;</span></li>
<li><span class="js-string"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;var<wbr />&nbsp;y<wbr />&nbsp;=<wbr />&nbsp;event.clientY<wbr />&nbsp;-<wbr />&nbsp;10<wbr />&nbsp;-<wbr />&nbsp;lineWidth<wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-code"><wbr />&nbsp;</span><span class="js-number">2</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">clearRect</span><span class="js-brackets">(</span><span class="js-identifier">x</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">y</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">erase_clickHandler</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">isErase</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">target</span><span class="js-code">.</span><span class="js-identifier">value</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setLineSample</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-reserved">function</span><span class="js-code"><wbr />&nbsp;</span><span class="js-identifier">lineWidthRange_changeHandler</span><span class="js-brackets">(</span><span class="js-identifier">event</span><span class="js-brackets">)</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">{</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">event</span><span class="js-code">.</span><span class="js-identifier">target</span><span class="js-code">.</span><span class="js-identifier">value</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;</span><span class="js-identifier">setLineSample</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span><span class="js-brackets">}</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;<wbr />&nbsp;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-brackets">})()</span><span class="js-code">;</span></li></ol><br />
*cssは略<br />
<br />
JSのコードが結構汚いんですが、サンプルってことで華麗にスルーしていただけると幸いです。（次回までに綺麗にしておきます;）<br />
<br />
実際のサンプルは<a href="http://s1.asial.co.jp/~akifumi-h/canvas_sample.html">こちら</a><br />
<br />
<br />
まず、canvasで画像を描画する際には、対象のcanvasのcontextを取得します。<br />
<ol class="boxcode-main"><li><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;canvas<wbr />&nbsp;=<wbr />&nbsp;document.getElementById("layer0");</li><li><wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;<wbr />&nbsp;context<wbr />&nbsp;=<wbr />&nbsp;canvas.getContext("2d");</li></ol>contextに対して処理を行うことで、画像を描画することが出来ます。<br />
<br />
次に基本的な線を引く処理。<br />
線を引くためには、以下の手順を踏みます。<br />
<ol class="js-main"><li><span class="js-comment">//<wbr />&nbsp;1.<wbr />&nbsp;線を描きますよーと宣言</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">beginPath</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">//<wbr />&nbsp;2.<wbr />&nbsp;線の設定（しなくてもOK）</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">strokeStyle</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">selectedColor</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;線の色</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">lineWidth</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;線の太さ</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">lineCap</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-quotes">'</span><span class="js-string">round</span><span class="js-quotes">'</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;線の始点、終点の形</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">lineJoin</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-quotes">'</span><span class="js-string">round</span><span class="js-quotes">'</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;線のつなぎ目の形</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">//<wbr />&nbsp;3.<wbr />&nbsp;線の始点を設定</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">moveTo</span><span class="js-brackets">(</span><span class="js-identifier">beforeX</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">beforeY</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">//<wbr />&nbsp;4.<wbr />&nbsp;線の終点を設定</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">lineTo</span><span class="js-brackets">(</span><span class="js-identifier">fixedX</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">fixedY</span><span class="js-brackets">)</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">//<wbr />&nbsp;5.<wbr />&nbsp;線を描く</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">stroke</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">//<wbr />&nbsp;6.<wbr />&nbsp;線が書き終わりましたよーという宣言</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">closePath</span><span class="js-brackets">()</span><span class="js-code">;</span></li></ol><br />
線の各種設定については、以下のページに詳しく載ってるので参照してください。<br />
<a href="http://www.html5.jp/canvas/ref.html">HTML5.jp-Canvasリファレンス</a><br />
<br />
今回のサンプルでは、連続した線を引くために、線を引き終わった座標を、beforeX, beforeYに格納し、次の線を描き始めるときの始点として指定しています。<br />
<br />
次に四角形を描く処理。<br />
四角形を描くためには、以下の手順を踏みます。<br />
<ol class="js-main"><li><span class="js-comment">//<wbr />&nbsp;1.線を描きますよーの宣言</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">beginPath</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">//<wbr />&nbsp;2.<wbr />&nbsp;設定</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">strokeStyle</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">selectedColor</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;線の色</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">fillStyle</span><span class="js-code"><wbr />&nbsp;=<wbr />&nbsp;</span><span class="js-identifier">selectedColor</span><span class="js-code">;<wbr />&nbsp;</span><span class="js-comment">//<wbr />&nbsp;塗りつぶしの色</span><span class="js-code"></span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">//<wbr />&nbsp;3.<wbr />&nbsp;四角形を描く</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">fillRect</span><span class="js-brackets">(</span><span class="js-number">0</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-number">0</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">colorSample</span><span class="js-code">.</span><span class="js-identifier">width</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">colorSample</span><span class="js-code">.</span><span class="js-identifier">height</span><span class="js-brackets">)</span><span class="js-code">;</span></li></ol><br />
上記サンプルのfillRectは、塗りつぶした四角形を描くメソッドです。<br />
引数は、書き始めるx座標、書き始めるy座標、四角形の幅、四角形の高さとなっています。<br />
座標は、左上が(0, 0)です。これは、canvas全体共通です。<br />
<br />
ちなみに、枠だけの四角形を描きたいときは、strokeRect()、四角形を消したいときは、clearRect()メソッドを使います。今回のサンプルでは、消しゴムを実装するために、clearRect()メソッドを使っています。<br />
<br />
次は円を描く処理です。<br />
円を描くためには以下の手順。<br />
<ol class="js-main"><li><span class="js-comment">//<wbr />&nbsp;1.<wbr />&nbsp;例のやつ</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">beginPath</span><span class="js-brackets">()</span><span class="js-code">;</span></li>
<li><span class="js-code"><wbr />&nbsp;</span></li>
<li><span class="js-code"></span><span class="js-comment">//<wbr />&nbsp;2.<wbr />&nbsp;円の形を指定</span><span class="js-code"></span></li>
<li><span class="js-code"></span><span class="js-identifier">context</span><span class="js-code">.</span><span class="js-identifier">arc</span><span class="js-brackets">(</span><span class="js-identifier">lineSample</span><span class="js-code">.</span><span class="js-identifier">width</span><span class="js-code"><wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-string"><wbr />&nbsp;2,<wbr />&nbsp;lineSample.height<wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-code"><wbr />&nbsp;</span><span class="js-number">2</span><span class="js-code">,<wbr />&nbsp;</span><span class="js-identifier">lineWidth</span><span class="js-code"><wbr />&nbsp;</span><span class="js-quotes">/</span><span class="js-string"><wbr />&nbsp;2,<wbr />&nbsp;0,<wbr />&nbsp;Math.PI*2,<wbr />&nbsp;false);</span></li>
<li><span class="js-string"><wbr />&nbsp;</span></li>
<li><span class="js-string"></span><span class="js-quotes">//</span><span class="js-string"><wbr />&nbsp;3.<wbr />&nbsp;オプションを指定</span></li>
<li><span class="js-string">context.strokeStyle<wbr />&nbsp;=<wbr />&nbsp;selectedColor;</span></li>
<li><span class="js-string">context.fillStyle<wbr />&nbsp;=<wbr />&nbsp;selectedColor;</span></li>
<li><span class="js-string"><wbr />&nbsp;</span></li>
<li><span class="js-string"></span><span class="js-quotes">//</span><span class="js-string"><wbr />&nbsp;4.<wbr />&nbsp;描く</span></li>
<li><span class="js-string">context.fill();</span></li></ol><br />
まず、arc()メソッドを使って円の設定をします。<br />
引数は、円の中心のx座標、円の中心のy座標、円の半径、円を書き始める角度、円を書き終える角度、円を描く向きとなっています。最後の引数の円を描く向きは、trueを指定すると、反時計回り、falseを指定すると、時計回りになります。<br />
<br />
今回は普通の円なので、最後の指定はあまり意味がないのですが、一部が欠けている円を描きたい時には、向きが重要になってくると思います。<br />
<br />
ちなみに、枠だけの円を描きたいときは、最後のfill()をstroke()に変更すればOKです。<br />
<br />
<br />
今回はとりあえず、ここまで。<br />
<br />
次回後編では、グラデーション、画像の取り込みなどについて触れていきたいと思います。 ]]></description>
			<author>橋本章史</author>
			<category>Tech</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/742</guid>
		</item>
				<item>
			<pubDate>Mon, 23 Aug 2010 22:35:27 +0900</pubDate>
			<title>MacにgroongaのMySQL用ストレージエンジン</title>
			<link>http://blog.asial.co.jp/741</link>
			<description><![CDATA[ こんばんは。笹亀です。<br />
<br />
2年間お世話になった神楽坂からお引越しをすることになりました。<br />
名前がカッコいいからと言う単純な理由から選んだ割には、<br />
だいぶいい街で快適に過ごさせていただきました。<br />
ということで現在は家探し中です。<br />
<br />
さて今日はgroonga（ぐるんが）のMySQL用ストレージエンジンを実際に使ってみたくなり、<br />
インストールをしてみようと思います。<br />
<br />
そもそもgroongaは今もまだ広く利用されている全文検索システムSennaの後継と言われています。groongaストレージエンジンはMySQLでSennaを利用するTritonnの後継プロジェクトとなります。MySQLではver5.1からPluggable Storage Engineインタフェースが採用されたことで、<br />
以前よりも柔軟に独自のストレージエンジンを利用できるようになりました。<br />
<br />
上記のことからMySQL経由でもgroongaを利用できるようになるということです。groongaのMySQLストレージエンジンを経由するとgroongaをSQLコマンドでも利用することができるようになります。<br />
<br />
それでは早速インストールしていこうと思います。当然ですが、MySQLの5.1とgroongaが既にインストールされている必要があります。<br />
　※自分の環境はMacなので若干パス情報などが違いますので、ご注意くださいませ。<br />
　※なお、MySQLのインストールは省略します。<br />
<br />
まずはgroongaをソースをダウンロードしてインストールする。<br />
<a href='http://groonga.org/download/'>http://groonga.org/download/</a>からダウンロードし、適当な箇所に解凍します。<br />
コンパイルをしてインストールします。<br />
<ol class="boxcode-main no-number"><li><wbr />&nbsp;./configure<wbr />&nbsp;--prefix=/opt</li><li><wbr />&nbsp;make</li><li><wbr />&nbsp;sudo<wbr />&nbsp;make<wbr />&nbsp;install</li><li>※正常にソースからインストール完了</li></ol><br />
groongaストレージエンジンのビルドしてみた。<br />
<a href='http://github.com/mroonga/mroonga/downloads'>http://github.com/mroonga/mroonga/downloads</a>からダウンロードし、適当な箇所に解凍します。<br />
<br />
「<a href='http://mroonga.github.com/tutorial.html'>http://mroonga.github.com/tutorial.html</a>#id3」のページを元にインストールを進めているときにここで意味深な説明分を発見した。<br />
「with-mysqlでMySQLソースコードディレクトリ」ということはソースをダウンロードしないといけないのか・・？と思い、MacPortsなので「/opt/local/var/macports/distfiles/mysql5/mysql-5.1.43.tar.gz」からコピーして展開し、展開先を設定しました。<br />
"libdir"でMySQLバイナリのプラグイン用ディレクトリ、<br />
"with-groonga"でgroongaのインストール先を指定してconfigureを実行します。<br />
<br />
最終的にこんな感じ<br />
<ol class="boxcode-main no-number"><li>./configure<wbr />&nbsp;--with-mysql=<wbr />&nbsp;/Users/sasa/Public/src/mysql-5.1.43<wbr />&nbsp;--libdir=/opt/local/lib/mysql5/mysql/plugin<wbr />&nbsp;--with-groonga=/opt</li></ol><br />
むむ。。。エラーが出るぞ。。<br />
checking whether we are using the GNU C++ compiler... yes<br />
checking whether g++ accepts -g... yes<br />
checking dependency style of g++... gcc3<br />
checking how to run the C preprocessor... gcc -E<br />
checking build system type... Invalid configuration `/Users/sasa/Public/src/mysql-5.1.43': machine `/Users/sasa/Public/src/mysql' not recognized<br />
<br />
いろいろ調べてみる。。<br />
どうやらソースからインストールされているMySQLのビルドしたソースが必要みたいだ。<br />
MacPortsでインストールしたbuild先を探して確認してみる。<br />
<a href="/read_file.php?id=1241&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1241" /></a><br />
<br />
<ol class="boxcode-main no-number"><li>portdbpath</li><li>MacPorts<wbr />&nbsp;がダウンロードしたソース、インストールされた<wbr />&nbsp;ports<wbr />&nbsp;のレシート、主要なレジストリといった作業データを保存するディレクトリ。'${prefix}'<wbr />&nbsp;におけるパス名の制約と同じ制約があります。</li></ol>ということは「opt/local/var/macports」内でbuildしていることがわかった。<br />
上記箇所に移動してみるとbuildフォルダを発見。<br />
過去にインストールしたアプリごとにbuildファイルがあることを期待して確認をしていましたが、見事に空っぽでした。インストールするごとに維持的な展開場所として利用するんだとうと勝手に解釈しました。<br />
<br />
どうしても自分の環境にインストールしたかったのですが、見事にうまくインストールできませんでした。MySQLをソースからインストールしてMySQLのbuildソースがある状態でインストールしないといけないということがよくわかりましたが、ソースからインストールしか使えないというのはいかがなものかと思います。<br />
<br />
yumなどでインストールした場合はgroongaのMySQL用ストレージエンジンはインストールできるんでしょうか？<br />
　※buildソースって保持しているのでしょうか？なんかうまく出来ない気がしています。<br />
<br />
もし、この辺りの情報に詳しい方々、<br />
知識不足の自分にご教授いただけますと幸いでございます。 ]]></description>
			<author>笹亀弘</author>
			<category>Tech</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/741</guid>
		</item>
				<item>
			<pubDate>Thu, 19 Aug 2010 22:17:18 +0900</pubDate>
			<title>Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2</title>
			<link>http://blog.asial.co.jp/740</link>
			<description><![CDATA[ 皆さまこんにちは。アシアルの和田です。<br />
<br />
今日は、前々回に引き続き、FireworksでiPhone4を作成してみました。<br />
今回はAppleのサイトにあったiPhone4（斜めから見た）をお手本にしています。<br />
<br />
ただ、今回はちょっと長くなりそうなので、ボタン部分は次回に作りたいと思います。<br />
なので、今日はボタンなしのiPhone4の斜め版です。<br />
（ちょっと変ですかね!?）<br />
<br />
<br />
では、まずはじめに<br />
700×700pxのキャンバスを作ります。<br />
<br />
<br />
<br />
ステップ-1　iPhone4をトレース<br />
正面から見たiPhoneをトレースします。<br />
その際、トレースしたオブジェクトの線を赤や青など、目立つ色で描くと分かりやすくなります。（下のイメージです）<br />
<a href="/read_file.php?id=1224&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1224" /></a><br />
<br />
<br />
ステップ-2　斜めから見たイメージに変形<br />
Appleのサイトに掲載されていた斜めからのアングルにするために、ステップ－１で作成したオブジェクト全てを一括して「変形ツール」で変形します。<br />
また、奥行き間が出るように、変形したオブジェクトを数ピクセル動かしたりして微調整します。<br />
<a href="/read_file.php?id=1225&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1225" /></a><br />
<br />
<br />
ステップ-3-1　ステンレスバンドを作成<br />
トレースした一番外側のオブジェクトを下図のように下側にコピーします。<br />
そして、遠近感がでるようにコピーしたオブジェクトの左右のコーナーを微調整します。<br />
<a href="/read_file.php?id=1226&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1226" /></a><br />
<br />
<br />
そして、こんな感じに、2つのオブジェクトを結合します。<br />
ちなみに、バンドの切れ目の線（ペンツールで作ったオブジェクト）も描いておきます。<br />
実際に、黒いオブジェクトをのせるだけでステンレスバンドの切れ目を表現できます。<br />
（結合方法は、ナイフツールでオブジェクトをカットして、ペンツールで結合です。）<br />
<a href="/read_file.php?id=1227&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1227" /></a><br />
<br />
<br />
ステップ-4　ステンレスバンドを着色<br />
出来上がったステンレスバンドを下記のようにグラデーションを設定します。<br />
・線形グラデーション：#000000→#AFAFAF→#AFAFAF→#000000<br />
<a href="/read_file.php?id=1228&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1228" /></a><br />
<br />
<br />
次に、真ん中のコーナー部分の鉄っぽいハイライト（グラデーション）をつけます。<br />
３つのオブジェクトを矩形ツールで作成し「エッジをぼかす」を適用します。<br />
<br />
・ベタ塗り：#000000　エッジをぼかす（10px）　透明度100%<br />
・ベタ塗り：#FFFFFF　エッジをぼかす（15px）　透明度80%<br />
・ベタ塗り：#000000　エッジをぼかす（15px）　透明度100%<br />
<a href="/read_file.php?id=1229&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1229" /></a><br />
<br />
<br />
<br />
<br />
ステップ-3-2　ステンレスバンドの角を表現<br />
ここで、ステンレスバンドの角を表現します。<br />
方法は、ステンレスバンドと隣接したオブジェクトを白でベタ塗り、エッジをぼかすを1pxに設定します。<br />
・ベタ塗り：#FFFFFF　エッジをぼかす（1px）<br />
<a href="/read_file.php?id=1230&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1230" /></a><br />
<br />
<br />
ステップ-3-3　ステンレスバンドの側面を表現<br />
次に、ステンレスバンドの側面（iPhoneを正面から見たときに見える面）を演出するために、先ほど作ったオブジェクトをコピーして、左と上に数ピクセルずらし、グレーのグラデーションをかけます。<br />
・線形グラデーション：#474747→#666666→#474747　エッジをぼかす（2px）<br />
<a href="/read_file.php?id=1231&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1231" /></a><br />
<br />
<br />
ステップ-3-4　ステンレスバンドとプラスチック部分との境界を表現<br />
先ほど作ったグレーのグラデーションをコピー＆ペースト。若干縮小（数ピクセル程度）して、手前の下図のように配置します。<br />
こうすることで、ステンレスバンドと黒い部分との境界を表現します。<br />
・ベタ塗り：#0000003　エッジをぼかす（1px）<br />
<a href="/read_file.php?id=1232&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1232" /></a><br />
<br />
<br />
ステップ-4　iPhoneのプラスチック部分（黒い部分）の作成<br />
これは、iPhoneの上面（画面などがある部分）の作成です。<br />
先ほど作った黒いオブジェクトを更にコピー＆ペースト<br />
縮小して下記のように配置してください。（さっきと同じように手前側の隙間を大きく取ります）<br />
<a href="/read_file.php?id=1233&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1233" /></a><br />
<br />
<br />
そしてこのオブジェクトに、<br />
フィルタ／Photoshopライブ効果／べべルとエンボスを下記の設定で適用します。<br />
<a href="/read_file.php?id=1234&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1234" /></a><br />
<br />
<br />
<br />
そうするとこんな感じです。<br />
大分、それっぽくなってきました。<br />
<a href="/read_file.php?id=1235&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1235" /></a><br />
<br />
<br />
ステップ-5　iPhoneのパーツ（スピーカー、カメラ、マイク）の作成<br />
こちらについては、前回のブログとほぼ同じ方法で描いていますので、今回は省略します。<br />
ご興味のある方は<a href="http://blog.asial.co.jp/714">「iPhone4をFireworksで作ってみました」</a>を参照して下さい。<br />
<a href="/read_file.php?id=1236&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1236" /></a><br />
<br />
<br />
<br />
ステップ-6　ハイライトの作成<br />
iPhoneのハイライト部分を作成するために、下記のように赤い線のオブジェクトを作成。そしてステップ-5で作成した黒いオブジェクトをコピーして、赤い線のオブジェクトと<br />
変更／パスを結合／交差をして作成します。<br />
こんな感じです。<br />
<a href="/read_file.php?id=1237&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1237" /></a><br />
<br />
<br />
そして、白の不透明から透明へのグラデーションを設定します。<br />
こちらも、以前のブログにて紹介しておりますので、今回は省略します。<br />
例によって（スパイ大作戦みたいですね…古い？）<br />
ご興味のある方は<a href="http://blog.asial.co.jp/714">「iPhone4をFireworksで作ってみました」</a>を参照して下さい。<br />
<a href="/read_file.php?id=1238&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1238" /></a><br />
<br />
<br />
ハイライトを上と左方向に数ピクセル移動します。(<br />
Appleのサイトの画像はこんな感じになっていたので）<br />
<a href="/read_file.php?id=1239&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1239" /></a><br />
<br />
<br />
<br />
そして、背景を黒にしたら出来上がりです…。<br />
<a href="/read_file.php?id=1240&mode=1" rel="lightbox" class="link-lightbox"><img src="http://blog.asial.co.jp/read_file.php?id=1240" /></a><br />
<br />
といいつつ、ボタン類は次回に持越しです。<br />
<br />
<br />
それではまたでございます。 ]]></description>
			<author>和田記光</author>
			<category>Tech</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/740</guid>
		</item>
				<item>
			<pubDate>Thu, 19 Aug 2010 19:17:30 +0900</pubDate>
			<title>iPad版の会社紹介を作ってみました</title>
			<link>http://blog.asial.co.jp/739</link>
			<description><![CDATA[ こんにちは。小林です。<br />
<br />
iPadの発売から、さまざまなお客様のアプリケーションをiPad上で構築してきましたが、「アシアルでもiPadを活用してみよう！」ということで、「iPad版の会社紹介」を作ってみました。<br />
<br />
ベータ版として、本当にシンプルなビューアー仕様になっていますが、将来的には、もっとデザインとか、動きを入れていきたいな・・・と考えています。<br />
<br />
今後の改良にご期待ください！<br />
<br />
次回は、御社にこちらのアプリを持参の上、アシアルをご紹介にあがらせていただきます m(__)m<br />
<br />
<object width="400" height="340"><param name="movie" value="http://www.youtube.com/v/lsVfnzuOLv8?fs=1&amp;hl=ja_JP"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lsVfnzuOLv8?fs=1&amp;hl=ja_JP" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="340"></embed></object> ]]></description>
			<author>小林有佳</author>
			<category>日常</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/739</guid>
		</item>
				<item>
			<pubDate>Thu, 19 Aug 2010 01:07:55 +0900</pubDate>
			<title>iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2)</title>
			<link>http://blog.asial.co.jp/738</link>
			<description><![CDATA[ こんにちは、亀本です。<br />
<br />
今回も、<a href="http://blog.asial.co.jp/732">1回目</a>に続いて、iPhoneアプリ申請まわりの、各種ファイルの取り扱いについての話の続きを書いていきたいと思います。<br />
<br />
<br />
<strong>必要なファイル群</strong><br />
<br />
まず、前回も紹介したファイル群を改めて列挙しておきます。<br />
<br />
・ 秘密鍵<br />
--> hoge.p12<br />
・ 秘密鍵に対応したCSR(証明書要求)<br />
--> CertificateSigningRequest.certSigningRequest<br />
・ CSRに対応した証明書(開発用)<br />
--> development_identity.cer<br />
・ CSRに対応した証明書(申請用)<br />
--> distribution_identity.cer<br />
・ 中間証明書<br />
--> AppleWWDRCA.cer<br />
・ デバイスID<br />
--> iPhone実機から取得<br />
・ AppID<br />
--> 任意に設定<br />
・ development用Provisioning Profile<br />
--> hoge.mobileprovisioning<br />
・ destribution用Provisioning Profile<br />
--> hoge.mobileprovisioning<br />
<br />
<br />
前回は、このうち秘密鍵とCSRの取り扱いについて紹介しました。<br />
今回は、各種証明書と、デバイスID、App IDの運用時、作成時などのポイントを紹介して行きます。<br />
<br />
<br />
<strong>証明書の有効期限に気をつけよう</strong><br />
<br />
iPhoneの開発・申請の際には、3種類の証明書が絡んできます。<br />
<br />
・ CSRに対応した証明書(開発用)<br />
・ CSRに対応した証明書(申請用)<br />
・ 中間証明書<br />
<br />
の3種類です。<br />
開発用の証明書と申請用の証明書は、その名の通りです。<br />
また、中間証明書は、AppleのProvisioning Portalで発行されている物になります。<br />
<br />
これらについては、あまり運用の際に深く注意すべき事はありません。<br />
証明書の有効期間中は、何度でもダウンロードしてこれるので、きちんと対応する秘密鍵やCSRが保持されていれば、<br />
特に証明書側をペアで保存しておく、などの配慮はいりません。<br />
<br />
<br />
ただし、開発用と申請用の証明書には有効期限があり、期間が切れたら再度CSRを使った証明書要求が必要になることだけ、<br />
気をつけておく必要があります。<br />
証明書の有効期限は、Provisioning Portalでも、ローカルのキーチェーンアクセスでも、どちらでも閲覧可能なので、<br />
これは、きちんとチェックしておきましょう。<br />
<br />
しかも、証明書の有効期限が若干のはまりどころになることもあります。<br />
<br />
一度自分がひっかっかったのが、ちょうど期限切れ当日に証明書の期限が切れている事に気づきいて証明書を<br />
再度発行しようとしたところ、アメリカとの時差により、Appleのサイト側ではまだ期限切れ扱いになっておらず、<br />
しばらくの間ローカルでのみ期限切れ扱い、というおかしな齟齬が生まれた事がありました。<br />
<br />
<br />
証明書が期限切れになると、当然のことながら、アプリの申請ができなくなってしまいます。<br />
アプリのリリースの時期などとかぶってしまわないように、気をつけましょう。<br />
<br />
<br />
<br />
<strong>デバイスID につける名前は、分類しやすい区切りをつけよう</strong><br />
<br />
分類しやすい区切りって意味わかんない日本語ですね。<br />
<br />
デバイスIDとは各実機ごとの端末識別子のことで、これをProvisioning Portalから登録することによって、<br />
実機でのテストが可能になります。<br />
<br />
表題の話は、つまるところ、デバイスIDをProvisioning Portal登録する際につける名前に、会社名とか部署名とか、<br />
そういう類の接頭辞をつけておくと管理しやすいよ、と言う話です。<br />
<br />
<br />
iPhoneの開発を会社単位でやっていると、実開発者以外にとてもいろいろな人に実機テストやアプリの確認を<br />
おこなってもらう事になります。<br />
開発者自身から始まって、テスター、マネージャ、顧客などなど。もっと複雑なプロジェクトチームになっている場合も<br />
あります。<br />
<br />
そういった作業を行っていると、どのデバイスIDが誰の物か、という事がきちんと視認できるように名前をつけておかないと、<br />
本来そのプロジェクトに関わりのない人の端末にもインストールできるようにしてしまったり、同じような名前をつけてしまって<br />
どれがインストールしたいデバイスだかわからない、などの事態に陥ります。<br />
<br />
<br />
そのため、ある程度管理する数が増えてくるようなら、明確にどこの誰の物かがわかりやすいように、<br />
所属する会社名、部署名などを接頭辞につけて、適切なグループ分けを行うようにすると、運用が楽になります。<br />
<br />
また、iPhone3Gなのか4なのか、iPod Touchなのか、iPadなのか、など、端末の種類も一緒にわかるようにしておくと、一層便利です。<br />
<br />
たとえば、「Asial Yudoufu iPhone4」とかです。(実際はちょっと違う名前つけてますけど。)<br />
<br />
このあたりに心を配っておくと、後々わかりやすく、管理しやすくなると思います。<br />
<br />
<br />
<br />
<strong>App ID は、アスタリスク(*)を忘れずに。</strong><br />
<br />
Provisioning Portalでの申請時に、「何これ？」となりやすいのがApp IDです。<br />
App IDは複数作る事は可能ですが、削除が不可能なので失敗してゴミを残すと後々気分が悪いので、ちょっと気を配って作ってあげましょう。<br />
<br />
<br />
iPhoneのアプリケーションは、バンドルと呼ばれるまとまりごとに分類して管理されるのですが、そのバンドルの<br />
識別子となるのが、App IDです。<br />
このApp ID で指定した値を、iPhoneアプリの申請用ビルドを行う際に、アプリのinfo.plist内で識別子(Bundle Identifier)に<br />
指定する必要があります。<br />
<br />
この識別子には、URLドメインを逆さまにした記述を利用することが推奨されており、たとえばアシアルで<br />
Fooというアプリケーションをリリースする場合であれば、「jp.co.asial.foo」という値を使うような感じになります。<br />
<br />
なので、アプリの申請時には1度はお世話になるIDなのです。<br />
<br />
<br />
ただし、このApp ID、一度値を指定してしまうと、変更がききませんし、識別子なので同じ値を2度使うこともできません。<br />
となると、アプリを申請するごとに１つApp IDを作って。。。という手間が発生してしまいます。<br />
<br />
App IDが分かれると、ビルド時に使うProvisioning Profileも別に用意せねばならず、同一の会社から複数の<br />
アプリをリリースする場合には、とても管理が煩雑になります。<br />
<br />
<br />
しかし、その手間を簡素化するために、App IDにはワイルドカードとして" * " (アスタリスク)を利用できるようになっています。<br />
たとえば、アシアルであれば「jp.co.asial.*」といった具合でしょうか。<br />
<br />
これを使うことで、「jp.co.asial.xxxx」という識別子のついたアプリケーションは、すべて1つのApp IDを使うことができ、<br />
それはすなわち、すべてのアプリケーションを1つのProvisioning Profileで管理できることを意味します。<br />
<br />
もちろん、アプリケーション個別にはきちんと一意なIDをつけてやる必要はありますが、<br />
FooというアプリとBarというアプリ、それぞれに「jp.co.asial.foo」「jp.co.asial.bar」識別子を指定したとしても、<br />
これらに個別にApp ID作る必要はなく、上記のアスタリスク付きのApp IDを使い回すことができます。<br />
<br />
そのため、ある程度いろいろなアプリをリリースしていこうと考えている場合には、上記のようにアスタリスクを<br />
つけたApp ID に、会社名などの汎用的な名前(「Asial App ID」など)をつけて管理してやると、運用がすっきりすると思います。<br />
<br />
<br />
<br />
<strong> おわりに </strong><br />
<br />
<br />
今回は、各種証明書と、デバイスID、App IDの作成時、運用時のちょっとした心配りや注意点を紹介しました。<br />
<br />
次回以降も引き続き、各種申請用ファイル群の注意点などについて、紹介していく予定です。 ]]></description>
			<author>亀本大地</author>
			<category>Tech</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/738</guid>
		</item>
				<item>
			<pubDate>Fri, 13 Aug 2010 21:29:53 +0900</pubDate>
			<title>symfonyセミナー動画無料公開！</title>
			<link>http://blog.asial.co.jp/737</link>
			<description><![CDATA[ こんにちはアシアル・アピール担当の岡本雄樹です<br />
<br />
最近、弊社の優秀なアルバイトが<br />
私の席の後ろでsymfonyと格闘しているようです。<br />
<br />
クラスの概念から勉強中なので苦労しているようですが、<br />
親切な先輩社員が１から１０まで教え込んでいるので、<br />
将来が楽しみです。<br />
<br />
symfonyと言えば、<br />
先月開催した弊社テクニカルセミナー<br />
「PHP×symfony」編の動画を、<br />
今回特別に公開する運びとなりました。<br />
<br />
しかも、テクニカルセミナーにご参加いただいた<br />
「ロジックデザイン」様からの御厚意により、<br />
ただの動画ではなく、スライドと講師を同時に閲覧できる<br />
Ｅラーニング形式で動画を公開することができました。<br />
<br />
この場を借りて、お礼申し上げます。<br />
<br />
動画は下記リンクを辿り、<br />
「特別公開中」ボタンをクリックして下さい。<br />
<a href="https://www.asial.co.jp/seminar/">アシアル・テクニカルセミナー</a><br />
<br />
<br />
尚、アシアルでは、現在、全5回にわけて<br />
「開発者向け、一歩先を行くためのテクニカルセミナー」<br />
を開催しています。<br />
<br />
８月２５日には「PHP×Flex（前編）」と銘打ちまして、<br />
ActionScript3.0でインタラクティブなWeb開発を行う、<br />
ノウハウをセミナーでご提供致します。<br />
皆様お誘い合わせのうえ、ご参加下さいませ。<br />
<br />
お申し込みページへは、以下のバナーよりお進み下さい。<br />
<a href="http://www.asial.co.jp/seminar/"><a href="http://www.asial.co.jp/images/top/top-image-seminar.jpg&mode=1" rel="lightbox" class="link-lightbox"><img src="http://www.asial.co.jp/images/top/top-image-seminar.jpg" width="480" /></a></a><br />
<br />
また、講演者の<a href="http://blog.asial.co.jp/user/4">松田　惇</a>のブログでも、<br />
Flexネタで記事を書かせて頂いております。<br />
宜しければご参照ください。<br />
<br />
【開催概要】<br />
<br />
日程： 8月25日(水） 10:00 ～ 12:00（※ 開始30分前より入室可能）<br />
会場： 山王健保会館2F 多目的ホール<br />
交通： 地下鉄銀座線・南北線：溜池山王駅 7出口　徒歩3分<br />
　　　 地下鉄千代田線：赤坂駅 1出口　徒歩5分<br />
　　　 地下鉄銀座線・丸ノ内線：赤坂見附駅出口　下車徒歩7分<br />
主催： アシアル株式会社<br />
受講対象者： Webシステムにおいて1～3年の開発経験のある方<br />
定員： 100名（※ 定員となり次第、受付を終了させていただきます 。）<br />
参加費： 無料（事前登録制）<br />
<br />
<br />
【第3回　PHP×Flex（前編）】ActionScript3.0でインタラクティブなWeb開発<br />
<br />
<h5>ActionScript3.0でインタラクティブなWeb開発</h5><br />
								<p>近年、様々なFlashコンテンツがWebサイトの要となっています。これらのFlashコンテンツの元となるのがActionScriptであります。最近ではFlexやAIRなどのRIAアプリケーションにも使用され、ActionScriptの重要性はますます高まってきています。</p><br />
                <p>この講演では、Flexアプリケーションの基礎となるActionScript3.0の基本構文から簡単なFlashの作成まで実際のスクリプトを追いながら解説していきます。</p><br />
                <p style="font-size: smaller; text-indent: -1.8em ! important; margin: 1em 0pt 1em 1.8em ! important; line-height: 1.4em;"><span style="font-weight: bold;">※ PHP×Flex編は前後編の2回構成です。</span><br>前編ではActionScript3.0の基礎を学び、後編ではFlexとPHPを連携したFlexアプリケーションの作成方法を解説します。まずはこの前編でActionScript3.0の基礎をしっかりと学びましょう。</p><br />
								<dl><br />
									<dt>講演者：アシアル株式会社　松田　惇（マツダ　アツシ）</dt><br />
									<dd>アシアル株式会社のPHPプログラマー兼Flexプログラマー<br><br />
											JavaScriptやAjaxを生かした、動的にインターフェースが変化するシステムが好きなことからFlashアプリケーションに興味を持ちはじめ、趣味でFlexを勉強するようになる。そのことがきっかけで、現在ではFlexアプリケーションの構築も担当している。<br />
                  </dd><br />
								</dl> ]]></description>
			<author>岡本雄樹</author>
			<category>日常</category>
			<guid isPermaLink="true">http://blog.asial.co.jp/737</guid>
		</item>
			</channel>
</rss>