<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Katapad Design</title>
	
	<link>http://katapad.com/wp</link>
	<description>スーパー肩パッドですけどー、ActionScriptでくさい飯じゃないほうを食べた～い！</description>
	<lastBuildDate>Sat, 11 Dec 2010 18:11:39 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/katapad" /><feedburner:info uri="katapad" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>デザイナ上がりの2年目Flasherが読んだ本21冊の感想をだいたい3行くらい書きました。4行になった感想もあります。</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/1-C1HyMhGvU/</link>
		<comments>http://katapad.com/wp/2009/12/24/21_books_flashman_read/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 11:05:03 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=458</guid>
		<description><![CDATA[iframe.amazon { float: left; margin: 0 10px 1.5em 20px; } div.section { clear: both; } 1年前に、「デザイナー上がりのFlasher1年生が読んだ19冊の本を、これほどかというほどに感想を書きます。だいたい3行だけど。」という記事を書きました。 思ったよりブクマされていたので、今年も紹介をしていきたいと思います！ 今回紹介する全21冊！とページ内リンク 紹介するには多すぎますね！読む側も途中で飽きてしまうと思うので、1冊だけB&#8217;zのモノマネをしながらレビューしますネ！押しにくいですが、数字のセルがページ内リンクです！ ページ内リンク ★ タイトル 1 ★★★☆☆ Flash Math &#38; Physics Design:ActionScript 3.0による数学・物理学表現[入門編] 2 ★★★★☆ ビジュアライジング・データ ―Processingによる情報視覚化手法 3 ★★★★★ アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣 4 ★★★★★オススメ！ Foundation Actionscript 3.0 Image Effects 5 ★★★★★オススメ！ 初めてのFlash Video 6 ★★★☆☆ よくわかるJava 7 ★★★★★オススメ！ About [...]]]></description>
			<content:encoded><![CDATA[				<style type="text/css">
				iframe.amazon {
					float: left;
					margin: 0 10px 1.5em 20px;
				}
				div.section {
					clear: both;
				}
				</style>
				<div class="outline">
				<p class="keyVisual"><a href="http://katapad.com/wp/2009/12/24/21_books_flashman_read/"><img src="http://katapad.com/wp/upload_img/2009/12/keyVisual_book2.png" width="608" height="200" alt="" /></a></p>
				<p>1年前に、<a href="http://katapad.com/wp/2008/12/31/19_books_a_flashman_read/">「デザイナー上がりのFlasher1年生が読んだ19冊の本を、これほどかというほどに感想を書きます。だいたい3行だけど。」</a>という記事を書きました。</p>
				<p>思ったよりブクマされていたので、今年も紹介をしていきたいと思います！</p>
				<h2>今回紹介する全21冊！とページ内リンク</h2>
				<p>紹介するには多すぎますね！<br />読む側も途中で飽きてしまうと思うので、<strong>1冊だけB&#8217;zのモノマネをしながらレビュー</strong>しますネ！<br />押しにくいですが、<em>数字のセルがページ内リンク</em>です！</p>
				<table>
				<thead>
				<tr>
				<th>ページ内<br />リンク</th>
				<th>★</th>
				<th>タイトル</th>
				</tr>
				</thead>
				<tbody>
				<tr>
				<th scope="row"><a href="#book2_0">1</a></th>
				<td>★★★☆☆</td>
				<td>Flash Math &amp; Physics Design:ActionScript 3.0による数学・物理学表現[入門編] </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_1">2</a></th>
				<td>★★★★☆</td>
				<td>ビジュアライジング・データ ―Processingによる情報視覚化手法 </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_2">3</a></th>
				<td>★★★★★</td>
				<td>アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣 </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_3">4</a></th>
				<td><strong>★★★★★<br />オススメ！</strong></td>
				<td>Foundation Actionscript 3.0 Image Effects  </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_4">5</a></th>
				<td><strong>★★★★★<br />オススメ！</strong></td>
				<td>初めてのFlash Video  </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_5">6</a></th>
				<td>★★★☆☆</td>
				<td>よくわかるJava </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_6">7</a></th>
				<td><strong>★★★★★<br />オススメ！</strong></td>
				<td>About Face 3 インタラクションデザインの極意  </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_7">8</a></th>
				<td>★★★★☆</td>
				<td>AIRアプリケーションレシピブック </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_8">9</a></th>
				<td><strong>★★★★★<br />オススメ！</strong></td>
				<td>禁煙セラピー―読むだけで絶対やめられる  </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_9">10</a></th>
				<td>★★★☆☆</td>
				<td>Papervision3Dではじめる Flash3Dアニメーション </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_10">11</a></th>
				<td>★★★★★</td>
				<td>ActionScript 3.0 エラーアーカイブス コンパイルエラー・コンパイラ警告・ランタイムエラーの解法 </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_11">12</a></th>
				<td>★★★★☆</td>
				<td>写真の撮り方手帖 ~たいせつなもの、撮ろう~ </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_12">13</a></th>
				<td>★★★★★</td>
				<td>ディジタル画像処理  </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_13">14</a></th>
				<td><strong>★★★★★<br />オススメ！</strong></td>
				<td>ActionScript3.0辞典 [FlashPlayer10/9対応]  </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_14">15</a></th>
				<td>★★★★☆</td>
				<td>ビデオカメラでいこう </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_15">16</a></th>
				<td><strong>★★★★★<br />オススメ！</strong></td>
				<td>.fla2  </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_16">17</a></th>
				<td>★★★☆☆</td>
				<td>After Effects Illusionist </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_17">18</a></th>
				<td><strong>★★★★★<br />オススメ！</strong></td>
				<td>Adobe After Effects トレーニングブック サンプルデータを触りながら学べるハンズオン形式の解説書  </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_18">19</a></th>
				<td>★★★★★</td>
				<td>Flash3Dコンテンツ制作のためのPapervision3D入門 </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_19">20</a></th>
				<td>★★★★★</td>
				<td>フリーランスを代表して 申告と節税について教わってきました。 </td>
				</tr>
				<tr>
				<th scope="row"><a href="#book2_20">21</a></th>
				<td>★★★☆☆</td>
				<td>コミュニケーションをデザインするための本 </td>
				</tr>
				</tbody>
				</table>
				</div>
				<div class="section">
				<h2>2009年1～3月までに読んだ本</h2>
				<div class="section" id="book2_0">
				<h3>1. Flash Math &amp; Physics Design:ActionScript 3.0による数学・物理学表現[入門編] ★★★☆☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4797351411" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>enterFrameでモーションを作るのに慣れていない人向け</em></p>
				<p>「入門編」とあるので、かなり初心者向けに書いてあります。初心者向けなので、コードの美しさよりも動くことが重視されています。最後のほうのサンプルは応用できそう？ちょっと偏ってる気もしますね。</p>
				<p>すべてのサンプルが公開されているので、確認してから買うかどうか決めるのがいいと思います。<br />
							<a href="http://furukata.com/fmpd/" target="_blank">http://furukata.com/fmpd/</a></p>
				</p></div>
				<div class="section" id="book2_1">
				<h3>2. ビジュアライジング・データ ―Processingによる情報視覚化手法 ★★★★☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4873113784" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>情報の整理や正規化など、その道の手法が学べる。</em></p>
				<p>「データ収集」「解析」「フィルタリング」「マイニング」「表現」「精緻化」「インタラクション」というビジュアライズの7つのステップに沿って解説されています。</p>
				<p>ビジュアライズは散布図、折れ線グラフ、<a href="http://gihyo.jp/dev/feature/01/visualization/0003">ツリーマップ</a>、<a href="http://ja.wikipedia.org/wiki/複雑ネットワーク">ネットワークグラフ</a>、などなどです。</p>
				<p>情報の取り扱い方に対する姿勢が学べます。これを読んだ直後に案件に活かせることがあって、とても重宝しました。何はともあれ「正規化」して「マッピング」するようになりました。</p>
				<p>この本ではツールとしてProseccingを用いていますが、Flashでも十分書ける内容だと思います。</p>
				</p></div>
				<div class="section" id="book2_2">
				<h3>3. アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣 ★★★★★</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4274066940" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>悪魔と天使のささやきを対比させ、アジャイルな開発の心構えを教えてくれる</em></p>
				<p><a href="http://www.amazon.co.jp/dp/4798021180?tag=kpd-22&amp;camp=1027&amp;creative=7407&amp;linkCode=as4&amp;creativeASIN=4798021180&amp;adid=17GH8WXSJ5FBWX4XCFP9&amp;">達人プログラマー―システム開発の職人から名匠への道</a></p>
				<p>と同じような本。200ページほどの薄い本。すぐに読めました。</p>
				<p>「正しい軌道に乗せるために、変化を起こし続ける」ということがアジャイルの本質なのでしょうか。</p>
				<p>「いつでもリリース可能に」「インクリメンタルな開発」「フィードバック」「テストファースト」「ソリューションログをつける」「あらゆる例外を報告する」など、プラクティスが45個も掲載されています。どれもすぐに実践できる内容で、アジャイルな開発の心構えを教えてくれる1冊です。</p>
				</p></div>
				<div class="section" id="book2_3">
				<h3>4. Foundation Actionscript 3.0 Image Effects <strong>★★★★★ オススメ！</strong></h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=1430218711" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>Bitmapの操作を掘り下げまくった洋書</em></p>
				<p>FlashPlayer10のPixelBender、ネイティブな3D、高度なBitmap操作などなど、Flashでできる画像処理をメインにした本です。はやく和訳本が欲しいくらいの出来です。</p>
				<p>PixelBenderに関しては、50ページも書いてあります。これだけのことが書いてある本は他にないと思うので、それだけでも大きな価値があると思います。</p>
				<p>他にはBlendMode、BitmapFilterの基礎から、テキストやビデオエフェクト、エフェクトのアニメーションなど応用の範囲も広く扱われています。</p>
				<p>洋書なので読むのが億劫になることもありますが、サンプルコードと結果がわかればいいんです！読んだ気になって実践実践！</p>
				</p></div>
				</div>
				<div class="section">
				<h2>2009年4～6月までに読んだ本</h2>
				<div class="section" id="book2_4">
				<h3>5. 初めてのFlash Video <strong>★★★★★ オススメ！</strong></h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4873113520" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>FLVの本というより、映像入門書。「FLV？なんとなく知ってます」程度なら絶対読んどけ！</em></p>
				<p>扱っている内容がFMS2、AS2というのが難点ではありますが、FLVの技術的なことだけでなく、構図やビデオの撮影方法、編集まで書かれています。</p>
				<p>その他にもFMSで録画、ストリーミング、PHPとDBとの連携、FlvPlayBackの基礎など、非常に多岐に渡る内容です。</p>
				<p>また、オライリーにしては珍しく和訳本ではなく、日本人による執筆なので、とても読みやすくなっています。</p>
				<p>あやふやな知識しかない映像初心者ならば、読んで絶対得をする内容です。</p>
				</p></div>
				<div class="section" id="book2_5">
				<h3>6. よくわかるJava ★★★☆☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4798017736" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>プログラムをあんまり知らない初心者向け</em></p>
				<p>Red5というFMSクローンアプリがjavaで書かれており、必要にかられて買いました。「if文とは」「forとは」から始まる、よくある初心者向けの本です。</p>
				<p>この手の本は店頭で適当に眺めて買うほうがいいですね。「Eclipseで始めるjava」みたいな本でもいいかもしれません。</p>
				</p></div>
				<div class="section" id="book2_6">
				<h3>7. About Face 3 インタラクションデザインの極意 <strong>★★★★★ オススメ！</strong></h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4048672452" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>それは本当にユーザーのことを考えているのか</em></p>
				<p>ユーザーのゴールを知ること。<strong>「ツールによって便利になったが、それによりユーザーが仕事を失う」ことはゴールではない</strong>。</p>
				<p>冒頭付近でこのくだりがあって、ハッとさせられました。「使いやすい」というのは表層的なものでしかなく、ユーザーが真に何を求めているのかを知ろうとしなければなりません。</p>
				<p>本の内容は、ユーザー調査・ペルソナなどの概念的なことから、アンドゥやダイアログボックスなどUIまで、非常に多岐にわたります。</p>
				<p>550ページもある上に、どれも濃くって難しい用語もたくさんでてきます。それでもオススメできるいい本です。きっと今までよりもユーザーのことを考えたモノづくりができるはずです。</p>
				</p></div>
				<div class="section" id="book2_7">
				<h3>8. AIRアプリケーションレシピブック ★★★★☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4839931674" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>WebDesigningのAIR記事をまとめた本。AIR初心者向け。いい編集されています。</em></p>
				<p>AIR1.5対応。「ブラウザについてはこの記事」「ドラドロはこの記事」というように1記事1テーマなので、とても読みやすくとっつきやすいです。実際にリリースされているAIRアプリの紹介もたくさんある親切設計。これ1冊でだいぶカバーできると思います。</p>
				</p></div>
				</div>
				<div class="section">
				<h2>2009年7～9月までに読んだ本</h2>
				<div class="section" id="book2_8">
				<h3>9. 禁煙セラピー―読むだけで絶対やめられる <strong>★★★★★ オススメ！</strong></h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4845405059" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>「タバコ吸いたい洗脳」を解いて、「タバコ吸わんでええやん洗脳」をしてくれ、めったにできない洗脳体験できる！</em></p>
				<p>喫煙とは<strong>洗脳</strong>であり、<strong>麻薬中毒</strong>です。タバコがなければ落ち着きがなくなるし、お金がかかるし、肩身の狭い思いもたくさんしますね。これだけデメリットがあるのに、なぜ冷静に考えられないのか。</p>
				<p>それは「タバコがあると落ち着き、活力がもらえる」と洗脳されているからです。</p>
				<p>この洗脳を簡単にといてくれるのがこの本です。<br />様々な言葉で洗脳を解いてくれるのですが、僕は<strong>「喫煙者は口が臭い」</strong>という言葉に一番圧倒されてしまいました。その瞬間、「タバコが必要」という洗脳が解けた気がします。いままで臭い口をして生きてきて、本当にごめんなさい。</p>
				<p>禁煙して最初の1週間は、ちょっと辛い時もありましたが、いま思うと微々たるものでした。周りのひとからも「なんでそんなに簡単にやめられるの？」って不思議がられました。「これで勝ち組になれたんだ！」という新たな洗脳が役に立ちましたね。</p>
				<p>禁煙できたことよりも、</p>
				<ul>
				<li><strong>「本質を見抜かず、洗脳されていることを知り」</strong></li>
				<li><strong>「自分に有利な洗脳をかけること」</strong></li>
				</ul>
				<p>という、洗脳体験、他では得られませんでした。洗脳サイコー！！</p>
				</p></div>
				<div class="section" id="book2_9">
				<h3>10. Papervision3Dではじめる Flash3Dアニメーション ★★★☆☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4774139378" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>まったく3Dを知らずにPV3Dから触る人向け</em></p>
				<p>PaperVisioin3Dを触って初めて3Dの世界に飛び込んだひとも多いと思います。僕もそうでした。あやふやな単語の意味を知れるだけで有意義ではあります。</p>
				<p>ただ、至る所にギャグが織りまぜられていて、合う合わないが分かれます。これは閾値を超えていて、気になるひとは大いに気になると思います。</p>
				<p><strong>後述するclockmakerの池田さんのPV3D本の方がよいのでそちらにしましょう。</strong><a href="#book2_18">書評はこっち</a></p>
				</p></div>
				<div class="section" id="book2_10">
				<h3>11. ActionScript 3.0 エラーアーカイブス コンパイルエラー・コンパイラ警告・ランタイムエラーの解法 ★★★★★</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=488337646X" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>「初心者」「AS2からの移行する人」に救いの手を差し伸べてくれる本</em></p>
				<p>AS2→AS3への移行時に苦労したのが訳のわからないエラーの山。また、非プログラマでAS3から入った人もエラーには悩まされるはずです。そういったターゲットにはドンピシャです。		</p>
				<p>何よりこういうマニアックな本が出版されたことが喜ばしいことですね！Flashが盛り上がる！</p>
				</p></div>
				<div class="section" id="book2_11">
				<h3>12. 写真の撮り方手帖 ~たいせつなもの、撮ろう~ ★★★★☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4839924279" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>初心者向け。小さくてすぐ読めて、マニュアルモードで撮れるようになる。</em></p>
				<p>デジタル一眼を買って1年。ちゃんと勉強しようと思って、買いました。知識があるなしでは全然違いますね。</p>
				<p>こういう初心者向けの本は他にもあるので、1冊は読んだ方がいいですね。これを読んでマニュアルモードで撮れるようになりました。</p>
				<p>あと、<a href="http://www.amazon.co.jp/gp/product/B002GHB52M?ie=UTF8&#038;tag=kpd-22&#038;linkCode=as2&#038;camp=247&#038;creative=7399&#038;creativeASIN=B002GHB52M">シグマ の単焦点</a><img src="http://www.assoc-amazon.jp/e/ir?t=kpd-22&#038;l=as2&#038;o=9&#038;a=B002GHB52M" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />も買ったのですが、この本とあわせて読むことで、少しは上達できたかと思います。光や構図など意識することが増えました。</p>
				</p></div>
				</div>
				<div class="section">
				<h2>2009年10～12月までに読んだ本</h2>
				<div class="section" id="book2_12">
				<h3>13. ディジタル画像処理 ★★★★★</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4903474011" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>超難しいけど、絶対役に立つ日がくるはず</em></p>
				<p>以下のサイトさんでされている画像処理など書いてあります。<br />主にコーディング<br /><a href="http://mainly-coding.blogspot.com/search/label/Image%20processing" target="_blank">http://mainly-coding.blogspot.com/search/label/Image%20processing</a></p>
				<p>撮像素子などの入力、3次元空間から2次元への変換など基礎的なことから、最終的にはナンバープレートの文字を認識するところまでいっちゃいます。</p>
				<p>僕にはあまりにも難しすぎて、まだ半分くらいしか読めていません。フーリエ変換とか全然わかりません。それでもいくつか理解できるところもあり、大変勉強になりました。ConvolutionFilterやBlurなどのFilter系がきちんと理解できただけでも、それはもうかなりの前進です。</p>
				<p>この本を制圧すればARToolkitの中にいる小人さんが、何をしているのかわかるようになるはずです。</p>
				</p></div>
				<div class="section" id="book2_13">
				<h3>14. ActionScript3.0辞典 [FlashPlayer10/9対応] <strong>★★★★★ オススメ！</strong></h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4798119016&#038;md=1X69VDGQCMF7Z30FM082&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>必須というより、必読！ヘルプの丸写しじゃない！</em></p>
				<p>800ページもある逆引き辞書。FlashPlayer10の機能を網羅し、FLVPlayBackなどUIComponentまでもカバーしています。</p>
				<p>この手の辞書ってヘルプ丸写しが多いのですが、サンプルがしっかり作ってあり、1周読むだけでだいぶ世界が変わります。</p>
				<p>僕は50ヵ所以上の付箋を貼りました。まだまだこんなに知らないことがあるなんて。。。ちょっと賢くなった気分も味わえてお得です。</p>
				</p></div>
				<div class="section" id="book2_14">
				<h3>15. ビデオカメラでいこう ★★★★☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4822808602" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>ドキュメンタリーは誰でも撮れる</em></p>
				<p>ビデオカメラを買ったので、適当に選んだ1冊。でしたが、なかなかおもしろかったです。企画書から撮影テク、編集までの流れをさらっと解説してあります。薄くてすぐ読めます。</p>
				<p>ドキュメンタリーはプロのものでなく、一般市民にも撮れる、あるいは市民目線の方がおもしろい、というようなスタンスで書いてあります。勉強する気になれますし、心強いです。</p>
				<p>著者は<a href="http://www.ourplanet-tv.org/" target="_blank">OurPlanet-TV</a>という独立放送局の人で、市民のドキュメンタリー制作などもサポートしているようです。OurPlanet-TVには素人とは思えないような骨太作品もあり、映像制作がとても身近に感じれる本でした。</p>
				</p></div>
				<div class="section" id="book2_15">
				<h3>16. .fla2 <strong>★★★★★ オススメ！</strong></h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4862670717" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>偉人の思考回路をのぞき見できる</em></p>
				<p>いわずと知れた.fla2。前作もすばらしい内容でしたが、今作もすごく濃い。</p>
				<p>著者のみなさんは、やりたいこと、実現したいことを明確に持ち、困難に見えることを実にポジティブな姿勢でやってのけています。前作同様「どうすれば実現できるのか」というような過程を見せてくれます。</p>
				<p>毎日グチっているリーマンFlasherにはうってつけの治療薬となるかもですね。</p>
				<p>公式サイトでは出版イベントのYoutubeなどの情報もあります。みなさん濃い話してますね。<a href="http://dotfla.net/" target="_blank">http://dotfla.net/</a></p>
				</p></div>
				<div class="section" id="book2_16">
				<h3>17. After Effects Illusionist ★★★☆☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4862461069" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>AfterEffectsの標準搭載されているプラグインエフェクトを網羅したサンプル本。サンプルはCS4のみ対応。</em></p>
				<p>189種類もの標準搭載エフェクトのカタログとなっています。すべてカラーページで画像も豊富でわかりやすいです。辞書よりもちょっと詳しく解説されています。</p>
				<p>僕は<a href="http://www.ayatoweb.com/" target="_blank">ayato@web</a>さんで表現の勉強をしながら、この本でエフェクトの意味を確認する、という使い方をしました。「ああーコロラマってこういうことなんだー」っていう確認がすぐできると理解も深まります。</p>
				<p>また、「これは使えないエフェクトです」と、きちんと教えてくれるのも独学する人間にとってありがたいですね。</p>
				<p>ただ、サンプルがCS4だけってのはちょっと…。</p>
				</p></div>
				<div class="section" id="book2_17">
				<h3>18. Adobe After Effects トレーニングブック サンプルデータを触りながら学べるハンズオン形式の解説書 <strong>★★★★★ オススメ！</strong></h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4862670687" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>超大量の図版でめっちゃくちゃわかりやすい</em></p>
				<p>AE始めるなら、まさにこれ！とってもわかりやすい。いきなりショートカットキーの一覧から始まるのも超イイ！</p>
				<p>ルミナンス、マスク、トラッキング、タイムリマップなど、初心者がつまづくことをきちんと書かれていて、操作やできることが全部覚えられるんじゃないかと思います。</p>
				<p>僕はこの冬、こいつを制覇します！</p>
				</p></div>
				<div class="section" id="book2_18">
				<h3>19. Flash3Dコンテンツ制作のためのPapervision3D入門 ★★★★★</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=476780924X" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>PV3Dの基礎を網羅した良書。ネットに散らばったPV3Dの情報が集まっている</em></p>
				<p><a href="http://clockmaker.jp/blog/" target="_blank">clockmakerこと池田さん</a>の本。まさにあのBlogの通り、ものすごく丁寧な内容です。政治的な意味で★5つしてるワケではなくって、ほんとによくできてる本だと思います。</p>
				<p>オブジェクト同士のhitTestやカリング、3D内部でのマウス取得、頂点操作など、Flasherなら必ず1度はググったことのある内容が網羅されています。なのでリファレンスとしても優良。最後にはAS3Dmodまで！</p>
				<p>逆に何が書かれていないのかを確認した方が早いかもですね。AR、jiglib、被写界深度の実現などは書かれていません。本のタイトルが「入門」とのことなので、出るかもしれない「応用編」にも期待しましょう！</p>
				</p></div>
				<div class="section" id="book2_19">
				<h3>20. フリーランスを代表して 申告と節税について教わってきました。 ★★★★★</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4534040016" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>おちゃらけながら、楽しく税のことがわかる本</em></p>
				<p><a href="http://www.kitajirushi.jp/" target="_blank">きたみりゅうじ</a>さんというフリーのライター・イラストレーターさんが、税理士と対話形式で、節税について語ってくれます。</p>
				<p>著者はとってもおもしろい文章を書く方で、すいすい読めちゃいます。あと、<em>青色には2種類あって、簡単なやつと細かいやつがあり</em>、<strong>白色申告するくらいなら簡単な方の青色申告すればいい</strong>ことが、よ～くわかりました。</p>
				<p>あと僕、今はまだサラリーマンなんですけど、<strong>この本を紹介するってことは…、そういうことなんです！</strong>何かあればお願いしますネ！ゲヘゲヘ！！</p>
				</p></div>
				<div class="section" id="book2_20">
				<h3>21. コミュニケーションをデザインするための本 ★★★☆☆</h3>
				<p>		<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=kpd-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4885531985" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" class="amazon" style="width:120px;height:240px;"></iframe></p>
				<p><em>話題を集めてGood コミュニケイシャーン！</em></p>
				<p>ティーティーティリッティーリー　ティッティーティリッティーリー！！！<br />
						wow wow wow wow wow wow wow ！ <br />
						バッド カミュニケイシャ～～ ン！</p>
				<p>ぅWebを中心にぃー、ぃひとつのキャンペーンを掘り下げて解説してありますぅわふぅー。ぅ著者が言ってるけど、ぉこれだけ<em>深く掘り下げる本はあまり例がない</em>ですねぃぇぃ。<br />
						んんそぉの多くが「話題にのぼるよう」に設定しぃひぃーん、ぅーバイラルやメディアに取り上げてもらって拡散するように計算されていますぅっぅー。  （Yeah）  話題性があれば、それ以上の広告効果が期待できるようですぅぅ  （Oh）  。</p>
				<p>AISASモデルを使って立体的に捉え、人や情報が流通するような緻密な計画、やり手のプランナーはすごいですね。		</p>
				<p>ぅぃいずれの事例も<em>消費者に対し「共有したい」「共感する」「発見する」といったポジティブな気持ちにさせる</em>ようにやっていて、愛のままにわがままに 僕は君だけを傷つけない。</p>
				<p> そしてぇー 羽ばたく ウルトラソウル (Hi) </p>
				</p></div>
				</div>
<img src="http://feeds.feedburner.com/~r/katapad/~4/1-C1HyMhGvU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/12/24/21_books_flashman_read/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/12/24/21_books_flashman_read/</feedburner:origLink></item>
		<item>
		<title>BulkLoaderで「もう悩まない！」ための6つのtipsをまずは14日間で売上No.1！！</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/1RZJa0ruCz4/</link>
		<comments>http://katapad.com/wp/2009/10/01/6_tips_of_bulkloader/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 00:07:43 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=424</guid>
		<description><![CDATA[海外製のライブラリは日本語の情報が少なくて、英語のASDocやwikiを見たりしますよね。でも英語って読むのが難しいですよね…。 僕なんかね、キィーーッ！！ってなりますね。ぜんぜん読めないから。みなさんもキィーーッ！！ってなってますよね。でもBulkLoaderに関しては安心してください。もう、傷つく事に怯えなくていいんです。 BulkLoaderプロジェクトのDebeloperGuideってところにおトク情報がありました BulkLoaderに同梱されているサンプルはほとんど説明がないのですが、GoogleCodeのプロジェクトのwikiに結構な情報がありました。 http://code.google.com/p/bulk-loader/wiki/DeveloperGuide このうち、おトク情報を6つピックアップすることにしました。以下目次がわりのページ内リンクです。 weightプロパティで各Itemのパーセントの重み付けをして、精度のいいパーセントを取得する BulkLoaderのインスタンスはプールされている stringSubstitutionsでパスの切り替えなどができる 設定を外部ファイル化して勝手にロードしてくれるLazyBulkLoader add()するときのプロパティ一覧 一つでもエラーがあると止まってしまうから、エラーハンドリングしとこう 1. weightプロパティで各Itemのパーセントの重み付けをして、精度のいいパーセントを取得する この間「超便利なローダーBulkLoaderの落とし穴にハマってきました」という記事を書きました。その中で、パーセント取得がちょっと難しいなーという話をしました。 よくよく調べてみると、もうひとつ打つ手がありました。 BulkLoaderのドキュメント・見出し「By weight」のところ http://code.google.com/p/bulk-loader/wiki/ReportingLoadingProgress ここをかいつまんで説明しますね。あと、これから「Item」と呼ぶものは「ロードするもの」っていう意味で使います。 weightってこんな感じで動いてる ロードするItemが10個あって それぞれのItemにweightが設定されていない というケースでは、各Itemに割り当てられるパーセントは1/10、つまり10％ずつです。 このうち1つのItemがFLVなどで他のファイルより重いときにweightを設定します。この重いItemをweight=11と設定しましょう。あと、Itemのデフォルトのweightは1ということを覚えておいてください。 _bulkloader.add(&#34;hoge.flv&#34;, { type: BulkLoader.TYPE_VIDEO, weight: 11 } ); すると、 Item 割り当てられるパーセント weightを11にしたItem 11/20 他のItem 1/20 こんな感じであがります。元の分母はItem数なので10。それに、増えた重みを足して10+10で分母が20になります。たぶん！これで、FLVのパーセントが55%分を占めるようになり、期待している値に近づきました。 このweightが設定されたパーセントを取得するにはweightPercentを使用します。 weightPercentでもうすこし正確なパーセント表示 BulkProgressEvent.weightPercentにweightを考慮したパーセントが入っています。 (item._bytesLoaded / item._bytesTotal) * item.weight; いたってシンプルですね。こういった形で加算されていくので、かなり実際と近いパーセントが取得できそうです。 weightの設定にひと手間かける分、ratioLoadedやbytesLoadedよりもわりと正確な値を取得できます。 2.BulkLoaderのインスタンスはプールされている BulkLoaderのインスタンスはBulkLoaderクラスの静的なプロパティに保存されていて、いつでも再利用できるようになっています。 BulkLoaderクラスのstaticメソッドには取得・破棄の2種類があります。 //インスタンスの取得 [...]]]></description>
			<content:encoded><![CDATA[				<div class="outline">
				<p class="keyVisual"><img src="http://katapad.com/wp/upload_img/2009/10/keyVisual_bulk2.jpg" width="608" height="200" alt="" /></p>
				<p>海外製のライブラリは日本語の情報が少なくて、英語のASDocやwikiを見たりしますよね。でも英語って読むのが難しいですよね…。</p>
				<p>僕なんかね、キィーーッ！！ってなりますね。ぜんぜん読めないから。みなさんもキィーーッ！！ってなってますよね。でもBulkLoaderに関しては安心してください。もう、傷つく事に怯えなくていいんです。</p>
				</div>
				<div class="section">
				<h2>BulkLoaderプロジェクトのDebeloperGuideってところにおトク情報がありました</h2>
				<p>BulkLoaderに同梱されているサンプルはほとんど説明がないのですが、GoogleCodeのプロジェクトのwikiに結構な情報がありました。</p>
				<p><a href="http://code.google.com/p/bulk-loader/wiki/DeveloperGuide">http://code.google.com/p/bulk-loader/wiki/DeveloperGuide</a></p>
				<p>このうち、<em>おトク情報を6つ</em>ピックアップすることにしました。<br />以下目次がわりのページ内リンクです。</p>
				<ol>
				<li><a href="#bulk2_weight"><code>weight</code>プロパティで各Itemのパーセントの重み付けをして、精度のいいパーセントを取得する</a></li>
				<li><a href="#bulk2_instance_pool"><code>BulkLoader</code>のインスタンスはプールされている</a></li>
				<li><a href="#bulk2_var"><code>stringSubstitutions</code>でパスの切り替えなどができる</a></li>
				<li><a href="#bulk2_lazy">設定を外部ファイル化して勝手にロードしてくれる<code>LazyBulkLoader</code></a><code></code></li>
				<li><a href="#bulk2_addprops"><code>add()</code>するときのプロパティ一覧</a></li>
				<li><a href="#bulk2_errorhandler">一つでもエラーがあると止まってしまうから、エラーハンドリングしとこう</a></li>
				</ol>
				</div>
				<div class="section" id="bulk2_weight">
				<h2>1. weightプロパティで各Itemのパーセントの重み付けをして、精度のいいパーセントを取得する</h2>
				<p>この間「<a href="http://katapad.com/wp/2009/04/17/nice_loade/">超便利なローダーBulkLoaderの落とし穴にハマってきました</a>」という記事を書きました。その中で、パーセント取得がちょっと難しいなーという話をしました。</p>
				<p>よくよく調べてみると、もうひとつ打つ手がありました。</p>
				<p>BulkLoaderのドキュメント・見出し「By weight」のところ<br />
					<a href="http://code.google.com/p/bulk-loader/wiki/ReportingLoadingProgress">http://code.google.com/p/bulk-loader/wiki/ReportingLoadingProgress</a></p>
				<p>ここをかいつまんで説明しますね。<br />あと、これから「Item」と呼ぶものは「ロードするもの」っていう意味で使います。</p>
				<div class="section">
				<h3>weightってこんな感じで動いてる</h3>
				<ul>
				<li>ロードするItemが10個あって</li>
				<li>それぞれのItemに<code>weight</code>が設定されていない</li>
				</ul>
				<p>というケースでは、各Itemに割り当てられるパーセントは<em>1/10、つまり10％ずつ</em>です。</p>
				<p>このうち1つのItemがFLVなどで他のファイルより重いときに<code>weight</code>を設定します。この重いItemを<code>weight=11</code>と設定しましょう。あと、Itemのデフォルトの<code>weight</code>は1ということを覚えておいてください。</p>
				<pre><code>_bulkloader.add(&quot;hoge.flv&quot;, { type: BulkLoader.TYPE_VIDEO, weight: 11 } );</code></pre>
<p>すると、</p>
<table>
<thead>
<tr>
<th scope="col">Item</th>
<th scope="col">割り当てられるパーセント</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">weightを11にしたItem</th>
<td>11/20</td>
</tr>
<tr>
<th scope="row">他のItem</th>
<td>1/20</td>
</tr>
</tbody>
</table>
<p>こんな感じであがります。元の分母はItem数なので10。それに、増えた重みを足して10+10で分母が20になります。たぶん！これで、FLVのパーセントが55%分を占めるようになり、期待している値に近づきました。</p>
<p>このweightが設定されたパーセントを取得するには<em>weightPercent</em>を使用します。</p>
</p></div>
<div class="section">
<h3>weightPercentでもうすこし正確なパーセント表示</h3>
<p><code>BulkProgressEvent.weightPercent</code>にweightを考慮したパーセントが入っています。</p>
<pre><code>(item._bytesLoaded / item._bytesTotal) * item.weight;</code></pre>
				<p>いたってシンプルですね。こういった形で加算されていくので、かなり実際と近いパーセントが取得できそうです。</p>
				<p><code>weight</code>の設定にひと手間かける分、<code>ratioLoaded</code>や<code>bytesLoaded</code>よりもわりと正確な値を取得できます。</p>
				</p></div>
				</div>
				<div class="section" id="bulk2_instance_pool">
				<h2><code>2.BulkLoader</code>のインスタンスはプールされている</h2>
				<p><code>BulkLoader</code>のインスタンスは<code>BulkLoader</code>クラスの静的なプロパティに保存されていて、いつでも再利用できるようになっています。</p>
				<p><code>BulkLoader</code>クラスのstaticメソッドには取得・破棄の2種類があります。</p>
				<pre><code>//インスタンスの取得
BulkLoader.getLoader(name);</code></pre>
				<p>破棄メソッドについては、すべての<code>BulkLoader</code>インスタンスを削除するものしか用意されていないようです。</p>
				<pre><code>BulkLoader.removeAllLoaders();</code></pre>
<p>再利用しないのであれば、removeするのがいいでしょう。</p>
</div>
<div class="section" id="bulk2_var">
<h2><code>3.stringSubstitutions</code>でパスの切り替えなどができる</h2>
<p>ロードしたいパスに変数ぽいものを仕込んで柔軟性を上げることができます。</p>
<pre><code>_bulkLoader.stringSubstitutions = {
	&quot;base_path&quot;: &quot;http://example.com/test/&quot;
}
_bulkLoader.add(&quot;{base_path}test.jpg&quot;);
// これが→http://example.com/test/test.jpg に変換されます。
</code></pre>
				<p>テスト用パスと、本番用のパスを変えるときに便利そうですね。</p>
				</div>
				<div class="section" id="bulk2_lazy">
				<h2>4.設定を外部ファイル化して勝手にロードしてくれる<code>LazyBulkLoader</code></h2>
				<p>ロードしたいItemとその設定を書いたxml・jsonを書くだけで、自動でロードしてくれるクラスが<code>LazyBulkLoader</code>です。以下の2種類あります。</p>
				<ol>
				<li>LazyXMLLoader</li>
				<li>LazyJSONLoader</li>
				</ol>
				<p>xml・json内部で設定できることはasで書けることとほぼ同じだと思われます。以下のxmlを見るとよくわかります。</p>
				<p><a href="http://www.emptywhite.com/bulkloader-assets/lazyloader.xml">BulkloaderのLazyサンプルに同梱されているサンプルxml</a></p>
				<p>使い方はBulkLoaderのサンプルに含まれている<br />
						/examples/serialized-loaders/SerializedTestMain.as<br />
					に書いてあります。</p>
				<p>使い方は簡単です。</p>
				<pre><code>lazy  = new LazyXMLLoader(&quot;http://www.emptywhite.com/bulkloader-assets/lazyloader.xml&quot;, &quot;theLazyLoader&quot;)
lazy.addEventListener(LazyBulkLoader.LAZY_COMPLETE, onLazyInfoLoaded); //設定xmlを読み込んだときのハンドラ。特に何かするときだけ使う
lazy.addEventListener(Event.COMPLETE, onAllLoaded); //すべてのItemがロードされたら（いつもの）
lazy.addEventListener(ProgressEvent.PROGRESS, onAllProgress); //ロードのプログレス（いつもの）</code></pre>
				<p>AS側でやることがほとんどなくなるように見えますね。ロードしたあとのパースにしわ寄せがきますが、うまく使いこなせば楽になるかもしれません。</p>
				</div>
				<div class="section" id="bulk2_addprops">
				<h2>5.<code>add()</code>するときのプロパティ一覧</h2>
				<p>ASDocではわかりにくいので超意訳してみました。</p>
				<table>
				<thead>
				<tr>
				<th scope="col">プロパティ</th>
				<th scope="col">Classのconst</th>
				<th scope="col">データ型</th>
				<th scope="col">説明</th>
				</tr>
				</thead>
				<tbody>
				<tr>
				<th scope="row">preventCache</th>
				<td>PREVENT_CACHING</td>
				<td>Boolean</td>
				<td>urlにランダム文字列を付与して、キャッシュを防ぐかどうか</td>
				</tr>
				<tr>
				<th scope="row">id</th>
				<td>ID</td>
				<td>String</td>
				<td>getXML()などで取得するためのID。とくに指定しないとurlがIDになる</td>
				</tr>
				<tr>
				<th scope="row">priority</th>
				<td>PRIORITY</td>
				<td>int</td>
				<td>読み込みの優先順位。intが大きい順に読み込む。</td>
				</tr>
				<tr>
				<th scope="row">maxTries</th>
				<td>MAX_TRIES</td>
				<td>int</td>
				<td>ロード失敗したときに何回リトライしにいくか。デフォは3</td>
				</tr>
				<tr>
				<th scope="row">weight</th>
				<td>WEIGHT</td>
				<td>int</td>
				<td> weightPercentを使うときのパーセントの重み</td>
				</tr>
				<tr>
				<th scope="row">headers</th>
				<td>HEADERS</td>
				<td>Array</td>
				<td>追加のリクエストヘッダ</td>
				</tr>
				<tr>
				<th scope="row">context</th>
				<td>CONTEXT</td>
				<td>LoaderContext or SoundLoaderContext</td>
				<td>追加のContext</td>
				</tr>
				<tr>
				<th scope="row">pausedAtStart</th>
				<td>PAUSED_AT_START</td>
				<td>Boolean</td>
				<td>VideoItemのみ。nestreamがロードした直後からVideoを再生するかどうか   </td>
				</tr>
				</tbody>
				</table>
				</div>
				<div class="section" id="bulk2_errorhandler">
				<h2>6.	一つでもエラーがあると止まってしまうから、エラーハンドリングしとこう</h2>
				<p><code>IO_ERROR</code>やセキュリティエラーが発生したら、そのItemは失敗とみなされ放置されます。放置されると「すべてのItemがロードされました」というイベント<code>COMPLETE</code>が呼ばれなくなります。</p>
				<p>以下のようにエラーハンドリングすると、まあ、なんかできるでしょう！</p>
				<pre><code>_bulkLoader.addEventListener(ErrorEvent.ERROR, errorHandler)
private function errorHandler(e:ErrorEvent):void
{
 	//失敗したファイルをremoveする
	_bulkLoader.removeFailedItems();
 	//まだファイルのロードが残ってたら
	if (_bulkLoader.isRunning)
	{
		//コンプリートイベント待つなどする
	}
	else
	{
		//失敗したやつ以外は終了したので、終了処理に移る
		bulkLoadComplete(null);
	}

}</code></pre>
				</div>
				<div class="section">
				<h2>MultiProgressManagerのBulkLoaderのモデルも対応させました</h2>
				<p>ついでに、Sparkにコミットした<a href="http://katapad.com/wp/2009/08/25/multiprogressmanager/">MultiProgressManager</a>のBulkLoaderのモデルもweightPecentに対応させました。だいぶまともな動作になりそうです。</p>
				</div>
				<div class="section">
				<h2>ハイ！ということでね！</h2>
				<p>今回はBulkLoaderを眺めるだけの記事でしたー。</p>
				<p>特に何も茶々を入れなかったので、期待してくれてたみんなからは大ブーイングだね！むしろ大ブーイングの方が嬉しい！「今回みたいに普通に書いてよ。しょうもないこと書かんでいいから」とか思われたくないんです！</p>
				<p>い、イヤー！心の声が聞こえるー！！それ以上言わないで！！やめてー！！ロマンティックとめてー！！もう、傷つく事に怯えたくないー！キィーーッ！！</p>
				</div>
<img src="http://feeds.feedburner.com/~r/katapad/~4/1RZJa0ruCz4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/10/01/6_tips_of_bulkloader/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/10/01/6_tips_of_bulkloader/</feedburner:origLink></item>
		<item>
		<title>複数ロードのプログレスを一本化できる「マルチプログレスマネージャー」で幸運パワーを掴め！</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/9Vvc1Nh3tkM/</link>
		<comments>http://katapad.com/wp/2009/08/25/multiprogressmanager/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 00:25:52 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=393</guid>
		<description><![CDATA[パーセント表示のとき、ちょっと面倒な複数のプログレスの監視 たくさん外部ファイルを読み込むコンテンツを作る際、ローディングの表示ををまとめるのって厄介だったりします。 そこで、あらゆるProgressEventをまとめちゃおうというクラスがマルチプログレスマネージャー（MultiProgressManager）です。 Spark Projectにコミットしました！ http://www.libspark.org/svn/as3/MultiProgressManager リポジトリの中にサンプルも同梱しています。サンプルの解説はこのページの下のほうでやっています。 リポジトリブラウザはこちら 複数ロードのプログレスが多いと、ホントやっかいですよね！ 最初のロード画面で、以下のような流れを行うFlashは比較的多いですよね。 PreloaderからメインのSWFを読むプログレス xmlを読むプログレス 画像を読むプログレス 読み込んだ画像などからビルドするのに時間がかかるときのプログレス ようやくコンテンツがスタート わかりにくい図にするとこのような感じです。 これらを最初にまとめて読み込んで、パーセントをうまく100%にまとめようとすると、下図のように、よくわからないことになります。 Preloaderがloader経由でmain.swfを読んで、そのプログレスを監視して、main.swf側でconfig.xmlを読んで、その中の&#8230;、ああー、もうややこしいわ！30歳近くなったし、将来に不安あるし、湿度高いし、イライラするわ！ そんな悩めるFlasherにお届けするのが今回のマルチプログレスマネージャー！ 使い方はとても簡単！面倒だったパーセント表示が、たちどころにまとまります！ マルチプログレスマネージャーは、パーセント表示のMVCのM（モデル）部分 マルチプログレスマネージャーはモデルに徹します。大きな流れとしては以下の3点！ MultiProgressManagerのインスタンスを作って それぞれのプログレスを見張るをモデルを突っ込むと、 全部をまとめて0～1までに変換された進捗率が吐き出されます //マルチプログレスマネージャーのインスタンス生成 _progressManager = new MultiProgressManager(); //ローダーのプログレスを70%に設定して突っ込む var loader:Loader = new Loader(); var model:AbstractProgressModel = new ProgressEventModel(loader.contentLoaderInfo, 0.7); _progressManager.addProgress(model); //他の素材読み込みを残り30%に割り当てて突っ込む var urlLoader:URLLoader = new URLLoader(); _progressManager.addProgress(new ProgressEventModel(urlLoader, 0.3); //読み込み開始 _progressManager.start(); loader.load(new [...]]]></description>
			<content:encoded><![CDATA[				<p class="keyVisual"><img src="http://katapad.com/wp/upload_img/2009/08/keyVisual_multiprg.jpg" width="608" height="200" alt="" /></p>
				<div class="section">
				<h2>パーセント表示のとき、ちょっと面倒な複数のプログレスの監視</h2>
				<p>たくさん外部ファイルを読み込むコンテンツを作る際、ローディングの表示ををまとめるのって厄介だったりします。</p>
				<p>そこで、<strong>あらゆるProgressEventをまとめちゃおうというクラスがマルチプログレスマネージャー（MultiProgressManager）</strong>です。</p>
				<p>Spark Projectにコミットしました！</p>
				<ul>
				<li><a href="http://www.libspark.org/svn/as3/MultiProgressManager">http://www.libspark.org/svn/as3/MultiProgressManager</a></li>
				<li><a href="http://www.libspark.org/svn/as3/MultiProgressManager/trunk/sample">リポジトリの中にサンプル</a>も同梱しています。<em>サンプルの解説は<a href="#multiProgressSample">このページの下のほう</a>でやっています</em>。</li>
				<li><a href="http://www.libspark.org/browser/as3/MultiProgressManager">リポジトリブラウザはこちら</a></li>
				</ul>
				</div>
				<div class="section">
				<h2>複数ロードのプログレスが多いと、ホントやっかいですよね！</h2>
				<p>最初のロード画面で、以下のような流れを行うFlashは比較的多いですよね。</p>
				<ol>
				<li>PreloaderからメインのSWFを読むプログレス</li>
				<li>xmlを読むプログレス</li>
				<li>画像を読むプログレス</li>
				<li>読み込んだ画像などからビルドするのに時間がかかるときのプログレス</li>
				<li>ようやくコンテンツがスタート</li>
				</ol>
				<p>わかりにくい図にするとこのような感じです。<br />
					<img src="http://katapad.com/wp/upload_img/2009/08/m_normal1.png" alt="m_normal1" title="m_normal1" width="406" height="271" class="alignnone size-medium wp-image-403" /></p>
				<p>これらを最初にまとめて読み込んで、パーセントをうまく100%にまとめようとすると、下図のように、よくわからないことになります。<br />
				<img src="http://katapad.com/wp/upload_img/2009/08/m_gonyo1.png" alt="m_gonyo1" title="m_gonyo1" width="418" height="358" class="alignnone size-medium wp-image-402" /></p>
				<p>Preloaderがloader経由でmain.swfを読んで、そのプログレスを監視して、main.swf側でconfig.xmlを読んで、その中の&hellip;、<strong>ああー、もうややこしいわ！30歳近くなったし、将来に不安あるし、湿度高いし、イライラするわ！</strong></p>
				<p>そんな悩めるFlasherにお届けするのが今回のマルチプログレスマネージャー！</p>
				</div>
				<div class="section">
				<h2>使い方はとても簡単！面倒だったパーセント表示が、たちどころにまとまります！</h2>
				<div class="section">
				<h3>マルチプログレスマネージャーは、パーセント表示のMVCのM（モデル）部分</h3>
				<p>マルチプログレスマネージャーはモデルに徹します。大きな流れとしては以下の3点！</p>
				<ol>
				<li><code>MultiProgressManager</code>のインスタンスを作って</li>
				<li>それぞれのプログレスを見張るをモデルを突っ込むと、</li>
				<li>全部をまとめて0～1までに変換された進捗率が吐き出されます</li>
				</ol>
				<pre>//マルチプログレスマネージャーのインスタンス生成
_progressManager = new MultiProgressManager();
//ローダーのプログレスを70%に設定して突っ込む
var loader:Loader = new Loader();
var model:AbstractProgressModel = new ProgressEventModel(loader.contentLoaderInfo, 0.7);
_progressManager.addProgress(model);

//他の素材読み込みを残り30%に割り当てて突っ込む
var urlLoader:URLLoader = new URLLoader();
_progressManager.addProgress(new ProgressEventModel(urlLoader, 0.3);

//読み込み開始
_progressManager.start();
loader.load(new URLRequest(&quot;main.swf&quot;));
urlLoader.load(new URLRequest(&quot;config.xml&quot;));</pre>
				</p></div>
				<div class="section">
				<h3>パーセント表示はMultiProgressManagerのイベントを監視するだけ。それもプログレスとコンプリートの2つだけ！</h3>
				<p>MultiProgressManagerを稼動させるとプログレスのイベントが通知されるのでそれをリスンします。</p>
				<pre>//このイベントにまとめられたパーセントのプログレスが入っています。
_progressManager.addEventListener(ProgressPercentEvent.PERCENT_PROGRESS, progressHandler);
//パーセントの完了イベント
_progressManager.addEventListener(ProgressPercentEvent.PERCENT_COMPLETE, completeHandler);

//プログレスのイベントハンドラ
private function progressHandler(event:ProgressPercentEvent):void
{
	//パーセント表示を更新
	loadingBar_mc.scaleX = event.percent; //event.percentは0～1までのNumber
}
private function completeHandler(event:ProgressPercentEvent):void
{
	trace("終了");
}</pre>
				</p></div>
				<div class="section">
				<h3>さっきのわかりにくい図が驚くほど簡単に！</h3>
				<p>担当すべきクラスを分けることで、みるみるあっさりしました！これこそ宇宙の波動！</p>
				<p><a href="http://katapad.com/wp/upload_img/2009/08/m_result1.png"><img src="http://katapad.com/wp/upload_img/2009/08/m_result1-300x269.png" alt="m_result1" title="m_result1" width="300" height="269" class="alignnone size-medium wp-image-404" /></a></p>
				<p>UMLっぽくするとこうなります（でっちあげのUMLです）<br />
				<img src="http://katapad.com/wp/upload_img/2009/08/m_uml.png" alt="m_uml" title="m_uml" width="500" height="217" class="alignnone size-medium wp-image-405" /></p>
				</p></div>
				<div class="section">
				<h3>モデルの拡張も簡単！いろんなプログレスに対応できる！</h3>
				<p><code>AbstractProgressModel</code>を継承すれば、標準のプログレス以外にも対応できます。しかも、考えるのは2点だけ！</p>
				<ol>
				<li>progressイベントをリスンすることを書く</li>
				<li>完了したときの処理を書く</li>
				</ol>
				<p>を書くだけで簡単に拡張できます。同梱しているBulkLoader用の<code>BulkLoaderProgressModel</code>がまさにこれです。</p>
				</p></div>
				<div class="section">
				<h3>「main.swfは全体の50%くらい、config.xmlは10%くらいで」といった、割り当てもサクっとできる！！</h3>
				<p>個別にプログレスを監視するクラス（<code>AbstractProgressModel</code>）には<code>percentRange</code>というプロパティがあります。こいつが「main.swfは全体の50%にしよう」といったプロパティになります。</p>
				<pre>//50%で読み込む
var model:AbstractProgressModel = new ProgressEventModel(loader.contentLoaderInfo, <em>0.5</em>);</pre>
				<p>下図のような割合でやるときも、引数を割り当てるだけで実現できちゃいます。<br />
							<img src="http://katapad.com/wp/upload_img/2009/08/m_fig3.png" width="193" height="227" alt="" /></p>
				</p></div>
				<div class="section">
				<h3>さらに、今回は「パーセントが上昇するときのスムージング（線形補完）」もお付けします！</h3>
				<p><code>new MultiProgressManager</code>するときの第二引数を<code>true</code>にするだけで、スムージングします。<br />
						いちいちView側で操作する必要がありません。</p>
				<pre>//引数は EnterFrameの監視にStage
//スムージングをtrue
//スムージングのfrictionを0.3
//パーセントがいっきに上がりすぎないための、最大の上昇幅
new MultiProgressManager(stage, true, 0.3, 0.05)</pre>
				</p></div>
				</div>
				<div class="section">
				<h2>未対応なところもあるけれど、今後もっと成長する余地があるってことだネ！</h2>
				<ul>
				<li>エンターフレームで監視しているときに、常に<code>ProgressPercentEvent.PERCENT_PROGRESS</code>を飛ばしている（以前のフレームと比較して、パーセントに変化がなければ飛ばさなくてもいいかも）</li>
				<li>IOエラーなどは監視していない（これは監視しなくてもいい？ロードしてる本体が処理すべき？）</li>
				<li>キャンセルがちょっと雑？</li>
				</ul>
				</div>
				<div class="section">
				<h2>というわけで、みなさんの風水パワーを待ってます！</h2>
				<p>無人島でもくもくとやってきたので、ライブラリとはどういう流儀で、どのようなものが求められるのかあまりわかっていません。とにかくコミットしてみました。</p>
				<p>「ここおかしい！」というところがございましたら、ガンガンつっこんでください！</p>
				</div>
				<div class="section" id="multiProgressSample">
				<h2>サンプルの中身を普通に説明</h2>
				<p>サンプルも作りました。<a href="http://www.libspark.org/svn/as3/MultiProgressManager/trunk/sample">Sparkのリポジトリ</a>に入っています。</p>
				<p>サンプルでは普通のFlashでありがちな流れをやっています。</p>
				<ol>
				<li>preloader.swf起動</li>
				<li>main.swf読み込み</li>
				<li>設定xml読み込み</li>
				<li>複数画像の読み込み</li>
				<li>パーセント表示の終了処理</li>
				<li>main.swfの表示開始</li>
				</ol>
				<div class="section">
				<h3>1.preloader.swf起動（Preloader.as)</h3>
				</p></div>
				<div class="section">
				<h3>2.preloaderがmain.swf読み込み（Preloader.as)</h3>
				<p>reloader.as 66行目付近から</p>
				<ol>
				<li>インスタンスの生成（シングルトンバージョンを使用します）
				<pre>SiMultiProgressManager.getInstance(stage, true, 0.3, 0.05);</pre>
</li>
<li>イベントハンドラの設定</li>
<li>読み込み開始</li>
</ol></div>
<div class="section">
<h3>3.main.swfを読み終えたら、設定xmlの読み込み</h3>
<ol>
<li>Preloader.as 95行目付近 mainLoadCompleteHandler内部で</li>
<li>Main.as の86行目 start()を呼び、Mainの構築用のスレッドを開始します</li>
<li>LoadConfigThread.as内部でxmlを読み込みます。</li>
</ol></div>
<div class="section">
<h3>4.設定xmlに指定された複数画像の読み込み</h3>
<p>AssetsLoadThread.as内部で複数画像の読み込みを行います。<br />
			ここではBulkLoaderを使って複数読み込みをまとめています。</p>
</p></div>
<div class="section">
<h3>5.読み込んだ素材を配置していきます</h3>
<p>複数読み込みが終われば BuilderThread.asで配置します。</p>
</p></div>
<div class="section">
<h3>6.パーセント表示の終了処理</h3>
<ol>
<li>すべての読み込みが終了し、パーセントが100%になったら、パーセント表示をフェードアウトさせて消します。</li>
<li>Main側ではOpenContentsThread.asでパーセント表示が消えるまで待機状態になります。</li>
<li>Preloader.as の116行目付近 completeHandler()が呼ばれるので、そこでパーセント表示をフェードさせます。</li>
</ol></div>
<div class="section">
<h3>7.main.swfの表示開始</h3>
<p>パーセント表示のフェードアウトが終わったら、待機していたOpenContentsThreadが動きだし、mainの表示を行います。</p>
</p></div>
</div>
<div class="section">
<h2>ハイ！ということでね！</h2>
<p>そないたいしたクラスでもない上に、書き方の幅ちょっとを広げようとして、また失敗してしまいました。「イライラするわ！」のくだり以降、途中で飽きてきてるのもわかりますね。</p>
<p>はい。今回の記事は<a href="http://katapad.com/wp/tag/screensaver/">スクリーンセーバーの記事</a>で使う予定のライブラリの説明でもありました。複数ロードを使うので、ここらで説明する必要があったのでした。</p>
<p>あと、Threadライブラリにも影響を受けてます。ほんとはThreadのIProgressも対応したかったのだけど、まだまだ理解不足なので次のバージョンで対応とかしたいです。</p>
<p>あーあ、なんつーか、輝いてへんわ。ガイアのやつ、ぜんぜん囁いてくれへんから輝きもせえへんわ。全部ガイアのせいや。ガイア君、どこいってもうたんや。</p>
</div>
<img src="http://feeds.feedburner.com/~r/katapad/~4/9Vvc1Nh3tkM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/08/25/multiprogressmanager/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/08/25/multiprogressmanager/</feedburner:origLink></item>
		<item>
		<title>更新できるスクリーンセーバーを作ろう(3)：fla:verでの制作の流れと注意点</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/68x-IZaVcDw/</link>
		<comments>http://katapad.com/wp/2009/07/09/design_and_build_on_flaver/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 15:54:58 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[screensaver]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=309</guid>
		<description><![CDATA[前回では作る手前の話をして、ずいぶんウコンウコンしましたね。またfla:verの開発者さんからもコメントがありました。自動更新に対応してくれるかもしんない！スゲー！応援して待ちましょう。 さて、今回からは技術的なことをお話したいと思います。具体的なコードの手前、設計まわりから見ていきましょう。 fla:verでの制作の流れ Macで再生するときにいくらかの地雷がありますが、知っていれば回避できるので恐くありません。 スクリプトの流れ 小さなプレビュー画面かどうか ネットワークチェックとSWFの縦横サイズがゼロじゃないかのチェック 2-1.ネットワークにつながってるかどうかのチェック 2-2.stageWidthとstageHeightがゼロじゃなくなるまで待つ（Mac対策） 外部設定ファイル読み込み その他の素材読み込み コンテンツビルド コンテンツスタート～ループ 1.小さなプレビュー画面かどうか fla:verでは、小さなプレビュー画面でもスクリーンセーバーの本体(swf)が再生されます。小さなプレビュー画面とは以下のものです。 Win「画面のプロパティ→スクリーンセーバー」上の小ないプレビュー画面 Mac「システム環境」→「スクリーンセーバ」上の小さなプレビュー画面 そのまま本体のswfを再生すると画面サイズが小さすぎて不都合が生まれることも多いので、ここで分岐をとり、プレビュー画面ならプレビュー用の画面を見せる、といったことをします。 スクリーンセーバーで再生されているとFlashvarsの&#34;flavermode&#34;にプレビューかどうかのstateが入ります。 trace(stage.loaderInfo.parameters[&#34;flavermode&#34;]) //preview プレビュー //normal スクリーンセーバー再生時 AS3での簡易チェックコード public static function isPreview(stage:Stage):Boolean { var mode:String = stage.loaderInfo.parameters[&#34;flavermode&#34;]; var result:Boolean; switch (mode) { case &#34;normal&#34; : result = false; break; case &#34;preview&#34; : result = true; break; default : [...]]]></description>
			<content:encoded><![CDATA[				<p class="keyVisual"><img src="http://katapad.com/wp/upload_img/2009/07/keyvisual_3.jpg" width="608" height="200" alt="" /></p>
				<p><a href="http://katapad.com/wp/2009/06/02/tools_for_screensaver/">前回</a>では作る手前の話をして、ずいぶんウコンウコンしましたね。また<a href="http://katapad.com/wp/2009/06/02/tools_for_screensaver/#comments">fla:verの開発者さんからもコメントがありました</a>。自動更新に対応してくれるかもしんない！スゲー！応援して待ちましょう。</p>
				<p>さて、今回からは技術的なことをお話したいと思います。具体的なコードの手前、設計まわりから見ていきましょう。</p>
				<div class="section">
				<h2>fla:verでの制作の流れ</h2>
				<p>Macで再生するときにいくらかの地雷がありますが、知っていれば回避できるので恐くありません。</p>
				<div class="section">
				<h3>スクリプトの流れ</h3>
				<ol>
				<li><a href="#ss_3_1">小さなプレビュー画面かどうか</a></li>
				<li><a href="#ss_3_2">ネットワークチェックとSWFの縦横サイズがゼロじゃないかのチェック</a>
				<ul>
				<li><a href="#ss_3_2_1">2-1.ネットワークにつながってるかどうかのチェック</a></li>
				<li><a href="#ss_3_2_2">2-2.stageWidthとstageHeightがゼロじゃなくなるまで待つ（Mac対策）</a></li>
				</ul>
				</li>
				<li><a href="#ss_3_3">外部設定ファイル読み込み</a></li>
				<li><a href="#ss_3_4">その他の素材読み込み</a></li>
				<li><a href="#ss_3_5">コンテンツビルド</a></li>
				<li><a href="#ss_3_6">コンテンツスタート～ループ</a>
							</li>
				</ol></div>
				<div class="section" id="ss_3_1">
				<h3>1.小さなプレビュー画面かどうか</h3>
				<p>fla:verでは、<strong>小さなプレビュー画面でもスクリーンセーバーの本体(swf)が再生されます</strong>。小さなプレビュー画面とは以下のものです。</p>
				<ul>
				<li>Win「画面のプロパティ→スクリーンセーバー」上の小ないプレビュー画面<br /><a href="http://katapad.com/wp/upload_img/2009/06/win_preview.png"><img src="http://katapad.com/wp/upload_img/2009/06/win_preview-150x150.png" alt="" width="150" height="150" /></a></li>
				<li> Mac「システム環境」→「スクリーンセーバ」上の小さなプレビュー画面<br /><a href="http://katapad.com/wp/upload_img/2009/06/mac_preview.png"><img src="http://katapad.com/wp/upload_img/2009/06/mac_preview-150x150.png" alt="" width="150" height="150" /></a></li>
				</ul>
				<p>そのまま本体のswfを再生すると画面サイズが小さすぎて不都合が生まれることも多いので、ここで分岐をとり、<em>プレビュー画面ならプレビュー用の画面を見せる</em>、といったことをします。</p>
				<p>スクリーンセーバーで再生されていると<code>Flashvars</code>の<code>&quot;flavermode&quot;</code>にプレビューかどうかのstateが入ります。</p>
				<pre><code>trace(stage.loaderInfo.parameters[&quot;flavermode&quot;]) //preview プレビュー
                                                 //normal  スクリーンセーバー再生時</code></pre>
				<dl>
				<dt>AS3での簡易チェックコード</dt>
				<dd>
				<pre><code> public static function isPreview(stage:Stage):Boolean
 {
 	var mode:String = stage.loaderInfo.parameters[&quot;flavermode&quot;];
 	var result:Boolean;
 	switch (mode)
 	{
 		case &quot;normal&quot; :
 			result = false;
 			break;
 		case &quot;preview&quot; :
 			result = true;
 			break;
 		default :
 			result = false;
 			break;
 	}
 	return result;
 }</code></pre>
				</dd>
				</dl>
				<p>補足）previewのときでもstageWidthとheightがゼロじゃないかをチェックする必要があります。Macでは初期値がゼロになります</p>
				</p></div>
				<div class="section" id="ss_3_2">
				<h3>2.ネットワークチェックとSWFの縦横サイズがゼロじゃないかのチェック</h3>
				</p>
				<div class="section">
				<h4>2-1.ネットワークにつながってるかどうかのチェック</h4>
				<ul>
				<li>ネットワークにつながっていれば、サーバから最新の情報をダウンロードする</li>
				<li>ネットワークにつながっていなければ、ローカルに同梱したファイルを見るようにする</li>
				</ul>
				<p>実装方法は外部サーバの適当なファイルに接続を試し、IOErrorが返るかどうかでチェックをします。</p>
				<div class="section" id="ss_3_2_1">
				<p>という分岐があるので、ここでネットワークのチェックをします。</p>
				<h5>チェックするファイルにはキャッシュ対策をする</h5>
				<p>スクリーンセーバーもファイルをキャッシュするので、対策を施します。以下のような簡単なもので大丈夫です。</p>
				<pre><code>new URLRequest(url + new Date().getTime()</code>);</pre>
</p></div>
</p></div>
<div class="section" id="ss_3_2_2">
<h4>2-2.stageWidthとstageHeightがゼロじゃなくなるまで待つ（Mac対策）</h4>
<p>Macで再生するとstageWidthとstageHeightの初期値がゼロになり、意図しない配置になります。<a href="http://katapad.com/wp/2009/05/19/stage_size_zero_issue_with_swfobject_on_ie/">以前のエントリ</a>に詳しい実装方法を載せていますので参考にしてください。</p>
<p><a href="http://katapad.com/wp/2009/05/19/stage_size_zero_issue_with_swfobject_on_ie/">SWFObjectのDynamic Publishingを使うとIEとかでStage.stageWidthとheightが一瞬ゼロになるという都市伝説は実在した！ | Katapad Design</a></p>
</p></div>
</p></div>
<div class="section" id="ss_3_3">
<h3>3.外部設定ファイル読み込み</h3>
<p>外部の設定ファイルを読みに行きます。この設定ファイルには</p>
<ul>
<li>本体となるswfが最新の状態かどうか</li>
<li>読み込む素材はどれどれ</li>
</ul>
<p>などといったことを記述しておきます。</p>
</p></div>
<div class="section" id="ss_3_4">
<h3>4.素材読み込み</h3>
<p>外部設定ファイルに書いてある素材を読み込んでいきます。</p>
<p>たいていの場合、複数の素材を読み込むことになるので、まとめて読み込めるローダーを使うと便利です。僕はBulkLoaderを使ってガスガス読み込みます。<a href="http://katapad.com/wp/2009/04/17/nice_loade/">BulkLoaderについてはこないだ書いたの</a>も参考にしてください。</p>
<p>また、すぐに必要のない素材は少しずつ先読みしていくだけのプリローダーを裏で動かし、キャッシュ化しておくと効果的なケースもあります。ドデカいFLVとかは厳しいかもしれませんが、いずれすべて読み込むことになるのなら、ささっと読み込んじゃいましょう。</p>
</p></div>
<div class="section" id="ss_3_5">
<h3>5.コンテンツビルド</h3>
<p>素材のロードが終わり、さまざまな設定を格納したら、ページや配置する画像などの要素をビルド（生成して配置）していきます。</p>
</p></div>
<div class="section" id="ss_3_6">
<h3>6.コンテンツスタート～ループ</h3>
<p>要素の準備ができたら、やっとコンテンツをスタートできます。</p>
<p>スタートさせればあとはループするだけです！</p>
</p></div>
<p>さてさて、大雑把なスクリプトの流れはご理解いただけたでしょうか？ちょっと駆け足過ぎたかもしれないですね。</p>
<p>続いてはちょっとした注意点を見てみましょう。</p>
</div>
<div class="section">
<h2>知っておくと健康にいい注意点4つ</h2>
<div class="section">
<h3>mailto:でメーラー立ち上げようとすると、ブラウザまで立ち上がってしまう</h3>
<p>winならIEも開いてしまうので、実質使えません。</p>
<p>「友達に教える」機能を付けるときはWebサイト側にリンクを貼って、</p>
<ul>
<li>「友達に教える」フォームを用意する、もしくは</li>
<li>mailtoのリンクを置く</li>
</ul>
<p>のがベターです。</p>
</p></div>
<div class="section">
<h3>インストール時に一緒にインストールされる追加ファイルにフォルダを作れない</h3>
<p>fla:verではどの素材も、スクリーンセーバーの本体となるswfと同じ階層に置かれてしまうので、素材の名前付けに注意しましょう。</p>
<p>これには<a href="http://katapad.com/wp/2009/06/02/tools_for_screensaver/#comments">前回のコメント欄で開発者さんが補足してくれました</a>。セキュリティ的に階層がない方がいいそうです。</p>
</p></div>
<div class="section">
<h3>スクリーンセーバーを再生している途中で「ネットあり」→「ネットなし」になったら落としたほうがいいときもある</h3>
<p>途中で設定を「ネットあり」から「ネットなし」に変更すると大変な労力が必要になることがあります。ならば、<strong>いっそのことスクリーンセーバーを強制的に落としてしまいましょう</strong>。</p>
<p>スクリーンセーバーが再生されている＝「PCが放置されている状況」が多いので、落としてもしばらくすると「ネットなし」としてスクリーンセーバーが立ち上がります。</p>
<p>ロードする状況化でIO_ERRORなどを見張っておいて、エラーがでたらスクリーンセーバーを落とすコマンド<code></code>fscommand(&quot;quit&quot;);</code>を叩くようにします。</p>
<p>あと、落とす前にエラー画面として</p>
<p>「ネットに繋がらなくなったので、落としますね」</p>
<p>と出すのが優しいかと思います。</p>
</p></div>
<div class="section">
<h3>Macでマウス操作などを許可しているときにブラウザを開いてもスクリーンセーバーが落ちない</h3>
<p>マウス操作許可し、親サイトへのリンクやRSSのリンクを張ったりすることがあります。Windowsではリンクを押してブラウザが開くタイミングで、スクリーンセーバーも一緒に落ちてくれます。</p>
<p>このケースではMacでうまくいきません。<strong>スクリーンセーバーが落ちずに、裏でブラウザが開きます。</strong>ですので、明示的にスクリーンセーバーを落としてやる必要があります。</p>
<pre><code>
//リンクを押したら、落とすことも明示する
navigateURL(～～～）;
fscommand(&quot;quit&quot;); //スクリーンセーバーを落とすコマンド
		</code></pre>
				</p></div>
				</div>
				<div class="section">
				<h2>インストーラ用の素材：アイコン素材と背景画像を用意する</h2>
				<p><a href="http://flaver.jp/">http://flaver.jp/</a>から<a href="http://flaver.jp/Contents/download.html#professional">Professional版をダウンロード</a>し、実際のインストーラがどんなものかを体験してみてください。<br />
					シリアルを入力せずに開始すると「試用版」になるので、気軽に試せます。試用版ではスクリーンセーバーを再生したときに「試用中です」と文言がでますが、すべての機能が使えます。</p>
				<div class="section">
				<h3>windows用の素材</h3>
				<table>
				<tr>
				<th>アイコン素材</th>
				<td>icon形式。48、32、16をそれぞれTrueColorと256色を用意します。vista用に特大サイズのアイコンを用意してもいいかもしれません。<br />					<a href="http://www.forest.impress.co.jp/article/2007/02/01/icofx.html">IcoFX</a>というソフトを使うと簡単に作れます。IcoFXはMacのicns形式も作れます。</td>
				</tr>
				<tr>
				<th>インストーラ画面用の画像</th>
				<td>64px * 294px: png, jpg</td>
				</tr>
				</table></div>
				<div class="section">
				<h3>mac用の素材</h3>
				<table>
				<tr>
				<th>アイコン素材</th>
				<td>icns形式。<a href="http://wakabamac.blog95.fc2.com/blog-entry-427.html">img2icns</a>というソフトが簡単です。</td>
				</tr>
				<tr>
				<th>インストーラ画面用の画像</th>
				<td>最大567px * 320px: png, jpg</td>
				</tr>
				</table></div>
				</div>
				<p>さてさて、こうして骨組みは出来上がりましたね。いっきに説明したので、わけわかんないところもあると思います。</p>
				<p>今回もまじめに書いてしまいました。楽しみにしてくれていたみなさん、本当にすみません。ただ、頭にパンティーをかぶって記事を書いていたことだけは覚えておいてください。</p>
				<p>次回は実際にサンプルを作ってみましょう。</p>
				<dl>
				<dt>スクリーンセーバーのことシリーズ</dt>
				<dd>
				<ul>
				<li><a href="http://katapad.com/wp/2009/05/31/introduction_screen_saver/">更新できるスクリーンセーバーを作ろう(1)：最近の動向と消費者とのかかわりや基礎知識</a></li>
				<li><a href="http://katapad.com/wp/2009/06/02/tools_for_screensaver/">更新できるスクリーンセーバーを作ろう(2)：作成ツールを比較したらどれも一長一短あるね！</a></li>
				<li>更新できるスクリーンセーバーを作ろう(3)：fla:verでの制作の流れと注意点</li>
				</ul>
				</dd>
				</dl>
<img src="http://feeds.feedburner.com/~r/katapad/~4/68x-IZaVcDw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/07/09/design_and_build_on_flaver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/07/09/design_and_build_on_flaver/</feedburner:origLink></item>
		<item>
		<title>大阪teraco23でRed5のことを話してきました</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/Klxdz0x9__g/</link>
		<comments>http://katapad.com/wp/2009/07/01/red5_at_teraco23/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 02:11:12 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[red5]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=326</guid>
		<description><![CDATA[大阪てら子23に参加してきました。発表する人がたくさんいて、とても有意義でおもしろかったです。みんなすごいんです。刺激的な一日でした。 僕はRed5というFMSクローンアプリの軽い紹介をしてきました。 マルチユーザのサンプル・ENGACHO 発表内容のスライド(wiki) サンプル http://lab.unko.me/engacho/（サーバの問題で期間限定です。1ヶ月くらいたったら消えます） Red5を使ったマルチユーザのサンプルです。一人でやってもまったくつまらないので、お誘いあわせの上、触ってみてください。人数が多いとほんのすこしだけマシになります。 unkoに触れるとunko状態になります unko状態で他のユーザに触れると伝染します unko状態でステージ左に配置されてるハブラシでこすると、きれいになります 右上のフキダシに触れると、感情を表示します（キーボードの1～4でもできます） コナミコマンドを叩くと全員が感染します よくグダグダになります。グダグダになったら広い心でリロードしてあげてください サンプルのスクリプトなど、細かい解説ができなかったので、ここで補足 サーバサイドの処理の流れ サーバサイドに接続されたら、サーバの中でアプリケーションインスタンスが生成される appStartが呼ばれるので初期化 appConnect()で接続してきたユーザにユーザIDを発行して返す appDisconnect()で切断されたユーザからユーザIDを取り出して、SharedObjectにsetしたそのユーザのプロパティを削除する といったことをしています。 クライアントサイド（SWF）の処理の流れ rtmpにコネクト ユーザIDを取得 SharedObjectに自分のIDとデータ（マウスの座標などのプロパティ）を登録 SharedObjectの更新にあわせて他人のマウスカーソルを追加する EnterFrameで描画の更新をする 接続が切れたらサーバ側で、切断されたユーザのプロパティをSharedObjectから消す SharedObjectのプロパティが削除されたイベントが飛んでくるので、それを受けて他人のマウスカーソルを除去する といったことをしています。文字だとちょっとわかりにくいですね。 SharedObjectのSyncEventが鬼門で慣れるまでが大変ですが、けっこう簡単に作れそうな感じです。 サーバへのインストールとかはwikiで 実はひっそりとwikiを書いてたりしてました。メモなのでそこまで裏は取っていませんので間違いもあると思います。何かの役に立つかもしれませんのでそんな目でみてもらえると助かります。 Red5まわりのこと SharedObjectのリモート操作 CentOSインストール その他わけわからん現象とか作った感想とか マウスのロールオーバーがおかしい（追記：意味がわかった！） マウスのロールオーバーが、左から右へマウスを移動しているときにしか利かなかったり、おかしな挙動をしています。 右上のフキダシも同様、マウスの移動方向でおかしくなってます。 追記：カーソルに色をつけたかったので、Mouse.hide()をして、カーソルのビットマップを置いているのですが、そこに問題がありました。mouseChildrenをfalseにすればokぽいのですが、衝突判定をhitTestObjectでやっていて、mouseChildrenをfalseにするとhitTestが効かなくなってしまいます。とりあえず放置！ ストーリーや目的、オチがないと、劇的につまらない これがいわゆる出オチというやつです！ 反省 スライドを作って行かなかった htmlをスクロールして見せてました。u-stream見てる人には文字が細すぎて見えてなかったかと思います。次はそのへんを改善します。 何をしゃべってるのかわからなかった スライドを読み上げているだけだったなーと思います。ここが一番の失敗でした。スライドと原稿をわければよかった。 芸風がダメなんじゃないかと思った 国道43号線ネタはしばらく公の場では封印します。ポップさが圧倒的にたりませんでした。そんで新しいのを考えました。二次会で期待してください。 収穫 作ることはいいこと 「どうやって楽しませよう」とか「どうやって驚かせよう」とか、久しぶりにそういうことを考えれてよかったですし、なにより反応を間近で見れるのはいいですね。稚拙な内容でしたが、ライブ感が楽しかったです。今度はもっとクオリティをあげていきます。]]></description>
			<content:encoded><![CDATA[				<p class="keyVisual"><img src="http://katapad.com/wp/upload_img/2009/06/keyvisual_teraco23.png" width="608" height="200" alt="" /></p>
				<p>大阪てら子23に参加してきました。発表する人がたくさんいて、とても有意義でおもしろかったです。みんなすごいんです。刺激的な一日でした。</p>
				<p> 僕はRed5というFMSクローンアプリの軽い紹介をしてきました。</p>
				<div class="section">
				<h2><a href="http://lab.unko.me/engacho/">マルチユーザのサンプル・ENGACHO</a></h2>
				<p><a href="http://katapad.com/flash/wiki/index.php?teraco%2F23%E7%89%B9%E5%88%A5%E6%8E%88%E6%A5%AD-Red5">発表内容のスライド(wiki)</a></p>
				<p><a href="http://lab.unko.me/engacho/">サンプル http://lab.unko.me/engacho/</a><br />（サーバの問題で期間限定です。1ヶ月くらいたったら消えます）</p>
				<p>Red5を使ったマルチユーザのサンプルです。一人でやってもまったくつまらないので、お誘いあわせの上、触ってみてください。人数が多いとほんのすこしだけマシになります。</p>
				<ul>
				<li>unkoに触れるとunko状態になります</li>
				<li> unko状態で他のユーザに触れると伝染します</li>
				<li>unko状態でステージ左に配置されてるハブラシでこすると、きれいになります</li>
				<li>右上のフキダシに触れると、感情を表示します（キーボードの1～4でもできます）</li>
				<li>コナミコマンドを叩くと全員が感染します</li>
				<li>よくグダグダになります。グダグダになったら広い心でリロードしてあげてください</li>
				</ul>
				</div>
				<div class="section">
				<h2>サンプルのスクリプトなど、細かい解説ができなかったので、ここで補足</h2>
				<p><a href="http://katapad.com/wp/upload_img/2009/06/sequence.png"><img src="http://katapad.com/wp/upload_img/2009/06/sequence-209x300.png" alt="sequence" title="sequence" width="209" height="300" class="alignnone size-medium wp-image-328" /></a></p>
				<div class="section">
				<h3>サーバサイドの処理の流れ</h3>
				<ol>
				<li>サーバサイドに接続されたら、サーバの中でアプリケーションインスタンスが生成される</li>
				<li>appStartが呼ばれるので初期化</li>
				<li>appConnect()で接続してきたユーザにユーザIDを発行して返す</li>
				<li>appDisconnect()で切断されたユーザからユーザIDを取り出して、SharedObjectにsetしたそのユーザのプロパティを削除する</li>
				</ol>
				<p>といったことをしています。</p>
				</p></div>
				<div class="section">
				<h3>クライアントサイド（SWF）の処理の流れ</h3>
				<ol>
				<li>rtmpにコネクト</li>
				<li>ユーザIDを取得</li>
				<li>SharedObjectに自分のIDとデータ（マウスの座標などのプロパティ）を登録</li>
				<li>SharedObjectの更新にあわせて他人のマウスカーソルを追加する</li>
				<li>EnterFrameで描画の更新をする</li>
				<li>接続が切れたらサーバ側で、切断されたユーザのプロパティをSharedObjectから消す</li>
				<li>SharedObjectのプロパティが削除されたイベントが飛んでくるので、それを受けて他人のマウスカーソルを除去する</li>
				</ol>
				<p>といったことをしています。文字だとちょっとわかりにくいですね。</p>
				<p>SharedObjectのSyncEventが鬼門で慣れるまでが大変ですが、けっこう簡単に作れそうな感じです。</p>
				</p></div>
				<div class="section">
				<h3>サーバへのインストールとかはwikiで</h3>
				<p>実はひっそりとwikiを書いてたりしてました。メモなのでそこまで裏は取っていませんので間違いもあると思います。何かの役に立つかもしれませんのでそんな目でみてもらえると助かります。</p>
				<ul>
				<li><a href="http://katapad.com/flash/wiki/index.php?cmd=taglist&amp;tag=red5">Red5まわりのこと</a></li>
				<li><a href="http://katapad.com/flash/wiki/index.php?SharedObject/remote">SharedObjectのリモート操作</a></li>
				<li><a href="http://katapad.com/flash/wiki/index.php?CentOS">CentOSインストール</a></li>
				</ul></div>
				<div class="section">
				<h3>その他わけわからん現象とか作った感想とか</h3>
				<dl>
				<dt>マウスのロールオーバーがおかしい（<strong>追記：意味がわかった！</strong>）</dt>
				<dd><img src="http://katapad.com/wp/upload_img/2009/06/bug_23.png" width="299" height="139" alt="" /><br />
								マウスのロールオーバーが、左から右へマウスを移動しているときにしか利かなかったり、おかしな挙動をしています。
							</dd>
				<dd>右上のフキダシも同様、マウスの移動方向でおかしくなってます。</dd>
				<dd><ins>追記：カーソルに色をつけたかったので、Mouse.hide()をして、カーソルのビットマップを置いているのですが、そこに問題がありました。mouseChildrenをfalseにすればokぽいのですが、衝突判定をhitTestObjectでやっていて、mouseChildrenをfalseにするとhitTestが効かなくなってしまいます。とりあえず放置！</ins></dd>
				</dl>
				<dl>
				<dt><em>ストーリーや目的、オチがないと、劇的につまらない</em></dt>
				<dd>これがいわゆる<strong>出オチ</strong>というやつです！</dd>
				</dl></div>
				</div>
				<div class="section">
				<h2>反省</h2>
				<div class="section">
				<h3>スライドを作って行かなかった</h3>
				<p>htmlをスクロールして見せてました。u-stream見てる人には文字が細すぎて見えてなかったかと思います。次はそのへんを改善します。</p>
				</p></div>
				<div class="section">
				<h3>何をしゃべってるのかわからなかった</h3>
				<p>スライドを読み上げているだけだったなーと思います。ここが一番の失敗でした。スライドと原稿をわければよかった。</p>
				</p></div>
				<div class="section">
				<h3>芸風がダメなんじゃないかと思った</h3>
				<p>国道43号線ネタはしばらく公の場では封印します。ポップさが圧倒的にたりませんでした。そんで新しいのを考えました。二次会で期待してください。</p>
				</p></div>
				</div>
				<div class="section">
				<h2>収穫</h2>
				<div class="section">
				<h3>作ることはいいこと</h3>
				<p>「どうやって楽しませよう」とか「どうやって驚かせよう」とか、久しぶりにそういうことを考えれてよかったですし、なにより反応を間近で見れるのはいいですね。稚拙な内容でしたが、ライブ感が楽しかったです。今度はもっとクオリティをあげていきます。</p>
				</p></div>
				</div>
<img src="http://feeds.feedburner.com/~r/katapad/~4/Klxdz0x9__g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/07/01/red5_at_teraco23/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/07/01/red5_at_teraco23/</feedburner:origLink></item>
		<item>
		<title>更新できるスクリーンセーバーを作ろう(2)：作成ツールを比較したらどれも一長一短あるね！</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/S4jTpSrWNyI/</link>
		<comments>http://katapad.com/wp/2009/06/02/tools_for_screensaver/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 15:01:40 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[screensaver]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=287</guid>
		<description><![CDATA[前回はスクリーンセーバーの基礎知識や周辺などを考察し、ずいぶんアヘアヘしましたね。 今回はスクリーンセーバー作成ツールの比較をしましょう。 スクリーンセーバー作成ツール比較 まずはおおまかな特徴だけを比較してみましょう。GIZMOはまだ使ったことがないので、サイトの情報から推測してたりします。 &#160; スクリーンタイム fla:ver GIZMO vista対応 非公式 ○ ○ MacLeopard対応 ○ ○ まだ(でもベータ的なものはある） FlashPlayerのバージョン win:Player8までMac: Player9まで 制限なし たぶん制限なし as3対応 &#215; ○ ○ 再生の有効期限 ○ &#215; ○ ローカルディレクトリ、ファイルの操作 ○ &#215; たぶん○ 自動更新 &#215; &#215; ○ スクリーンセーバー停止方法が複数ある ○ ○ ○ 日本語入力 たぶん&#215; ○ 不明 外部ファイルをインストール時に追加できる ○ ○ 不明 外部ファイルのディレクトリを保つ ○ &#215; 不明 マルチモニター再生の選択肢 &#215; [...]]]></description>
			<content:encoded><![CDATA[				<p class="keyVisual"><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/keyvisual-2.jpg" alt="" /></p>
				<p><a href="http://katapad.com/wp/2009/05/31/introduction_screen_saver/">前回はスクリーンセーバーの基礎知識や周辺などを考察し</a>、ずいぶんアヘアヘしましたね。<br />
				今回はスクリーンセーバー作成ツールの比較をしましょう。</p>
				<div class="section">
				<h2>スクリーンセーバー作成ツール比較</h2>
				<p>まずはおおまかな特徴だけを比較してみましょう。GIZMOはまだ使ったことがないので、サイトの情報から推測してたりします。	</p>
				<table>
				<thead>
				<tr>
				<th>&nbsp;</th>
				<th><a href="#h_stf">スクリーンタイム</a></th>
				<th><a href="#h_flaver">fla:ver</a></th>
				<th><a href="#h_gizmo">GIZMO</a></th>
				</tr>
				</thead>
				<tbody>
				<tr>
				<th>vista対応</th>
				<td>非公式</td>
				<td>○</td>
				<td>○</td>
				</tr>
				<tr>
				<th>MacLeopard対応</th>
				<td>○</td>
				<td>○</td>
				<td>まだ(でもベータ的なものはある）</td>
				</tr>
				<tr>
				<th>FlashPlayerのバージョン</th>
				<td>win:Player8まで<br />Mac: Player9まで</td>
				<td>制限なし</td>
				<td>たぶん制限なし</td>
				</tr>
				<tr>
				<th>as3対応</th>
				<td>&times;</td>
				<td>○</td>
				<td>○</td>
				</tr>
				<tr>
				<th>再生の有効期限</th>
				<td>○</td>
				<td>&times;</td>
				<td>○</td>
				</tr>
				<tr>
				<th>ローカルディレクトリ、<br />ファイルの操作</th>
				<td>○</td>
				<td>&times;</td>
				<td>たぶん○</td>
				</tr>
				<tr>
				<th>自動更新</th>
				<td>&times;</td>
				<td>&times;</td>
				<td>○</td>
				</tr>
				<tr>
				<th>スクリーンセーバー<br />停止方法が複数ある</th>
				<td>○</td>
				<td>○</td>
				<td>○</td>
				</tr>
				<tr>
				<th>日本語入力</th>
				<td>たぶん&times;</td>
				<td>○</td>
				<td>不明</td>
				</tr>
				<tr>
				<th>外部ファイルを<br />インストール時に追加できる</th>
				<td>○</td>
				<td>○</td>
				<td>不明</td>
				</tr>
				<tr>
				<th>外部ファイルの<br />ディレクトリを保つ</th>
				<td>○</td>
				<td>&times;</td>
				<td>不明</td>
				</tr>
				<tr>
				<th>マルチモニター再生の選択肢</th>
				<td>&times;<br />
								（すべてのモニターで再生される）</td>
				<td>○</td>
				<td>○</td>
				</tr>
				<tr>
				<th>win版とmac版の<br />合計価格</th>
				<td>74,550円</td>
				<td>34,800円</td>
				<td>320,000円～<br />
				（winのみ？、macは不明）</td>
				</tr>
				</tbody>
				</table>
				<div id="h_stf" class="section">
				<h3> スクリーンタイム（ScreenTime for Flash）</h3>
				<p><a href="http://www.screentime.jp/"><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/icon_stf.jpg" width="48" height="45" alt="" /></a><br /><a href="http://www.screentime.jp/"> http://www.screentime.jp/</a></p>
				<div class="section">
				<h4>特徴</h4>
				<ul>
				<li>いいところ
				<ul>
				<li>コンポーネントをfla側に埋め込んで「STFコマンド」を打つといろいろできる
				<ul>
				<li>ローカルファイルを読み書きできたりするコマンドがいろいろある</li>
				</ul>
				</li>
				<li>有効期限付き</li>
				</ul>
				</li>
				<li>残念なところ
				<ul>
				<li>AS2.0まで</li>
				<li>vistaに正式対応してない</li>
				<li>win版はFlashPlayer8まで</li>
				<li>mac版はFlashPlayer9まで（AS2）</li>
				<li>ヘルプがかなりわかりにくい</li>
				</ul>
				</li>
				</ul>
				<p>as2までしか対応していないなど、イケていない面もありますが、最大の特徴として<strong>ディレクトリを保ったまま様々な外部ファイルを同梱できる</strong>という強みを持っています。</p>
				<p>また、スクリーンタイムにはコンポーネントのインストールmxpが配布されています。mxpをインストールすればFlashのヘルプにスクリーンタイムのヘルプが追加されます。</p>
				</p></div>
				<div class="section">
				<h4>事例</h4>
				<p>昔はSTFしか選択肢がなかったようで、プリミティブなスクリーンセーバーによく使われています。</p>
				<dl>
				<dt>zozotownにたくさんあります（ログインの必要あり）</dt>
				<dd><a href="http://gallery.zozo.jp/">http://gallery.zozo.jp/</a></dd>
				</dl></div>
				<div class="section">
				<h4>見分け方</h4>
				<ul>
				<li>winならインストーラの詳細に「会社名 FIVESTAR～～」と出ます。これは消したり変更はできないようです。<br /><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/stf_install_1.png" width="275" height="224" alt="" /></li>
				<li>
				<dl>
				<dt>スクリーンセーバーのインストーラ画面（win）</dt>
				<dd><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/stf_installer2.png" width="359" height="241" alt="" /><br />（スクリーンタイムではこの白場に任意の画像を埋め込めます）</dd>
				</dl>
				</li>
				</ul></div>
				</p></div>
				<div id="h_flaver" class="section">
				<h3>fla:ver</h3>
				<p><a href="http://flaver.jp/"><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/icon_flaver.png" width="108" height="32" alt="" /></a><br /><a href="http://flaver.jp/"> http://flaver.jp/</a></p>
				<div class="section">
				<h4>特徴</h4>
				<ul>
				<li>いいところ
				<ul>
				<li>as3使用可</li>
				<li>win, mac対応</li>
				<li>安い（Win/Mac2つのバージョン合わせて34,800円）</li>
				</ul>
				</li>
				<li>残念なところ
				<ul>
				<li>同梱させるファイルにディレクトリ階層を設けられない。</li>
				</ul>
				</li>
				<li>それ以外
				<ul>
				<li>winはActiveXプラグインFlashPlayer、macはsafariのプラグインFlashPlayerで再生する</li>
				<li>ローカルファイルの読み書きはできないが、スクリーンセーバーとしての基本的な機能は網羅してある</li>
				</ul>
				</li>
				</ul>
				<p>大量のファイルを同梱させるとちょっと大変になりますが、問題がないといえば問題ありません。</p>
				<p>それとスクリーンセーバーの再生の機能は強いですが、有効期限やネットワークにつながっているかどうかのチェック機能などもありません。しかし、そういった機能はFlashで代替できるので、ごまかせます。</p>
				</p></div>
				<div class="section">
				<h4>事例</h4>
				<dl>
				<dt>G&#8217;z One CA002 by CASIO</dt>
				<dd><a href="http://gzone.jp/">http://gzone.jp/</a></dd>
				<dt>ぷっちょくんをつくろう！</dt>
				<dd><a href="http://create.pucchokun.jp/">http://create.pucchokun.jp/</a></dd>
				<dt>Play MUJI</dt>
				<dd><a href="http://www.muji.com/playmuji/">http://www.muji.com/playmuji/</a></dd>
				<dt>エディックス（公開終了）</dt>
				<dd><a href="http://www.honda.co.jp/Edix/editSCR/">http://www.honda.co.jp/Edix/editSCR/</a></dd>
				</dl></div>
				<div class="section">
				<h4>見分け方</h4>
				<ul>
				<li>
				<dl>
				<dt>スクリーンセーバーのインストーラ画面（win）</dt>
				<dd><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/flaver_installer.png" width="586" height="362" alt="" /><br />（インストーラ左にある画像はfla:ver側で変更可能です）</dd>
				</dl>
				</li>
				<li>macならスクリーンセーバーの設定画面のオプション&rarr;アンインストールというボタンがあります。</li>
				</ul></div>
				</p></div>
				<div id="h_gizmo" class="section">
				<h3>GIZMO</h3>
				<p><a href="http://gizmo.anthill.jp/"><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/icon_gizmo.png" width="89" height="21" alt="" /></a><br /><a href="http://gizmo.anthill.jp/"> http://gizmo.anthill.jp/</a></p>
				<p>スクリーンセーバー作成代行もしているが、基本的にはフォーマットに則ったswfを渡し、スクリーンセーバー化してもらうサービスとのことです。</p>
				<p><a href="http://www.amazon.co.jp/gp/product/B0028GDHUY?ie=UTF8&#038;tag=kpd-22&#038;linkCode=as2&#038;camp=247&#038;creative=1211&#038;creativeASIN=B0028GDHUY">Web Designing2009年 06月号</a><img src="http://www.assoc-amazon.jp/e/ir?t=kpd-22&#038;l=as2&#038;o=9&#038;a=B0028GDHUY" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />のP64にHONDA INTERNAVIの事例とあわせてGIZMOのことも少し書いてありました。</p>
				<div class="section">
				<h4>特徴</h4>
				<ul>
				<li>いいところ
				<ul>
				<li>自動アップデートあり</li>
				<li>超大手で使われた実績</li>
				</ul>
				</li>
				<li>残念なところ
				<ul>
				<li>高い<br />
				<blockquote>
				<p><a href="http://gizmo.anthill.jp/service_screensaver_pack/">http://gizmo.anthill.jp/service_screensaver_pack/</a></p>
				<ul>
				<li>初期費用	300,000円（税込315,500円）～ </li>
				<li>月額費用	20,000円（税込21,000円）～ </li>
				</ul>
				<p>（パッケージに、スクリーンセーバーにするFlashコンテンツの制作費用は含まれておりません。）</p>
				</blockquote>
				</li>
				</ul>
				</li>
				</ul>
				<p>さすが高いだけあって、自動アップデートがついています。不明な点も多く、詳細は問い合わせなければなりませんが、いろいろカスタムできるようです。</p>
				<p>簡単には試せないけれど、失敗が許されない状況や、それを凌駕するコンテンツならこれがベストなのでしょうかね。なにより実績があるのでとても安心できそう。</p>
				</p></div>
				<div class="section">
				<h4>事例</h4>
				<dl>
				<dt>UNIQLOCK</dt>
				<dd><a href="http://www.uniqlo.com/show/">http://www.uniqlo.com/show/</a></dd>
				<dt>HONDA INTERNAVI REALIZATION</dt>
				<dd><a href="http://www.honda.co.jp/internavi/realization/#/downloads">http://www.honda.co.jp/internavi/realization/#/downloads</a></dd>
				</dl></div>
				<div class="section">
				<h4>見分け方</h4>
				<ul>
				<li>winだと裏でGIZMOが立ち上がります</li>
				<li>
				<dl>
				<dt>スクリーンセーバーのインストーラ画面（win）</dt>
				<dd><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/gizmo_installer.png" width="280" height="215" alt="" /></dd>
				</dl>
				</li>
				<li>macならsaverファイルの中を見るとGIZMOのフレームワークが入っています。</li>
				</ul></div>
				</p></div>
				<div class="section">
				<h3>まとめ　fla:verで十分、より安心感を求めるならGIZMO</h3>
				<p>案件規模にもよるでしょうが、fla:verである程度カバーできるかと思います。自動更新っぽいことも全部外部にすればなんとかなりますね。それ以上の複雑なことになればGIZMO、といったところでしょうか。</p>
				<p>僕はこのfla:verで作るようにしています。次回はfla:verにおける制作のポイントをお話します。</p>
				<p>あー、まじめに書いたよー、はぁーまじ疲れるわー、あー、あー、うー、う、ウコンー！！</p>
				</p></div>
				</div>
				<dl>
				<dt>スクリーンセーバーのことシリーズ</dt>
				<dd>
				<ul>
				<li><a href="http://katapad.com/wp/2009/05/31/introduction_screen_saver/">更新できるスクリーンセーバーを作ろう(1)：最近の動向と消費者とのかかわりや基礎知識</a></li>
				<li>更新できるスクリーンセーバーを作ろう(2)：作成ツールを比較したらどれも一長一短あるね！</li>
				<li><a href="http://katapad.com/wp/2009/07/09/design_and_build_on_flaver/">更新できるスクリーンセーバーを作ろう(3)：fla:verでの制作の流れと注意点</a></li>
				</ul>
				</dd>
				</dl>
<img src="http://feeds.feedburner.com/~r/katapad/~4/S4jTpSrWNyI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/06/02/tools_for_screensaver/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/06/02/tools_for_screensaver/</feedburner:origLink></item>
		<item>
		<title>更新できるスクリーンセーバーを作ろう(1)：最近の動向と消費者とのかかわりや基礎知識</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/3WuETqzJKv0/</link>
		<comments>http://katapad.com/wp/2009/05/31/introduction_screen_saver/#comments</comments>
		<pubDate>Sun, 31 May 2009 14:34:21 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[screensaver]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=260</guid>
		<description><![CDATA[昨年の末から「クライアントが更新可能なスクリーンセーバーを作る」というお題で5,6個作りました。そこで得た作り方やつまづきポイントなどをまとめてみます。ちょっと長くなるので数回に分けて連載してみます。 今回は基礎知識とスクリーンセーバー作成ツールの比較です。「作る前」の段階ですね。 スクリーンセーバーを配布する戦略と消費者意識 スクリーンセーバーはCRTモニタの焼きつき防止のためにあったそうです。しかし、最近の主流である液晶モニタでは焼きつきが起きにくいそうです。そんな進化の流れに逆行するように、スクリーンセーバーは流行しつつあります。 一般の方もPCの操作にもだいぶ慣れたのでしょう。壁紙を変えるように、あるいは昨日とは違うシャツを着るような感覚でスクリーンセーバーも簡単に変更できるような時代になりました。 また、我々の作るコンテンツは、ブラウザ上（Webサイトであり、ブログパーツである）から切り離され、スクリーンセーバーへと変化したときに、消費者の意識に変化を与えられると考えられます。ブラウザではユーザが主体となって操作をし何らかの体験を獲得しますが、スクリーンセーバーはまったく逆です。勝手に立ち上がり、映像や画像、つまりユーザの好きなものを流してくれるのです。 自分からアプローチしなければ振り向いてくれなかった人が、進んでこちらにアプローチしてくれる、といったことかもしれません。 あるいは、かっこいいサイトをクリップして自分のそばにおいておきたい、という所有欲求であるかもしれません。youtubeやDailyMotionから動画や音楽をぶっこ抜いて、iPodにぶち込むことと似ているとは思いませんか？ 一見するとWebサイト化しているように見えるスクリーンセーバーではありますが、Webサイトとは別の道から消費者を刺激しています。 更新することで飽きさせないスクリーンセーバーに 天下のUNIQLOCKや、オサレなHONDA INTERNAVIも、更新されるコンテンツが楽しみの一つとなっています。 UNIQLOCK http://www.uniqlo.com/show/ HONDA INTERNAVI REALIZATION http://www.honda.co.jp/internavi/realization/#/downloads Play MUJI http://www.muji.com/playmuji/ スクリーンセーバーの変更を簡単にできるようになった今、簡単に変更させずに「チャンネルはそのままで」とさせるスクリーンセーバーが求められています。せっかく好意を持ってインストールまでしてもらった優良顧客の心を、いかに引き止め、惹き付け続けるのか。ちょっとした更新性を付加することで、そういったブランドイメージを構築するに十分な媒体になりえます。 でもね、僕は頭がパッパラパーだからこれより難しいお話は頭の上に放り投げて、次の話題へ移ろうと思うんだ！アヘアヘアヘ！！ スクリーンセーバーの基礎知識 さて、一通りアヘアヘしたので、簡単にスクリーンセーバーで気をつけることをリストしましょう。 いったん配布してしまうと、自動アップデートが難しいのでミスすると大変な目にあうかも だいたいのスクリーンセーバ作成ソフトがwinとmac用に分かれていて、別々に購入する必要がある スクリーンセーバー作成ツールはどれも一長一短ある そんなたいしたことはありませんね。さて、次へいきましょう。 更新可能なスクリーンセーバーにするための3つの手段 更新可能にするには以下の3つの手段があります。しかし、ツールによってはできないことや苦手なこともあります。ひとまずこの3つの手段を押さえておきましょう。 1.サーバに設定xmlを置き、更新する サーバにあるxmlを読みに行かせ、xmlで画像を変更したり、レイアウトを変更したり、などといったことをします。 2.スクリーンセーバーの本体となるswf自体をサーバに置いて更新する サーバに本体のswfを置きます。読み込みに時間がかかるときもありますが、不具合があってもすぐに差し替えられる安全性があります。 3.ローカルファイルを置き換えて更新する 作成ツールによってはローカルファイルを書き換えてくれるものもあります。 ローカルファイルを置き換え、中身をごっそり入れ替えることが一番いいのですが、なかなか簡単ではありません。 さてさて、その辺も踏まえて次回は作成ツールの比較をしましょう。 See you next AHEAHE!! スクリーンセーバーのことシリーズ 更新できるスクリーンセーバーを作ろう(1)：最近の動向と消費者とのかかわりや基礎知識 更新できるスクリーンセーバーを作ろう(2)：作成ツールを比較したらどれも一長一短あるね！ 更新できるスクリーンセーバーを作ろう(3)：fla:verでの制作の流れと注意点]]></description>
			<content:encoded><![CDATA[				<p class="keyVisual"><img src="http://katapad.com/wp/upload_img/2009/05/screensaver/keyvisual-1.png" width="608" height="200" alt="" /></p>
				<p>昨年の末から「クライアントが更新可能なスクリーンセーバーを作る」というお題で5,6個作りました。そこで得た作り方やつまづきポイントなどをまとめてみます。ちょっと長くなるので数回に分けて連載してみます。</p>
				<p> 今回は基礎知識とスクリーンセーバー作成ツールの比較です。「作る前」の段階ですね。</p>
				<div class="section">
				<h2>スクリーンセーバーを配布する戦略と消費者意識</h2>
				<p>スクリーンセーバーはCRTモニタの焼きつき防止のためにあったそうです。しかし、最近の主流である液晶モニタでは焼きつきが起きにくいそうです。そんな進化の流れに逆行するように、スクリーンセーバーは流行しつつあります。</p>
				<p>一般の方もPCの操作にもだいぶ慣れたのでしょう。壁紙を変えるように、あるいは昨日とは違うシャツを着るような感覚でスクリーンセーバーも簡単に変更できるような時代になりました。</p>
				<p>また、我々の作るコンテンツは、ブラウザ上（Webサイトであり、ブログパーツである）から切り離され、スクリーンセーバーへと変化したときに、消費者の意識に変化を与えられると考えられます。ブラウザではユーザが主体となって操作をし何らかの体験を獲得しますが、スクリーンセーバーはまったく逆です。勝手に立ち上がり、映像や画像、つまりユーザの好きなものを流してくれるのです。</p>
				<p>自分からアプローチしなければ振り向いてくれなかった人が、進んでこちらにアプローチしてくれる、といったことかもしれません。</p>
				<p>あるいは、かっこいいサイトをクリップして自分のそばにおいておきたい、という所有欲求であるかもしれません。youtubeやDailyMotionから動画や音楽をぶっこ抜いて、iPodにぶち込むことと似ているとは思いませんか？</p>
				<p>一見するとWebサイト化しているように見えるスクリーンセーバーではありますが、Webサイトとは別の道から消費者を刺激しています。</p>
				<div class="section">
				<h3>更新することで飽きさせないスクリーンセーバーに</h3>
				<p>天下のUNIQLOCKや、オサレなHONDA INTERNAVIも、更新されるコンテンツが楽しみの一つとなっています。</p>
				<dl>
				<dt>UNIQLOCK</dt>
				<dd><a href="http://www.uniqlo.com/show/">http://www.uniqlo.com/show/</a></dd>
				<dt>HONDA INTERNAVI REALIZATION</dt>
				<dd><a href="http://www.honda.co.jp/internavi/realization/#/downloads">http://www.honda.co.jp/internavi/realization/#/downloads</a></dd>
				<dt>Play MUJI</dt>
				<dd><a href="http://www.muji.com/playmuji/">http://www.muji.com/playmuji/</a></dd>
				</dl>
				<p>スクリーンセーバーの変更を簡単にできるようになった今、簡単に変更させずに<em>「チャンネルはそのままで」</em>とさせるスクリーンセーバーが求められています。せっかく好意を持ってインストールまでしてもらった優良顧客の心を、いかに引き止め、惹き付け続けるのか。ちょっとした更新性を付加することで、そういったブランドイメージを構築するに十分な媒体になりえます。</p>
				<p>でもね、僕は頭がパッパラパーだからこれより難しいお話は頭の上に放り投げて、次の話題へ移ろうと思うんだ！アヘアヘアヘ！！</p>
				</p></div>
				</div>
				<div class="section">
				<h2>スクリーンセーバーの基礎知識</h2>
				<p>さて、一通りアヘアヘしたので、簡単にスクリーンセーバーで気をつけることをリストしましょう。</p>
				<ul>
				<li>いったん配布してしまうと、自動アップデートが難しいのでミスすると大変な目にあうかも</li>
				<li>だいたいのスクリーンセーバ作成ソフトがwinとmac用に分かれていて、別々に購入する必要がある</li>
				<li>スクリーンセーバー作成ツールはどれも一長一短ある</li>
				</ul>
				<p>そんなたいしたことはありませんね。さて、次へいきましょう。</p>
				</div>
				<div class="section">
				<h2>更新可能なスクリーンセーバーにするための3つの手段</h2>
				<p>更新可能にするには以下の3つの手段があります。しかし、ツールによってはできないことや苦手なこともあります。ひとまずこの3つの手段を押さえておきましょう。</p>
				<div class="section">
				<h3>1.サーバに設定xmlを置き、更新する</h3>
				<p>サーバにあるxmlを読みに行かせ、xmlで画像を変更したり、レイアウトを変更したり、などといったことをします。</p>
				</p></div>
				<div class="section">
				<h3>2.スクリーンセーバーの本体となるswf自体をサーバに置いて更新する</h3>
				<p>サーバに本体のswfを置きます。読み込みに時間がかかるときもありますが、不具合があってもすぐに差し替えられる安全性があります。</p>
				</p></div>
				<div class="section">
				<h3>3.ローカルファイルを置き換えて更新する</h3>
				<p>作成ツールによってはローカルファイルを書き換えてくれるものもあります。</p>
				<p>ローカルファイルを置き換え、中身をごっそり入れ替えることが一番いいのですが、なかなか簡単ではありません。</p>
				</p></div>
				</div>
				<hr />
				<p>さてさて、その辺も踏まえて次回は作成ツールの比較をしましょう。</p>
				<p>See you next AHEAHE!!</p>
				<dl>
				<dt>スクリーンセーバーのことシリーズ</dt>
				<dd>
				<ul>
				<li>更新できるスクリーンセーバーを作ろう(1)：最近の動向と消費者とのかかわりや基礎知識</li>
				<li><a href="http://katapad.com/wp/2009/06/02/tools_for_screensaver/">更新できるスクリーンセーバーを作ろう(2)：作成ツールを比較したらどれも一長一短あるね！</a></li>
				<li><a href="http://katapad.com/wp/2009/07/09/design_and_build_on_flaver/">更新できるスクリーンセーバーを作ろう(3)：fla:verでの制作の流れと注意点</a></li>
				</ul>
				</dd>
				</dl>
<img src="http://feeds.feedburner.com/~r/katapad/~4/3WuETqzJKv0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/05/31/introduction_screen_saver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/05/31/introduction_screen_saver/</feedburner:origLink></item>
		<item>
		<title>SWFObjectのDynamic Publishingを使うとIEとかでStage.stageWidthとheightが一瞬ゼロになるという都市伝説は実在した！</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/BODgzwq0aY8/</link>
		<comments>http://katapad.com/wp/2009/05/19/stage_size_zero_issue_with_swfobject_on_ie/#comments</comments>
		<pubDate>Mon, 18 May 2009 17:42:50 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=238</guid>
		<description><![CDATA[IEとかでstage基準の中央寄せができなくなることがある 特定の状況で一定時間、swfの「stageのwidthとheightがゼロ」になり、stageの中心にモノを置いたはずなのに、変な位置にきてしまうことがあります。今回はその問題を肩パッド探検隊が追います。 基本的な対処法は以下のblogにおまかせ！ 崖っぷちWEBデザイナーブログ &#124; stage幅取得のタイミングをテストしてみた 二番煎じですが、ちょこっと書いていきます。対処するクラスが見たい方はページ内リンクで！ SWFObject1.5、SWFObject2.1のDynamic PublishingでWinIEがダメで、MacのFirefoxも怪しいらしい。あとMacのFla:verで作ったスクリーンセーバーもダメ SWFObjectのDynamic Publishingの場合 SWFObjectで空divを起点に動的にObjectタグを埋め込むやつをすると IE全般 MacのFireFox で、一瞬だけstage.stageWidthとstage.stageHeightが0になります。 Dynamic Publishingってのは以下のjsコードで空divに埋め込むやつです //SWFObject1.5 var so = new SWFObject("hoge.swf", "topFlash", "100%", "100%", "8", "#FFFFFF"); so.write("flashcontent"); //SWFObject2.xならDynamic Publishingと呼ばれるタイプ swfobject.embedSWF("hoge.swf", "flashcontent", "100%", "100%", "9.0.45", "expressInstall.swf", flashvars, params, attributes); widthとheightがゼロになるサンプル サンプルでテストしてみてください。 サンプルのasはこちら wmodeはtransparent 最初にstageの中心に文字を書こうとしますが、ダメブラウザだと文字が(0,0)にきます swfの中心に「うんこ」と書かれたらOKブラウザ！ 崩れてたらStageの初期サイズが0のダメブラウザ。IEかMacのFirefoxです traceされているテキストは以下です 一発目にStageのwidthとheightをチェック ENTER_FRAMEイベントと何回ENTER_FRAMEが回ったか ENTER_FRAMEでStageのwidthとheightをチェック stageのResizeイベント stageWidthがゼロだったらADDED_TO_STAGEイベントを取得 それぞれのgetTimer サンプルの結果 [...]]]></description>
			<content:encoded><![CDATA[				<div class="section">
				<h2>IEとかでstage基準の中央寄せができなくなることがある</h2>
				<p>特定の状況で一定時間、swfの「stageのwidthとheightがゼロ」になり、stageの中心にモノを置いたはずなのに、変な位置にきてしまうことがあります。今回はその問題を肩パッド探検隊が追います。</p>
				<p>基本的な対処法は以下のblogにおまかせ！</p>
				<p><a href="http://www.y-tti.com/blog/2009/02/stage.php">崖っぷちWEBデザイナーブログ | stage幅取得のタイミングをテストしてみた</a></p>
				<p>二番煎じですが、ちょこっと書いていきます。対処するクラスが見たい方は<a href="#classStageSizeChecker">ページ内リンクで！</a></p>
				</p></div>
				<div class="section">
				<h2>SWFObject1.5、SWFObject2.1のDynamic PublishingでWinIEがダメで、MacのFirefoxも怪しいらしい。あとMacのFla:verで作ったスクリーンセーバーもダメ</h2>
				<div class="section">
				<h3>SWFObjectのDynamic Publishingの場合</h3>
				<p>SWFObjectで空divを起点に動的にObjectタグを埋め込むやつをすると</p>
				<ul>
				<li>IE全般</li>
				<li>MacのFireFox</li>
				</ul>
				<p>で、一瞬だけstage.stageWidthとstage.stageHeightが0になります。</p>
				<p>Dynamic Publishingってのは以下のjsコードで空divに埋め込むやつです</p>
				<pre>
//SWFObject1.5
var so = new SWFObject("hoge.swf", "topFlash", "100%", "100%", "8", "#FFFFFF");
so.write("flashcontent");

//SWFObject2.xならDynamic Publishingと呼ばれるタイプ
swfobject.embedSWF("hoge.swf", "flashcontent", "100%", "100%", "9.0.45", "expressInstall.swf", flashvars, params, attributes);
			</pre>
				<div class="section">
				<h4>widthとheightがゼロになるサンプル</h4>
				</p></div>
				<p><a href="http://katapad.com/wp/upload_img/2009/05/stagesize/issue_sample/">サンプル</a>でテストしてみてください。<br />
				<a href="http://katapad.com/wp/upload_img/2009/05/stagesize/issue_sample/StageSizeCheck.as">サンプルのasはこちら</a></p>
				<ul>
				<li>wmodeはtransparent</li>
				<li>最初にstageの中心に文字を書こうとしますが、ダメブラウザだと文字が(0,0)にきます</li>
				<li>swfの中心に「うんこ」と書かれたらOKブラウザ！</li>
				<li><strong>崩れてたらStageの初期サイズが0のダメブラウザ。IEかMacのFirefoxです</strong></li>
				<li>traceされているテキストは以下です
				<ul>
				<li>一発目にStageのwidthとheightをチェック</li>
				<li>ENTER_FRAMEイベントと何回ENTER_FRAMEが回ったか</li>
				<li>ENTER_FRAMEでStageのwidthとheightをチェック</li>
				<li>stageのResizeイベント</li>
				<li>stageWidthがゼロだったらADDED_TO_STAGEイベントを取得</li>
				<li>それぞれのgetTimer</li>
				</ul>
				</li>
				</ul></div>
				<div class="section">
				<h4>サンプルの結果</h4>
				<dl>
				<dt>win</dt>
				<dd>
				<table class="generalThead">
				<thead>
				<tr>
				<th scope="col">IE6～8</th>
				<th scope="col">Firefox3</th>
				<th scope="col">Opera9.6</th>
				<th scope="col">Safari3</th>
				<th scope="col">Safari4</th>
				<th scope="col">chrome</th>
				</tr>
				</thead>
				<tbody>
				<tr>
				<td>×</td>
				<td>○</td>
				<td>○</td>
				<td>○</td>
				<td>○</td>
				<td>○</td>
				</tr>
				</tbody>
				</table>
				</dd>
				<dd>キャプチャ<br /><a href="http://katapad.com/wp/upload_img/2009/05/win_capture.png"><img src="http://katapad.com/wp/upload_img/2009/05/win_capture-177x300.png" alt="win_capture" title="win_capture" width="177" height="300" class="alignnone size-medium wp-image-241" /></a></dd>
				</dl>
				<dl>
				<dt>mac os10.5 </dt>
				<dd>
				<table class="generalThead">
				<thead>
				<tr>
				<th scope="col">Firefox3</th>
				<th scope="col">Opera9.6</th>
				<th scope="col">Safari3</th>
				<th scope="col">Safari4</th>
				</tr>
				</thead>
				<tbody>
				<tr>
				<td>△</td>
				<td>○</td>
				<td>○</td>
				<td>○</td>
				</tr>
				</tbody>
				</table>
				</dd>
				<dd>（崖っぷちさんとこではMacのFirefoxでもアウトでしたが私の環境ではOKでした）</dd>
				</dl></div>
				<div class="section">
				<h4>ENTER_FRAMEの方がRESIZEイベントよりも速くStageのwidthが変わったことを知る</h4>
				<p>このサンプルを作っていてわかったのですが、ENTER_FRAMEでwidthとheightを監視して、<strong>ゼロじゃなくなったあと（ENTER_FRAMEのイベントハンドリングが終わったあと）にRESIZEイベントが飛んできます</strong>。なので、無意味なタイムラグが生じます。</p>
				</p></div>
				<div class="section">
				<h4>SWFObjectでの原因</h4>
				<p>SWFObjectの原因は<a href="http://katapad.com/wp/2007/05/21/take_care_using_swfobject_on_ie/">以前のエントリで妄想を膨らませました</a>が、これは間違っていると思います。詳細ご存知のかた、おしえてください！</p>
				</p></div>
				</p></div>
				<div class="section">
				<h2>fla:verで作ったスクリーンセーバーをMacで再生するとき</h2>
				<p>fla:ver(<a href="http://flaver.jp/">http://flaver.jp/</a>)というスクリーンセーバー作成ソフトで作ったスクリーンセーバーでも起こります。<br />ref) <a href="http://flaver.jp/Contents/faq.html">Mac OS X 10.5で MovieClip が表示されないことがあります </a></p>
				</p></div>
				<div id="classStageSizeChecker" class="section">
				<h2>対処するクラスを作りました</h2>
				<p>大変つまらないクラスですがどうかご査収くださいませ<br />
				<a href="http://katapad.com/wp/upload_img/2009/05/stagesize/sample">stagesize問題を対処したサンプルの実行結果</a></p>
				<div class="section">
				<h3>対処法について</h3>
				<ul>
				<li>Event.RESIZEよりEvent.ENTER_FRAMEの方がstageの幅高の取得が早いので、ENTER_FRAME監視がベター</li>
				<li>dispatchEventしてるのは入口と出口を分けないため。<br />（newする前に<code>if(stage.stageWidth * stage.stageHeight != 0)</code>を挟めばOKブラウザをスルーできますが、OKブラウザとNGブラウザで出口がバラバラになるとややこしいのでこうしました。）</li>
				</ul></div>
				<div class="section">
				<h3>クラスとサンプル</h3>
				<p><a href="http://katapad.com/wp/upload_img/2009/05/stagesize/stageSizeChecker.zip">サンプルとソースzip</a></p>
				<dl>
				<dt>StageSizeChecker.as</dt>
				<dd>
				<pre>
package com.katapad.utils
{
	import flash.display.Stage;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.utils.getTimer;

	/**
	 * WinIEやMacFFでSWFObjectのDynamic Publishingをしたときにおこる
	 * Stage.stageWidthとstageHeightが0になる問題を
	 * EnterFrameで監視してチェックするクラス&lt;br /&gt;
	 * Event.RESIZEが飛んでくるタイミングがEvent.ENTER_FRAMEより遅いので、
	 * EVENT.COMPLETEのついでにstageからEVENT.RESIZEも飛ばします(オプション)。
	 *
	 * @author katapad.com
	 * @version 0.1
	 * @since 2009/03/17 3:40
	 * @usage
	 * &lt;p&gt;MainクラスやPreloaderクラスの最初に&lt;/p&gt;
	 * &lt;pre&gt;
	 * var StageSizeChecker:StageSizeChecker = new StageSizeChecker(stage);
	 * StageSizeChecker.addEventListener(Event.COMPLETE, delayInit);
	 * StageSizeChecker.start();
	 * &lt;/pre&gt;
	 * &lt;p&gt;を書いて、あとはEvent.COMPLETEの受取先で&lt;/p&gt;
	 * &lt;pre&gt;event.target.removeEventListener(Event.COMPLETE, delayInit);&lt;/pre&gt;
	 * &lt;p&gt;すればOK&lt;/p&gt;

	 */
	public class StageSizeChecker extends EventDispatcher
	{
		/**
		 * stage.stageWidthとstage.stageHeightが0以外になったら配信します。
		 * @eventType flash.events.Event.COMPLETE
		 */
		[Event(name = &quot;complete&quot;, type = &quot;flash.events.Event&quot;)]

		//----------------------------------
		//  static var/const
		//----------------------------------

		//----------------------------------
		//  instance var
		//----------------------------------
		private var _stage:Stage;
		private var _isResizeEvent:Boolean;

		/**
		 * ステージサイズを見張り、ゼロ以外ならEvent.COMPLETEを配信します。
		 * @param	stage
		 * @param	isResizeEvent	_stage.dispatchEvent(new Event(Event.RESIZE))も同時に発動させるかどうか
		 */
		public function StageSizeChecker(stage:Stage, isResizeEvent:Boolean = true)
		{
			init(stage, isResizeEvent);
		}

		private function init(stage:Stage, isResizeEvent):void
		{
			_stage = stage;
			_isResizeEvent = isResizeEvent;
		}

		//--------------------------------------------------------------------------
		//
		//  PUBLIC
		//
		//--------------------------------------------------------------------------
		public function start():void
		{
			if (isValidSize())
			{
				complete();
				return;
			}
			_stage.addEventListener(Event.ENTER_FRAME, check);
		}
		//--------------------------------------------------------------------------
		//
		//  PROTECTED
		//
		//--------------------------------------------------------------------------

		//--------------------------------------------------------------------------
		//
		//  EVENT HANDLER
		//
		//--------------------------------------------------------------------------
		private function check(event:Event):void
		{
			if (isValidSize())
				complete();
		}

		//--------------------------------------------------------------------------
		//
		//  PRIVATE
		//
		//--------------------------------------------------------------------------
		private function isValidSize():Boolean
		{
			//trace( getTimer(), &quot;_stage.stageWidth : &quot; + _stage.stageWidth );
			return _stage.stageWidth * _stage.stageHeight != 0;
		}

		private function complete():void
		{
			_stage.removeEventListener(Event.ENTER_FRAME, check);
			if (_isResizeEvent)
				_stage.dispatchEvent(new Event(Event.RESIZE));
			dispatchEvent(new Event(Event.COMPLETE));
			_stage = null;
		}

		//--------------------------------------------------------------------------
		//
		//  GETTER/SETTER
		//
		//--------------------------------------------------------------------------

	}

}
</pre>
				</dd>
				</dl></div>
				</p></div>
<img src="http://feeds.feedburner.com/~r/katapad/~4/BODgzwq0aY8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/05/19/stage_size_zero_issue_with_swfobject_on_ie/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/05/19/stage_size_zero_issue_with_swfobject_on_ie/</feedburner:origLink></item>
		<item>
		<title>flash lite1.1やdocomo端末でswfにGETパラメータを保持させることが、こんなにも難しいと知ってたらFlasherにはなりませんでした。あっ、すこし言い過ぎました</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/elhjyvlx6Dc/</link>
		<comments>http://katapad.com/wp/2009/04/20/flash-lite1x_and_docomo_with_get_params/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 15:32:54 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[flashlite]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=201</guid>
		<description><![CDATA[モバイルサイト向けのアクセス解析ツールでセッションを保持させるために、swfにGETパラメータを仕込まないといけない状況になりました。 このアクセス解析ツールでは、 html→htmlへの遷移ではセッションがうまくとれる html→swfへの遷移ではGETパラメータを渡して強引にセッションを取得 swf→htmlへの遷移もGETパラメータを渡してセッションを継続させる という課題がありました。swfが間に入るとひと手間かかってしまいます。詳しい流れは下図を参照してください。 とても簡単そうに見えますね。しかし！作業は難航しました。 Flash lite1.xでは普通にやってるとGETパラメータを処理できない まずはFlash lite1.1の予習から docomoの904iまではFlash Lite1.1。かなり多くの端末に1.1が搭載されている。docomoの資料 flashvarsが使えない GETパラメータも受け取れない _urlプロパティがないので、無理やり取得もできない 取得したとしてもindexOf()がないので解析しようがない というわけで、通常GETパラメータをFlash lite1.x上では扱うことができません。 じゃあ、swf→php→htmlとして、swfのGETパラメータをリファで取ってphpで処理すればいいんじゃね？と思ったらdocomoはリファを渡さない swf→htmlの遷移の間にphpを挟み、環境変数のHTTP_REFFER（リファのURLを取得）を使って、GETパラメータを抜き取ろうと思いました。しかし！ docomoはHTTP_REFFERを渡さない どうしようもありません。ググっているとHTTP_REFFERなどの環境変数に頼ったコーディングはよくないともありました。 結局swfを動的にGETパラメータの変数をswfに埋め込んで…という手法で どうしようもなかったので、ついに避けていた手法をとることにしました。swfmillという選択肢もありましたが、とりあえず簡単っぽく実現しやすいものを選びました。 FACEs: 携帯Flash (FLASH Lite 1.1) へ普通にパラメータを渡す このソースを少しいじくって今回の要望に沿う形にしてみました。「?」以下のGETパラメータをそっくりそのままFlashの中に変数として持たせます。 swfをゴニョゴニョして表示するphp (swf.php) &#60;?php require_once &#34;wrap.php&#34;; $params = strstr($_SERVER[&#34;REQUEST_URI&#34;], &#34;?&#34;); echo swf_param_insert('hoge.swf', &#34;trackParams&#34;, $params); ?&#62; wrap.phpで追加した関数 function swf_param_insert($file, $varsName, $item){ header(&#34;Content-Type: application/x-shockwave-flash&#34;); $tags = [...]]]></description>
			<content:encoded><![CDATA[				<p>モバイルサイト向けのアクセス解析ツールでセッションを保持させるために、<strong>swfにGETパラメータを仕込まないといけない</strong>状況になりました。</p>
				<p>このアクセス解析ツールでは、</p>
				<ul>
				<li>html→htmlへの遷移ではセッションがうまくとれる</li>
				<li>html→swfへの遷移ではGETパラメータを渡して強引にセッションを取得</li>
				<li>swf→htmlへの遷移もGETパラメータを渡してセッションを継続させる</li>
				</ul>
				<p>という課題がありました。swfが間に入るとひと手間かかってしまいます。詳しい流れは下図を参照してください。</p>
				<p><img src="http://katapad.com/wp/upload_img/2009/04/mobile_fig1.png" alt="" width="504" height="323" /></p>
				<p>とても簡単そうに見えますね。しかし！作業は難航しました。</p>
				<div class="section">
				<h2>Flash lite1.xでは普通にやってるとGETパラメータを処理できない</h2>
				<p>まずはFlash lite1.1の予習から</p>
				<ul>
				<li>docomoの904iまではFlash Lite1.1。かなり多くの端末に1.1が搭載されている。<a href="http://www.nttdocomo.co.jp/service/imode/make/content/spec/flash/">docomoの資料</a></li>
				<li>flashvarsが使えない</li>
				<li>GETパラメータも受け取れない</li>
				<li>_urlプロパティがないので、無理やり取得もできない
				<ul>
				<li>取得したとしてもindexOf()がないので解析しようがない</li>
				</ul>
				</li>
				</ul>
				<p>というわけで、通常GETパラメータをFlash lite1.x上では扱うことができません。</p>
				</div>
				<div class="section">
				<h2>じゃあ、swf→php→htmlとして、swfのGETパラメータをリファで取ってphpで処理すればいいんじゃね？と思ったらdocomoはリファを渡さない</h2>
				<p>swf→htmlの遷移の間にphpを挟み、環境変数のHTTP_REFFER（リファのURLを取得）を使って、GETパラメータを抜き取ろうと思いました。しかし！</p>
				<ul>
				<li>docomoはHTTP_REFFERを渡さない</li>
				</ul>
				<p>どうしようもありません。ググっているとHTTP_REFFERなどの環境変数に頼ったコーディングはよくないともありました。</p>
				</div>
				<div class="section">
				<h2>結局swfを動的にGETパラメータの変数をswfに埋め込んで…という手法で</h2>
				<p>どうしようもなかったので、ついに避けていた手法をとることにしました。swfmillという選択肢もありましたが、とりあえず簡単っぽく実現しやすいものを選びました。</p>
				<p><a href="http://faces.jp/2008/08/flash_1.html">FACEs: 携帯Flash (FLASH Lite 1.1) へ普通にパラメータを渡す</a></p>
				<p>このソースを少しいじくって今回の要望に沿う形にしてみました。「?」以下のGETパラメータをそっくりそのままFlashの中に変数として持たせます。</p>
				<p><img src="http://katapad.com/wp/upload_img/2009/04/mobile_fig2.png" alt="" width="574" height="504" /></p>
				<dl>
				<dt>swfをゴニョゴニョして表示するphp (swf.php)</dt>
				<dd>
				<pre>
&lt;?php
	require_once &quot;wrap.php&quot;;
	$params = strstr($_SERVER[&quot;REQUEST_URI&quot;], &quot;?&quot;);
	echo swf_param_insert('hoge.swf', &quot;trackParams&quot;, $params);
?&gt;
</pre>
				</dd>
				<dt>wrap.phpで追加した関数</dt>
				<dd>
				<pre>
function swf_param_insert($file, $varsName, $item){
	header(&quot;Content-Type: application/x-shockwave-flash&quot;);

	$tags	= build_string($varsName, $item);
	$src	= file_get_contents($file);
	$i	= (ord($src[8])&gt;&gt;1)+5;
	$length	= ceil((((8-($i&amp;7))&amp;7)+$i)/8)+17;
	$head	= substr($src,0,$length);
	return(
		substr($head,0,4).
		pack(&quot;V&quot;,strlen($src)+strlen($tags)).
		substr($head,8).
		$tags.
		substr($src,$length)
	);
}

function build_string($varsName, $item) {

	$s = sprintf(
		&quot;x96%sx00%sx00x96%sx00%sx00x1d&quot;,
		pack(&quot;v&quot;,strlen($varsName)+2),	$varsName,
		pack(&quot;v&quot;,strlen($item)+2),	$item
	);
	return(sprintf(
		&quot;x3fx03%s%sx00&quot;,
		pack(&quot;V&quot;,strlen($s)+1),
		$s
	));
}
</pre>
				</dd>
				</dl>
				<p>バイナリに分解してゴニョゴニョしてますが、わけわかんないです。わかんないのでfunction名も適当です。ヘッダのファイルサイズを増やして、tag（変数）を埋め込んでいるということがなんとなくわかる程度です。</p>
				<p>SWFのバイナリに詳しく知りたいかたは以下のリンクを辿るか<a href="http://tinyurl.com/cce52w">ググってみて</a>ください。そのあと僕に手取り足取り教えるか、けしからん動画をください。</p>
				<ul>
				<li><a href="http://libpanda.s18.xrea.com/commentary.txt">埋め込み方の丁寧な解説</a> ← これを読めば仕組みがわかると思う</li>
				<li><a href="http://pwiki.awm.jp/~yoya/?Flash/SWF">Flash SWF バイナリ &#8211; Yoya Wiki</a></li>
				<li><a href="http://mp.i-revo.jp/user.php/wrckyapk/entry/7158.html">Flash SWF バイナリいじり (ブロックの分解)</a></li>
				<li><a href="http://www.be-interactive.org/?itemid=235">BeInteractive! [技術勉強会行ってきた]</a></li>
				</ul>
				<div class="section">
				<h3>今回説明したサンプル</h3>
				<ul>
				<li><a href="http://katapad.com/wp/upload_img/2009/04/mobile/flash_lite_1.x_with_getParams_sample.zip">ソース一式</a>（wrap.phpは<a href="http://faces.jp/2008/08/flash_1.html">バスキュールさんのところ</a>から拾ってきて、上のソースを追加してください</li>
				<li>
				<dl>
				<dt>動作サンプル</dt>
				<dd><a href="http://katapad.com/wp/upload_img/2009/04/mobile/redirect.php">redirect.php</a></dd>
				<dd><a href="http://katapad.com/wp/upload_img/2009/04/mobile/swf.php?what_i_need=money">swf.php?what_i_need=money</a> →hoge.swfにGETパラメータを付与して表示。ボタンを押すとgoogleにGETパラメータを受け流します。適当にGET部分を変えて表示してみてください</dd>
				</dl>
				</li>
				</ul></div>
				</div>
				<div class="section">
				<h2>で、この技術、ほかに使えんの？</h2>
				<p>ご存知のとおりバスキュールさんの<a href="http://gyorol.bascule.co.jp/">Gyorol</a>や<a href="http://buruburu.bascule.co.jp/">2009年の年賀サイト</a>でこれが使われてると思われます。最近はバスキュールさん以外のとこでもケータイ連動やってましたね。だいぶ浸透してきてるのかな？</p>
				</div>
<img src="http://feeds.feedburner.com/~r/katapad/~4/elhjyvlx6Dc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/04/20/flash-lite1x_and_docomo_with_get_params/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/04/20/flash-lite1x_and_docomo_with_get_params/</feedburner:origLink></item>
		<item>
		<title>超便利なローダーBulkLoaderの落とし穴にハマってきました</title>
		<link>http://feedproxy.google.com/~r/katapad/~3/kRidMMgAKWE/</link>
		<comments>http://katapad.com/wp/2009/04/17/nice_loade/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 16:10:37 +0000</pubDate>
		<dc:creator>katapad</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://katapad.com/wp/?p=191</guid>
		<description><![CDATA[便利なAS3用ローダー：BulkLoaderの解説は他のサイトにおまかせ！ BulkLoaderは複数の素材をまとめて読み込める万能ローダーです。解説はほかのサイトにおまかせ！ぜひ読んでください。読んだら僕のサイトに帰ってこなくても大丈夫です！ ActionScript3.0]BulkLoaderのドキュメント &#8211; l4l BulkLoaderを触ってみたよ。 &#8211; Humming Via Kitchen BulkLoaderの便利ポイントをまとめると まとめてロードできる String形式のurlをadd()するだけでロードの準備はOK。さらにvideoなのかxmlなのかjpgなのかなどを自動判別してロードしてくれる（きちんとtype指定もできるのでやったほうがいいです） ロードが終わったら、あらかじめBulkLoaderに渡しておいたIDやurlのstringで取得できる getXML()とかgetBitmapdata()などで好みのインスタンスで取得できる 複数ロードのパーセントや何個中何個がロードできたかを取得できる。 ロードしたものを取得後、メモリに残したり、取得したらメモリから消したりと、メモリ管理が簡単 といったところです。ものすごく便利です。 今回ハマったローディングパーセント処理 今回、外部素材を10個ほど読み込んでいました。しかし、パーセント表示がおかしな挙動になってしまいました。 最初の1秒間くらいでパーセントが100%近くに達し その後の1秒で10%ちかくまで減り、 その後は正常に100%まで達しました。 原因は2つあって、 ロードするときにproressイベントが発動するまで、bytesTotalが見えない問題 BulkLoaderのパーセント表示には2つ種類があり、そのうち強引な作りのほうを選んでしまった 1.ロードするときにproressイベントが発動するまで、bytesTotalが見えない問題 外部素材との接続を確立してproressイベントが発動するまではbytesTotalが見えません。下のスクリプトで確認してみましょう。 ProgressEvent発生後、bytesLoadが取得できる &#8211; wonderfl build flash online このように、progressEventが発生するまでbytesLoadedやbytesTotalはわかりません。複数ロード時にはこのへんの問題があります。 BulkLoaderのパーセント表示には2つ種類があり、そのうち強引な作りのほうを選んでしまった 次にBulkLoaderが持っている2種類のパーセント表示を見てみましょう。 読み込みが完了したアイテム数 / トータルのアイテム数（BulkProgressEvent.ratioLoaded) 今までに読み込んだアイテムの総bytesLoaded / トータルのアイテムの総bytesTotal（BulkProgressEvent.percentLoaded） 「1.完了数/総数」は複数ロードするときによく使われる手法ですが、2つしかロードがないときは50%ずつ増えることになるので、使いどころが難しいときもあります。 正確なパーセントを知りたいときは後者の「bytesLoadedとbytsTotalの比率」を使います。 しかし、ここが大きな落とし穴となっていました。 BulkLoaderはこのパーセント表示を強引な手法で実装しています。前述のとおり、flash.event.ProgressEventが飛んでこない限り、bytesTotalを知る術はありません。BulkLoaderでは、 bytesTotalを取得できたitemだけを加算し、 すべてのitemのbytesLoadedと上記のbytesTotalの比率からパーセントを表示します つまり、すべてのitemのbytesTotalがわかるのは最後のitemのprogressが始まったときになのに、分母（bytesTotal）が変動する状態でパーセント表示を開始してしまうのです。 ロード直後では800/1000（80%）だったものが、その次のフレームで1000/10000（10％）となる可能性があるのです。 じゃあどうする？ 2009-10-06追記 ： weightPercentを使う [...]]]></description>
			<content:encoded><![CDATA[				<div class="section">
				<h2>便利なAS3用ローダー：BulkLoaderの解説は他のサイトにおまかせ！</h2>
				<p>BulkLoaderは複数の素材をまとめて読み込める万能ローダーです。解説はほかのサイトにおまかせ！ぜひ読んでください。読んだら僕のサイトに帰ってこなくても大丈夫です！</p>
				<ul>
				<li><a href="http://kozy.heteml.jp/l4l/2008/03/actionscript30bulkloader-1.html">ActionScript3.0]BulkLoaderのドキュメント &#8211; l4l</a></li>
				<li><a href="http://humming.via-kitchen.com/2008/03/06/tried-using-bulkloader-on-actionscript3/">BulkLoaderを触ってみたよ。 &#8211; Humming Via Kitchen</a></li>
				</ul>
				<div class="section">
				<h3>BulkLoaderの便利ポイントをまとめると</h3>
				<ul>
				<li>まとめてロードできる</li>
				<li>String形式のurlをadd()するだけでロードの準備はOK。さらにvideoなのかxmlなのかjpgなのかなどを自動判別してロードしてくれる（きちんとtype指定もできるのでやったほうがいいです）</li>
				<li>ロードが終わったら、あらかじめBulkLoaderに渡しておいたIDやurlのstringで取得できる</li>
				<li>getXML()とかgetBitmapdata()などで好みのインスタンスで取得できる</li>
				<li>複数ロードのパーセントや何個中何個がロードできたかを取得できる。</li>
				<li>ロードしたものを取得後、メモリに残したり、取得したらメモリから消したりと、メモリ管理が簡単</li>
				</ul>
				<p>といったところです。ものすごく便利です。</p>
				</p></div>
				</div>
				<div class="section">
				<h2>今回ハマったローディングパーセント処理</h2>
				<p>今回、外部素材を10個ほど読み込んでいました。しかし、パーセント表示がおかしな挙動になってしまいました。</p>
				<ol>
				<li>最初の1秒間くらいでパーセントが100%近くに達し</li>
				<li>その後の1秒で10%ちかくまで減り、</li>
				<li>その後は正常に100%まで達しました。</li>
				</ol>
				<p>原因は2つあって、</p>
				<ol>
				<li>ロードするときにproressイベントが発動するまで、bytesTotalが見えない問題</li>
				<li>BulkLoaderのパーセント表示には2つ種類があり、そのうち強引な作りのほうを選んでしまった</li>
				</ol>
				<div class="section">
				<h3>1.ロードするときにproressイベントが発動するまで、bytesTotalが見えない問題</h3>
				<p>外部素材との接続を確立して<strong>proressイベントが発動するまではbytesTotal</strong>が見えません。下のスクリプトで確認してみましょう。</p>
				<div style="text-align:center;width:465px;"><iframe title="ProgressEvent発生後、bytesLoadが取得できる - wonderfl build flash online" src="http://wonderfl.kayac.com/blogparts/c84995a53248da9d63cce89cdd637d592ae42f17" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.kayac.com/code/c84995a53248da9d63cce89cdd637d592ae42f17" title="ProgressEvent発生後、bytesLoadが取得できる - wonderfl build flash online">ProgressEvent発生後、bytesLoadが取得できる &#8211; wonderfl build flash online</a></div>
				<p>このように、progressEventが発生するまでbytesLoadedやbytesTotalはわかりません。複数ロード時にはこのへんの問題があります。</p>
				<p><img src="http://katapad.com/wp/upload_img/2009/04/progressevent_fig1.png" alt="" width="442" height="171" /></p>
				</div>
				<div class="section">
				<h3>BulkLoaderのパーセント表示には2つ種類があり、そのうち強引な作りのほうを選んでしまった</h3>
				<p>次にBulkLoaderが持っている2種類のパーセント表示を見てみましょう。</p>
				<ol>
				<li>読み込みが完了したアイテム数 / トータルのアイテム数（<code>BulkProgressEvent.ratioLoaded</code>)</li>
				<li>今までに読み込んだアイテムの総bytesLoaded / トータルのアイテムの総bytesTotal（<code>BulkProgressEvent.percentLoaded</code>）</li>
				</ol>
				<p> 「1.完了数/総数」は複数ロードするときによく使われる手法ですが、2つしかロードがないときは50%ずつ増えることになるので、使いどころが難しいときもあります。<br />
				正確なパーセントを知りたいときは後者の「bytesLoadedとbytsTotalの比率」を使います。</p>
				<p>しかし、ここが大きな落とし穴となっていました。</p>
				<p>BulkLoaderはこのパーセント表示を強引な手法で実装しています。前述のとおり、flash.event.ProgressEventが飛んでこない限り、bytesTotalを知る術はありません。BulkLoaderでは、</p>
				<ol>
				<li>bytesTotalを取得できたitemだけを加算し、</li>
				<li>すべてのitemのbytesLoadedと上記のbytesTotalの比率からパーセントを表示します</li>
				</ol>
				<p>つまり、<strong>すべてのitemのbytesTotalがわかるのは最後のitemのprogressが始まったときになのに、分母（bytesTotal）が変動する状態でパーセント表示を開始してしまう</strong>のです。</p>
				<p>ロード直後では<br />800/1000（80%）<br />だったものが、その次のフレームで<br />1000/10000（10％）<br />となる可能性があるのです。</p>
				</div>
				</div>
				<div class="section">
				<h2>じゃあどうする？</h2>
				<div class="section">
				<h3>2009-10-06追記 ： <code>weightPercent</code>を使う</h3>
				<p>以下のやりかたよりもスマートな解法がありました。<code>BulkProgressEvent.weightPercent</code>を使うともっとまともなパーセントを取得できます。<br />こちらの記事に書きました。「<a href="http://katapad.com/wp/2009/10/01/6_tips_of_bulkloader/">BulkLoaderで「もう悩まない！」ための6つのtipsをまずは14日間で売上No.1！！</a>」</p>
				</p></div>
				<div class="section">
				<h3><del>1.読み込みが完了したアイテム数 / トータルのアイテム数をとる</del></h3>
				<p>これが一番安全ですね。パーセント表示は正確なものが期待できませんし、トータルのアイテム数が2つ3つのときはおおざっぱになるので、ごまかしの効くviewにしましょう</p>
				</p></div>
				<div class="section">
				<h3><del>2.読み込み順序に優先順位をつけ、重たいものから先に読み込む</del></h3>
				<p>先に軽いファイルを大量に読み込むと、重たいファイルを読み込み始めた瞬間にグッと分母が上昇してしまいます。重たいファイルから読めば分母の変動が少ないので、ある程度ゴマカシが効くようになります。</p>
				<pre>
//優先順位はこんな感じで設定
//addの引数でpriorityを設定。priorityが高いやつが優先的に読み込まれる。重たいファイルを優先的に指定しとく。
var bulkLoader:BulkLoader = new BulkLoader(&quot;main loading&quot;);
bulkLoader.add(&quot;めっさ重たい.flv&quot;, { priority : 1000 });
bulkLoader.add(&quot;コニシキ.flv&quot;, { priority : 1000 });
bulkLoader.add(&quot;ダイエットコーラ.xml&quot;, { priority : 0 });
bulkLoader.add(&quot;糖分ゼロ.xml&quot;, { priority : 0 });
bulkLoader.add(&quot;ふわっふわ.xml&quot;, { priority : 0 });
bulkLoader.add(&quot;納品前日に仕様変更.swf&quot;, { priority : 500000 });
bulkLoader.addEventListener(～～～);
bulkLoader.start();
</pre>
				<p><a href="http://www.stimuli.com.br:8080/media/projects/bulk-loader/docs/br/com/stimuli/loading/BulkLoader.html#add()">addメソッドの引数はasdocで</a></p>
				</p></div>
				<p>重たいファイルは後回しにした方がいいときの方が多いので、そのへんはトレードオフとかを考えてベターな手法を選びましょう。</p>
				</div>
<img src="http://feeds.feedburner.com/~r/katapad/~4/kRidMMgAKWE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://katapad.com/wp/2009/04/17/nice_loade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://katapad.com/wp/2009/04/17/nice_loade/</feedburner:origLink></item>
	</channel>
</rss>

