<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>秋葉秀樹個人ブログ</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://akibahideki.com/blog/atom.xml" />
    <id>tag:akibahideki.com,2011-04-02:/blog//2</id>
    <updated>2012-01-22T20:57:56Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.04</generator>

<entry>
    <title>家電のインターフェイスを僕らWebデザイナーが作る未来</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/web/web.html" />
    <id>tag:akibahideki.com,2012:/blog//2.455</id>

    <published>2012-01-22T20:21:43Z</published>
    <updated>2012-01-22T20:57:56Z</updated>

    <summary>テレビ放送用のWeb標準規格言語 おことわりですが、、この記事はちょっとした未来...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="人のためのWebデザイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="html5" label="html5" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<h2>テレビ放送用のWeb標準規格言語</h2><div>

<p><img alt="テレビのリモコンはどのデバイスでも共通のHTMLベースでできる未来?" src="http://akibahideki.com/blog/assets_c/2012/01/fig01-thumb-740x382-73.png" width="740" height="382" /></p>

</div><div><br /></div><div>おことわりですが、、この記事はちょっとした未来の予想と自分の仕事を重ねてみた「想像」が入ってます。</div><div><br /></div><div>今日は、昨今Web技術が進歩しているなかで僕たちデザイナーがどうやってこのような技術に理解を深めれば良いのか？について考えてみたいと思います。</div><div><br /></div><div>PCブラウザから始まり、現在はスマートフォンや電子書籍がWebにつながる端末として一般的な世の中になりました。</div><div>今年はテレビが来る、とみんな言ってます。</div><div>要はWebにつながるテレビ。</div><div><br /></div><div>実はあまり知られていないことですが、もう10年くらい前に「インターネットテレビ（あえてそう言います）」は発売されていますが、正直普及しているとはいいがたく、例え使っている人にとってはおそらくそのテレビはそのうち使いにくいもの、あるいは使えないものになっているかもしれません。</div><div><br /></div><div>理由はいくつかありますが、大きな理由はいくらテレビ本体（ハード）が魅力的でも、放送用のデータをやりとりするフォーマットがWeb標準に存在しない当時は、独自のフォーマットに頼ることしか手段がない、といったところかと思われます。</div><div>そうなると配信されるコンテンツも豊富になるとは思えません。</div><div><br /></div><div>BML（社団法人電波産業会が策定した放送用のマークアップランゲージ「Broadcast Markup Language」の略）というものがあり、デジタル放送用に使われている言語ですが、世界に普及していません。</div><div>1999年に既に策定されているので、10年以上前の当時にはそういった標準規格があったようですが、世界とつながるWebだけに、日本独自とも言える規格ではせっかくのWebテレビもあまり魅力を感じられないといったところでしょう。</div><div><br /></div><div>家電をWebにつなぐ、ということは、テレビに限らずこういった標準技術がしっかりしていないと、上で説明した通り全く意味をなしませんしビジネスとして成功を収めるのも困難でしょう。</div><div><br /></div><div>しかしW3Cが徐々に家電用の標準規格策定に対する動きを見せています。</div><div>これが策定され勧告されだすと、世界中のWebにつながるテレビは（というより家電メーカーは）一斉にそっちの標準規格を採用すると言われているので、世界中のコンテンツにアクセスしやすい環境が生まれるわけですね。</div><div><br /></div><h2>今後のWebにつながるデバイスとして</h2><div><br /></div><div>上記から言える通りただ「Webにつながる」というキーワードだけではあまり意味がないのです。</div><div>Webにつながっても、それによって生活がどう便利になるか、が問題であり大事なんだと言えるのです。</div><div><br /></div><div>さて、今後のデバイス、、、</div><div>例えばクルマ、電子レンジ、冷蔵庫といったように色々な生活に密着した機器がWebにつながり、僕たち人間が操作する側となる「インターフェイス」が、今のスマートフォンで操作しているタッチパネルと同じような「表層」をHTMLやCSSで構成されて、WebにつながるエンジンがJavaScriptによって情報をやりとりする時代が来ると予想する人も出ています。</div><div><br /></div><div>まあ、今の流れからいうとありえるな、という気もします。</div><div>電子書籍の規格で有名なEPUBもXHTMLで情報が構成されています。</div><div>このバージョンが3.0になりHTML5+CSS3を使えるということらしいのですが、いずれにせよWeb標準フォーマットですね。</div><div><br /></div><div>ある一定のフォーマット（規格）の域から外れずにデータのやりとりが可能なら僕たちのHTMLのスキルもひょっとしたら役に立つかもしれません。</div><div><br /></div><div>あとは、デバイスの特性を考えた対策が可能な技術も必要でしょう。</div><div>例えばクルマを例えてみましょう。</div><div>移動するメディアなので、電波の届かない所にいることを考えないといけません。</div><div>カーナビがGoogleMapsのようなサービスと連動している場合、電波が届かない場所を走っているときは、あらかじめ周囲数10kmの地図情報をデバイスにキャッシュしておくなど対策がないと困るわけですね。</div><div>HTML5ではWebサイト（ページ）を本体にキャッシュしておける機能があります。</div><div>オフライン時、つまりネットにつながっていない環境でも情報を閲覧することが出来るわけで、これと似た機能でカーナビにも採用したりするといいでしょう。</div><div>（そもそもキャッシュとは既に閲覧した情報を貯めるので意味的にはちょっと違いますが...）</div><div>GMailなどはその例ですし、スマートフォンのWebアプリは「オフライン対策は必須だ」という人もいます。</div><div>（くわしくは　<a href="http://www.html5.jp/trans/w3c_offline_webapps.html#offline" target="_blank">http://www.html5.jp/trans/w3c_offline_webapps.html#offline）</a></div><div><br /></div><div>もうひとつ例をあげましょう。</div><div>例えば電子レンジやオーブン、グリルなど「火」を扱う機器。</div><div>今のWeb標準技術には「熱」を感知するAPIは勧告されていません。</div><div>電子レンジのパネルに、料理のレシピサイトから提供されているレシピが表示され、ユーザはそれに従って食材を入れ加熱させるわけですが、その加熱時間はすでにレシピサイトからの情報を受け取っているのでユーザが時間を指定しなくても自動で行ってくれるのです。</div><div>ただ、何かの間違いで、指定外のものを入れてしまい加熱して事故になることも視野に入れなければなりません。</div><div>熱を感知して加熱を停止させる機能がないと、自動化などするべきではありません。</div><div>その機能が家電機器（ハード）に備わっていることも大事ですが、「熱（温度）」を感知する機器を例えばJavaScriptで判定するようなAPIも提供されていないと、Webアプリの開発には常に危険がつきまとうと言っても過言じゃありません。</div><div>このように安全面を考えると、「自動化=便利」の背景には「危険」と背中合わせの部分をどう対応するかが極めて重要です。</div><div><br /></div><div><img alt="前面が全てHTMLでできたUIの電子レンジ？" src="http://akibahideki.com/blog/2012/01/23/fig02.png" width="740" height="269" class="mt-image-none" /></div><div><br /></div><h2>Webにつながる家電に対するデザイナーの仕事として</h2><div><br /></div><div>今僕たちはスマートフォン用のWebサイトの制作に色々知恵を絞っています。</div><div>iPhoneだけなら単独プラットフォームなので、微妙なバージョンの違いでなければMobileSafariのレンダリング結果なんてそう差はないはずですが、Android用のWebサイトともなると、表示するだけならまだ良いとしてもWebアプリの機能が加わると色々手を煩わせられます。</div><div><br /></div><div>この問題はスマートフォンというデバイスにおける問題と考えられがちですが、実はこれらは始まったばかりで、これからの未来を考えると、スマートフォンの悩みは氷山の一角にすぎません。</div><div><br /></div><div>もちろん、こうしている間にもどんどんWebブラウザやそのレンダリングエンジンも整備され改善されていくでしょうから、未来は今程デバイスごとの表示や挙動の違いに悩まされていないかもしれません。</div><div><br /></div><div>ところが、もしテレビのリモコンや電子レンジのパネルがタッチデバイスとなり、そのインターフェイスがHTMLやCSSで表示されている可能性はまったく否定できません。</div><div>テレビのリモコンはスマートフォンでも代替できるようにもなるでしょうが、スマートフォンを持っていないユーザもいることを考えて、やはりテレビ専用の次世代リモコンは付属、もしくは別売りとなるかもしれません、普及当初はスマートフォンがリモコンになる場合、ネイティブアプリが提供されるかもしれませんが、オープンなWeb標準技術で仕様書も公開されているなら、僕らがWebアプリとしてリモコンを作る仕事もあるかもしれません。</div><div><br /></div><div>例えば、お年寄りにはシンプルな「音量」と「チャンネル」と「電源OFF」のボタン機能だけで良いと言う人もいるでしょう。</div><div>逆に多機能に予約録画ボタン、多重放送のプレビューが手元のデバイスでテレビと連動したほうがいいという人もいるでしょう。</div><div>ユーザの好みは多岐に分かれるのです。</div><div>今のテレビのリモコンはご存知のとおり「ハード」です、つまりボタンの位置をユーザ層によって付け替えることはできません。</div><div>しかしタッチパネルとなればそれが可能になるのです。</div><div>ユーザの好みで、インターフェイスデザインをカスタマイズすることなんてもう既にPCでは行われています。</div><div>HTMLやCSSをJavaScriptで操作して動的に表示すればよいわけです。</div><div>あるいは何パターンかユーザーインターフェイスを用意しておいて、まるでブログの「テーマ」のようにユーザが複数のデザインを自分用のリモコン画面として設定保存することが出来るのです。</div><div><br /></div><div>今お話したことは全て僕たちが普段扱っているHTML+CSS、あるいはJavaScriptの知識資産を使って可能なことです。</div><div>もちろん、家電に向けたWeb標準がどう策定され勧告されるかはまだわかりません。</div><div>しかし可能性は否定できません。</div><div>そうなると僕たちの仕事のフィールドがPCからスマートフォンだけでなく、生活に密接な家電にも広がることになります。</div><div><br /></div><div>例えばスマートフォンサイトで必須とも言えるviewportやメディアクエリーなんてもうスマートフォンのため、などと言えなくなる未来があるかもしれません。</div><div><br /></div><div>特に日本の家電メーカーは今韓国などのメーカーに押され、大変な時期です。</div><div>Webがオープンな規格なだけに、他社製と差別化を計るのも以前より困難かもしれません。</div><div>家電がAndroidのようなオープンなOSを搭載する可能性もあるからですが、しかしながら明らかに独自路線を突っ走るよりはユーザへのサービスを充実させることを重点に置くべきことは家電メーカーも充分に分かっているでしょうし、そこを契機とし、起死回生を計ることができるかもしれません。</div><div>iPodやiPhone単体だけの成功ではなく、そこにiTunesというサービスと結びつけたからこそ成功したアップルの例からも言える通り、テレビを始めとする家電も、それだけではもう魅力的ではないのです。</div><div><br /></div><div>そういった新しいサービスには僕たちデザイナーの活躍するフィールドがどこかに無いか？</div><div>と、最近いつもそんなことを考えている毎日です。</div><div><br /></div><div>この可能性には否定的な意見もあると思いますが、明らかに言えることは、「可能性はゼロではない」ということで、</div><div>問題はどこにその可能性が秘められているかを早く見極めること、そしてそれに対する動きをとることが大事で、</div><div>場合によっては家電メーカーに売り込みに行くことも考えた方がいいかな？と思っています。</div> ]]>
        
    </content>
</entry>

<entry>
    <title>HTML上でiPhoneのフリック時刻用ドラムUIを実現するTimeFlickerJS</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/web/htmliphoneuitimeflickerjs.html" />
    <id>tag:akibahideki.com,2011:/blog//2.454</id>

    <published>2011-12-21T11:43:06Z</published>
    <updated>2011-12-21T13:38:52Z</updated>

    <summary> 以前も記事に書いたデザイナー主体のハッカソンプロジェクト「Designers ...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="HTML+CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="人のためのWebデザイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="android" label="Android" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="iphone" label="iPhone" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<p><img alt="iPhoneのフリック時刻用ドラムUIを実現するTimeFlickerJSのサムネイル" src="http://akibahideki.com/blog/2011/12/21/fig01.jpg" width="740" height="400" class="mt-image-none" style="" /></p>

<p>以前も<a href="http://akibahideki.com/blog/cat5/post-22.html">記事</a>に書いたデザイナー主体のハッカソンプロジェクト「<a href="http://designers-hack.net/">Designers Hack</a>」で作っているモックをちょっと作り込みましたので、テストバージョンサンプルと動画をあげておきます。</p>

<p><br />
<a href="http://ecoloniq.jp/TimeFlickerJS/">DEMO</a>はこちら（iPhone, Androidで見てください、PCブラウザでは動作しません）<br /></p>

<div><a href="http://ecoloniq.jp/TimeFlickerJS/timeflickerjs.zip"><img src="http://akibahideki.com/blog/2011/08/10/zip.png" style="vertical-align: middle;" />http://ecoloniq.jp/TimeFlickerJS/timeflickerjs.zip</a><br /></div>

<br />

<iframe width="560" height="315" src="http://www.youtube.com/embed/9q47i4SIYeE" frameborder="0" allowfullscreen=""></iframe>
<p>TimeFlickerJS + iPhone4S</p>
<br /><br />

<iframe width="560" height="315" src="http://www.youtube.com/embed/QgvyuMyVJl0" frameborder="0" allowfullscreen=""></iframe>
<p>TimeFlickerJS + GALAXY S2</p>
<br />
<p>iPhoneのUIで見かける、数字を縦にフリックできる日付用のドラムっぽいあのUI。<br />
あれ、HTMLのフォームなどで作ってほしいという要望がありがちです。</p>

<p>でも、「時」と「分」を同時にクルクル指でフリックさせて数字を合わせるHTMLのUIが無いので、作ってみました。<br />
jQueryのプラグインみたいにしてます。</p>

<p>使い方は簡単です。</p>

<code data-code="HTML"><br />
&lt;head&gt;<br />
&nbsp;&nbsp;&lt;link rel="stylesheet" type="text/css" href="common/css/timeflicker.css"&gt;<br />
&nbsp;&nbsp;&lt;script src="common/js/jquery-1.7.min.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&lt;script src="common/js/jquery.timeflicker.js"&gt;&lt;/script&gt;<br />
&nbsp;&nbsp;&lt;script&gt;<br />
&nbsp;&nbsp;&nbsp;$(function (){<br />
&nbsp;&nbsp;&nbsp;&nbsp;$("#timefrom").TimeFlickerJS();<br />
&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&lt;/script&gt;<br />	&lt;/head&gt;<br />
	<br />
&nbsp;&lt;body&gt;<br />
&nbsp;&nbsp;&lt;div id="timefrom"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;span class="TimeFlickHour"&gt;4&lt;/span&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;span class="TimeFlickMinite"&gt;10&lt;/span&gt;<br /> 
&nbsp;&nbsp;&lt;/div&gt;<br />
&lt;/body&gt;
<br />
</code>
<br />
<p>以上です。
必要なのはHTML上でspan.TimeFlickHourを「時」として、span.TimeFlickMiniteを「分」とします。<br />
これだけは必須なので忘れないように。<br />
あとはその親divをjQueryな書き方でTimeFlickerJS()を付けるだけで準備はOKです。<br />
親div（"4時10分"と表示されている部分）をタップすると、ドラムっぽいUIが降りてきたら成功です。</p>

<h2>メソッド</h2>

<p>一応、OKボタンが押されたタイミングでイベントを発火できます。</p>

<code data-code="JavaScript"><br />
var jikan = $("#timefrom").TimeFlickerJS();<br />
jikan.change(function (e, v1, v2){ console.log(v1+" "+v2); });<br />
</code>

<p>とすると、v1に「時」が、v2に「分」が帰ってきますので、<br />
例えばform要素の中で使う際、<br />
&lt;input type="hidden" name="jikan" value="ここにv1とv2を入れてサブミット" &gt;<br />
とかするとお問い合わせフォームでも使えるので良いでしょう。</p>

<h2>シビアだけどAndroidでは不採用になりそう？</h2>

<p><a href="http://designers-hack.net/">Designers Hack</a>のフロントエンドエンジニアのメンバーと話していると、Android大丈夫？的な声が。。。<br />
確かにiPhoneはレンダリングも強力なので割とフリックなど滑らかなんですが、GALAXY S2やXPERIA ARCなどで試したら結構厳しいところもあります。<br />
クオリティを考えるとAndroidはもっと別のUIを考え、振り分けた方がいいのでは？という意見が続いています。</p>

<p>あと、このUIは今は横幅320pxとハードコーディングしてます。解像度のちがうAndroidではCSSを触らないといけなくなりそうです、というよりボツになりそうです。<br />
例えばhtcとかの機種では横が空いてしまいますので。。。<br />
これはもうちょっと改善できたらいいなと。</p>

<p>ただ、このようなUIの制作を色んな仲間の意見をもとに作れ、勉強しているって恵まれてるなあと感じます。<br />
精進精進。</p>]]>
        
    </content>
</entry>

<entry>
    <title>デザイナー主体のハッカソンをはじめました</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/cat5/post-22.html" />
    <id>tag:akibahideki.com,2011:/blog//2.453</id>

    <published>2011-11-23T01:40:32Z</published>
    <updated>2011-11-23T02:45:56Z</updated>

    <summary> ※ハッカソンとは...プログラマが集まって一日、もしくは連日かけて共同で何かア...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="デザインに困った時" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="人のためのWebデザイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="デザイナー" label="デザイナー" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ハッカソン" label="ハッカソン" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[
<div><small>※ハッカソンとは...プログラマが集まって一日、もしくは連日かけて共同で何かアプリなどを作る、というイベント。<br />
Hack＋Marathonの造語であるが、エンジニアの会話の中に入れないデザイナーとしては、あまり積極的に参加しにくい傾向があります。<br />
※以降、デザイナーを交えたハッカソンのことを便宜上「デザイナーハッカソン」とここでは言います。</small><br /></div>

<p>このあいだも、Googleのハッカソンに呼ばれて東京に行って思ったんですが、「知識が豊富なエンジニア達の中にデザイナーを投入してハッカソンを行おう」と、最近そんなことを企画するところが増えだしたな、という気がします。</p>

<p>しかし、<strong>企画側の理想は分かるんですが、今までのハッカソンの感覚でやるとまったく意味がない</strong>と感じています。<br />
むしろデザイナーを投入するだけ時間の無駄とも言えます。<br />
エンジニアの会話というのは、エンジニア同士でないとなかなか伝わりません。<br />
だから、その場にデザイナーが入り込むと誰とも会話が出来なくなります。</p>

<p>ただし、アプリ全体の完成度を考えると、デザイナーという分野の力は欠かせません。<br />
なぜなら、単に動くだけでは、コンシューマにとって魅力を感じないからです。</p>

<h2>デザイナーを交えてハッカソンを行おうとするすべての企画側の人へ</h2>

<p><img alt="完成のイメージを明確に話し合う、それがないとデザイナーハッカソンは意味がない" src="http://akibahideki.com/blog/2011/11/23/fig01.jpg" width="740" height="300" class="mt-image-none" style="" /></p>

<p>まず、アイデアソン（アイデアを話し合う）に完成のイメージを明確にしないとデザインは出来ません。<br />
つまり、そのフェーズを踏まない以上、「デザイナーハッカソンは不可能」と考えて下さい。</p>
<p>では、そのアイデアソンのフェーズなんですが</p>
<ul>
	<li>主なターゲット層を明確に（性別／趣味／年齢層／職業など）</li>
	<li>UIやビジュアルデザインのイメージを明確に（上記のターゲット層が決定した後だと決めやすい）</li>
	<li>画面の手書きラフ（遷移図などを思いついたまま、だんだん清書していく）</li>
</ul>

<p>さらに、「これは守りましょう」というルールを設けるのもいいでしょう。<br />
	・アイデアが出来ないうちに、誰かひとりでもコードを書き始めるとNG（多少の検証はしょうがないとして）<br />
	・エンジニアもチーム内すべてが、デザイン面のアイデアソンに加わること</p>
<p>実際の仕事（案件）でも最低限これだけはないと、デザイナーが動けません。</p>
<p>むしろ、将来の私達の業界は、手を動かす人（デザインする人だろうがコードを書く人だろうが）すべてプロジェクトのゴールを明確に見据えるために、発案から参加するスタイルがどんどん必要とされています。<br />
すでにシリコンバレーなど、先進的なITの現場では、このスタイルを導入しています。<br />
「指示が降ってくる」なんて言葉は過去の言葉になるのでしょう。</p>
<p>つまり、この流れを実際にハッカソンで行う事が、私達の制作現場の将来のスタイルを想定しているわけで、私達が5年後、10年後、もっと周囲からの評価が高い仕事を続けていくためには、いまからこのコミュニケーションという難題に触れ、経験し、可能であればその問題解決のすべを自分なりの方法で得なければなりません。</p>
<p>簡単に考えている人は、やってみるときっと頭を打たれるほどの難しさを肌で感じる事でしょう。<br />
とてもシンプルなWebアプリケーションを作るだけでも、リリースまで想定するのであればなんらかの「設計上のデバッグ」が必要となります。</p>
<p>当初のやりとりでうまくいくと想定しても、一つの仕様変更で次々と連鎖的にやり直しとなるでしょう。<br />
でも、ここで見つかったバグをつぶさないと進めてはいけないので、とても進まない事にジレンマを感じます。</p>
<p>デザインのアイデアから設計にいたるまで、チーム全員が参加する必要があるのはそういった理由があるからです。<br />
徹底すると質の高いイベントとなるでしょう。</p>
<p>&nbsp;</p>
<h2>こうなったらデザイナーハッカソンを自分で立ち上げてみました</h2>


<a href="http://designers-hack.net/">Designers Hack 001</a>

<p>実はハッカソンに参加したデザイナーの力作が、アプリに反映出来なかったらとても残念な気持ちになり、その気持ちがチームのみんなに伝わらないのは余計つらいんです。<br />
	こういった経緯があって、「じゃあ、自分達で企画しよう」ということになりました。</p>
<p>先日和歌山の和歌浦アートキューブに泊まりがけで合宿を行ってきたんですが、これがとても良かったです。</p>
<figure><figcaption>▽とてもおしゃれな和歌浦アートキューブ</figcaption>
	<a href="http://akibahideki.com/blog/2011/11/23/001_4.jpeg"><img src="http://akibahideki.com/blog/2011/11/23/001_4.jpeg" width="400" alt="とてもおしゃれな和歌浦アートキューブ" /></a></figure>
<p>一日目はとにかく誰も実装ベースの作業は禁止！<br />
	ペンと紙と会話で「完成を想定する」ことで精一杯です。<br />
</p><figure><figcaption>▽モックをイメージしては書き出し、やりなおし。</figcaption>
	<a href="http://akibahideki.com/blog/2011/11/23/001_1.jpeg"><img src="http://akibahideki.com/blog/2011/11/23/001_1.jpeg" width="400" alt="モックをイメージしては書き出し、やりなおし。" /></a></figure>
<p>アプリは「勤怠アプリ」にしました。私達クリエイターにとっては少々くだらないと思えるアイデアも、一般の人にはモチベーションが上がるようなものもあります。<br />
	単にアルバイトのスケジュール帳ではなく、稼ぐ毎にアバターが成長／変身していくというもの。</p>
<figure><figcaption>▽出来上がったアバターの原案</figcaption>
	<a href="http://akibahideki.com/blog/2011/11/23/001_3.jpeg"><img src="http://akibahideki.com/blog/2011/11/23/001_3.jpeg" width="400" alt="出来上がったアバターの原案" /></a></figure>
<p>iPhoneのSafariで動くことを想定したWebアプリです。最終的にはAndroidでも使えるようにしたいと考えています。</p>
<p>【アプリの概要】<br />
	・アルバイトのスケジュールをカレンダーに記帳できる。<br />
	・複数のバイト先を新規登録／管理でき、次からスケジュールを記帳しやすいようにする。<br />
	・アルバイト先の職種（力仕事やコンパニオンなど）を勤務先単位で登録する。<br />
	・職種ごとにアバターが成長していく</p>
<p>【目的】<br />
	スケジュール帳として厳密なものではなく、ビジュアルで楽しめる、モチベーションが上がるアプリを目指す。「なんじゃこのアバター？」と思えるようなユルいキャラから変なキャラまで用意。</p>
<p>【メンバー】<br />
	・フロントエンドエンジニア...2名<br />
	・ビジュアル／UIデザイナー...1名<br />
	・キャラクターデザイナー......2名<br />
	・HTMLコーダー.....................4名（上記から3名が兼任）<br />
	・マネージャー.....................1名</p>
<figure><figcaption>▽いよいよ実装作業開始、想像以上にうまくいかない。。</figcaption>
	<a href="http://akibahideki.com/blog/2011/11/23/001_7.jpeg"><img src="http://akibahideki.com/blog/2011/11/23/001_7.jpeg" width="400" alt="いよいよ実装作業開始、想像以上にうまくいかない。。" /></a></figure>
<p>というメンバーで、実はエンジニアがあと2人参加予定だったんですが、風邪と社員旅行で参加出来ず、タイムオーバーとなり、一部実装は持ち越し。</p>
<p>単純なアプリと思っていても、結構大変なコストがかかるという事に打ちのめされます。<br />
</p><figure><figcaption>▽シンプルな構成案でも矛盾が発生、議論はつづく...</figcaption>
	<a href="http://akibahideki.com/blog/2011/11/23/001_2.jpeg"><img src="http://akibahideki.com/blog/2011/11/23/001_2.jpeg" width="400" alt="シンプルな構成案でも矛盾が発生、議論はつづく..." /></a></figure>


<figure><figcaption>▽休憩中に出来上がってきた遷移図のチェック</figcaption>
	<a href="http://akibahideki.com/blog/2011/11/23/001_6.jpeg"><img src="http://akibahideki.com/blog/2011/11/23/001_6.jpeg" width="400" alt="休憩中に出来上がってきた遷移図のチェック" /></a></figure>
<p>あと数回の顔合わせをして完成するというスケジュールになります。</p>
<h2>目指すところ</h2>

<p>このプロジェクトを企画した目的は、僕らデザイナーが良いと思った色やレイアウトを、クライアントという「素人判断」に覆されないためにも、このチームで意図して出来上がったものの価値で、本当に良いものに理由を付けたいと思ったから。</p>
<p>「よいと思うものに言葉はいらない」という人もいるし、すごく分かるけど、ビジネスとしてお金をもらってデザインをする立場だったらそこには説得させる材料が必要。<br />
僕らのハッカソンプロジェクトはそれを実現させて、参加したメンバーが将来本当の意味で良いデザイナーの仕事を続けられるように今から出来る事をしたい、そう思って作りました。</p>
<p>もう「上から仕様変更が...」といって、リリース前に中身のコードをツギハギにしてグチャグチャでも「なんとか動いた」の状態でリリースするような仕事をしなくてもいい将来を作りたいです。</p>

<style>
figure {
text-align: left;
display: block;
margin: 0 10px 10px 0;
}
figcaption {
text-align: left;
}
div#main p {
margin-bottom: 1em;
}
</style>
<script>
$(function() {
	$('#main a').lightBox({fixedNavigation:true});
});
</script>]]>
        
    </content>
</entry>

<entry>
    <title>デザインの「修正」に対して思う</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/cat5/post-20.html" />
    <id>tag:akibahideki.com,2011:/blog//2.451</id>

    <published>2011-10-05T01:51:05Z</published>
    <updated>2011-10-06T14:52:16Z</updated>

    <summary>今回は「デザイン修正」が起こった時の、デザイナーとクライアントとのコミュニケーシ...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="デザインに困った時" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="人のためのWebデザイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="デザイナー" label="デザイナー" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<div><img alt="fig01.jpg" src="http://akibahideki.com/blog/2011/10/06/fig01.jpg" width="740" height="271" class="mt-image-none" /></div><div><br /></div>今回は「デザイン修正」が起こった時の、デザイナーとクライアントとのコミュニケーションを考えてみました。<div><br /></div><div>みなさんはクライアント、もしくは自分に仕事を発注するディレクターさんと、どんな意識の擦り合わせをしていますか？</div><div>例えば、ちょっと規模の大きいシステム開発の場合、「こんな風に動くものを作ってよ」と言われてすぐプログラムを組むデベロッパってそういないですよね。</div><div>実はシステム開発における予算の大半は「設計（要件定義を含む）」に当てられるほど重要なフローなんです。</div><div>つまりこの「設計」というフロー無しには、手を動かして作業出来ない（乱暴に言えば）ということです。</div><div><br /></div><div>一般的なデザイナーの仕事にとって大変懸念すべき点があります。</div><div>それは「デザイナーのワークフローには設計や要件定義を行うフローをしないでデザインする事が多すぎる」んです。</div><div><br /></div><div>今、とくにWeb制作の中で「デザイナーとデベロッパ」とまるで異次元の人種のようにぶった切られていますが、ホントにそうなんでしょうか？</div><div><br /></div><div>僕はデザイナーですが、なぜ僕らは彼らデベロッパーのワークフローを踏襲出来ないんだろうか？と考えています。</div><div><br /></div><div>「修正」</div><div><br /></div><div>みなさんも好きな言葉ではないと思います。</div><div>何時間もかけて、あるいは一晩かけて最高のクオリティに仕上げたロゴやビジュアルを「イメージと違うんだよね」と言われて修正を食らう。</div><div>開発現場とデザイン現場にいた経験から、傾向としてはデザイン現場の要件定義フローは軽視されているようです。</div><div><br /></div><div>【開発】</div><div>システム開発で後から修正を入れること自体プロジェクトを危険にさらすから最初にしっかり設計すること。</div><div>【デザイン】</div><div>上記の開発フローほど厳密に設計などを行わない傾向が高く、デザインの変更は後からでもなんとかなる、と思われがち。</div><div><br /></div>

<h2>システム設計ばりの「デザインの要件定義」をすること</h2>
<div>「まあ、ちゃっちゃっと作ってみてよ」なんて言う人とは仕事はしないです。</div><div><br /></div><div>少なくとも、デザインをアタマの中でイメージ出来る人はいいのですが、少なくともそんな人から来る仕事は割とスムーズに行くケースがあるので、打ち合わせ段階でコンセンサスを得やすいのです。</div><div><br /></div><div>ただし問題は「何案か見てみたい」と言われた時のこと。</div><div>ほとんどが複数案を提案します。</div><div>ただし、今回問題としているのは、打ち合わせ段階でどれだけイメージが集約された複数案なのか？</div><div>それともただ、イメージが全然沸かないから、という理由の複数案なのか？</div><div>これの大きな違いが、最終的にクオリティやデザイナーの評価を落とす原因にまで発展します。</div><div><br /></div>

<h2>「何案か見てみたい」...この最悪のケースを想定する</h2>

<div>発注者はこの時点で「キーカラーは何色にするのか」「ロゴのテイストはどうするのか」「ビジュアルは写真でいくのかイラストでいくのか」等といった具体的なイメージは出来ていません。</div><div>ここでそのまま持ち帰って多数案を提出した最悪のケースへの一歩がこれです。</div><div><br /></div><div>「もっと別の案も見てみたい」</div><div><br /></div><div>しかし、その背景（真実）はこういう事だったのです。</div><div><br /></div><div>（案が多すぎて逆に決め切れなくなった）</div><div><br /></div><div>つまり、集約するべきアイデアが分散してしまい、正常な判断が出来ない状況に陥った結果です。</div><div>こういった原因を作ってしまった張本人が僕らデザイナーだったりします。</div><div>そこにクライアントやディレクタの悪口を言うのは違います。</div><div><br /></div><div>つまり提案が多ければいい、という段階はここで行うべきじゃなかった、ということです。</div><div>もっとそれ以前のコミュニケーション作業に答えがあります。</div><div><br /></div>


<h2>最悪のケースとは</h2>

こっちは一生懸命作ります、何案も。<div>でもその中の1つ以外はボツになり、ヒドい時はどれも決まらず全部ボツになる。</div><div>それが分かっている中で、全力を注ぐのは苦しい。</div><div><br /></div><div>さらに多くの案に時間をかけると、一つ一つの案のクオリティを保つのは至難の業です。&nbsp;
</div><div>出来るだけ細部のクオリティに配慮できる時間や気持ちのゆとりが欲しいです。&nbsp;</div><div>これがないと、別に手を抜いているつもりはなくても配慮に対する行動が手薄になりがちです。&nbsp;</div><div>そう、自分が気づかないうちに。</div><div><br /></div><div>僕はそれを「デザインに若さがない」という。&nbsp;</div><div>若さというのは若者受けという意味ではなく、「あ、精神的に元気がいい状態でデザインしたな」という感じがつたわる空気みたいなものです。&nbsp;
</div><div><br /></div><div>要は無駄が多いと、言葉では「頑張ってます」でも、クオリティは落ちるのです。&nbsp;</div><div>メカじゃないから人間疲れます、色んな感性が疲れます。&nbsp;</div><div>だから細部に行き届かない。&nbsp;
</div><div><br /></div><div>だから無駄をすると、自分のクオリティ評価が下がるし、クライアントも幸せになったかというと疑問だし。</div><div>死ぬほど徹夜もして疲労困憊な中、努力したのに、クオリティも出せず、最後までデザインもまとまらず評価は最悪、、つまりこれが最悪のケース。</div><div><div><br /></div>
だからもっともっと相手とコミュニケーションをとるんです。</div><div><br /></div>

<h2>相思相愛の関係で生まれる不思議なコンセンサス</h2>
<div>
会話の中で、その人が好きなことや気になっていることをすくいあげて、会話の中に弾ませると、相手はもっと自分に興味を示してくれる。
</div><div>お互い疑心暗鬼になっている状態だと、どちらかがいい案を出しても、ちょっと疑いたくなるのは心情。&nbsp;</div><div>でも、好きになってくると、その人の意見をさらに膨らましてやろうじゃないか！という意欲すら沸いてきます。&nbsp;</div><div>不思議です、今までそういうことが何度もありました。&nbsp;
</div><div><br /></div><div>そうすると、ここで一旦まとめましょうよ、って場を仕切りやすくなるんです。&nbsp;</div><div>クライアントの前でも「無駄がないように短期間で最高のものを仕上げさせてください」って意思表示が出来る空気にさせてしまうんです。&nbsp;
</div><div>無駄、という本質を理解してもらうのもデザイナーのコミュニケーション能力として大事なことです。&nbsp;</div><div>決して楽をするためじゃなく、この仕事に愛情を注げる状態を僕に下さい、と言ってるようなものですからクライアントも徐々に信用してくる。&nbsp;</div><div><br /></div><div>そうすると、もう何案も「闇雲」に作るんじゃなく、「自分でも数案試してみたいんですよ」という状態まで持って来れる。</div><div>その数案はとても価値があるチャレンジだと思っています。</div><div><br /></div>

<h2>クライアントにコンセンサスを得るまで手は動かさない</h2>
<div>この小見出しが全ての答えなんですが、案をいくつか出すにしてもプロジェクトコンセプトに対して理解するまでは絶対に手は動かさない（要はPCでデザイン作業をしない）ようにします。</div><div>理由はたった1つ。</div><div><br /></div><div>的外れな案に労力をさくより、適案に最大限の時間をかけ、クオリティと「若さ」を全力で注ぐべきだから。</div><div><br /></div><div>これにおける行動は重要ですが、ある意味、精神／体力勝負ともいえます。</div><div>これはクライアントに対し可能な限り要求を聞き出し、自分は持ってるだけのアイデアの引き出しをその場で広げます。</div><div>そこで的外れな案を相手に指示させないようにするには、こちらからのそれを覆すだけの理由が必要です。</div><div>がしかし、これは「知識」だけ突きつけてもダメな場合があります。</div><div>人を引きつける話術で覆すことも時として必要なんです。</div><div><br /></div><div>しかも人間、フリスクの過去のCMのように、会議が長引くと思考が切れてモチベーションも下がるので、これらを出来るだけ短期間で行います。</div><div>そうでないと、余計な疲労が思考を妨げるから、良案もそう見えなくなってくる危険だってあるのです。</div><div><br /></div><div>ここまで徹底的にやり切ってそこから数案を考える、という話に持っていくことが重要です。</div><div><div>何案か出す時には、より、その案が絞り込まれた中での案なのか、を打ち合わせ段階で明確にしましょう。</div></div><div><br /></div><div>ちなみにクライアントにとっては、場合によっては非常に面倒くさがられることがあります。</div><div>「そんなことより早く作って見せてよ」というのが本音だからです。</div><div>ただし、ここを怠るともうすでに、システム開発では当然の「要件定義」を放棄しているようなもので、今までの経験からすると、こういったケースは最終的に「クオリティに全力を注げなかった残念なケース」に近づいていきます。</div><div>クライアントから気に入られたいがために、夜を徹して体力限界まで多数の案を製造してしまいがち。</div><div>しかもその状態で求められるクオリティはほぼ「完成形」に近いほどのクオリティだったりするのがほとんど。</div><div><br /></div>

<div><img alt="fig02.jpg" src="http://akibahideki.com/blog/2011/10/05/fig02.jpg" width="740" height="271" class="mt-image-none" /></div>

<div><br />若い頃から長く経験して思いますが、</div><div>精神状態や体力が良好なときに仕上がるデザインと、劣悪な状況で仕上がるデザインのクオリティを両者均等に保てる人なんてまずいません。</div><div>人間、クリエイティブとか感性とかを思考する行為って、単純ではありません。</div><div>もっとデリケートなもので、「強くなれ」とかいう概念とは次元が異なります。</div><div><br /></div><div>クオリティは自身の様々な状況に影響します、それも自分が気づかないところで。</div><div><br /></div>
<h2>理想と現実</h2><div>色々書いてきましたが、結局「そんな事言っても現実はそうはいかない」と反感を持たれる人もいると思います。</div><div>その通りで、場合によっては面倒くさがられて次から仕事が来なくなります。</div><div><br /></div><div>自分がデザイナーとしてどう生きていきたいか？という大きなテーマに発展しうる問題です。</div><div><br /></div><div>「やっぱりこの人にお願いしたい」</div><div>「この人にお願いするとちょっと高いけど、それでもいいものを作ってくれる」</div><div>「この人にお願いする場合、発注する側も刺激になっていいよね」</div><div><br /></div><div>そんな風に思われるデザイナーになり、今後も高く評価されながら頼りにされることを目指したい。</div><div>そう思うなら、手先が器用なだけでなく、コミュニケーションを放棄しないデザイナーであり続ける事だ、と考えます。</div><div><br /></div><div>話が戻るけど、システム案件の「設計」が必要なように、僕たちデザイナーもイメージの設計というフローが必要です。</div><div>そして業界全体のフローを自分自身で変えていければ、僕らの未来もきっと良いものになるでしょう。</div>]]>
        
    </content>
</entry>

<entry>
    <title>canvas要素にJSでAS3のdrawTrianglesみたいなことをやってみる</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/html5-canvas-1/jsas3drawtriangles.html" />
    <id>tag:akibahideki.com,2011:/blog//2.450</id>

    <published>2011-09-29T08:51:11Z</published>
    <updated>2011-09-29T10:38:23Z</updated>

    <summary> 以前HTML5案件で作ったもので、canvasで上の図のようなことができるJa...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="HTML5 canvas学習" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<img alt="trianglejs_demo.jpg" src="http://akibahideki.com/blog/2011/09/29/trianglejs_demo.jpg" width="740" height="292" class="mt-image-none" /> <div><br /></div><div>以前HTML5案件で作ったもので、canvasで上の図のようなことができるJavaScriptファイルなんですが、これをライブラリ化してみました。</div><div>まだ欠陥が多いしAPI仕様もまとまってないのですが、ひとまずこんな表現が可能です。</div><div><br /></div><div>ソースはここにあげときました。（使い方よくわかんないけど）</div><div><a href="https://github.com/Hidetaro7/trianglerJS">https://github.com/Hidetaro7/trianglerJS</a></div><div><br /></div><div>ActionScript 3.0には<a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html">GraphicsクラスにdrawTriangles()</a>ってメソッドがあります。</div><div><br /></div><div>何をするかって言うと、ビットマップ画像をテクスチャマッピングすることが目的です。</div><div>これにより一枚の静止画をユラユラ布のように揺らしたり、3Dでは遠近感をつけたりと、画像を自由に変形することが可能になるコンピュータグラフィックの手法です。</div><div><br /></div><div>FlashPlayerやActionScript 3.0が素晴らしいと思うのが、こういったマッピング処理の数学的な難しい処理をすでにAPIとして実装してくれています。</div><div>僕達は、頂点座標を指定して、それをどう動かすか？に専念したらいいんです。</div><div><br /></div><div>ところが、HTML5の新要素、canvasとかでこれを表現し、アプリなどに乗せてしまうようなお仕事が来た時、「iPadだったらHTML5で出来ますよ」なんて言ってしまったらさあ大変！</div><div>そんな機能はネイティブで搭載されていません。</div><div><br /></div><div>つまり、「無いものは作る」or「仕様を満たすライブラリを探す」or「出来ません、と謝る」という選択に迫られます。</div><div><br /></div><div>実は色んなライブラリがもう既に出まわっていますが、いざ案件でHTMLによるテクスチャマッピングを実装するには、可能な限り自分で内容を知っておきたいという気持ちがあったので、これに挑戦してみました。</div><div><br /></div><div>これを使ったら、ポリゴンの頂点座標のx座標やy座標をずらすと、画像もその頂点にあわせて変形できます。</div><div>頂点座標の取得はgetMesh()で、頂点オブジェクトが配列で返ってくるので、例えば</div><div><br /></div>

<code data-code="JavaScript">
インスタンス名.getMesh()[41].x += 40;&nbsp;// ------------- 頂点座標の移動<br /><br />
インスタンス名.draw(); // ------------- 再描画実行
</code>

<div><br /></div>
<div>とかにすると、左上の頂点から41頂点目のX座標を40px右にずらします、</div><div>最後にdraw()メソッドで再描画すると、図のように表示されるというものです。</div><div><br /></div><div><img alt="getmesh.jpg" src="http://akibahideki.com/blog/2011/09/29/getmesh.jpg" width="740" height="200" class="mt-image-none" /></div><div><br /></div><div><br /></div><div>メッシュの表示、非表示</div><div>あくまで、今出ている黒い線（メッシュ）は、制作者が分かりやすいように引いているガイド線のようなものなので、案件で納品するときは消さないといけないケースがあります。</div><div>以下のようにstroke()メソッドを用意したので、引数にtrue / falseを与えてください。</div><div><br /></div>

<code data-code="JavaScript">
インスタンス名.stroke(false);
</code>

<div><br /></div><div>これで再度draw()すると、メッシュは表示されなくなります。（今回のデモ図版では、わざとtrueに設定しましたが、デフォルトはfalseです。）</div><div><br /></div><div>GitHubに置いた、今回のサンプルは波のように揺らしてますが、これは三角関数を使って、X座標を行ったり来たりさせてます。メッシュ非表示にするためにstroke(false)にしたときの結果、こんな感じになります。</div><div><br /></div><div><a href="http://akibahideki.com/blog/2011/09/29/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-29%2016.58.16%EF%BC%89.png"><img alt="chibikoro_wave.png" src="http://akibahideki.com/blog/assets_c/2011/09/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-29%2016.58.16%EF%BC%89-thumb-740x533-66.png" width="740" height="533" class="mt-image-none" /></a></div><div><br /></div><div>欠点として、一部、ポリゴンの隙間が出来ることもあるということや、</div><div>ふちはジャギーが出て汚い、ということです。</div><div>場合によってアニメーションで見せる場合、そこまで気がつかずごまかせることもあるけど、</div><div>その場合かなりパフォーマンスが低下するので、注意が必要です。</div><div><br /></div><div>何か案件で使えそうな時は自己責任でご自由にお使いください。</div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>HTML5-WEST.jp 勉強会「HTMLでつくるカメラ&amp;落書きアプリ」フォローアップ</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/htmlcss/html5-westjp.html" />
    <id>tag:akibahideki.com,2011:/blog//2.449</id>

    <published>2011-09-24T08:17:39Z</published>
    <updated>2011-09-25T04:09:53Z</updated>

    <summary>始まって2回目のHTML5-WEST.jp勉強会なんですが、50人も集まりました...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="HTML+CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="HTML5 canvas学習" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="canvas" label="canvas" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="getusermedia" label="getUserMedia" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="html5" label="HTML5" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webカメラ" label="Webカメラ" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<div><a href="http://akibahideki.com/blog/assets_c/2011/09/2011-09-24%2015.11.25-thumb-740x555-56-57.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/09/2011-09-24%2015.11.25-thumb-740x555-56-57.html','popup','width=740,height=555,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/09/2011-09-24%2015.11.25-thumb-740x555-56-thumb-740x555-57.jpg" width="740" height="555" alt="2011-09-24 15.11.25.jpgのサムネール画像" class="mt-image-none" /></a></div><div><br /></div>始まって2回目のHTML5-WEST.jp勉強会なんですが、50人も集まりました。<div>みなさんお疲れさまでした。</div><div><br /></div><div>僕は「HTMLでつくるカメラ&amp;落書きアプリ」というセッションでお話をさせてもらいました。</div><div><br /></div>

<p>スライドはこちらです。</p>
<div><a href="http://akibahideki.com/blog/2011/09/24/html5west.pdf"><img src="http://akibahideki.com/blog/common/img/icon_pdf.png" style="vertical-align: middle;" />http://akibahideki.com/blog/2011/09/24/html5west.pdf</a><br /></div>

<div><br /></div>
<div>セッションの中でお話しましたけれど、まだ現在では、HTMLやJavaScriptベースでカメラを使ったWebアプリは作れません。</div><div>これは各ブラウザがまだこの機能をサポートしていないからです。</div><div>ただ、テストとして唯一Operaの特殊なビルドがそれを可能にしています。</div><div><br /></div><div>Webの未来という意味では面白い試みだったと思います。</div><div>もうすでにW3Cのワーキングドラフトに上がっているので、「Webでこういったことが将来出来るようになる」ということを示唆するものなんですね。</div><div><br /></div><div>1行のHTMLと簡単なJavaScriptのサンプルでカメラアプリが作れるデモを実際披露すると、色んな人の反応が多くて楽しかったですね。</div><div><br /></div><div>getUserMedia()というJavaScriptのメソッドは、カメラやマイクを取得する機能ですが、仕様はまだあやふやでこれからもう少し整備されていくでしょう。</div><div><br /></div><div>最後にアイデアネタとして「変顔カメラアプリ」として画像がウネウネ動いていたのは、実はとても頑張って作ったんです。</div><div>将来はもうちょっとアレをアプリっぽくしますのでご期待ください！！</div><div><br /></div>

<figure style="width:300px;">
<a href="http://akibahideki.com/blog/assets_c/2011/09/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-24%2017.34.21%EF%BC%89-59.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/09/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-24%2017.34.21%EF%BC%89-59.html','popup','width=480,height=800,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/09/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-24%2017.34.21%EF%BC%89-thumb-300x500-59.png" width="300" height="500" alt="スクリーンショット（2011-09-24 17.34.21）.png" class="mt-image-none" style="" /></a>
<figcaption style="color:red;">デモでお見せしたテクスチャマッピングによる画像を変形させて撮影</figcaption>
</figure>



]]>
        
    </content>
</entry>

<entry>
    <title>『第一回 全国統一HTML5実力テスト』を受験してみて改めて感じたこと</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/web/-html5.html" />
    <id>tag:akibahideki.com,2011:/blog//2.448</id>

    <published>2011-09-12T03:54:15Z</published>
    <updated>2011-09-12T04:06:37Z</updated>

    <summary>カヤックさんのWebサービスで、HTML5関連の自己スキルが試せるというものが公...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="HTML+CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="人のためのWebデザイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="css3" label="CSS3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="html5" label="html5" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<div>カヤックさんのWebサービスで、HTML5関連の自己スキルが試せるというものが公開されています。</div><div><br /></div><div><a href="http://akibahideki.com/blog/assets_c/2011/09/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-12%2012.59.52%EF%BC%89-52.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/09/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-12%2012.59.52%EF%BC%89-52.html','popup','width=1239,height=776,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/09/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-12%2012.59.52%EF%BC%89-thumb-740x463-52.png" width="740" height="463" alt="html5cat.png" class="mt-image-none" /></a></div><div><br /></div><div><a href="http://jsdo.it/event/html5cat/2011/summer/">http://jsdo.it/event/html5cat/2011/summer/</a></div><div><br /></div><div>これはエンジニア向けのJavaScriptコース、そしてデザイナー向けのHTML / CSSコースの二つの科目（？）があり、それぞれ好きな方を選べるし、両方受験することもできます。</div><div><br /></div><div>まあ、内容はもちろんここでは書けないけど、結構難しいことから、割と誰でも知ってそうなことまで幅広いので、自分のスキルを試すということで、やってみてはいかがでしょう？</div><div><br /></div><div>高い点数だったら、みんなに自慢しちゃおう、ということでTwitterのアカウントでログインして受験してみるのもよいでしょう。</div><div>逆に点数が低いからといって、一方的に公開されるわけではありませんのでご安心を。</div><div><br /></div><div>ちなみに僕はJavaScriptは専門外なので、HTML / CSSコースだけ受験。</div><div>惜しくも93点。</div><div>一問間違えてしまいました。。</div><div>よく考えたら分かることを、、、悔やんでしまいます。</div><div><br /></div><div><img alt="score.png" src="http://akibahideki.com/blog/2011/09/12/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-09-12%2013.00.08%EF%BC%89.png" width="478" height="211" class="mt-image-none" /></div><div><br /></div><div><br /></div><div>HTML5がテーマとなる試験なので、セマンティックな考え方を理解しておいた方がよいですし、CSS3の知識も必要になってきますし、JavaScript APIとの絡みも理解が必要になってきます。</div><div><br /></div><div>と、書くと、「何でJavaScript APIとの絡みが必要なん？」って思うかもしれません。</div><div>しかしこれは僕としては当たり前のことと思い、苦手だけど勉強中です。</div><div>（オライリーから出ているJavaScriptのパターン本を読んで、確かに面白いですが、これは僕がやる分野じゃないな、と思っています。）</div><div><br /></div><div>ただプロジェクトって、制作に関わる人全てが同じゴールを見ないとチグハグなものが出来上がってくるのにこの日本ってのは、フロントに関わる大事な作業をする人がディレクターからの指示だけで動いているという現状があまりにも多く、ヒドい場合には途中で大幅な仕様変更などに何故そうなったかも理解出来ず、苦しむ場合があります。</div><div><br /></div><div>「上が言ってるからそれは当たり前」とか「徹夜してでもやるべき」とかそんな言う人もいるけど、もの作りの本質からは確実にずれている気がします。</div><div><br /></div><div>ただ、大きなプロジェクトになれば（何十人、何百人のエンジニアが動くプロジェクト）になると、さすがにそうも行かないケースもあるので一概には言えませんが。</div><div><br /></div><div>少なくとも数人体制で制作にかかる場合、もっとフロント制作に関わる人（フロントエンドエンジニアやデザイナー）も会議に参加させて、その人のことをちゃんと信用していこうよ。</div><div>フロントに関してはその人の意見が一番知識があるし、的を得ているはずなのに、何故違う人が仕様を決められるのか？は問題として認識しておくべきかな？と。</div><div><br /></div><div>理想的な話ばかりしてるけど、制作者は全てコミュニケーション能力がないとダメ。</div><div>上記のように、フロントエンドの人やデザインの人などは、信用されている以上、プロジェクト全体のゴールを見据えて話が出来て提案も出来ないと、ただの言いなりにしかなれない存在なんです、悲しいかな。</div><div><br /></div><div>だから僕らの立場を5年先、10年先でももっと価値のあるものにし、言いなりにならずに「この人にお願いしたい」と言われたいので、今が訓練の時期だと思う訳です。</div><div><br /></div><div>だから話が戻るけど、デザイナーの知識にとって「何でJavaScript APIとの絡みが必要なん？」という答えは、自分が作ったUIと密接に関わるからです。</div><div>自分がUIを設計する以上、最後はプログラムによってどのように動くかなんて知っていて当然、その挙動が予測できるようにならないといけません。</div><div><br /></div><div>少なくとも、スクリプトを書けなくても、何が出来るか？</div><div>ここを最初に設計／定義しておかないと後々困る、という部分だけは抑えておきましょう。</div><div>これが今後、複雑な仕様になって広大なHTML5の技術に対する、僕らデザイナーの向き合い方だと考えて勉強しています。</div><div><br /></div><div>こう考えると、色んなスキルが必要となってくるので、ひと独りでこのスキルを理解出来る人なんていないんじゃないかと思ってきます。</div><div>JavaScriptエンジニアと言っても、今までDOM操作が得意だったエンジニアだけでなく、描画アプリをcanvasやSVGなどを使って作ることを得意とするエンジニアやAjaxやWebSocketなどの通信系が得意なエンジニアとか色々、エンジニアのなかでも幅広く分野が分かれていくものと予感しています。</div><div>これはあくまでディレクターとしての一つの意見ですが。</div><div><br /></div><div>デザイナーもそうです。</div><div>ビジュアルを担当するデザイナーから、ユーザの指や目の動きを考えたり使いやすい設計を考えるデザイナーなど、デザイナーといってもWebに関わらずプロダクトやエディトリアルデザインの世界でもいっぱいいます。</div><div><br /></div><div>どれがWebの世界で一番重要かだなんて順位をつけられるわけがありません。</div><div><br /></div><div>見た目も機能性も、全てにおいてクオリティを保たないとそれをクオリティとは言わないからです。</div><div><br /></div><div>さ、そんなわけで、コレからも勉強、勉強、と。</div><div>お互いいい仕事をしたいですね！</div> ]]>
        
    </content>
</entry>

<entry>
    <title>canvasを使って知識ゼロから独学してみた「エセ」テクスチャマッピング入門以前編</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/html5-canvas-1/canvas.html" />
    <id>tag:akibahideki.com,2011:/blog//2.447</id>

    <published>2011-09-02T17:57:36Z</published>
    <updated>2011-09-02T18:15:59Z</updated>

    <summary> 赤い点をドラッグしてみてください。 あくまで基礎中の基礎なので、もっと詳しい方...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="HTML5 canvas学習" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<img src="http://akibahideki.com/blog/2011/09/03/img/title.jpg" alt style="display: none;">

<p>赤い点をドラッグしてみてください。</p>

<iframe src="http://akibahideki.com/blog/2011/09/03/test_one.html" frameborder="0" width="740" height="470"></iframe>

<p>あくまで基礎中の基礎なので、もっと詳しい方はこちらのほうがおすすめです。<br />「2009-02-11 - 最速チュパカブラ研究会」<br />
	<a href="http://d.hatena.ne.jp/gyuque/20090211#1234364019" target="_blank">http://d.hatena.ne.jp/gyuque/20090211#1234364019</a></p>
<h2>■画像を3D的に遠近感を出すには？</h2>
<p>例えば正面を向いている画像が上を向いているように見せるにはどうすればよいでしょう？<br />
	それは、画像を台形にして上辺が狭くなれば、立体的に上を向いているように見えますよね？</p>
<figure>
	<img src="http://akibahideki.com/blog/2011/09/03/img/fig_01.jpg" alt="【画像（写真）が上を向いているように見せたいとき】" />
	</figure>
<p>今回はcanvas要素を使ってこういった画像を変形させることにします。<br />
	しかし、現在仕様が固まりつつあるcanvasの2Dレンダリング方式では、こういった画像に奥行を与える直接的な機能を持っていません。<br />
	つまり長方形のカタチから台形に変形させるのは簡単にできないというべきです。<br />
	Flash Playerはvar10からムービークリップ等を3D的に回転させたりすることが可能になりましたが、canvasの場合は何らかの方法で実現しないといけません。<br />
	（canvas、ではなく、正式には「CanvasRenderingContext2Dというcanvas内のオブジェクト」なんですが、便宜上canvasと言うことにします。）</p>
<h2>■canvasでできる変形の基本</h2>
<p>画像が3D的に見えるように台形に変形させる前に、canvasでできる変形とはどういうものか、おさらいしておきましょう。</p>
<p>ここでいう「変形」というのは、以下のとおりで、これらは全てcanvasに直接備わっているので簡単に変形が可能です。</p>
	<figure>
	<img src="http://akibahideki.com/blog/2011/09/03/img/fig_02.jpg" alt="【これらはcanvasで直接変形が簡単】" />
	</figure>
<p>しかし、先ほども言いましたとおり、台形みたいに、あるいはもっと不規則な四角形に変形する命令（メソッド、といいます）は直接canvasには備わっていません。<br />
	例えば以下のような台形や不規則な形状の変形は簡単にはいきません。</p>
	<figure><img src="http://akibahideki.com/blog/2011/09/03/img/fig_03.jpg" alt="【これらはcanvasで直接変形はできない】" /></figure>
<p>よって、直接できないこれらの変形は次の方法を使うことで実現できます。</p>
<h2>■2つの三角形に画像を割って個別に変形させる</h2>
<p>1枚の長方形を台形に変形させるには、左上と右下で三角形を作って2つに割ってしまいます。<br />
	三角形はマスク領域となり、左上と右下のそれぞれの三角形にクリッピングマスクするように画像を処理していきます。</p>
<p>なぜこういうことをするかというと、2つの三角形にそれぞれ別の変形を与えると、おおよそどんなカタチの四角形でも作ることが可能になります。<br />
	下図では、それぞれの三角形に対し、拡大または縮小、傾斜、移動といった、canvasで簡単にできるメソッドを使って別々の変形を与えてます。</p>
<figure><img src="http://akibahideki.com/blog/2011/09/03/img/fig_04.jpg" alt="【2つの三角形に別々の変形を与えると、どんな四角形でもつくれる】" /></figure>
<h2>■左上の三角形の画像をまずは変形させてみる</h2>
<figure><img src="http://akibahideki.com/blog/2011/09/03/img/fig_05.jpg" alt="【必要な座標の情報は4箇所。】" /></figure>

<p>
	まずは呼び方、座標のルールから決めましょう。<br />
	左上の三角形を「セグメント1」、右下の三角形を「セグメント2」と呼ぶことにします。<br />
	セグメント1、セグメント2の頂点は当然それぞれ3箇所あります。（三角形ですから）<br />
	この中で2つのセグメントは2つの頂点を共有しないといけません。<br />
	どこでしょう？<br />
	右上と左下ですね、これがくっついているべきですよね？<br />
	便宜上、ポイント0を左上、ポイント1を右上、ポイント2を左下、ポイント3を右下、<br />
	と、呼ぶことにしましょう。<br />
	ここまでが呼び方と座標のルールです。<br />
	そして今回使う画像のサイズは横400px、縦300pxとしましょう。</p>
<p>先ほど、canvasで簡単にできる変形として、拡大または縮小、傾斜、移動などがあると言いましたが、実はこれらを一回で行うメソッド、今回はsetTransformというメソッドを使います。</p>
<p>こちらにて解説されています。<br />
	<a href="http://www.html5.jp/canvas/ref/method/transform.html" target="_blank">http://www.html5.jp/canvas/ref/method/transform.html</a></p>
<p>計算方法は基本的な算数なので、苦手な僕でも何とか理解できました。<br />
	では実際画像を描画してみましょう。</p>
<p>セグメント1の「変形の基準点」、つまりどこを中心に変形していくかを決定するのはとても重要です。<br />
	これができないと、カタチ自体は変形できても、三角形の外にはみ出したりします。<br />
	セグメント1の「変形の基準点」はポイント0の位置にします。<br />
	その指定のやり方は、setTransformの第5,6番目の引数に、ポイント0のXとY座標を指定します。<br />
	例えば、画像のポイント0（左上）の位置がcanvasの左上からXが80px, Yが40pxだとしたら、<br />
	画像のdrawImage(img, 0, 0)にしておいて、setTransform(1, 0, 0, 1, 80, 40)とします。<br />
	ここ、大事です。<br />
	間違ってdrawImage(img, 80, 40)にすると、変形の基準点がポイント0基準になりません。<br />
	drawImageする座標は、canvasの左上の座標にしましょう。<br />
	setTransformによって 80px, 40pxの位置にちゃんと移動してくれます。</p>
<p>
</p><figure><img src="http://akibahideki.com/blog/2011/09/03/img/fig_06.jpg" alt="【画像の横の伸縮率を変更】" /></figure>
	もしもポイント1（右上）が右に動いたら、セグメント1の画像の横方向の拡大縮小率を上げます。<br />
	例えば、横幅400pxの画像があり、ポイント1（右上）の座標が右に120px動いたとしましょう。<br />
	そうすると、120÷400 = 0.3となり、原寸の1と足して1.3が拡大率になります。<p></p>
<p>setTransform(1.3, 0, 0, 1, 80, 40)</p>
<p>とすることで、画像の横の長さがポイント0から移動後のポイント1まで拡大されます。<br />
	この計算方法を使って、画像の縦の拡大および縮小率も応用することができます、値はsetTransformの第4引数にいれます。<br />
</p>


<h2>■傾斜に対応させたらセグメント1は完成</h2>
<figure><img src="http://akibahideki.com/blog/2011/09/03/img/fig_07.jpg" alt="setTransformの第2,3引数を変更" /></figure>

<p>セグメント1はあと傾斜させて完成です。<br />
	ポイント1（右上）が下に40px動いたとします。<br />
	この時点で画像は右下下がりに傾斜しないといけません。<br />
	縦方向の傾斜の計算方法はこれだけです。<br />
	40（移動距離） ÷ 400（画像の横幅） = 0.1<br />
	この結果をsetTransformの第2引数にいれます。</p>

<p>この流れで横方向の傾斜も行ってみましょう、縦方向の傾斜と考えは同じです。<br />
	例えばポイント2（左下）が左に60px動いたとしましょう。<br />
	横方向の傾斜の計算方法は、移動距離が左（負の方向）なのでマイナスとなり、<br />
	-60（移動距離） ÷ 300（画像の縦の長さ） = -0.2<br />
	これをsetTransformの第3引数にいれます。</p>
<p>これで変形完了です。</p>


<h2>■画像をクリッピングする</h2>
<p>三角形にするので、Illustratorでおなじみ「クリッピングマスク」と同じような機能をもつ、clip()というメソッドがあるので、それを使います。<br />
	canvasでパスによる図形を描くことができますので、moveToやlineToなどのメソッドで三角形を描いたあと、clipを実行してsetTransformで変形させて最後にdrawImageすると、画像は三角形の形で切り取られた格好になります。<br />
	原則、clipメソッドを使うときは、処理の前後にsaveメソッドとrestoreメソッドを使います。<br />
	例えばrestoreしないと、clip領域（マスク領域）が解除されません、状態をsaveメソッド実行時に戻すという繰り返しを行いましょう。</p>
<p>ここまでの結果にするには、以下のようなコードになります。</p>

<code data-code="JavaScript">
		ctx.save(); //描画状態を記憶しておく（※1）<br />
		ctx.beginPath(); //パスを描画開始<br />
		ctx.moveTo(80,40); //ポイント0の座標<br />
		ctx.lineTo(600, 80); //ポイント1の座標<br />
		ctx.lineTo(20, 340); //ポイント2の座標<br />
		ctx.closePath(); //パスを閉じる、三角形の形が決まる<br />
		ctx.clip(); //上記のパス領域をクリッピング領域とする<br />
		ctx.setTransform(1.3,0.1,-0.2,1,80,40); //変形を実行<br />
		ctx.drawImage(img,0,0); //画像（写真）を描画、すでに変形されている<br />
		ctx.restore(); //クリップ領域を解除（※1）<br />
		ctx.strokeStyle = "red"; //線の色を赤にする（最終的に不要）<br />
		ctx.stroke(); //三角形の「線」を描く（最終的に不要）（※2）<br />

</code>

<p><strong><small>(※1)<br />
	サンプルではこのコードが繰り返し実行されるため、クリップ領域も毎回解除しなければなりません。<br />
	saveによって、クリップ領域が存在しない状態を記憶しておき、restoreでsave時の状態に戻す作業をします。<br />
	この考え方はclipしながらアニメーションを行う際は必須のテクニックです。<br />
	(※2)<br />
	clipはstrokeして図形の線や塗りを描かないといけないと思われがちですが、closePathした時点でクリップ領域が決まるので、stroke（線）やfill（塗り）をする必要はありません。</small></strong></p>
	
<h2>セグメント1完成</h2>
<p style="color: red;">↓↓このボタンを押して、クリップ状態と非クリップ状態を見比べてください。</p>
<iframe src="http://akibahideki.com/blog/2011/09/03/test_1.html" frameborder="0" width="740" height="480"></iframe>
	
<h2>■セグメント2の作成で気をつけておきたい点</h2>
<p>セグメント2も基本はセグメント1と一緒です、応用は利きます。<br />
	ただ、大きく注意するべき点が1点、それは「変形の基準点」をどこにするか？です。</p>
<p>先ほどのセグメント1は分かりやすく、左上が基準点になれば良かったんですが、</p>
<p>『セグメント2にとってポイント0（左上）の座標は全く意味がない』</p>
<p>ということです。<br />
	セグメント2の持つ座標はポイント1から3までです。<br />
	ポイント０がどこに行こうが、セグメント2の三角形は影響を受けない（変形しない）というわけです。</p>
<p>要するにセグメント2になったら変形の基準点を別のどこかに指定し直さないといけないということです。</p>
<p>一番分かりやすかったのが、ポイント2（左下）の位置を基準として、そこから伸縮や傾斜を行おうと思います。<br />
	よってsetTransformの5,6引数目には、ポイント2のXとY座標をいれるのですが、ここでdrawImage(img, 0, 0)にすると、ポイント2から画像が描画されるので、ポイント2の下に画像が配置されます。<br />
	なので、drawImageの第3引数のY座標を画像の高さ分上に配置します。<br />
	つまり、今回の画像の高さが300pxなので、drawImage(img, 0, -300)とすることで、画像の左下が基準点にぴったり合った状態になります。<br />
</p>
<figure><img src="http://akibahideki.com/blog/2011/09/03/img/fig_08.jpg" alt="【画像の右下と基準点を合わせる】" /></figure>

<p>これまでが、セグメント1との基準点を考える上での違いです。</p>

<h2>■セグメント2完成</h2>
<p style="color: red;">↓↓このボタンを押して、クリップ状態と非クリップ状態を見比べてください。</p>
<iframe src="http://akibahideki.com/blog/2011/09/03/test_2.html" frameborder="0" width="740" height="480"></iframe>

<h2>■セグメント1とセグメント2を表示</h2>
<p>さて、いよいよ結果を見ることができます。<br />
	セグメント1とセグメント2にそれぞれ別の変形を与えて表示させてみましょう。<br />
</p>
<figure><img src="http://akibahideki.com/blog/2011/09/03/img/fig_09.png" alt="【継ぎ目に隙間が出ている状態】" /></figure>
<p>これを見てどうでしょう？<br />
	満足しました？<br />
	僕はとても不満というか残念です、なんでしょう？この継ぎ目。<br />
	各ブラウザともどうやらこのような仕様になっているようで、クリップの痕が残ってしまい、継ぎ目に隙間が出ます。<br />
	三角形を継ぎ合わすだけでは解決できません。</p>
<p>ここは一つ、簡単な方法で解決してみましょう。<br />
	アイデアとしては、セグメント1のクリップ領域を、三角形ではなく、四角形にしようという単純なものです。<br />
	つまり、セグメント1の『左上→右上→左下』だった三角形を、『左上→右上→右下→左下』にして、四角形にしてしまい、上にセグメント2を「乗せる」ように見せて隙間をなくすという方法。</p>
<p>ただし、セグメント1は無駄な領域までレンダリングしてしまうので、パフォーマンス的に良いかどうかは、実用レベルだと別な方法も検討しないといけないかもしれません。</p>
<figure><img src="http://akibahideki.com/blog/2011/09/03/img/fig_10.png" alt="【完成】" /></figure>
<h2>■アプリ開発のために使いどころとして学んでおきたかった</h2>
<p>こういったことをやってくれるライブラリはあるんですが、HTMLをベースとしたPCやスマートフォンの描画系アプリケーションの開発のためには、原理くらいはある程度おさえておいた方がいいかな？と思ってたんですが、結構難しいですね。</p>
<p>何でもライブラリに頼ろうとすると、案件仕様によっては実現困難になりそうなので、画像を変形させる基本中の基本だけでも学んでおきたかったわけです。</p>
<p>もちろん、このままでは何にもなりません。<br />
	今回は一つの画像を2個の三角形で分割しましたが、例えば、画像を布やゴムのようにグニャグニャにしたり、扇形にしたり、3D形状にしたり、となると、今回の写真をもっと多く分割していかないといけません。<br />
	すると、今回の方法から違う計算方法などを使って実装しないといけなくなるかもしれません。<br />
	とにかくまだまだ勉強することはあるってことで。</p>
<p>以上、夏休みの自由研究でした。</p>
]]>
        
    </content>
</entry>

<entry>
    <title>HTML5でつくるカメラ&amp;落書きアプリ（中国GTUGハッカソンで発表）</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/html5gtug.html" />
    <id>tag:akibahideki.com,2011:/blog//2.446</id>

    <published>2011-08-19T06:29:52Z</published>
    <updated>2011-08-20T04:08:34Z</updated>

    <summary>先週、岡山で開催された中国GTUGのハッカソンイベントに参加して、優勝いただきま...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
    <category term="android" label="Android" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="canvas" label="canvas" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="getusermedia" label="getUserMedia" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="html5" label="HTML5" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<div><img alt="operaTop.jpg" src="http://akibahideki.com/blog/2011/08/20/operaTop.jpg" width="740" height="414" class="mt-image-none" /></div><div><br /></div>先週、岡山で開催された中国GTUGのハッカソンイベントに参加して、優勝いただきました！<div>デザインは<a href="http://twitter.com/#!/tommmmy">@tommmmy</a>とフロントが僕の2人で頑張ってみました。</div><div>ちなみにGTUGというのは、『Google Technology User Groups』の頭文字で「ジータグ」と読むそうです。</div><div>知り合いの方がいらっしゃるということが参加したキッカケでした。</div><div><br /></div><div>作ったのはHTML5で作るカメラアプリ。動画に撮ってみました。すいません！横です！！</div>

<iframe style="margin: 20px 0;" width="560" height="345" src="http://www.youtube.com/embed/1KBe8U1vNNQ" frameborder="0" allowfullscreen=""></iframe>

<div>WHAT WGが策定している<a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/video-conferencing-and-peer-to-peer-communication.html#video-conferencing-and-peer-to-peer-communication">getUserMedia</a>というメソッドを使って、ブラウザから、カメラやマイクにアクセスするというもの。</div><div>現在はAndroid用Opera Mobileの中でもちょっと特殊な（？）OperaだけがこのgetUserMediaをサポートしています。</div><div>これが実用化されたら、僕らデザイナーでもカメラ系のアプリがHTML5ベースで作れるようになるんじゃ？</div><div>と思ったりしました。</div><div><div><br /><div>さて、この日のテーマは「HTML5」であることが条件。</div><div><br /></div><div>ちなみにこういった技術を知ったキッカケはこのサイトです。</div><div><a href="http://my.opera.com/core/blog/2011/03/23/webcam-orientation-preview">http://my.opera.com/core/blog/2011/03/23/webcam-orientation-preview</a></div><div><br /></div><div>Androidスマートフォンを持っている人はブラウザでアクセスして、この試験中とも思えるOpera Mobileをダウンロードしてください。</div>

<ul class="thumbScreen">
<li><a href="http://akibahideki.com/blog/assets_c/2011/08/android_1-39.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/08/android_1-39.html','popup','width=480,height=800,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/08/android_1-thumb-200x333-39.png" width="200" height="333" alt="android_1.png" class="mt-image-none" style="" /></a></li>
<li><a href="http://akibahideki.com/blog/assets_c/2011/08/android_3-42.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/08/android_3-42.html','popup','width=480,height=800,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/08/android_3-thumb-200x333-42.png" width="200" height="333" alt="android_3.png" class="mt-image-none" style="" /></a></li>
<li><a href="http://akibahideki.com/blog/assets_c/2011/08/android_5-45.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/08/android_5-45.html','popup','width=480,height=800,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/08/android_5-thumb-200x333-45.png" width="200" height="333" alt="android_5.png" class="mt-image-none" style="" /></a></li>
</ul>

<p>サイトにアクセスして、画面をちょっと下にスクロールすると「Android Build」というリンクがすぐ見つかるはずです。<br />
これをタップするだけでダウンロードが始まります。<br />
ダウンロードが終わったら、上図右のようにアイコンをホームの画面にでも配置しておきましょう。<br />
Operaのアイコンに「LAB」と書いてあるのがそれです。</p>

<p>その「LAB」と書いているOperaを起動して、ハッカソンで作ったやつのアドレスにアクセスしてください。<br />
<a href="http://ecoloniq.jp/opera_de_camera/">http://ecoloniq.jp/opera_de_camera/</a><br />

<strong>※ハッカソンの制限時間の関係上ちょっとした不具合があります、そのときは更新をタップしてください（ちゃんと作りたいなあ...）</strong>
</p>

<h2>カメラの映像をブラウザに映す</h2>

<p>カメラの画像をブラウザに映すのだけはとても簡単です。</p>

<code data-code="HTML">
&lt;video autoplay&gt;<br />

</code>

<code data-code="JavaScript">
// jQueryを読み込んでいます<br />
$(function (){<br />
&nbsp;var video = $("video").get(0);<br />
&nbsp;if(navigator.getUserMedia) {<br />
&nbsp;&nbsp;navigator.getUserMedia('video', successCallback);<br />
&nbsp;&nbsp;function successCallback( stream ) {<br />
&nbsp;&nbsp;&nbsp;video.src = stream;<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
})
</code>

<p>なんとこれだけ！これでカメラからの映像がライブストリーミングされています。びっくり。</p>

<h2>撮った静止画をcanvas要素に描画する</h2>

<img alt="opera_camera_elem.png" src="http://akibahideki.com/blog/2011/08/19/opera_camera_elem.png" width="665" height="193" class="mt-image-center" style="text-align: center; display: block; margin: 20px auto 30px;" />

<p>で、これを「カシャっ」と撮りたいので、ここでcanvas要素の登場です。<br />
canvasタグをまずは2枚用意して重ねました。（「枚」って変ですね）</p>

<p>1枚はカメラで撮影した静止画像を描画するたものもの。<br />
もう1枚はユーザにお絵かき（落書き）してもらうための空白のもの。</p>

<p>つまり、仕上がりを2つのレイヤーを用意しています、position: absoluteで重ねます。</p>

<h2>タッチイベントで画像をcanvasに描画する</h2>

<p>最初に落書きするブラシを選択しますが、その要素はimg要素ですからcanvas要素に直接描画できます。<br />
canvasへの描画ってimg要素かvideo要素かcanvas要素の3要素だけは、ビットマップをcanvas要素に「コピー」出来るのです。</p>

<p>このコードは、canvas内の描画領域（コンテキストという）に、img要素を貼付けます。<br />
座標も指定できますので、指でタップした場所にimg要素をcanvas要素に表示することが出来るわけです。</p>

<code data-code="JavaScript">

canvas要素の描画領域.drawImage(img要素, x座標, y座標);<br />

</code>

<p>本当は、ブラシサイズや色まで決めたり出来たらもっと良かったのですが、なんせ僕の知識レベルなので、touchmoveしている最中にdrawImageしてブラシ画像をcanvasに配置するところで、精一杯でした。</p>

<h2>シャッターで絞るアニメーションは、canvasで円をクリッピングマスク</h2>
<!--<a style="float: left; margin: 0 15px 30px 0;" href="http://akibahideki.com/blog/2011/08/19/shutter.jpg"><img alt="shutter.jpg" src="http://akibahideki.com/blog/assets_c/2011/08/shutter-thumb-150x240-48.jpg" width="150" height="240" class="mt-image-none" / / / /></a>-->

<p style="color: red; font-weight: bold;">↓↓↓　撮影ボタンをクリックorタップしてみてください</p>

<iframe src="http://www.akibahideki.com/blog/2011/08/20/shutter_test.html" frameborder="0" allowfullscreen="" width="150" height="320" scrolling="no"></iframe>
<p>canvas要素内には画像をクリッピングマスクするclipメソッドがありますので。シャッターの画像をアニメーションする円でマスクしました。<br />
もうちょっと早くしても良かったかな？</p>

<h2>シャッター音はAudio要素</h2>
<p>「カシャ」という音がなくって、その場では違う音を入れたんですが、音の再生はとても簡単です。<br />
今回は、JavaScript内でAudioを生成して、鳴らしたいタイミングでplayメソッドを使ったので、実際の音関連のコードは3行くらいしか書いていません。</p>

<code data-code="JavaScript">
var audio = new Audio();<br />
audio.src = "sound/shutter_sound.mp3";<br />
<br />
//シャッターボタンが押されたタイミングでplayメソッドを呼ぶ<br />
audio.play();
<br />
</code>

<p>他にも色々やりたいことがありました。</p>
<ul>
<li style="list-style: disc;">消しゴムツールを用意
</li><li style="list-style: disc;">落書きした画像を保存させる
</li><li style="list-style: disc;">ブラシの向きや大きさをランダムに
</li></ul>

<p>などなど。。</p>

<h2>HTML5というキーワードに大した意味はなく、やれることを実感することに意味がある</h2>

<p>ついでに、最近『HTML5』というキーワードについて思うことをちょこっと書きます...</p>
<p>もっと経験を積んでいるプログラマーだったらもっと高機能なものを短時間で作れると思います。<br />
僕はユーザインターフェースのデザインの勉強をしているし、見た目を華やかにするビジュアルデザインを得意とするデザイナーですが、開発に関してはやりたいことはアタマの中にあっても実力が伴いません。。</p>

<p>今までHTMLとCSSでユーザが触れる側を作ることができた僕らWebデザイナーも、こういったカメラとかタップとかサウンドとかで人を楽しませるアプリケーションに拡張することが出来るんだ。ということに気づきます、HTML5の目的のひとつなんだな、と。</p>

<p>最近HTML5ってキーワードが盛り上がってますね、セミナーとかそれだけで人も集まりやすい。<br />
でも、、<br />
僕が思うのは、そんなトレンドに惑わされているだけで、本質をしっかり理解出来ていない僕達も問題だと思います。<br />
（理解出来てない人が悪いのではなく、発信する側の責任もあると思う）</p>

<p>例えば、お客さんに「ウチはHTML5やCSS3を使ったコーディングが出来ます」とか言ったところで、正直それがどうした！？って感じです。<br />
そこは誰が幸せになるの？という具体的なビジョンが見えてない人ほど、そのキーワードを使いたがっているような今が伺えます。<br />
誰かのためになるHTML5なのか？<br />
ただの営業トークで中身のないHTML5というだけのキーワードなのか？</p>

<p>僕は最近そんな業界への流行りに疑問があって、なにがトレンドなのか？その中身を理解したく、開発者のイベントには積極的にアウェーでも行きたいと思います。<br />
自分がプログラムをまともに書ける、書けないが大事ではなく、ちゃんとデベロッパと意思疎通が出来るデザイナーでないと、良いサービスは作れないと確信してるからです。</p>

<p>正直この程度のアプリでは、まだまだなのは分かっているのだが。。。（エラそうなこと言ってますが勉強中の身です）<br />少なくともハッカソンに僕のようなデザイナーが参加させてもらってることは決して無駄なことじゃなく、ただ技術の学習でもなく、コミュニケーションの勉強であり、誰かを幸せにする何らかの手段を異業種から学ぶ勉強、ということだと思っています。</p>

<p>ここから先の話はかなりディープな話になるので、別のエントリーに書きたいと思います。</p>




<style>
.thumbScreen li {
display: inline-block;
margin: 15px 5px;
}

</style></div></div>]]>
        
    </content>
</entry>

<entry>
    <title>今度は段ボールのアイコンを何個か作ってみました</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/cat5/post-19.html" />
    <id>tag:akibahideki.com,2011:/blog//2.445</id>

    <published>2011-08-10T01:00:00Z</published>
    <updated>2011-08-10T04:39:55Z</updated>

    <summary>ビジュアルデザインやってる人なので、ってわけでもないけど続編。前回のエントリーの...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="デザインに困った時" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="人のためのWebデザイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="アイコン" label="アイコン" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ビジュアルデザイン" label="ビジュアルデザイン" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<div><img alt="box_1.png" src="http://akibahideki.com/blog/2011/08/10/box_1.png" width="277" height="262" class="mt-image-none" /></div><div><br /></div><div><br /></div><div>ビジュアルデザインやってる人なので、ってわけでもないけど続編。</div><a href="http://akibahideki.com/blog/cat5/post-18.html">前回のエントリー</a>の続きになるんですが、僕がビジュアルデザインさせてもらった「<a href="http://osaka.cssnite.jp/">CSS Nite in OSAKA</a>」のサイトで使っているアイコン、あれも僕が作ったものなので、使えるかもしれない状態にしておきます。<div>これも前回と同じように、個人、商用関わらず、改変使用もOKなので良かったら使ってください。</div><div><br /></div><div>あと、今更ですが、ブログのfacebookページを作りました。</div><div style="color: red; font-weight:bold;">よかったらいいねしてもらえたら嬉しいなあ、、、いまのとこ3人っ！（笑）</div><div>（右サイドの下にあります）</div>

<div><a href="http://akibahideki.com/blog/assets_c/2011/08/boxes-35.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/08/boxes-35.html','popup','width=900,height=800,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/08/boxes-thumb-740x657-35.png" width="740" height="657" alt="boxes.png" class="mt-image-none" /></a></div>

<div><br /></div><div>ダウンロードは下記からどうぞ</div><div><a href="http://ecoloniq.jp/download_icon/icon_box_etc.zip"><img src="http://akibahideki.com/blog/2011/08/10/zip.png" style="vertical-align: middle;" />http://ecoloniq.jp/download_icon/icon_box_etc.zip</a><br /></div><div><br /></div><div>あと、イーゼルとカレンダーのアイコンも使えるかもしれませんので上記のzipに入れておきました。</div><div>よかったらどうぞ。</div><div><br /></div><div><a href="http://akibahideki.com/blog/assets_c/2011/08/calender_easel-32.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/08/calender_easel-32.html','popup','width=1078,height=333,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/08/calender_easel-thumb-740x228-32.png" width="740" height="228" alt="calender_easel.png" class="mt-image-none" /></a></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>ダウンロードアイコン作ってみました</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/cat5/post-18.html" />
    <id>tag:akibahideki.com,2011:/blog//2.444</id>

    <published>2011-08-04T14:53:08Z</published>
    <updated>2011-08-04T15:09:12Z</updated>

    <summary>そういえば、前、書籍にデザインサンプルを執筆するためだけに作ったアイコンがあって...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="デザインに困った時" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="アイコン" label="アイコン" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<div><a href="http://akibahideki.com/blog/assets_c/2011/08/1480-23.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/08/1480-23.html','popup','width=1480,height=262,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/08/1480-thumb-740x131-23.png" width="740" height="131" alt="1480.png" class="mt-image-none" /></a></div><div><br /></div>そういえば、前、書籍にデザインサンプルを執筆するためだけに作ったアイコンがあって、トレーにダウンロードするようなイメージのアイコン。<div>あれのバージョン違いを作っていたのを思い出しました。</div><div><br /><div>個人でも商用でもライセンスにしばりはなく、改変も自由なので、良かったら使ってください。</div><div>PSDファイルは下記に置いておきます。</div><div><br /></div><div><a href="http://ecoloniq.jp/download_icon/download_icon.zip">http://ecoloniq.jp/download_icon/download_icon.zip</a></div><div><br /></div><div>あと、このテイストのアイコンで、例えば「Ai形式のアイコンほしい」とかあれば作れるかもしれません。</div><div>お気軽にコメントでも残してください。</div></div>]]>
        
    </content>
</entry>

<entry>
    <title>デザイナーズハッカソンで改めてデザイナーとして感じたこと</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/cat5/sharp.html" />
    <id>tag:akibahideki.com,2011:/blog//2.443</id>

    <published>2011-07-25T03:10:09Z</published>
    <updated>2011-07-25T07:58:57Z</updated>

    <summary>東広島にあるSHARPさんの事業所、というか自然に囲まれたビルの一室で行われたA...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="デザインに困った時" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="人のためのWebデザイン" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="android" label="Android" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="デザイン" label="デザイン" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ハッカソン" label="ハッカソン" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<div>東広島にあるSHARPさんの事業所、というか自然に囲まれたビルの一室で行われたAndroidアプリ開発イベント（ハッカソン）に2日間かけて行って参りました。</div><div><br /></div><div>ハッカソンとは開発をされているプログラマーさんが、限られた時間の中でアイデアを出し、アプリを作るイベントなんですが、デザイナーには全く疎遠なイメージがあります。</div><div>（個々がどう思うかはさておき、一般的にそういった意識が多いのは事実です）</div><div><br /></div><div>しかし今回はSHARPさんや運営に携わっている<a href="http://www.brilliantservice.co.jp/">ブリリアントサービス</a>さんのアイデアで、デザイナーもハッカソンに入ってもらい、一緒にアプリを開発してみよう、という試みということで参加させていただきました。</div><div><a href="https://sh-dev.sharp.co.jp/release/">https://sh-dev.sharp.co.jp/release/</a></div><div><br /></div><div>当日朝早く新幹線に乗って東広島駅へ、そこからみんなでタクシーに乗ってSHARPさんの施設に向かったわけですが、空気がうまい。</div><div>ホント、いいところでした。</div><div><br /></div><div>今回は、SHARPさんにはAndroid2011年夏モデル端末も用意していただき、5つのチームにそれぞれ色んな実機が貸し出されました。</div><div><br /></div><div>チームで朝11時30分からアイデア出しを行い、どんなアプリを作るか話し合いが始まりました。</div><div>ただここで重要だったな、と思うのが、「メインとなるテーマを先に決めてしまおう」というところ。</div><div>闇雲にどんなものを作るか考えると、メンバー4人、個々の考えも違うのでなかなかまとまりにくいパターンに陥るケースがよくあります。</div><div><br /></div><div>今回はまず、「夏」というテーマに限定。</div><div><br /></div><div>ここで色々出てきます。</div><div>海、山、キャンプ、水着、クラゲ、スイカ...</div><div><br /></div><div>で、決まったのは、そうめん流し。</div><div>アプリのアイコンはこれ。</div><div><br /></div><div><img alt="icon.png" src="http://akibahideki.com/blog/2011/07/25/icon.png" width="192" height="192" class="mt-image-none" /></div><div><br /></div><div>（流しそうめんという人もいる、ちなみにこちら参照 <a href="http://www.freeml.com/wefree/say/noodles/">http://www.freeml.com/wefree/say/noodles/</a> ）</div><div><br /></div><div>さてさて、ここで面白い実験をしてそうめん流しアプリを作ろうということで、</div><div><br /></div><div>・複数台の端末を縦に並べる。</div><div>・1番目のデバイスをタップしたら、そうめんが流される。</div><div>・2番目のデバイスに1番目のそうめんが流れてくる。</div><div>・3番目のデバイスに2番目で取りそこねたそうめんが流れてくる。</div><div>・3番目で取りそこねたら4番目のデバイスに...</div><div><br /></div><div>といったように、流れてきたそうめんを取る（箸ですくう）ゲームなんですが、</div><div>何台も実機をつなげられる所がポイントで、通信手段はBluetoothを使ったものです。</div><div><br /></div><div><a href="http://akibahideki.com/blog/assets_c/2011/07/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-07-25%2013.19.27%EF%BC%89-19.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/07/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-07-25%2013.19.27%EF%BC%89-19.html','popup','width=787,height=540,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/07/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882011-07-25%2013.19.27%EF%BC%89-thumb-400x274-19.png" width="400" height="274" alt="スクリーンショット（2011-07-25 13.19.27）.png" class="mt-image-none" /></a></div><div><br /></div><div>プログラムの仕組みとしては最初の「親」となる実機の次の「子」が2番目になり、3番目の実機から見れば、2番目の実機が「親」となる認識方法で数珠つなぎが構成されます。</div><div><br /></div><div>そうして、あるデバイスが「最後の子（つまり一番最後）」であると認識したら、画面の下に「受けザル」を表示して、最後でなかったら、そうめんを流す竹を上から下まで表示させるというものです。</div><div><br /></div><div>いきなりですが完成はこちら、動画は英吉さん（@<span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: 'Helvetica Neue', Arial, Helvetica, 'Liberation Sans', FreeSans, sans-serif; font-size: 15px; line-height: 15px; background-color: rgba(0, 132, 180, 0.0898438); "><a class="tweet-screen-name user-profile-link" data-user-id="48726187" href="http://twitter.com/#!/LuckOfWise" title="英吉" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 132, 180) !important; cursor: pointer; font-weight: bold; ">LuckOfWise</a></span>）撮影。</div>



<div><br /></div>


<iframe width="425" height="349" src="http://www.youtube.com/embed/qL1KKI-xoGQ" frameborder="0" allowfullscreen=""></iframe>


<div><br /></div><div>下記の写真は同じメンバー「AndroidSDK開発のレシピ」の著者の@gabuさん提供です。</div><div>【6台つなげてデモした写真】</div><div><a href="http://yfrog.com/gyc6dwqmj">http://yfrog.com/gyc6dwqmj</a></div><div>【ちょっと拡大】</div><div><a href="http://yfrog.com/kgzyoycj">http://yfrog.com/kgzyoycj</a></div><div><br /></div><div>と、思ったら、gabuさんのブログ、その名も「gabuchanの日記」にてそのレポが紹介されています。</div><div><a href="http://d.hatena.ne.jp/gabuchan/20110724">http://d.hatena.ne.jp/gabuchan/20110724</a></div><div><br /></div><div>そんなわけで、USTREAMでもその様子が公開されています、</div><div>下記URLは、制作発表のものです。</div><div>（僕の発表は30:30くらいからです）</div><div><br /></div><div>

<object width="720" height="516" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
  <param name="flashvars" value="vid=16208815&amp;autoplay=false&amp;style=ub234900:lc4E9E00:ocffffff:ucffffff&amp;locale=ja_JP" />
  <param name="allowfullscreen" value="true" />
  <param name="allowscriptaccess" value="always" />
  <param name="src" value="http://www.ustream.tv/flash/viewer.swf" />
  <embed flashvars="vid=16208815&amp;autoplay=false&amp;style=ub234900:lc4E9E00:ocffffff:ucffffff&amp;locale=ja_JP" width="720" height="516" allowfullscreen="true" allowscriptaccess="always" src="http://www.ustream.tv/flash/viewer.swf" type="application/x-shockwave-flash">
</object>
<br /><a href="http://www.ustream.tv/" style="padding: 2px 0px 4px; width: 400px; background: #ffffff; display: block; color: #000000; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;" target="_blank">Video streaming by Ustream</a>

</div><div><br /></div><div>僕が主にチームの発表をスピーチさせていただきました。</div><div>普段はたまにソースコードも書きますが、「今回は一切ソースコードは書かず、デザインに専念します」と宣言した経緯もあって、チーム内、開発者3名、そしてデザイナーは僕1人という構成でした。</div><div><br /></div><div>チーム名が「デラリアル」と言いまして、「デラ」は名古屋弁で「超」とか「すごい」という意味です、つまり「超リアル」。</div><div><br /></div><div>まあ、リアルにそうめんが流れたらいいな、という想い、、、だったんでしょうね。</div><div><br /></div><div>今回はAndroidのキャラクタ、ドロイドくんを、デラリアルにしました。</div><div>スタートアップの画面で活き活きとしたイメージの実写版（？）ドロイドくんが一生懸命そうめんをすくっている印象を与えたかったので。</div><div>（gabuさんのブログに画像が載ってます。）</div><div>そんな楽しくワクワクさせるデザインというのは、とても大事です。</div><div><br /></div>


<h2>開発にとってデザイナーの必要性</h2>

<div>アプリはデザインによって売れ行きが変わるということは、色々とアプリを作られた方から聞きます。</div><div>僕の周りにはWebデザイナーというデザイナー職の方が多いのですが、どうもこういったデザインの目的には着目されにくいな、と感じています。</div><div><br /></div><div>人間中心としたWebサイトの設計、ユーザエクスペリエンスなど、セミナーでは色々取り上げられます。</div><div>それはとても大事なのですが、アプリの開発という分野のみならず、デザインで人を「おおっ」と驚かせることが必要な場面だってあるわけだし、そこにはアナログな感性（アナログという言葉は正確ではないにせよ、そこは汲みとってください）が要求されるものだから、自分の感覚をとんがらせておかないとダメだと思うのです。</div><div><br /></div><div>そういった表現で人の心を動かせるデザインが売上につながるのであれば、そこにその場面においては全力を注げるデザイナーでありたい、だってそれで僕はお金をもらって仕事してるわけだし。</div><div><br /></div>

<h2>あくまでデザインは人に評価される、機械と仕事をしてるわけじゃない</h2>
<div>
<figure style="display: block; width:200px; float:left; margin: 0 20px 0 0;">

<a href="http://akibahideki.com/blog/assets_c/2011/07/startup_screen-15.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/07/startup_screen-15.html','popup','width=480,height=800,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/07/startup_screen-thumb-200x333-15.png" width="200" height="333" alt="自分で作ったスタートアップの画面" class="mt-image-none" style="" /></a>

<figcaption style="text-align: left; margin: 0 20px 0 0; font-size: 12px; padding: 10px 0; font-weight: bold; color: #ff3300;">
アプリのスタートアップの画面は、購入を考えているユーザへの大きなアピール（勝負）の場。<br />
ドロイドくんがそうめんを一生懸命つかんで食べてやるぜ！というサマを演出したく、デザインにとりかかりました。
</figcaption>
</figure>

<div>概ねデザインは好評をいただきました。
<br />今回、実はこだわった目的は「リアル」ではなく、ただひとつ、それは、、、<br />
<br />
「これを見た人が有料でも買いたくなるアイコンとスタートアップのデザイン」
<br /><br />
今回はこれにつきます。
<br />
つまり、デザインに理論づける人はいるし、それは分かるけどもっと大事なことは、自分が客観的目線で見て、そのデザインで人を引きつけられる感性を養って、表現するチカラがあるか？ということ。
<br /><br />
その判断力と表現力は理論では片付けられない。
<br />
なぜなら今までの経験で案件ごと内容は全く違う、そのプロセス数は無限大でした。<br />
これは20年間デザインという仕事をやって、ようやく今になってなんとなくわかりつつあります。<br /><br />
もちろん、自分に自信があって言ってるわけではありません。
<br />
本当に売れているアプリやインターフェイスのデザインを見ると、自分のは、まだまだ作っては疑い、作っては疑い、の繰り返しだと思ってやみません。
<br />
自分のチカラというのは、いつになっても色んな意味で完成しません。<br />
常にまだまだな状態だな、ということを改めて気づきました。
</div>

<div style="clear:both;"><br /></div><div>さて、まとめ。</div><div><br /></div><div>ハッカソンですが、名前の印象からどうしても僕らデザイナーさんは敬遠しがちです。</div><div>そういう意味では大変意義のあるイベントだったと思います。</div><div>開発者の方とのやり取りが学べるいい機会だったわけですが、いざ始まると時間が足りず、自分の作業だけで精一杯なことがあります。</div><div><br /></div><div>これは「一日でマスターできる◯◯講座」とかあるけど、僕から言わせたら「一日でマスターできる講座なんてあるわけがない！」というのと一緒。</div><div>デザインは一日にしてならず、なんです。</div><div>デザイナーとデベロッパーのフローをどうやって理解するか、これは何回でも積み重ね、可能な限り参加して経験していくことで、徐々に「こういったケースだとこうしよう」がわかってくるもの。</div><div><br /></div><div>例えばアイデアに対し、自分の出せる引き出しの少なさが原因じゃなかったか？</div><div>デザインのトライアンドエラーを繰り返す際、仕方がない（やってみないと本当にわからない）ケースと、事前に察知して余計なトライは回避できるケースもあると考えています。</div><div>両方ともとっさの判断が要求されるとき、人は経験によって乗り越えられる場合と無駄足を踏んでしまう場合があります。</div><div><br /></div><div>僕はこの仕事を20年やってきた今でもデザイナーとしてのエラーを経験して、少しでも効率の良いワークフローを実現できるようになりたいと考えています。</div><div>（効率、というのは、よくあるツールに頼るとかそんなのではありません、もっと自分の脳を鍛えるという意味が近いです。）</div><div><br /></div><div>色々と今の自分の実力を再認識できた2日間でした、</div><div>SHARPの方、Androidの会の方、参加されたみなさん、勉強になりました。</div><div>ありがとうございました！！</div><div><br /></div><div><br /></div> </div>]]>
        
    </content>
</entry>

<entry>
    <title>Macの「Font Book」更新時、Adobe製品で反映されない時の対処</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/cat5/macfont-bookadobe.html" />
    <id>tag:akibahideki.com,2011:/blog//2.442</id>

    <published>2011-07-19T13:03:13Z</published>
    <updated>2011-07-19T14:11:41Z</updated>

    <summary>FONTWORKSの「フォントワークス LETS」を購入しました。複数台のマシン...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="デザインに困った時" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="adobe" label="Adobe" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="font" label="Font" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mac" label="Mac" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<div><img alt="fontworks_lets.jpg" src="http://akibahideki.com/blog/2011/07/19/fontworks_lets.jpg" width="400" height="300" class="mt-image-none" style="" /></div><div><br /></div>FONTWORKSの「フォントワークス LETS」を購入しました。<div><meta charset="utf-8">複数台のマシンにフォントをインストールする時、ライセンスとしては1台に1ライセンスなことがあるので購入したのです。<br /><div><br /><div>そのとき「あれ？」と気づいたこと。</div><div><br /></div><div>フォントの使用／不使用を管理しているアプリケーション「Font Book」でも使用の状態なのですが、IllustratorとPhotoshop上では、新しく購入して正規にインストールしたはずのフォントが全く出てこなかったんです。</div><div><br /></div><div>新しいフォントが出ないのは非常に残念ですよね、おかしいのはAdobe製品だけ。</div></div><div>他のアプリケーションでは、ちゃんと新しくインストールしたフォントが表示されて使えます。</div><div><br /></div><div>どうやら、Adobe製品はフォントリストを独自にキャッシュしているようです。</div><div>つまり、起動を早めるとか何かの理由で、別ファイルにて、今使っている使用フォントリストのファイルが存在します。</div><div>これを削除することで、初めてAdobe製品では新しいフォントが表示され、使えるようになる、というケースは間違いなく存在します。</div><div>このあたりAdobe製品はやっかいです、対処方法は広く知れ渡ってないはずです。</div><div><br /></div><div>フォントってそう滅多に購入することもないので、知ってないとちょっとパニックですね。</div><div><br /></div><div>削除するファイルは</div><div>/Library/Application Support/Adobe/TypeSpt/</div><div>の中にある「AdobeFnt.lst」と「AdobeFnt○○.lst」（○○は数字）を捨てます。</div><div><br /></div><div><a href="http://akibahideki.com/blog/assets_c/2011/07/AdobeFnt-11.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/07/AdobeFnt-11.html','popup','width=1292,height=433,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/07/AdobeFnt-thumb-740x248-11.jpg" width="740" height="248" alt="AdobeFnt.jpg" class="mt-image-none" style="" /></a></div><div><br /></div><div>そうしたら一度システムごと再起動しましょう。アプリケーションを再起動したって無駄のようです。</div><div><br /></div><div>僕のMacでは、システム再起動後、Illustratorを立ち上げたら、めちゃくちゃフォントが少なくなってビックリしましたが、</div><div>その後Illustratorがクラッシュしました。</div><div>ああ、こりゃだめだ、と思ってもう一度Illustratorを立ち上げたら何とビックリ、今度は成功。</div><div>しっかりフォントのリストに新しくインストールしたフォントが連なってました、よかった。</div><div><br /></div><div>下図のフォントはロダン、初めてDTPやり始めた1990年位からお世話になってるフォント。</div><div>変な主張の少ないところが、新ゴシックよりちょっと好きかも。</div><div><br /></div><div><a href="http://akibahideki.com/blog/assets_c/2011/07/rodin-8.html" onclick="window.open('http://akibahideki.com/blog/assets_c/2011/07/rodin-8.html','popup','width=838,height=285,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://akibahideki.com/blog/assets_c/2011/07/rodin-thumb-740x251-8.jpg" width="740" height="251" alt="rodin.jpg" class="mt-image-none" style="" /></a></div><div><br /></div><div><br /></div></div>]]>
        
    </content>
</entry>

<entry>
    <title>画像をモノクロ変化するjquery.monochromer.jsをアップデート</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/html5-canvas-1/jqueryjquerymonochromerjs-1.html" />
    <id>tag:akibahideki.com,2011:/blog//2.441</id>

    <published>2011-07-16T09:33:29Z</published>
    <updated>2011-07-25T03:05:01Z</updated>

    <summary> 以前ブログにも書きましたjQuery用のプラグイン、jquery.monoch...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="HTML+CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="HTML5 canvas学習" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="canvas" label="canvas" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="html5" label="html5" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jquery" label="jQuery" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[

<p>以前ブログにも書きましたjQuery用のプラグイン、<a href="http://www.akibahideki.com/blog/html5-canvas/monochromerjs.html" target="_blank">jquery.monochromer.js</a>ですが、ある件でこのプラグインを紹介してくださるらしく、ちょっと改良しました。</p>

<p>
<figure><img src="http://akibahideki.com/blog/2011/07/16/monosite.png" alt="&lt;img&gt;画像マウスオーバーでモノクローム変化するjQueryプラグイン「jquery.monochromer.js」" width="610" /></figure></p>

<p><a href="http://ecoloniq.jp/monochromer/">色を指定できるデモとソースのダウンロードはこちらでお願いします。</a></p>

<p>どういったものかというと、img要素にこれを適用すると画像がモノクロになるというものです。<br />
適用方法は簡単で、jQueryを読み込んだ後このプラグインを設置し、指定するだけです。</p>

<div class="demo01">
	<img src="http://akibahideki.com/blog/2011/07/16/fb_book.jpg" alt="facebookプロフェッショナルガイド" />
	<p>一番シンプルなカタチ。<br />
monochromerをデフォルトの状態で与えてください。<br />
img要素がグレースケール化します。<br /><strong style="color: red;">本の画像にマウスを乗せるとカラーになります。</strong><br />
<br />

<em style="font-size: 12px; font-style: normal;">今回はイヤラシく、僕も執筆に参加した宣伝も兼ねて「<a href="http://www.amazon.co.jp/dp/4839938601" target="_blank">Facebookページ　プロフェッショナルガイド</a>」のサムネイルを使います、ゴメンナサイ。</em>
</p>
	<code data-code="JavaScript">
		$(".demo01 img").monochromer(); </code>
</div>

<p>改良点ですが、HTML5のcanvasを使っています。<br />
IE8までは、「なにもしないプラグイン」というように、内部でブラウザ判定をしてます。<br />
つまりIE6などでは、画像が表示されるだけなので、必要最低限の表示は出来ます。<br />
新しいブラウザは機能が増え、古いブラウザはそのままで、、という感じでしょうか？</p>


<div class="demo02">
	<img src="/blog/2011/07/16/fb_book.jpg" alt="facebookプロフェッショナルガイド" />
	<p>今度はカラーを指定します。<br />monochromerのcolorパラメータに、16進数のCSSカラー値を指定します。<br />この例は#f00、もちろん#ff0000でもOKです。
</p>
	<code data-code="HTML">
		$(".demo02 img").monochromer({color: "#f00"}); </code>
</div>

<div class="demo03">
	<img src="/blog/2011/07/16/fb_book.jpg" alt="facebookプロフェッショナルガイド" />
	<p>しかし、いきなりページが表示されて画像がモノクロになるとおかしいですね。<br />
	通常はカラーのまま、マウスオーバーでモノクロ、という流れにしたいときには、typeパラメータを"false"にしたらOKです。
</p>
	<code data-code="HTML">
		$(".demo03 img").monochromer({color: "#f00", type: false}); </code>
</div>

<div class="demo04">
	<ul>
		<li><img src="http://akibahideki.com/blog/2011/07/16/fb_book.jpg" alt="facebookプロフェッショナルガイド" /></li>
		<li><img src="http://akibahideki.com/blog/2011/07/16/fb_book.jpg" alt="facebookプロフェッショナルガイド" /></li>
	</ul>
	<p>今度は二つ並べました。<br />こういったレイアウトをするときは、imgに親要素で囲ってください。<br />
今回はli要素で囲み、liをfloat: leftしてます。<br />
monochromerの指定はcolorパラメータに"sepia"と"blue"を指定しました。
</p>
	<code data-code="HTML">
		$(".demo04 li:first-child img").monochromer({color: "sepia", type: false});<br />
$(".demo04 li:nth-of-type(2) img").monochromer({color: "blue", type: false}); </code>
</div>

<div class="demo05">
	<ul>
		<li><img src="http://akibahideki.com/blog/2011/07/16/fb_book.jpg" alt="facebookプロフェッショナルガイド" /></li>
		<li><img src="http://akibahideki.com/blog/2011/07/16/fb_book.jpg" alt="facebookプロフェッショナルガイド" /></li>
	</ul>
	<p>ここでaタグを付けないと指マークにならないのですが、Webアプリケーションを制作していると、どうしてもa要素ナシでマウスを指マークにしたいことがあったとしましょう。<br />
この時、実はプラグインの内部的な都合で、CSSでimgに「cursor: pointer;」としても指マークにならないので、パラメータをひとつ追加しました。<br />
それがCSSのcursorプロパティの名前、そのもので、以下のように追記します。<br />
これでマウスを乗せてください、マウスの形が変わると思います。</p>
	<code data-code="HTML">
		$(".demo05 li:first-child img").monochromer({color: "sepia", type: false, cursor: "pointer"});<br />
$(".demo05 li:nth-of-type(2) img").monochromer({color: "blue", type: false, cursor: "crosshair"}); </code>
</div>

<h2>実はcanvas要素を生成して、span要素でラップ</h2>

<p><img src="/blog/2011/07/16/dom.png" alt="span.monochrome-wrapのDOM構造" /></p>

<p>内部的にcanvas要素を生成して、img要素のピクセルをcanvasに取り込み、変色させています。<br />img要素とcanvas要素はCSSのpositionで重ねて、その親にspan.monochrome-wrapという要素を生成しています。</p>

<p>レイアウトをするとき、img要素にmarginとpaddingとborderとfloatを指定すると、span.monochrome-wrapに適用します。<br />
しかし他のCSS設定は無視されますので、例えばtransformとかで、マウスオーバーでscaleによって大きくしたり、とかが出来ません。<br />
なので、内部的に生成されたspan.monochrome-wrapに対してCSSを当てるといいです、以下のようなCSS設定でマウスを載せると大きく見せられます。
</p>

<div class="demo06">
	<img src="/blog/2011/07/16/fb_book.jpg" alt="facebookプロフェッショナルガイド" />
	
	<code data-code="HTML">
		.demo06 span.monochrome-wrap {<br />
		-webkit-transition: .3s;<br />
		}<br />
<br />
		.demo06 span.monochrome-wrap:hover {<br />
		-webkit-transform: scale(1.2);<br />
		} </code>
</div>

<p>将来的には、img要素に指定したCSSプロパティを全部span.monochrome-wrapに適用させたいところ。<br />
実は試したのですが、クロスブラウザの作業でどうしてもうまくいきませんでした。<br />
ぜひ改良したいなあ、と思います。</p>

<p>あと大事なことなんですが、canvasの仕様でドメインの違う画像のピクセルを操作することは出来ないことに鳴っているようです。なので、同じドメイン内の画像だけにおいて使うとよいでしょう。</p>
<style type="text/css" media="screen">
	.demo01 img {
		float: left;
		margin: 0 15px 10px 0;
	}
	.demo02 img {
		float: right;
		margin: 0 0 10px 10px;
	}
	
	.demo03 img {
		float: left;
		margin: 0 10px 10px 0;
	}
	
	.demo04 ul,.demo05 ul {
		margin: 0;
		padding: 0;
		list-style: none;
	}
	
	.demo04 li,.demo05 li {
		margin: 0 10px 0 0;
		float: left;
	}
	
	.demo06 img {
		float: left;
		margin: 0 15px 0 0;
	}
	
	.demo06 span.monochrome-wrap {
		-webkit-transition: .3s;
		-moz-transition: .3s;
		-ms-transition: .3s;
		-o-transition: .3s;
		transition: .3s;
	}
	
	.demo06 span.monochrome-wrap:hover {
		-webkit-transform: scale(1.2);
		-moz-transform: scale(1.2);
		-ms-transform: scale(1.2);
		-o-transform: scale(1.2);
		transform: scale(1.2);
	}
	
	#entry div {
		margin-bottom: 35px;
	}
	
	#entry div:after,.demo04 ul:after,.demo05 ul:after {
		display: block;
		content: "";
		clear: both;
		height: 0;
	}
	
</style>

<script type="text/javascript" src="http://ecoloniq.jp/monochromer/js/jquery.monochromer-1.1.min.js"></script>
<script type="text/javascript">
jQuery(function ($) {
	$(".demo01 img").monochromer();
	$(".demo02 img").monochromer({color: "#f00"});
	$(".demo03 img").monochromer({color: "#f00", type: false});
	$(".demo04 li:first-child img").monochromer({color: "sepia", type: false});
	$(".demo04 li:nth-of-type(2) img").monochromer({color: "blue", type: false});
	$(".demo05 li:first-child img").monochromer({color: "sepia", type: false, cursor: "pointer"});
	$(".demo05 li:nth-of-type(2) img").monochromer({color: "blue", type: false, cursor: "crosshair"});
	$(".demo06 img").monochromer();
})
</script>]]>
        
    </content>
</entry>

<entry>
    <title>やっぱりIE9でもキャッシュ有効時のimg要素はonloadを無視する件</title>
    <link rel="alternate" type="text/html" href="http://akibahideki.com/blog/htmlcss/ie9onload.html" />
    <id>tag:akibahideki.com,2011:/blog//2.439</id>

    <published>2011-07-14T16:27:57Z</published>
    <updated>2011-07-14T16:42:15Z</updated>

    <summary> 今さら書くことでもないのですが、IE6〜8に引き続き、IE9でも同じような仕様...</summary>
    <author>
        <name>秋葉秀樹</name>
        
    </author>
    
        <category term="HTML+CSS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="HTML5 canvas学習" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="internetexplorer" label="Internet Explorer" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="JavaScript" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://akibahideki.com/blog/">
        <![CDATA[<img alt="ie9.png" src="http://akibahideki.com/blog/2011/07/15/ie9.png" width="242" height="226" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" />

<div>今さら書くことでもないのですが、IE6〜8に引き続き、IE9でも同じような仕様なので、自分用にメモ。</div><div><br /></div><div>JavaScriptで画像（&lt;img&gt;）の読み込みの完了を待ってから処理を実行する時に、キャッシュ対策としてよくやってる</div><div><br /></div>

<code data-code="JavaScript">
<div>var img = $(this); // &lt;img&gt;を指す</div><div>img.src = 画像のパス + "?" + new Date().getTime();</div><div>img.onload = function () { //読み込み完了後の処理</div>
</code>

<div><br /></div><div>でもでも、、今回はちょっと違うケースで、</div><div>もう既にHTMLに書かれている以下のようなimg要素のロード完了を待つ場合、src属性の値はもう決まっているから、キャッシュ対策っていうものでもないのです。</div><div><br /></div>

<code data-code="HTML">
<div>&lt;img src="image01.jpg" alt&gt;</div>
</code>

<div><br /></div>
<div>IE9の場合では、もう既に画像がキャッシュによって読み込みが完了している場合、</div><div>onloadイベントハンドラを実行しないでスルーしちゃうので、読み込み後の処理が全くされない状態でした。</div><div><br /></div><div>ただしこれはIEだけの問題で他のブラウザは素直に処理してくれるので、</div><div>ブラウザ判定をして、「IEで見てる、なおかつ、画像の幅が0ではない」事を条件として、ロード完了後の処理を行う、</div><div>さもなくば、他のブラウザと同様の処理としてonloadを使って、読み込み完了を待つ、という処理で対応してみる。</div><div><br /></div>

<code data-code="JavaScript">
<div>//jQuery使用です</div><div>var img = $(this); // &lt;img&gt;を指す</div><div>var ua = $.browser;</div><div>if(ua.msie &amp;&amp; img.width() !=0) {</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>imageLoaded();</div><div>}else{</div><div><span class="Apple-tab-span" style="white-space:pre">	</span>img.load(imageLoaded);</div><div>}</div><div><span class="Apple-tab-span" style="white-space:pre">			</span></div><div>function imageLoaded (){ //読み込み完了後の処理</div>
</code>

<div><br /></div><div>画像が読み込まれないと、後で処理などをするときに困るので、</div><div>画像読み込みとIE9仕様の対策はこれから要るのかな？と。</div> ]]>
        
    </content>
</entry>

</feed>

