<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TheDesignium</title>
	<atom:link href="http://www.thedesignium.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.thedesignium.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 14 Jul 2010 02:16:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>iPadアプリ「Twin Striker」をリリース</title>
		<link>http://www.thedesignium.com/news/1956</link>
		<comments>http://www.thedesignium.com/news/1956#comments</comments>
		<pubDate>Mon, 05 Jul 2010 10:37:41 +0000</pubDate>
		<dc:creator>hata</dc:creator>
				<category><![CDATA[OFFICIAL NEWS]]></category>
		<category><![CDATA[corona]]></category>
		<category><![CDATA[lab]]></category>
		<category><![CDATA[socolab]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1956</guid>
		<description><![CDATA[株式会社デザイニウムは、2010年7月1日にiPad向けアプリケーション「TWIN STRIKER &#8220;FOOT-PIN-BALL&#8221;」をApp Storeにリリースしました。


「TWIN STR [...]]]></description>
			<content:encoded><![CDATA[<p>株式会社デザイニウムは、2010年7月1日にiPad向けアプリケーション「TWIN STRIKER &#8220;FOOT-PIN-BALL&#8221;」をApp Storeにリリースしました。</p>
<p><center><br />
<img src="http://www.thedesignium.com/wp-content/uploads/2010/07/icon.png" alt="" title="icon" width="400" height="400" class="aligncenter size-full wp-image-1957" /></center></p>
<p>「TWIN STRIKER “FOOT-PIN-BALL”」は新感覚の対戦型サッカー&#038;ピンボールゲームです。4つの国から攻守共に性能に差があるキャラクターとボールの速さが変わるステージを選択したら、あとはLボタンとRボタンでバーを動かし、飛んできたボールを跳ね返すだけ。1台のiPadで2人でプレイして盛り上がれます。iPhone版に比べて画面サイズの大きいiPadはTwin Strikerの臨場感をより楽しめます。</p>
<p>「TWIN STRIKER “FOOT-PIN-BALL”」は、米Ansca社の提供するCorona SDKを使用し、AndroidやiPhoneなど複数プラットフォームで同一ソースからの移植により、手間の少ないアプリケーション開発を実現しました。</p>
<p>＜動作環境＞<br />
動作環境：iPhone 3GS/iPhone4<br />
機能：マルチタッチ対応、同時タップ可</p>
<p>＜ダウンロード＞<br />
AppStoreからダウンロードできます（価格：115円）。PCまたはiPhoneからAppStore上で「Twin Striker」で検索、または直接以下のURLへアクセスしてください。</p>
<p><a href="http://itunes.apple.com/jp/app/twin-striker-foot-pin-ball/id378483340?mt=8" target="_blank">http://itunes.apple.com/jp/app/twin-striker-foot-pin-ball/id378483340?mt=8</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/news/1956/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>APODEAからの！</title>
		<link>http://www.thedesignium.com/private/1944</link>
		<comments>http://www.thedesignium.com/private/1944#comments</comments>
		<pubDate>Mon, 14 Jun 2010 09:48:00 +0000</pubDate>
		<dc:creator>oikawa</dc:creator>
				<category><![CDATA[OUR PRIVATE]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1944</guid>
		<description><![CDATA[お世話になります。デザイニウムの及川です。
APODEAのサイトにてご一緒させていただいております桜庭様に、新しいパンフレットを一部お送りいただきたいですとお願いしてみたところ、なんと！新製品のシャンプー&#38;コンデ [...]]]></description>
			<content:encoded><![CDATA[<p>お世話になります。デザイニウムの及川です。<br />
APODEAのサイトにてご一緒させていただいております<a href="http://www.ciaorganica.jp/about_ugb.html" target="_blank">桜庭様</a>に、新しいパンフレットを一部お送りいただきたいですとお願いしてみたところ、なんと！新製品の<strong>シャンプー&amp;コンディショナー</strong>までお送りしていただきました！！<br />
本当にお手数をお掛けして申し訳ありません！パンフレットをお送りいただいただけでもありがたいことですのに、なんというか、もう感謝の気持ちでいっぱいです！</p>
<p><img src="http://www.thedesignium.com/wp-content/uploads/2010/06/apodea0614.jpg" alt="" class="alignnone size-full wp-image-1945" /></p>
<p>桜庭様、アポディア様、この場を借りてお礼申し上げます。</p>
<p>なおこのテキストベースできれいに組まれたパンフレットは、APODEAの公式オンラインショップにてプレゼントしてくださるようです。<br />
各メディアで取り上げられているアポディア製品、皆さんも是非ご覧いただいてはどうでしょうか。<br />
<span  class="large"><strong>LINK: </strong><a href="http://www.apodea-online.jp/" target="_blank">APODEA Official Online Shop</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/private/1944/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Androidアプリ「TWIN STRIKER for Free」</title>
		<link>http://www.thedesignium.com/news/1940</link>
		<comments>http://www.thedesignium.com/news/1940#comments</comments>
		<pubDate>Thu, 10 Jun 2010 11:30:08 +0000</pubDate>
		<dc:creator>hata</dc:creator>
				<category><![CDATA[OFFICIAL NEWS]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1940</guid>
		<description><![CDATA[株式会社デザイニウムは、2010年6月4日にAndroid端末向けアプリケーション「TWIN STRIKER for Free」をAndroid Marketにリリースしました。

「TWIN STRIKER “FOOT [...]]]></description>
			<content:encoded><![CDATA[<p>株式会社デザイニウムは、2010年6月4日にAndroid端末向けアプリケーション「TWIN STRIKER for Free」をAndroid Marketにリリースしました。</p>
<p><center><img src="http://www.thedesignium.com/wp-content/uploads/2010/06/twin11.png" alt="" title="twin1" width="660" height="334" class="aligncenter size-full wp-image-1941" /></center></p>
<p>「TWIN STRIKER “FOOT-PIN-BALL”」は新感覚の対戦型サッカー&#038;ピンボールゲームです。<br />
無料版では機能が制限されており、2つの国(有料版は4つの国)から攻守共に性能に差があるキャラクターを選択し(有料版ではボールの速さが変わるステージを3つの中から選択可能)、あとはLボタンとRボタンでバーを動かし、飛んできたボールを跳ね返すだけ。1台のAndroid端末で2人でプレイして盛り上がれます。</p>
<p>また、「TWIN STRIKER “FOOT-PIN-BALL”」は、米Ansca社の提供するCorona SDKを使用し、AndroidやiPhoneなど複数プラットフォームで同一ソースからの移植により、手間の少ないアプリケーション開発を実現しました。</p>
<p>現在、iPadアプリも準備中です。</p>
<p>□Official Page URL<br />
<a href="http://www.thedesignium.com/TWIN/" target="_blank">http://www.thedesignium.com/TWIN/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/news/1940/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>映画「Re:Play-Girls &#124; リプレイガールズ」</title>
		<link>http://www.thedesignium.com/private/1938</link>
		<comments>http://www.thedesignium.com/private/1938#comments</comments>
		<pubDate>Sun, 06 Jun 2010 04:23:34 +0000</pubDate>
		<dc:creator>hata</dc:creator>
				<category><![CDATA[OUR PRIVATE]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1938</guid>
		<description><![CDATA[秦です。
宣伝です。
学生時代の友人が監督&#038;脚本を努めた映画「Re:Play-Girls &#124; リプレイガールズ」が今夏に公開されます。
まだ情報が公開されていないようですが、オフィシャルサイトにトレイラーがあり [...]]]></description>
			<content:encoded><![CDATA[<p>秦です。</p>
<p>宣伝です。<br />
学生時代の友人が監督&#038;脚本を努めた映画「Re:Play-Girls | リプレイガールズ」が今夏に公開されます。</p>
<p>まだ情報が公開されていないようですが、オフィシャルサイトにトレイラーがありますので見て下さい!<br />
結構良い感じに仕上がってるようです。</p>
<p><a href="http://rpg-movie.jp/" target="_blank">「Re:Play-Girls | リプレイガールズ」</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/private/1938/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Css AwardsのSite of the Dayに選ばれました</title>
		<link>http://www.thedesignium.com/work/1934</link>
		<comments>http://www.thedesignium.com/work/1934#comments</comments>
		<pubDate>Sun, 06 Jun 2010 04:13:57 +0000</pubDate>
		<dc:creator>hata</dc:creator>
				<category><![CDATA[AT WORK]]></category>
		<category><![CDATA[lab]]></category>
		<category><![CDATA[socolab]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1934</guid>
		<description><![CDATA[世界中のCSSを生かしたウェブサイトから優れたサイトを毎日選出しているThe Css Awardsにおいて、弊社オフィシャルサイトが5/31のSite of the Dayに選ばれました!
The Designium &#038; [...]]]></description>
			<content:encoded><![CDATA[<p>世界中のCSSを生かしたウェブサイトから優れたサイトを毎日選出しているThe Css Awardsにおいて、弊社オフィシャルサイトが5/31のSite of the Dayに選ばれました!</p>
<p><a href="http://www.thecssawards.com/the-designium.html" target="_blank">The Designium &#8211; Design | The Css Awards</a></p>
<p><center><br />
<img src="http://www.thedesignium.com/wp-content/uploads/2010/06/CssAwards.png" alt="" title="CssAwards" width="762" height="592" class="aligncenter size-full wp-image-1935" /></center></p>
<p>評価を見るとCreativityは高評価でしたが、Usabilityに難があると低評価でした。</p>
<p>デザイニウムではオフィシャルサイトは実験対象と位置づけ、UIに関する様々な試みを行っていますので、このように評価頂くことは大変嬉しく励みになります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/work/1934/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhoneアプリ「TWIN STRIKER」をリリース!</title>
		<link>http://www.thedesignium.com/news/1923</link>
		<comments>http://www.thedesignium.com/news/1923#comments</comments>
		<pubDate>Sun, 06 Jun 2010 04:04:41 +0000</pubDate>
		<dc:creator>hata</dc:creator>
				<category><![CDATA[OFFICIAL NEWS]]></category>
		<category><![CDATA[corona]]></category>
		<category><![CDATA[lab]]></category>
		<category><![CDATA[socolab]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1923</guid>
		<description><![CDATA[株式会社デザイニウムでは、Android版を先行リリースしていた「TWIN STRIKER &#8220;FOOT-PIN-BALL&#8221;」のiPhoneアプリをAppStoreにリリースいたしました。
「TWI [...]]]></description>
			<content:encoded><![CDATA[<p>株式会社デザイニウムでは、Android版を先行リリースしていた「TWIN STRIKER &#8220;FOOT-PIN-BALL&#8221;」のiPhoneアプリをAppStoreにリリースいたしました。</p>
<p>「TWIN STRIKER “FOOT-PIN-BALL”」は新感覚の対戦型サッカー&#038;ピンボールゲームです。4つの国から攻守共に性能に差があるキャラクターとボールの速さが変わるステージを選択したら、あとはLボタンとRボタンでバーを動かし、飛んできたボールを跳ね返すだけ。1台のAndroid端末で2人でプレイして盛り上がれます。</p>
<p>また、「TWIN STRIKER “FOOT-PIN-BALL”」は、米Ansca社の提供するCorona SDKを使用し、AndroidやiPhoneなど複数プラットフォームで同一ソースからの移植により、手間の少ないアプリケーション開発を実現しました。</p>
<p>現在iPadアプリも準備中です。</p>
<p>＜動作環境＞<br />
動作環境：iPhone 3GS<a href='http://www.youtube.com/watch?v=xhTTsY5bhL0&#038;feature=player_embedded' >Twin Striker on YouTube</a><br />
機能：マルチタッチ対応、同時タップ可</p>
<p>＜ダウンロード＞<br />
AppStoreからダウンロードできます（価格：115円）。PCまたはiPhoneからAppStore上で「Twin Striker」で検索、または直接以下のURLへアクセスしてください。<br />
<a href="http://itunes.apple.com/jp/app/twin-striker/id375054728" target="_blank">http://itunes.apple.com/jp/app/twin-striker/id375054728</a></p>
<p><center><img src="http://www.thedesignium.com/wp-content/uploads/2010/06/twin1.png" alt="" title="twin" width="660" height="334" class="aligncenter size-full wp-image-1927" /></p>
<p>    <object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/xhTTsY5bhL0&#038;hl=ja_JP&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/xhTTsY5bhL0&#038;hl=ja_JP&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/news/1923/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>each関数を使ったテキスト上下中央揃え</title>
		<link>http://www.thedesignium.com/work/1910</link>
		<comments>http://www.thedesignium.com/work/1910#comments</comments>
		<pubDate>Fri, 04 Jun 2010 09:11:13 +0000</pubDate>
		<dc:creator>oikawa</dc:creator>
				<category><![CDATA[AT WORK]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[lab]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1910</guid>
		<description><![CDATA[お世話になります。デザイニウムの及川です。
今回はmootoolsのeach関数を使ったDOM操作のサンプルを紹介したいと思います。
&#160;
[JS]each関数で上下中央揃えにするサンプル

var dsn =  [...]]]></description>
			<content:encoded><![CDATA[<p>お世話になります。デザイニウムの及川です。<br />
今回はmootoolsの<a href="http://mootools.net/docs/core/Native/Array" target="_blank">each関数</a>を使ったDOM操作のサンプルを紹介したいと思います。</p>
<div class="dashed">&nbsp;</div>
<p><span class="large"><strong>[JS]each関数で上下中央揃えにするサンプル</strong></span></p>
<pre>
var dsn = {
  init: function() {
  },
  dominit: function() {
    this.setFunc();
  },
  setFunc: function() {
    //class"strblock"を持った全ての要素の高さから位置を決めます
    <span class="text-blue">$$('.strblock').each(function(block) {</span>
      //この要素の高さと親要素の高さを求める
      var hs = block.getHeight();
      var phs = block<span class="text-brown">.getParent()</span>.getHeight();
      var blockPos = ((phs - hs)/2).toInt();
      block.setStyle('margin-top', blockPos);
    <span class="text-blue">});</span>
  }
}

window.addEvent('domready', function(){ dsn.dominit() });
window.onresize = function() {};
window.onload = function() { dsn.init(); };
</pre>
<p>上記サンプルを使ったデモ： <a href="http://www.thedesignium.com/sample/each/" target="_blank">http://www.thedesignium.com/sample/each/</a><br />
関連リンク: <a href="http://mootools.net/docs/core/Native/Array" target="_blank">MooTools Docs &#8211; Native/Array</a></p>
<p>個人的にTable要素でのコーディングが主流でなくなってから、一番困っていた「上下中央揃え」を題材としてみました。<br />
<span class="small"><span class="text-red">※</span>CSSでの中央揃えについては、すでに<a href="http://blog.webcreativepark.net/2007/01/11-214707.html" target="_blank">to-R</a>さんと<a href="http://www.yomotsu.net/wp/?p=387" target="_blank">ヨモツネット</a>さんのところでご紹介されていますので詳しくはそちらをご覧ください。</span></p>
<p>あとはテキストサイズの変更を自動で検知してくれる<a href="http://www.alistapart.com/articles/fontresizing" target="_blank">textresizedetector.js</a>を併用すれば完璧になると思いますたぶん。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/work/1910/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>オフィシャルサイトで使う予定だった技術</title>
		<link>http://www.thedesignium.com/work/1888</link>
		<comments>http://www.thedesignium.com/work/1888#comments</comments>
		<pubDate>Mon, 31 May 2010 11:34:16 +0000</pubDate>
		<dc:creator>oikawa</dc:creator>
				<category><![CDATA[AT WORK]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[lab]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1888</guid>
		<description><![CDATA[お世話になります。デザイニウムの及川です。
今回はオフィシャルサイトで使う予定だった並列リクエスト処理のサンプルを紹介したいと思います。
&#160;
Mootoolsを使ったリクエスト処理


var dsn = {
 [...]]]></description>
			<content:encoded><![CDATA[<p>お世話になります。デザイニウムの及川です。<br />
今回はオフィシャルサイトで使う予定だった並列リクエスト処理のサンプルを紹介したいと思います。</p>
<div class="dashed">&nbsp;</div>
<p><span class="large"><strong>Mootoolsを使ったリクエスト処理</strong></span></p>
<pre>

var dsn = {
  init: function() {
    this.requestFunc();
  },
  dominit: function() {
  },
  requestFunc: function() {
    var error = 0;
    var xhrs = [
      new Request.HTML({url: 'http://www.thedesignium.com/category/web', method: 'get', update: 'web', evalScripts: false,
        onComplete: function(){ $('request1').removeClass('loading').set('html', '<span class="text-gold">Web Complete!</span>'); },
        onFailure: function() { $('request1').removeClass('loading').set('html', '<span class="text-red">Request Error!</span>'); error = 1; $('attention').set('html', '<strong>Please reload again!</strong>'); },
        onRequest: function(){ $('request1').addClass('loading').set('html', 'Request ...'); }}),
      new Request.HTML({url: 'http://www.thedesignium.com/category/other', method: 'get', update: 'other', evalScripts: false,
        onComplete: function(){ $('request2').removeClass('loading').set('html', '<span class="text-gold">Other Complete!</span>'); },
        onFailure: function() { $('request2').removeClass('loading').set('html', '<span class="text-red">Request Error!</span>'); error = 1; $('attention').set('html', '<strong>Please reload again!</strong>'); },
        onRequest: function(){ $('request2').addClass('loading').set('html', 'Request ...'); }}),
      new Request.HTML({url: 'http://www.thedesignium.com/category/services', method: 'get', update: 'services', evalScripts: false,
        onComplete: function(){ $('request3').removeClass('loading').set('html', '<span class="text-gold">Services Complete!</span>'); },
        onFailure: function() { $('request3').removeClass('loading').set('html', '<span class="text-red">Request Error!</span>'); error = 1; $('attention').set('html', '<strong>Please reload again!</strong>'); },
        onRequest: function(){ $('request3').addClass('loading').set('html', 'Request ...'); }})
    ];
    var group = new Group(xhrs[0], xhrs[1], xhrs[2]);
    group.addEvent('onComplete', function() {
      if(error != 1) alert('All Completed!');
      else alert('Request Error!');
    });

    xhrs.each(function(xhr){
      xhr.send();
    });
  }
}

var stockHash = location.hash;
window.addEvent('domready', function(){ dsn.dominit() });
window.onresize = function() {};
window.onload = function() { dsn.init(); };
</pre>
<p>
上記サンプルを使ったデモ： <a href="http://www.thedesignium.com/sample/request/" target="_blank">http://www.thedesignium.com/sample/request/</a></p>
<p><span class="text-red">※</span>ただオフィシャルサイトでは、設置されているサーバの関係や、リクエストが複数あった場合にエラーが出る確立が高くなることから使用は止めて、擬似的な感じで処理しています。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/work/1888/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>オフィシャルサイトで使った技術その３</title>
		<link>http://www.thedesignium.com/work/1826</link>
		<comments>http://www.thedesignium.com/work/1826#comments</comments>
		<pubDate>Mon, 31 May 2010 09:18:37 +0000</pubDate>
		<dc:creator>oikawa</dc:creator>
				<category><![CDATA[AT WORK]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[lab]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1826</guid>
		<description><![CDATA[お世話になります。デザイニウムの及川です。
今回はアンカー制御を行った場合の困った点と解決方法についてお話したいと思います。
&#160;
[JS]イベントhistoryとCookieを使った履歴
アンカーでの制御を行っ [...]]]></description>
			<content:encoded><![CDATA[<p>お世話になります。デザイニウムの及川です。<br />
今回はアンカー制御を行った場合の困った点と解決方法についてお話したいと思います。</p>
<div class="dashed">&nbsp;</div>
<p><span class="large"><strong>[JS]イベントhistoryとCookieを使った履歴</strong></span><br />
アンカーでの制御を行った場合、そのページを訪れたかどうかの履歴が同一ページとして記録されます。つまりリクエスト先の情報を取ってきてもページが遷移するわけではないので、リンク先を訪れたかどうかブラウザでは認識してくれないわけです。</p>
<p>制御する方法はいろいろあるかもしれませんが、今回はmootoolsの<a href="http://mootools.net/docs/core/Utilities/Cookie" target="_blank">Cookie</a>を使って制御するサンプルを紹介したいと思います。</p>
<div class="dashed">&nbsp;</div>
<p><span class="large"><strong>Mootoolsを使ったHistory KeeperとCookieの設置サンプル</strong></span></p>
<pre>
var dsn = {
  init: function() {
  },
  dominit: function() {
    //DOMの準備が出来次第historyFuncを呼び出してhistoryChangeイベントを設置
    this.historyFunc();
    //履歴を管理するための処理
    this.cookieInitFunc();
  },
  cookieInitFunc: function() {
    //履歴を判別するために全てのaタグにrelを設置
    $$('a').each(function(obj, i) {
       var objURL = obj.get('href');
       //リンク先の指定にアンカーとサイトのドメインがあればrelを設置
       if(objURL.contains('#') &#038;&#038; objURL.contains('www.hoge.com')) {
        var objRel = objURL.split('#')[1];
        obj.set('rel', objRel);
       }
    });
    //Cookieがすでにあった場合、各aタグへ処理を加える
    if(<span class="text-blue">Cookie.read("dsn")</span>) {
      //Cookieの値を配列として蓄える
      <span class="text-blue">visited = Cookie.read("dsn").split(",");</span>
      //Cookieの情報とリンク先を比較し、履歴がある場合はclass"visited"を追加
      for(c = 0; c < visited.length; c++) {
        var linkVisited = visited[c];
        with ({linkVisited:linkVisited}) {
          $$('a').each(function(obj, i) {
            var objRel = obj.get('rel');
            if(objRel == linkVisited) obj.addClass('visited');
          });
        }
      }
    }
  },
  cookieFunc: function(pwd) {
    //履歴の重複をチェック
    var checkHistory = false;
    for(c = 0; c < visited.length; c++) {
      var linkVisited = visited[c];
      if(pwd == linkVisited) checkHistory = true;
    }
    //履歴が重複していなかった場合
    if(!checkHistory) {
      $$('a').each(function(obj, i) {
        var objRel = obj.get('rel');
        if(objRel == pwd) {
          //アンカー以降を配列に追加し、Cookieに書き込む。
          <span class="text-blue">visited.push([objRel]);</span>
          <span class="text-blue">Cookie.write("dsn", visited, { duration: 10, path: "/", domain: "www.hoge.com", secure: false });</span>
          //aタグがclass"visited"を持っていなかった場合
          if(!obj.hasClass('visited')) obj.addClass('visited');
        };
      });
    }
  },
  historyFunc: function() {
    unFocus.History.addEventListener('historyChange', dsn.historyListener);
    if(stockHash.split('#')[1]) this.historyListener();
  },
  historyListener: function() {
    //アンカーが変わるごとに以下の操作をします
    stockHash = location.hash;
    var pwd = unFocus.History.getCurrent();
    this.cookieFunc(pwd);
  }
}

//ページURLのアンカーを取得
var stockHash = location.hash;
//履歴を蓄えるための配列
<span class="text-blue">var visited = new Array();</span>

window.addEvent('domready', function(){ dsn.dominit() });
window.onresize = function() {};
window.onload = function() { dsn.init(); };
</pre>
<p>関連リンク: <a href="http://mootools.net/docs/core/Utilities/Cookie" target="_blank">MooTools Docs &#8211; Utilities/Cookie</a></p>
<p>ということで次回は「<a href="#/work/1888"><strong>並列リクエスト処理</strong></a>」についてお話したいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/work/1826/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>オフィシャルサイトで使った技術その2</title>
		<link>http://www.thedesignium.com/work/1631</link>
		<comments>http://www.thedesignium.com/work/1631#comments</comments>
		<pubDate>Mon, 31 May 2010 05:25:11 +0000</pubDate>
		<dc:creator>oikawa</dc:creator>
				<category><![CDATA[AT WORK]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[lab]]></category>

		<guid isPermaLink="false">http://www.thedesignium.com/?p=1631</guid>
		<description><![CDATA[お世話になります。最近はGareth Emeryな日々の及川です。
今回はイベントhistoryとGoogle Analyticsのトラッキング制御方法を少しお話したいと思います。
&#160;

[JS]イベントhis [...]]]></description>
			<content:encoded><![CDATA[<p>お世話になります。最近は<a href="http://www.galexmusic.com/podcast/gareth.xml" target="_blank">Gareth Emery</a>な日々の及川です。<br />
今回はイベントhistoryとGoogle Analyticsのトラッキング制御方法を少しお話したいと思います。</p>
<div class="dashed">&nbsp;</div>
<div class="imageLeft"><img src="http://www.thedesignium.com/wp-content/uploads/2010/05/gaEvent.gif" alt="" title="gaEvent" /></div>
<p><span class="large"><strong>[JS]イベントhistoryとGoogle Analytics</strong></span><br />
Google Analyticsでは特定のイベント時の情報を取得することができます。<br />
Google Code: <a href="http://code.google.com/intl/ja/apis/analytics/docs/gaJS/gaJSApi_gaq.html" target="_blank">Tracking API</a></p>
<p>このイベントを取得の際、aタグへのonClickイベントに記述するサンプルを多くみますが、今回はイベントhistoryを使うことで、ひとつひとつaタグに記述することなくイベントを管理できるようなサンプルを紹介してみたいと思います。</p>
<p><span class="text-red">※</span>左の図はGoogle Analyticsで取得したイベント情報です</p>
<div class="dashed">&nbsp;</div>
<p><span class="large"><strong>Mootoolsを使ったHistory KeeperとGoogle Analytics設置サンプル</strong></span></p>
<pre>
var dsn = {
  init: function() {
  },
  dominit: function() {
    //DOMの準備が出来次第historyFuncを呼び出してhistoryChangeイベントを設置
    this.historyFunc();
    this.pagetopFunc();
  },
  historyFunc: function() {
    unFocus.History.addEventListener('historyChange', dsn.historyListener);
    if(stockHash.split('#')[1]) this.historyListener();
  },
  pagetopFunc: function {
    //特定のclassにイベントを定義して記録
    //この場合pagetopというclassが設置されている要素がクリックされた際イベントを記録します
    $$('.pagetop').addEvent('click',function(){
      <span class="text-blue">_gaq.push(['_trackEvent', 'Pagetop', 'Click', stockHash]);</span>
    });
  },
  historyListener: function() {
    //アンカーが変わるごとに以下の操作をします
    stockHash = location.hash;
    var pwd = unFocus.History.getCurrent();
    //リンクへのトラッキングを記録
    <span class="text-blue">_gaq.push(['_trackPageview', pwd]);</span>
    //特定イベントを定義して記録する場合
    <span class="text-blue">_gaq.push(['_trackEvent', 'Listener', 'Click', pwd]);</span>
  }
}

//ページURLのアンカーを取得
var stockHash = location.hash;

window.addEvent('domready', function(){ dsn.dominit() });
window.onresize = function() {};
window.onload = function() { dsn.init(); };
</pre>
<p>今回Google Analyticsの新しいトラッキングコードで記述しています。<br />
もし古いコードをお使いの方は「カグア！Google Analytics 活用塾:事例や使い方」さんのところの<a href="http://www.kagua.biz/tracking/asynchronous-ikou.html" target="_blank">非同期トラッキングコード移行マニュアル</a>をご覧いただけたらと思います。</p>
<p>一応軽く記述しておきますと、新しいほうは二重配列で_gaqという変数にpushで入れ込む形になっています。<br />
また特定イベントのカテゴリについては自由に記述していいところなどは変わっていないようです。</p>
<pre>
  //リンクへのトラッキングを記録
  _gaq.push(['_trackPageview', ここにページURLなどを記述]);
</pre>
<pre>
  //特定イベントを定義して記録する場合
  _gaq.push(['_trackEvent', 独自のカテゴリ名, イベント名（clickなど）, 補足的な情報を登録（ラベル）]);
  //最後のラベルは、数値データとして記録し平均値を取ることもできます
</pre>
<p>これを使えば<a href="http://www.google.com/support/googleanalytics/bin/answer.py?answer=55520" target="_blank">Flashなどでのトラッキング</a>が容易になると思います。<br />
ということで次回は「<a href="#/work/1826"><strong>イベントhistoryとCookieを使った履歴</strong></a>」についてお話してみたいと思います。</p>
<div class="dashed">&nbsp;</div>
<p><span class="large"><strong>[<span class="text-brown">追記</span>] onClickイベントを個々に記述しないで制御する方法</strong></span></p>
<p>その外onClickイベントを個々のaタグに記述しなくても、以下のようにして制御することもできるのでご紹介しておきます。</p>
<pre>
  //すべてのaタグにトラッキングイベントを追加
  $$('a').addEvent('click',function(){
    var stockURL = this.get('href');
    _gaq.push(['_trackPageview', stockURL]);
  });
</pre>
<p>aタグのrelを使って追加の情報を記録したいときは以下のように記述もできます。</p>
<pre>
  //すべてのaタグにトラッキングイベントを追加
  $$('a').addEvent('click',function(){
    var stockURL = this.get('href');
    <span class="text-brown">var stockRel = this.get('rel');</span>
    _gaq.push(['_trackPageview', stockURL]);
    <span class="text-brown">_gaq.push(['_trackEvent', 'History', 'Click', stockRel]);</span>
  });
</pre>
<p>aタグのrelを使って特定のイベントだけを記録したいときは以下のような感じになります。</p>
<pre>
  //すべてのaタグにトラッキングイベントを追加
  $$('a').addEvent('click',function(){
    var stockURL = this.get('href');
    <span class="text-brown">var stockRel = this.get('rel');</span>
    //クリックされたaタグのrelが'hoge'だった場合トラッキングイベント発生
    <span class="text-brown">if(stockRel == 'hoge') _gaq.push(['_trackPageview', stockURL]);</span>
  });
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.thedesignium.com/work/1631/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
