<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>ryow.net Blog</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/" />
    <link rel="self" type="application/atom+xml" href="http://ryow.net/blog/atom.xml" />
    <id>tag:ryow.net,2009-03-20:/blog//1</id>
    <updated>2010-02-03T02:44:03Z</updated>
    <subtitle>Flash大好きWebクリエイタ ryow（りょう）のブログです。近頃はアクセス解析エンジニアです。よくあるよくある。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/" version="4.25">Movable Type Pro</generator>

<entry>
    <title>MacBookProがなんだか値下がり中</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2010/02/01-231508.php" />
    <id>tag:ryow.net,2010:/blog//1.462</id>

    <published>2010-02-01T14:15:08Z</published>
    <updated>2010-02-03T02:44:03Z</updated>

    <summary>iPad発表の影響なのか、一部のMacBookProが値下がり中です。 去年の年...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="sonota" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="blog" label="blog" 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://ryow.net/blog/">
        iPad発表の影響なのか、一部のMacBookProが値下がり中です。
去年の年末から目をつけていたものの、年明け早々からじわじわと下がり始めて、今は底値っぽいかんじ。
昨日(1/31)が最安で、少し戻したものの、やっぱり安いです。たとえばMacBookPro15.4インチCPU2.53のモデル(MC118J)では、Appleストアでは 168,800円のところが、クリスマス前までは15万円くらいで高止まりしていたものが、昨日は138,000円。１つ下位の機種のよう。1日でけっこう上がっちゃいましたが、それでも安いと思います。もうちょっと粘るか！！


**[[MacBook Pro 2260/13.3 MB990J/A:http://www.amazon.co.jp/exec/obidos/ASIN/B002CJM7O4/ryownet-22]]
-2/1現在 94,500
#ref(http://ryow.net/blog/2010/02/mac1.png,nolink)


**[[MacBook Pro 2530/13.3 MB991J/A:http://www.amazon.co.jp/exec/obidos/ASIN/B002CJM7OO/ryownet-22]]
-2/1現在 135,000
#ref(http://ryow.net/blog/2010/02/mac2.png,nolink)


**[[MacBook Pro 2530/15.4 MC118J/A:http://www.amazon.co.jp/exec/obidos/ASIN/B002CJM7OY/ryownet-22]]
-2/1現在 144,800
#ref(http://ryow.net/blog/2010/02/mac3.png,nolink)
僕が会社で使ってるのもこのタイプ。Spacesで２番のウィンドウにFlexとFlashとPhotoshopを常駐させてて、１番でSafariブラウジング。Mac使うとFirefoxがもっさり感じて、Safariが調子良いです。



        
    </content>
</entry>

<entry>
    <title>Google Analytics チートシートを日本語に訳してみた</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2010/01/22-181941.php" />
    <id>tag:ryow.net,2010:/blog//1.461</id>

    <published>2010-01-22T09:19:41Z</published>
    <updated>2010-01-22T09:41:59Z</updated>

    <summary> via：conversation marketing。 海外でちょっと話題にな...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="analyze" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="analytics" label="analytics" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="google" 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://ryow.net/blog/">
        <![CDATA[
<p>via：<a href="http://www.conversationmarketing.com/2010/01/google-analytics-cheatsheet.htm" target="_blank">conversation marketing</a>。<br />
海外でちょっと話題になったページみたい。<br />
PDFでダウンロードできます。</p>

<p>
コードを見てみた結果、解析系ブロガーがこれを記事にしない理由がわかりました。だって、基本的すぎて読む価値ないんだもん。そもそも、こういう記事に反応する人は解析ツール使ったことがあるだろうし、使ったことがない人が念のためブクマするには専門的すぎて使えないだろうし。<br />
あ、チートシートってそんなもんだったりする？</p>]]>
        <![CDATA[
<h2>セットアップ</h2>

<h3>サイトの&lt;head&gt;〜&lt;/head&gt;に読み込みスクリプトを書こう：</h3>

<pre name="code" class="javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
var gaJsHost = ((&quot;https:&quot; == document.location.protocol) ? &quot;https://ssl.&quot; : &quot;http://www.&quot;);
document.write(unescape(&quot;%3Cscript src='&quot; + gaJsHost + &quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/ script%3E&quot;));
&lt;/script&gt;

</pre>



<h3>ページの&lt;/body&gt;直前にトラッキングスクリプトを書こう：</h3>
<pre name="code" class="javascript">

&lt;script type=&quot;text/javascript&quot;&gt;
try{
  var pageTracker = _gat._getTracker(&quot;UA-xxxxxx-x&quot;);
  pageTracker._trackPageview(); 
} catch(err) {} 
&lt;/script&gt;
</pre>
<p>
なんでheadとbodyに分けてるのかというと、公式で良いとされている、すべてをbodyに書く方式では、ページの読み込みが不完全な場合に、クリックをトラッキングするスクリプトを動かそうとした場合にエラーになったりするからです。</p>


<h3>サイトがサブドメインを使っている場合はトラッキングコードをカスタマイズしよう：</h3>
<pre name="code" class="javascript">

&lt;script type=&quot;text/javascript&quot;&gt;
try{
  var pageTracker = _gat._getTracker(&quot;UA-xxxxxx-x&quot;);
  pageTracker._setDomainName(&quot;.example.com&quot;); 
  pageTracker._trackPageview(); 
} catch(err) {} 
&lt;/script&gt;
</pre>




<h2>キャンペーン</h2>
<h3>
リンクやリスティングごとに参照元キャンペーンを分けられるようにしよう：</h3>
<p>キャンペーンのソース、メディア、キーワード、コンテンツを設定します。</p>
<p>Adwordsを使っている場合は、Auto-Taggingを使っておけば間違いない。</p>

<p>例１）こんな感じのリンクになるよ<br />
mysite.com/index.php?utm_source=A&amp;utm_medium=B&amp;utm_campaign=C&amp;utm_term=term&amp;utm_content=D
</p>

<p>
例２）sitesite.comのバナーからのリンクで、ディスカウントをうたった2010年春のキャンペーンにつけるリンク：<br />
mysite.com/index.php?utm_source=sitesite_com&amp;utm_medium=banner&amp;utm_campaign=s2010&amp;utm_content=discount</p>

<p>
例３）例２と同じサイト、同じ時期、でもバナーのキャッチコピーがディスカウントじゃなくてスタイルが変わったことをうたったキャンペーンにつけるリンク：<br />
mysite.com/index.php?utm_source=sitesite_com&amp;utm_medium=banner&amp;utm_campaign=s2010&amp;utm_content=styles</p>

<p>
例４）例２と同じサイト、同じ時期、でもバナーじゃなくてリスティング広告（キーワードはウェディングドレス）のキャンペーンにつけるリンク：
utm_source=bing&amp;utm_medium=cpc&amp;utm_campaign=s2010&amp;utm_content=discount&amp;utm_term=wedding%20dresses</p>


<p><a href="http://www.google.com/support/googleanalytics/bin/answer.py?hl=jp&amp;answer=55578" target="_blank">公式リンクURL生成ツール</a>





<h2>フィルタ</h2>

<p>例）自分のIPアドレスをカウントしないときのフィルタ：</p>
<pre name="code" class="javascript">
^66\.135\.149\.(1(9[2-9])|2([0-1][0-9]|2[0-3]))$
</pre>

<p><a href="http://www.google.com/support/googleanalytics/bin/answer.py?hl=jp&amp;answer=55572" target="_blank">公式IPアドレス除外用正規表現作成ツール</a>




<h2>コンバージョン</h2>
<h3>目標はちゃんと設定しないと取れないよ！</h3>
<p>URLアクセス、サイト滞在時間、１セッションあたりの閲覧PV数、を目標に設定できる。<br />
その他、Eコマースサイトの場合はトラッキングタグのカスタマイズをしっかりやらないといけないよ。</p>

<p><a href="http://www.google.com/support/googleanalytics/bin/answer.py?hl=jp&amp;answer=55528" target="_blank">公式eコマースのトラッキングタグ作成について</a>





<h2>小ネタ</h2>
<h3>404エラーをトラッキングしよう</h3>
<p>どこから来たユーザが404を掴まされているかを把握するといいことがあるかも。<br />
カスタム404.htmlにこのコードを書こう。</p>
<p>でもそもそも404はhtaccessか何かで設定しておかないと、コードを入れる場所さえありません。（親切じゃない）</p>
<pre name="code" class="javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
try{
  var pageTracker = _gat._getTracker(&quot;UA-xxxxxx-x&quot;);
 pageTracker._trackPageview(&quot;/404.html?page=&quot; + document.location.pathname + document.location.search + &quot;&amp;from=&quot; + document.referrer);
  }catch(err) {} 
&lt;/script&gt;
</pre>


<h3>アドバンスフィルタでこんなやりかたもあるよ</h3>
<p>例１）検索結果の２ページ目からの訪問を計測するフィルタ：<br />
http://www.distilled.co.uk/blog/seo/tracking-referrals-from-second-page-of-google-in-google-analytics/</p>


<p>こんなん使えるかー！！</p>]]>
    </content>
</entry>

<entry>
    <title>AlivePDF 1.49でFlash Player10だけでPDFを作る</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2010/01/21-121137.php" />
    <id>tag:ryow.net,2010:/blog//1.460</id>

    <published>2010-01-21T03:11:37Z</published>
    <updated>2010-01-21T03:14:04Z</updated>

    <summary> AlivePDFをFlash Player10で使えば、すべてswfだけでPD...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="flash" label="flash" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="flex" label="flex" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zip" label="zip" 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://ryow.net/blog/">
        <![CDATA[<p>
AlivePDFをFlash Player10で使えば、すべてswfだけでPDFを作り保存することができます。
create.phpを使わずに出来るというのはスゴい便利。</p>

<p>
使い方はこんなかんじ。<br />
ここではAlivePDFを拡張したMBPDFを使ってますが書き方は同じ。</p>

<pre name="code" class="as3">
var myPDF:MBPDF = new MBPDF( Orientation.PORTRAIT, Unit.POINT, Size.A4 );
myPDF.charSet = MBPDF.SHIFT_JIS;
myPDF.addMBFont(MBFontFamily.GOTHIC,MBPDF.CMap_SJIS);
myPDF.setDisplayMode ( Display.REAL ); 
myPDF.addPage();
myPDF.addMultiCell ( 210, 5, "いろはにほへとちりぬるをわかよたれそつねならむ",null,"L" )
</pre>]]>
        <![CDATA[
<p>
よく使うのはこのメソッド。</p>
<pre name="code" class="as3">
addMultiCell(width,line-height,text,border,align)
</pre>
<p>
borderはobject指定になってますが「1」をつければいいだけ。<br />
alignは"L","C","R"で。</p>


<pre name="code" class="as3">
myPDF.drawRect(new Rectangle(10,120, 170, 61));
</pre>
<p>
みたいなメソッドもあり、あんまり複雑な図形を使ったりしなければ、swfを作る感覚でPDFを作れる。
</p>

<h3>フォント問題</h3>
<p>
フォントはTimes,Arial,Courier,Helveticaなどが選択可能。<br />
通常では日本語を使えない。<br />
日本語を使うには、MBPDFを使う。MBPDF開発者のブログ(<a href="http://www.harhid-labo.com/p1/index.php?Flex3%20PDF作成その２" target="_blank">harhid-labo.com/PDF作成その2</a>)では記事が削除されてる?(404だった)ので、<a href="http://www.mztm.jp/wp/2009/07/06/flashから日本語pdfを生成（alivepdfmbpdf）/" target="_blank">Flashから日本語PDFを生成（AlivePDF+MBPDF）</a>を見て真似してみました。
</p>

<p>
MBPDFを使えば、MSゴシックだけ使える。いちおうMBFontFamilyクラスにはPGOTHICやPMINCHOなどあるけど、MSゴシックだけ。</p>

<p>
ちなみに、AlivePDFのFontFamilyとMBFontFamilyが１ファイルに混在するとAdobe Readerで読めなくなる。<br />
（英数にArial、日本語にGOTHIC、というふうに使い分けることができない、ということ。macのプレビューでは混在していても読めるけど）
</p>

<p>
ちなみに、alivePDF1.5では、マルチバイトフォントがサポートされつつあります。<br />
でもフォントファミリーが「Arial Unicode MS」しか使えず、かなり文字が汚い。外人さんが左手で書き写したひらがなみたいな文字です。<br />
<img src="/blog/2010/01/arialunicodems.jpg" alt="Arial Unicode MS" class="bdr" />
</p>

<h2>結論</h2>
<p>
文字がMSゴシックだけでいいのなら、AlivePDF1.49は十分実用できる。<br />
今後バージョンが上がって、メイリオやヒラギノが使えたら神ライブラリ認定ですね。</p>
<p>
フォントの埋め込み方がよくわからなかったですが、簡単に埋め込んで使えるなら、このままでもいいのかも。</p>


<h2>サンプル</h2>
<p>うそ履歴書を作るPDFメーカーをさくっと作ってみました。</p>

<div id="swf100121"></div>
<script type="text/javascript">
var so1 = new SWFObject("/blog/2010/01/testPDF.swf", "mypdf", "630", "280", "10", "#ffffff");
so1.write("swf100121");
</script>


<p>ソースはFlexプロジェクト。mxml１枚なので中身見てもらえればFlashでもOK。<br />ダウンロードは<a href="/blog/2010/01/testPDF.zip">こちら(zip)</a>。</p>]]>
    </content>
</entry>

<entry>
    <title>as3でテキストファイルを作成、ダウンロードする</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2010/01/19-193533.php" />
    <id>tag:ryow.net,2010:/blog//1.459</id>

    <published>2010-01-19T10:35:33Z</published>
    <updated>2010-01-24T11:53:32Z</updated>

    <summary>テキストファイルをローカルにダウンロードしたかったんです。 そのためにAIRを作...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="filereference" label="filereference" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="flex" label="flex" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://ryow.net/blog/">
        <![CDATA[<p>テキストファイルをローカルにダウンロードしたかったんです。</p>
<p>そのためにAIRを作るのはアホらしいと思いながら試したところ、あっさり動きました。flash player10です↓</p>


<div id="swf100119"></div>
<script type="text/javascript">
var so1 = new SWFObject("/blog/2010/01/TextDLsample.swf", "t1", "300", "200", "10", "#ffffff");
so1.write("swf100119");
</script>

<p>やってることは、単純にStringをfilereference.saveでローカルダウンロードしてるだけ。<br />
これって、ブラウザ上でテキストだけじゃなく、JSやCSSも作ってダウンロードできそう。便利。</p>

<h2>mxml</h2>
<pre class="as3" name="code">
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;vertical&quot;
 width=&quot;300&quot; height=&quot;200&quot;&gt;
	&lt;mx:VBox&gt;
		&lt;mx:Label text=&quot;テキストを入れてね&quot; /&gt;
		&lt;mx:TextArea id=&quot;myTa&quot; height=&quot;100&quot; width=&quot;200&quot; /&gt;
		&lt;mx:Button label=&quot;toTXT&quot; click=&quot;clickTxtBtn(event)&quot; /&gt;
	&lt;/mx:VBox&gt;
	
	&lt;mx:Script&gt;
		import flash.net.FileReference
			
			private function clickTxtBtn(e:MouseEvent):void{
				var _str :String = myTa.text;
				
				var fileRef:FileReference = new FileReference();
				fileRef.save( _str, &quot;textarea.txt&quot; )
			}
	&lt;/mx:Script&gt;
&lt;/mx:Application&gt;

</pre>]]>
        
    </content>
</entry>

<entry>
    <title>GAの認定試験Google Analytics Individual Qualificationに合格したよ</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2010/01/11-163532.php" />
    <id>tag:ryow.net,2010:/blog//1.458</id>

    <published>2010-01-11T07:35:32Z</published>
    <updated>2010-01-11T08:42:46Z</updated>

    <summary> GAIQというgoogleのanalytics認定試験（オンラインテスト）があ...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="analyze" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="analytics" label="analytics" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="google" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://ryow.net/blog/">
        #ref(http://ryow.net/blog/2010/01/gaiq1.jpg,nolink)

GAIQというgoogleのanalytics認定試験（オンラインテスト）があって、初受験で見事！　一発合格しましたよ！
アクセス解析エンジニアを名乗るなら、「ただの詳しい人」じゃなくて「google認定」があったほうがいいよね。


試験はこちら
http://google.starttest.com/

90分で70問、70%以上が合格ラインでした。
 上記ページでユーザ登録して（googleアカウントとは別）、
 $50を払うとメールにアカウント番号みたいなのが送られるので、
 上記ページに入力すると試験開始。



試験勉強は、Flashビデオで見れます。全部英語なので、音を消して画面を見るだけでもいいかも。全3時間くらいだけど、第３章、第４章だけ見とけば問題なし。
http://www.google.com/support/conversionuniversity/?hl=en



        *テスト用に勉強したこと

**基本的なこと
-Eコマースのゴールは１セッションで複数カウント
-サイトのゴールは１セッション１カウント
-Eコマースのコードはbodyタグ終わりじゃなくて、headがよい
-$index は１セッションあたりのＰＶ。複数回見ても only count once per visit
-Adwordsはとにかくautotaggingしる！

**クッキーについて
-utma
 2年間有効なクッキー。
 中身は適当な数字じゃなくて、ドメインハッシュと、訪問時間、
 現在時間、セッション中のPV数。
-utmb
 30分有効なクッキー。PVが増えるとそこから30分。
-utmc
 テンポラリクッキー。ブラウザを開いている間継続する。
 utmbと一緒に参照して、どちらかがなければ新セッションとなる。
-utmz
 6ヶ月有効なキャンペーン用クッキー。
-utmv
 2年有効なユーザ定義変数（setCustomVarの値）用のクッキー。

**正規表現
使ったことがなければ一度見直しておくべし。
ドットをバックスラッシュドット、ハテナをバックスラッシュハテナにしたり、「^」「$」「[]」「|」などの記号の意味が分かっていればOK。


**英語
なんとかなるだろうと高をくくって受験したけど、なんとかなりました。



    </content>
</entry>

<entry>
    <title>Flex3+AIR1.5でブラウザを作る</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2010/01/09-111855.php" />
    <id>tag:ryow.net,2010:/blog//1.457</id>

    <published>2010-01-09T02:18:55Z</published>
    <updated>2010-01-09T02:41:34Z</updated>

    <summary>mx:HTML だけでブラウザが作れちゃう手軽さと、mxmlの書きやすさ（オブジ...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="AIR" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="air" label="air" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="flex" label="flex" 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://ryow.net/blog/">
        &gt;mx:HTML

だけでブラウザが作れちゃう手軽さと、mxmlの書きやすさ（オブジェクト指向にしなくていい。なんだったら全部private function で書いちゃえばとりあえず動くから楽チン）のせいで、Flex builderから離れられなくなって、最近はFlashがただのパーツswf作成お絵かきツールと化しちゃってるこのごろ。

こうもFlexにベッタリだと、日常使うツールは全部Flexで作りたくなっちゃいます。
たとえば、ブラウザ。
Firefoxは重いし、IEはアホだし、Chromeは「最近の履歴」がいきなり出ちゃって恥ずかしいので、よく見るページだけを登録した、専用ブラウザを作っちゃえば効率化がはかれるかと思って試してみました。

#ref(http://ryow.net/blog/2010/01/testbrowser1.jpg,nolink)
        *必要な要素
-戻るボタン
-アドレスバー(=検索バー)
-組み込まれたお気に入り（追加削除できない）

これくらいか。
アドレスバーは、「http」から始まってるとlocation書き換え、それ以外はgoogle検索にしました。

**お気に入り
-google news
-google analytics
-twitter
-gmail

あれ、こんなもん？

「ブログを見る」「はてなを見る」「ヤフーを見る」を除外すると、なんとグーグルとツイッターしか見ていないことが判明しました。
でも、ツイッターもいらないかも。

ということは、google専用ブラウザってこと？

アホかと思いつつも、適当にボタンを３個作り、ニュースとAnalyticsとgmailだけURLRequestする超シンプルブラウザをAIRでわざわざ作って試してみました。

*結果
-AIRのWebkitは意外と表示が速い
-google newsはいい感じに見れる
-googleアカウントにログインすると時々落ちる
-analyticsはログインした時点で「SyntaxError: Expression too deep」のエラーが出て動かなくなる
-と思ったらちゃんと見れるときもある
-gmailはちゃんと見れた

実用性はともかく、「仕事に邪魔にならないサイトだけ見れる」みたいな使い方はありかも。

と、思いついてからこの実験を終えるまで（ブラウザ作成時間も含めて）わずか&apos;&apos;10分&apos;&apos;。


いやぁ、Flex builderはすげーわ。
もうすぐ(?) Flash builderになっちゃうけど。


    </content>
</entry>

<entry>
    <title>Analyticsメソッドが地味に更新されてた（重要な部分が廃止/新規追加されてる）</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2010/01/05-113124.php" />
    <id>tag:ryow.net,2010:/blog//1.456</id>

    <published>2010-01-05T02:31:24Z</published>
    <updated>2010-01-06T02:39:17Z</updated>

    <summary>去年、こちらのエントリでまとめてたAnalyticsのメソッド一覧(GAapi)...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="analyze" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="analytics" label="analytics" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="google" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://ryow.net/blog/">
        去年、[[こちら:http://ryow.net/blog/2009/02/21-084320.php]]のエントリでまとめてたAnalyticsの[[メソッド一覧(GAapi):http://code.google.com/intl/ja/apis/analytics/docs/gaJS/gaJSApi.html]]が更新されてました。

一番の衝撃は、これまでユーザ定義変数として広く使われていた&apos;&apos;setVarメソッドが廃止になった&apos;&apos;こと。これは、かわりにsetCustomVarメソッドになりました。引数の使い方も変わりました。


        *廃止
-_initData()
 いままで無意識に挿入してた（GAの初期版では公式でこのタグがセットされてた）
 のに、ついに廃止になりました。
-_setCookiePersistence(milliseconds)
-_setCookieTimeout(newDefaultTimeout)
-_setSessionTimeout(newTimeout)
-_setVar(newVal)
 おそらく、廃止によって最も影響が出るであろう部分。

*新規：非同期版トラッキング用。
-_getTracker(accountId)
-_createAsyncTracker(accountId, opt_name)
-_getAsyncTracker(opt_name)
-push(commandArray)

*基本情報
-_getAccount()
 UA-12345-1とかのアカウント番号が返る
-_getVersion()
 2009.01.05時点では4.6.5でした。GA.jsのバージョンか


で、一覧を作ろうかと思ったけど、あんまり使わないから、アクセス解析エンジニアとして使えると思った(気になる)メソッドだけ書き出します。

-_setCustomVar(index, name, value, opt_scope)
 ユーザ定義変数を設定します。今回から４つの変数を設定でき、
 スロット番号/カテゴリ名/個別名/ページレベル　という分類。
 pageTracker._setCustomVar(
       1,
       &quot;Section&quot;, 
       &quot;Life &amp; Style&quot;,
       3
 ); 
-_deleteCustomVar(index)
 セットしたユーザ定義変数をクリアします。
 index番号はsetCustomVarの第一引数の番号。
-_getVisitorCustomVar(index)
 ユーザ定義変数を取得します。index番号は同上。


*よく使うもの
-_link(targetUrl, useHash)
-_linkByPost(formObject, useHash
 外部サイトにリンクするとき、セッションを（ていうかcookieを）引き継ぐ
 パラメータを作ってくれるもの。リンクのＡタグに埋め込む。
-_setDomainName(newDomainName)
 外部サイトもまとめてカウントするとき用。まあ、&quot;none&quot;ですよね。
-_trackEvent(category, action, opt_label, opt_value)
 これがない時代は不便でした
-_trackPageview(opt_pageURL)
 これは基本。
 なんだけど、直帰ページで、ページ内に架空URLを作ってカウントすれば
 PV2になるので直帰じゃなくなるという技が使えます。
 あとはどのボタンが押されたか、とか。架空URLをたくさん発行しておけば、
 その分だけコンバージョンにつながる道筋が明らかになります。
 森に落として歩くパンのかけらみたいなもの。

**その他
こまかいことを言うと、通常のトラックは_gatでメソッドを呼んで、非同期は_gaqを使ってクエリをpushしていくという違いがありますね。
非同期版は使いどころをまだまだ探っていかないといけませんが、今年も勉強していきます！



    </content>
</entry>

<entry>
    <title>限定セール商法について聞いた話</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2010/01/04-124927.php" />
    <id>tag:ryow.net,2010:/blog//1.455</id>

    <published>2010-01-04T03:49:27Z</published>
    <updated>2010-01-04T03:52:31Z</updated>

    <summary>聞いた話。 ネットとは全然関係ない分野です。お正月は福袋や初売りセールがあります...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="sonota" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="life" label="life" 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://ryow.net/blog/">
        聞いた話。

ネットとは全然関係ない分野です。お正月は福袋や初売りセールがありますが、いわく、ケータイのオークション（たぶんヤフオク）で、好きなブランドの福袋を探してたらしいんです。
すると、当然のように、福袋が出てきます。新品未開封のとかが。値段はともかく、気になったのは中身とのこと。
東京でも、仙台でも、福岡でも、どこのショップの福袋も、一覧にしてみると中身が同じだったらしいんです。まるで都市伝説です。いや色違い程度の差はあったものの。

僕のイメージでは、前年売れ残ったものやセール対象品を店員が大みそかの夜にがんばって袋詰めして、なんとなく5000円の福袋に20000円分の商品が入ったよ、やったね、という作り方をしてるのかと思ってたんですが、どうやら違うっぽい。
最初から福袋用の商品を詰めてるってことか。

そう考えると、この時期の限定セールみたいなものも、結局はセール用の商品を新しく持ってきて、さもお買い得のように見せているってことなの？

ということは、アメ横の年末たたき売りも、本当に10000円のカニをたくさん入れて6000円と書いてあるのに2000円で売ったりしてるのも、実際は2000円で出せるカニでしかないってことなんでしょうか？
一部の業界だけの話なんでしょうかねぇ？？
        
    </content>
</entry>

<entry>
    <title>2009ふりかえり</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2009/12/29-205039.php" />
    <id>tag:ryow.net,2009:/blog//1.454</id>

    <published>2009-12-29T11:50:39Z</published>
    <updated>2009-12-29T12:18:30Z</updated>

    <summary>2009年はどうだったっけ？　というのを振り返ります。超個人的メモ。 なんだか、...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="sonota" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="work" label="work" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://ryow.net/blog/">
        2009年はどうだったっけ？　というのを振り返ります。超個人的メモ。

なんだか、趣味＝仕事、みたいなスタンスじゃないと僕は動けないらしいことを再確認した年でした。
というのは、やったことのない仕事や、打ち合わせがひたすら続くようなのは性に合ってなくて、腐ってました。

今年の夏くらいから、ウェブデザインとFlexとアクセス解析という僕の分野（というかそれしかできない）が仕事になって、なんとかどうにかご飯を食べることができました。



        
**アクセス解析
2009年はアクセス解析が熱かった年だと思います。
webにおいて、サイトやサービスを作るという段階はどうやらひと段落してきた感があります。それは、面白いサービスや、奇をてらった表現や、広告サイトみたいなのが出尽くした感、というか個人的なお腹いっぱい感があって、いつからか、イケてるサイトをチェックするという習慣がなくなって（疎かになっただけ？）ました。

その流れは、「ツクルヒト」と「作らせる人」に『制作会社』が別れてきてる感があるなぁ、と思ったのがきっかけなのかも。
代理店や、大きめの制作会社は、「作らせる人」にまわって、いわゆる外注である「ツクルヒト」が実制作をこなすという役割分担です。それは別に全然正しいことです。でも、そうなると「作らせる人」っていうのは、ディレクションが仕事になるんだけども、技術的に込み入った部分とか、演出とか、限界とか、そこらへんのトレンドのキャッチアップが上手く出来てないような、そんな感じを受けていました。個人的にね。
あんまりサイトとか見てないのにね。何言ってんだ。


で、その結果どうなったかというと、「作らせる」だけの代理店は、その存在価値を失いつつある現状が明確化してきてる、と思うようになりました。


なんでかっていうと、「一回作ったら終わり」なサービスが多いからです。

そういう刹那さを感じてから、仕事もろくにないぶらぶら社員な僕は、サービスを作っても終わりじゃないプロセスに自分の軸を置かなきゃ、仕事がなくなる（＝メシが食えなくなる）と思いました。
自分が「ツクルヒト」なだけではいられなくなった、と感じたわけです。

そこで目をつけたのが、アクセス解析でした。
ものづくりは、作ることの段階を進めると、「よりよいものを作る」ことにたどり着きます。じゃあ、その「より良い」の指標とは何なのか。それは、作ったものに対するユーザの評価を定量的に見た結果、わかるんじゃないかと思ったのです。

で、個人的な趣味で続けてたGoogle Analytics(以下GA)への理解をさらに深めて、アクセス解析エンジニアという微妙な立場のポジションを作り上げました。
WEBアナリストではない、というのがミソです。

アナリストはWEBの課題解決のための役割ですが、僕はその一個下のレイヤーの層を狙いました。
つまり、「アクセス解析ツールをどうやって使いこなせば、目指す指標を間違いなく計測できるのか」です。
GAの埋め込みタグから、そのリクエストの実体、メソッド一覧、解析画面の見方、フィルタの使い方とか、「いつか必要になるだろうニッチな使い方」を徹底的に調べ、試しました。
それって逆に言うと、誰でも出来ることなんです。
だけど、本を読みまくっただけじゃ分からないニッチな使い方、とか、痒いところに手が届く「タグ埋め込み→解析画面での表示」といった部分を突っ込むことで、どうやら他に人が手を出してない分野っぽいぞコレ、というのが実感できてきました。


なんでそんな道を選んだかというと、一般的な「ツクルヒト」のレールにある、コーディング→デザイン→ディレクター→プロデューサー　みたいな流れの根底のコミュニケーション力が、僕には欠如しているからです。
ちゃんとコミュニケーションできる人はそういう王道をいけばいいと思うよ。
僕はそれができないので、ニッチな技術力でカバーしつつ、狭く深い領域に進んでいこうと思ったのです。

さーて来年はどんなことになるのやら。
「お前がやってることって、誰にでもできることじゃね？」
ってバレる前に、一歩進んでおかないといけないよなぁと思ってます。


いまんとこ一番新しくて、アクセス解析始めたけどよく分からない人にうってつけな本が[[こちら（Google Analytics 完全解説）:http://www.amazon.co.jp/exec/obidos/ASIN/4901823272/ryownet-22]]


    </content>
</entry>

<entry>
    <title>非同期版Google Analytics トラッキングを試す</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2009/12/21-123647.php" />
    <id>tag:ryow.net,2009:/blog//1.453</id>

    <published>2009-12-21T03:36:47Z</published>
    <updated>2009-12-25T03:30:24Z</updated>

    <summary><![CDATA[ &lt;script type=&quot;text/javascript&q...]]></summary>
    <author>
        <name>ryow</name>
        
    </author>
    
    <category term="analytics" label="analytics" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="google" 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://ryow.net/blog/">
        <![CDATA[
<pre name="code" class="js">
&lt;script type=&quot;text/javascript&quot;&gt;

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
  })();

&lt;/script&gt;
</pre>

<p>google Analyticsに非同期版のトラック方法というのが追加されました。</p>
<p>これは、通常はページを読み込んだ一番最後に（おそらくbody閉じタグの直前）に貼ってあるGAタグの位置でカウントするという方法ではなくて、とにかくこのタグを読み込んだらすぐにカウントするぜ、というものです。</p>
<p>使い方は簡単で、まず既存のGAタグがあればそれを削除し、上記のものに変える、というだけ。<br />
これを貼ると、headタグ直下にGAトラッカーが作成され、カウントされます。</p>

<h3>使いどころ</h3>
<p>いまのところ、よく見えてきませんが、ドメインを超えない設定をしてるなら（というかGAタグをカスタマイズしないで入れてるなら）、どっちでもＯＫというところでしょうか。<br />
で、非同期ということなので、Ajaxで画面を書き換えたときに表示させるならこの方法、というかんじなんでしょうね。</p>


<p>公式のアナウンスでは：</p>
<blockquote>
ページ末尾に入れる ga.js の場合、ページの読み込みに時間がかかると、離脱したセッションを正確に計測できないという不都合がありましたが、新しいトラッキングコードではそのような懸念がなくより正確なデータを計測できるため、ぜひ多くのユーザーの皆さまにご利用頂ければと思います。
</blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>Google Analyticsで携帯電話のアクセス解析をとる</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2009/12/03-134235.php" />
    <id>tag:ryow.net,2009:/blog//1.452</id>

    <published>2009-12-03T04:42:35Z</published>
    <updated>2010-01-24T11:44:48Z</updated>

    <summary>ついにAnalyticsが日本でも携帯電話に正式対応しましたね。 11月までは英...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="analyze" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="analytics" label="analytics" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mobile" label="mobile" 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://ryow.net/blog/">
        ついにAnalyticsが日本でも携帯電話に正式対応しましたね。

11月までは英語版だったケータイ用のコードが、日本語版でも普通に解析タグ(トラッキングコード)の発行ができていて感動的でした。
とはいっても、JSを埋め込むのではないため、ひと手間必要です。
-PHP
-Perl
-JSP
-ASPX

が対応言語です。

        <![CDATA[#ref(http://ryow.net/blog/2009/12/gamobile1.jpg,nolink)

トラッキングコード発行画面（またはプロファイルの「編集」＞「ステータスを確認」）でこちらの画面にうつります。

10月のバージョンアップでは、サブドメイン用のコードとマルチドメイン用のコードが追加されていました（標準タブ）。
今回は、それに加え「アドバンスタブ」で「携帯電話向けのサイト」が選べるようになっています。
ちなみに、携帯電話向けのトラッキングコードはまるっきり別物のため、PC用のコードを貼ったサイトでは、携帯用とPC用でプロファイルをわけて集計したほうがよさげです。


**手順
-表示されたヘッダ用コード(1)を、<html>より上に挿入します。
--ということは、完全に静的なHTMLページはトラッキングできない、ということです
-解析用コード(2)を</body>直線に貼ります。
--これは普通にGA.jsを読み込むのと同じ感じで使います。
-つまり、全ページに、ページ開始と最後にコードを貼るわけですね。
-さらに、ga.phpをダウンロードして、サーバーのルートディレクトリにおきます。
--ドメイン直下か、とにかく全ページがまずそのファイルにアクセスできるようにする必要があるということです。
ちなみにこのga.phpがトラッキングの本体なので、GA.jsに慣れたアクセス解析マニアはこのコードを読むと、よく知った変数名が出てくるので、だいたい何をやってるかはあたりがつくと思います。



コード(1)
 <?php
  // Copyright 2009 Google Inc. All Rights Reserved.
  $GA_ACCOUNT = "MO-11519721-1";
  $GA_PIXEL = "ga.php";
  function googleAnalyticsGetImageUrl() {
    global $GA_ACCOUNT, $GA_PIXEL;
    $url = "";
    $url .= $GA_PIXEL . "?";
    $url .= "utmac=" . $GA_ACCOUNT;
    $url .= "&utmn=" . rand(0, 0x7fffffff);
    $referer = $_SERVER["HTTP_REFERER"];
    $query = $_SERVER["QUERY_STRING"];
    $path = $_SERVER["REQUEST_URI"];
    if (empty($referer)) {
      $referer = "-";
    }
    $url .= "&utmr=" . urlencode($referer);
    if (!empty($path)) {
      $url .= "&utmp=" . urlencode($path);
    }
    $url .= "&guid=ON";
    return str_replace("&", "&amp;", $url);
  }
 ?>

コード(2)
 <?php
  $googleAnalyticsImageUrl = googleAnalyticsGetImageUrl();
 ?>
 <img src="<?= $googleAnalyticsImageUrl ?>" />


**iPhone/Android用にもこれでいいの？
実は、スマートフォン用はまた別のスクリプトがあります。
それは、上記トラッキングコードページの最下部にリンクがあり（ヘルプページへのリンク）、コードを取得できるようになってます。


]]>
    </content>
</entry>

<entry>
    <title>Google website opitimzerと Google Analyticsを併用する(2)</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2009/11/22-054527.php" />
    <id>tag:ryow.net,2009:/blog//1.451</id>

    <published>2009-11-21T20:45:27Z</published>
    <updated>2009-11-21T20:53:09Z</updated>

    <summary>こちらが新しい記事です。 えっと、いろいろあってwebsite optimize...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="analyze" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="analytics" label="analytics" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="optimizer" label="optimizer" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://ryow.net/blog/">
        こちらが新しい記事です。

えっと、いろいろあってwebsite optimizerとAnalyticsは別コードになってます。なので、両方のタグを同じページに貼っちゃっても大丈夫になりました。

以前は、両方ga.jsベースだった（と思ってたんだけど）のが、いまはちょっと変わりました。で、GAの方の識別子は例によって
&gt;var pageTracker = _gat._getTracker(&quot;UA-1234567-1&quot;);

なんですが、GOの識別子は

&gt;var gwoTracker=_gat._getTracker(&quot;UA-2345678-1&quot;);

のような感じ。呼び出してるトラッカーコードが変わったということです。
なので、両方のコードをマニュアル通りに貼ればＯＫです。
        
    </content>
</entry>

<entry>
    <title>Google website optimizerでクリックをコンバージョンにする</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2009/11/22-050543.php" />
    <id>tag:ryow.net,2009:/blog//1.450</id>

    <published>2009-11-21T20:05:43Z</published>
    <updated>2009-11-21T20:32:44Z</updated>

    <summary>Google website optimizer(GWO) は、使用にいくつかの...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="analyze" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="analytics" label="analytics" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="google" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="optimizer" label="optimizer" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://ryow.net/blog/">
        Google website optimizer(GWO) は、使用にいくつかの制限があります。
+すべてのテストページが、同じ（サブ）ドメイン下にあること
+オリジナルページ、テストページ、コンバージョンページのURLが分かっていること
+オリジナルページ、テストページ、コンバージョンページにJSタグを入れられること

で、3は別に当たり前のことなんですが、実は1がけっこうクセモノだったりします。
なんでかっていうと、たとえばA/Bテストを実施したときに、リンク先（コンバージョンにしたいページ）が別ドメインってことはよくあると思うのです。

        <![CDATA[そこで、外部へのリンク自体をコンバージョンとみなしてテストする方法を試してみました。Googleヘルプに載ってるコードはなぜか古いバージョンみたいで、2009年11月現在、こちらのコードが正しいと思います。

*カスタムABテストの設定手順
**GWOのテスト設定画面で、オリジナルページ、テストページ、コンバージョンページを同じURLにする
#ref(http://ryow.net/blog/2009/11/abtest1.jpg,nolink)
最初の設定なので、URLなんて考えずにさくっと通しちゃうためです。


**JSタグ確認
発行されるJSタグ（オリジナル、テスト、コンバージョン）を貼って、アップロードするなりローカルファイルを確認するなりで、ここも通しちゃいます。
ちなみに、「ページの最初に」とか「ページの最後に」っていう表現が出てきますが、これは''「ページの最初に＝<head>内に」''、''「ページの最後に＝</body>直前に」''という意味です。つまり
|~ページ|~headにいれる|~body終了直前に入れる|
|オリジナル|GWO開始コード|GWOテストコード|
|パターン|なし|GWOテストコード|
|コンバージョン|なし|GWOコンバージョンコード|
ということ。で、GWOのテストとコンバージョンのコード上の違いっていうのは本当に些細なことで、
 gwoTracker._trackPageview("/1273952067/test");
なのか
 gwoTracker._trackPageview("/1273952067/goal");
なのか、という違いだけです。

**テスト実行可能になったら、コンバージョンページ用のコードを削除してクリックコードに入れ替える
さて、やっと本題です。
+コンバージョン用のコード（コンバージョンページの</body>直前のやつ）を削除
+オリジナル、パターンページの<head>に関数を追加
+外部リンクのＡタグにonclickを追記して今の関数を呼び出す

呼び出す関数はこちら
 <script type="text/javascript">
 function GOcount(){
 	gwoTracker._trackPageview("/1273952067/goal");
 }
 </script>
 
クリックのＡタグはこんな感じ
 <a href="example.com/goal" onclick="GOcount()">ここをクリックでゴール</a>

これで、ゴールのページが別ドメインだろうと、サブドメインだろうとＯＫです。
ただし、A/Bテスト本来の意味の「このページを経由したユーザがいろいろあってコンバージョンした」というゴールではなく、ただ単に「Ａページを見た人とＢページを見た人のクリック率の違い」という意味の数字にしかならないので注意。]]>
    </content>
</entry>

<entry>
    <title>PukiWiki for Movable Typeをいれてみる</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2009/10/27-175614.php" />
    <id>tag:ryow.net,2009:/blog//1.449</id>

    <published>2009-10-27T08:56:14Z</published>
    <updated>2009-11-21T01:24:52Z</updated>

    <summary>最近、ブログを書くのもだるくなってきたので(いままでは改行変換なしでHTMLタグ...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="blog" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="movabletype" label="movabletype" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://ryow.net/blog/">
        最近、ブログを書くのもだるくなってきたので(いままでは改行変換なしでHTMLタグを直接打ってた)、Pukiwiki記法を使えれば楽しくなる、と思いました。そこで入れてみたのがこのPukiWiki for Movable Type というプラグインです。
http://blog.makotokw.com/portfolio/movabletype/pukiwiki_for_movable_type/

*これが大見出し

**見出し２

**見出し3

-リスト
-リスト

+OLリスト
+OLリスト

|~テーブル|~テーブル|
|ああああ|いいいい|
|うううう|アンタッチャブル|


        
    </content>
</entry>

<entry>
    <title>Flex3でドラッグドロップ、拡大縮小、回転なんかをするときのライブラリ</title>
    <link rel="alternate" type="text/html" href="http://ryow.net/blog/2009/10/17-105736.php" />
    <id>tag:ryow.net,2009:/blog//1.448</id>

    <published>2009-10-17T01:57:36Z</published>
    <updated>2009-10-17T02:32:12Z</updated>

    <summary>Flexを使っていて、オブジェクトのドラッグや回転などをやりたくなったとき（目標...</summary>
    <author>
        <name>ryow</name>
        
    </author>
    
        <category term="flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="flex" label="flex" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://ryow.net/blog/">
        <![CDATA[<p>Flexを使っていて、オブジェクトのドラッグや回転などをやりたくなったとき（目標はFontPark2）、いちいちDragEventなんかを書いていたらキーってなるので、ライブラリを使うと便利です。<br />
便利です、が、一長一短があります。</p>

<p>海外まで見回して、どうやら実際に使えそうなのは2種類あるようです。</p>

<h2><a href="http://www.rogue-development.com/objectHandles.html" target="_blank">ObjectHandles</a>(サンプルをDL可能)</h2>
<p><img src="/blog/2009/10/oh1.jpg" class="bdr" />
オブジェクトの上下左右と四つ角にハンドルが出て、それを引っ張るとドラッグできます。ハンドルは配列で制御してるので、いらない部分は消せます。</p>
<h3>できること</h3>
<p>・拡大/縮小<br />
・ドラッグ（ただし画面内のどこにでも持っていけるので、エリアを制御する必要あり）<br />
・回転（自由回転。シフトキーでの45度回転は非対応）<br />
・ハンドルはそれぞれ画像を当てられる</p>
<h3>特徴</h3>
<p>・拡縮は縦横非を保持するか、辺を自由に伸ばせるか設定可能<br />
・クリックしたものを自動で最前面にするかは設定可能<br />
・複数オブジェクト選択可能な設計（だけど実装はされてない）<br />
・ときどき更新されてる<br />
・画面上のオブジェクトをひとつずつObjectHandlesというクラスでラッパするという仕組み<br />
・ハンドルが表示される＝拡大可能<br />
・なのでドラッグだけできるオブジェクト、は非対応。拡大か回転か、許可する必要がある<br />
・操作感は一昔前のFlashっぽい。</p>



<h2><a href="http://joelhooks.com/2008/04/20/using-the-senocular-as3-transformtool-in-flex/" target="_blank">TransformTool</a>(右クリでソースを確認)</h2>
<p><img src="/blog/2009/10/tf1.jpg" class="bdr" />
オブジェクトの上下左右と四つ角にハンドルが出て、それを引っ張るとドラッグできます。</p>
<h3>できること</h3>
<p>・拡大/縮小<br />
・ドラッグ（ただし画面内のどこにでも持っていけるので、エリアを制御する必要あり）<br />
・回転（自由回転。シフトキーでの45度回転もOK）<br />
・回転の中心を設定可能<br />
・ハンドルはまとめて画像をあてられる</p>
<h3>特徴</h3>
<p>・拡縮は縦横非を保持するか、辺を自由に伸ばせるか設定可能<br />
・クリックしたものを自動で最前面にするかは設定可能（だけど設定すると、すべてのオブジェクトでそれが効いてしまう）<br />
・複数オブジェクト選択不可能<br />
・更新されてない<br />
・ハンドルオブジェクトを事前にインスタンス化しておき、クリックしたオブジェクトをハンドルのtargetとして使う仕様<br />
・なので、動かすものが全部同じ（ドラッグ回転可能）ならいいけど、一部は回転不可能にしたいとか、拡大したくないとか、個別の設定がある場合はメンドイ<br />
・操作感はwebツールっぽい。</p>


<p>あと、開発中でこういうのも見つけた：</p>
<h2><a href="http://www.flexjunk.com/examples/ObjectHandles2Example/ObjectHandles2Example.html" target="_blank">ObjectHandles2</a>(右クリでソース)</h2>
<p><img src="/blog/2009/10/oh2.jpg" class="bdr" />
なんと前出のObjectHandlesの進化版。<br />
Example7でUI切り替えにDegrafaというライブラリを使ってるけど、機能としては別にいらない。ちなみにDegrafaは超強力なビジュアルライブラリ。グラフとかマトリクスとか書く時はいいかも。</p>

<h3>できること</h3>
<p>・拡大/縮小<br />
・ドラッグ（ただし画面内のどこにでも持っていけるので、エリアを制御する必要あり）<br />
・回転（自由回転。シフトキーでの45度回転は付加。TransformToolの回転部分をコピペで実装できた）<br />
・ハンドルはまとめて画像をあてられる</p>
<h3>特徴</h3>
<p>・拡縮は縦横非を保持するか、辺を自由に伸ばせるか設定可能<br />
・クリックしたものを自動で最前面にするかは謎<br />
・複数オブジェクト選択可能（な作りになっていて、実装も半分ほどできてる。けど、ソースを見るとmulti selectのところだけ「ToDo」って書いてあって中身がない。自力で作れというのか！）<br />
・これから更新されるかも。<br />
・ハンドルオブジェクトを事前にインスタンス化しておき、クリックしたオブジェクトをハンドルのtargetとして使う仕様<br />
・っていうか設定が謎な上にメンドイ。<br />
・操作感はパワーポイントみたい。</p>


<h2>まとめると</h2>
<p>えーと、結局、ホントに一長一短なんですよ。<br />
シフト45度回転できないOhが、実装としては一番使いやすいんだけど、複数選択はできないので困ります。TransformToolはシンプルな考え方なんだけど、すべてが同じ条件でドラッグ、拡大、回転できるならこれでOK。でも複数選択できないので残念。targetの制御まわりを全部書き直さないとダメなのか？<br />
最後にOh2。これ、クラスの依存関係は超シンプルになってます。そのかわり、手を入れようと思ったら超メンドイです。Ohに比べると「選択状態の取得」とか微妙な動作バグとかがなくなってて素敵なんだけど、まだまだこれからな感じ。<br />
３日でアプリを実装しろ！　みたいな場合じゃなければOh2で進めていきたいけど、急いでる時はOhかTransformToolか。というところ。
ネットで検索してチュートリアル的なのが出てくるのはOhが一番多い。google codeだし。
</p>
]]>
        
    </content>
</entry>

</feed>
