<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">    <title>CSS-EBLOG</title>    <link rel="alternate" type="text/html" href="http://css-eblog.com/" />        <id>tag:css-eblog.com,2007-12-19://1</id>    <updated>2011-12-31T00:10:31Z</updated>    <subtitle>CSSの色々なテクニックのテンプレートの紹介と、初心者にも分かるようにテンプレートの解説をしています。</subtitle>    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.01</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Css-eblog" /><feedburner:info uri="css-eblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><logo>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</logo><entry>    <title><![CDATA[ドラッグ&amp;ドロップで要素を入れ替えるスマホ向けjQuery pluginを作った]]></title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/1rwuadqslTM/dragreplace.html" />    <id>tag:css-eblog.com,2011://1.208</id>    <published>2011-12-31T00:10:00Z</published>    <updated>2011-12-31T00:10:31Z</updated>    <summary>     dragreplace.js              とある案件で作...</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="Javascript関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="スマートフォン関連" scheme="http://www.sixapart.com/ns/types#category" />        <category term="jquerypluginiphoneioswebkitandroid" label="jQuery Plugin iPhone iOS WebKit Android" scheme="http://www.sixapart.com/ns/types#tag" />        <content type="html" xml:lang="ja" xml:base="http://css-eblog.com/">        &lt;div class="section"&gt;
    &lt;h2 class="sectionTitle"&gt;dragreplace.js&lt;/h2&gt;

    &lt;p&gt;
        とある案件で作る必要があったので、それをカスタマイズしてjQueryプラグインの形にしてみたのが今回作成した&lt;span class="pickup"&gt;dragreplace.js&lt;/span&gt;です。
    &lt;/p&gt;
    &lt;p&gt;
        できることはシンプルで、ドラッグ&amp;amp;ドロップで要素を入れ替えられるようにしました。ただ、主にスマホ(WebKit)で使うことを想定して作っています。&lt;br /&gt;
        そのため動作はWebKitだけになっています。（transitionやtransformを使って操作しているため）
    &lt;/p&gt;
    &lt;p&gt;
        pluginについては&lt;a href="https://github.com/edom18/dragreplace.js" target="_blank"&gt;github&lt;/a&gt;でも公開しています。
    &lt;/p&gt;

    &lt;div class="section"&gt;
        &lt;h3 class="sectionTitle"&gt;デモ&lt;/h3&gt;
        &lt;p&gt;
            &lt;a href="http://jsdo.it/" target="_blank"&gt;jsdo.it&lt;/a&gt;でデモを公開しています。それを貼りつけたのがこちら↓&lt;br /&gt;
            (WebKit系のみ対応しているので、WebKit系ブラウザでご覧ください)
        &lt;/p&gt;
        &lt;script type="text/javascript" src="http://jsdo.it/blogparts/5Zh3/js?view=design"&gt;&lt;/script&gt;&lt;p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"&gt;&lt;a href="http://jsdo.it/edo_m18/5Zh3" title="dragreplace.js demo"&gt;dragreplace.js demo - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt;
    
        &lt;p&gt;
            動作は単純です。右側にある部分をドラッグすることで、該当の要素と入れ替えることができます。&lt;br /&gt;
            jQueryのpluginの形になっているので以下のように指定するだけで簡単にdrag&amp;amp;dropで入れ替えができます。&lt;br /&gt;
            jQueryのセレクターで指定した要素でグルーピングされるので、グループ外の要素とは置換されなくなります。
        &lt;/p&gt;
        &lt;textarea class="javascript" cols="40" rows="5" id="dragreplace01" name="dragreplace01"&gt; 
            $('.replaceableList li').replaceable();
        &lt;/textarea&gt;
        &lt;p&gt;
            要素の置換にはtransitionを利用してアニメーションされるようにしているので、どことどこが入れ替わったのかが視覚的にわかりやすくなっています。
        &lt;/p&gt;
    &lt;!-- /.section --&gt;&lt;/div&gt;

    &lt;h2 class="sectionTitle"&gt;Config - 設定オプション&lt;/h2&gt;
    &lt;textarea class="javascript" cols="40" rows="5" id="dragreplace02" name="dragreplace02"&gt; 
        $('.replaceableList li').replaceable({
            dragger: false
        });
    &lt;/textarea&gt;
    &lt;p&gt;
        draggerオプションをfalse（デフォルトはture）にすることで、要素全体をドラッグ対象にすることができます。&lt;br /&gt;
        trueの場合は指定した要素の右側にドラッグするための要素が自動で追加され、そこをドラッグすることで要素の移動ができるようになります。
    &lt;/p&gt;

    &lt;h2 class="sectionTitle"&gt;イベントについて&lt;/h2&gt;
    &lt;p&gt;
        dragreplace.jsでは、置換完了時にカスタムイベント&lt;span class="pickup"&gt;replaced&lt;/span&gt;を発火しています。&lt;br /&gt;
        置換完了時になにか処理したい場合にこのイベントをlistenしてください。
    &lt;/p&gt;
    &lt;p&gt;
        また、イベント発火時にはそれぞれ置換された要素の参照が渡されます。(fromとtoをプロパティに持つオブジェクト）
    &lt;/p&gt;
    &lt;textarea class="javascript" cols="40" rows="5" id="dragreplace03" name="dragreplace03"&gt; 
        $('.replaceableList li').replaceable().bind('replaced', function (event, replaceElements) {
            //replaceElements.from 置換元の要素です。（ドラッグしたほう）
            //replaceElements.to 置換先の要素です。
        });
    &lt;/textarea&gt;

    &lt;h2 class="sectionTitle"&gt;CSSについて&lt;/h2&gt;
    &lt;p&gt;
        dragreplace.jsは、ドラッグ中や置換対象などの見た目をCSSで制御しています。その際に使用しているクラスは以下の通りです。
    &lt;/p&gt;
    &lt;table class="exTbl" cellspacing="0"&gt;
        &lt;tbody&gt;
        &lt;tr class="title"&gt;
            &lt;th&gt;クラス名&lt;/th&gt;
            &lt;th&gt;利用説明&lt;/th&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class="optionName"&gt;replaceable&lt;/td&gt;
            &lt;td class="optionDescription"&gt;replaceableを実行すると、対象となる要素に自動で付与されます。見た目の変更はありません。&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class="optionName"&gt;dragging&lt;/td&gt;
            &lt;td class="optionDescription"&gt;ドラッグ中に、ドラッグ元の要素に付与されます。ドラッグされていることを明示的にする目的で使用されます。&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class="optionName"&gt;dragTarget&lt;/td&gt;
            &lt;td class="optionDescription"&gt;ドラッグ中に、マウスや指に追従する要素に付与されます。要素自体はドラッグ元の要素の複製になります。&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class="optionName"&gt;hit&lt;/td&gt;
            &lt;td class="optionDescription"&gt;ドラッグしている要素が置換対象にヒットしているかどうかの当たり判定です。当たり判定がtureの場合にhitクラスが付与されます。&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td class="optionName"&gt;replaceItemMove&lt;/td&gt;
            &lt;td class="optionDescription"&gt;置換実行時、相互に要素が移動しているときに付与されるクラスです。要素自体はそれぞれの要素の複製になります。&lt;/td&gt;
        &lt;/tr&gt;
        &lt;/tbody&gt;
        &lt;/table&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;script type="text/javascript"&gt; 
    dp.SyntaxHighlighter.HighlightAll('dragreplace01');
    dp.SyntaxHighlighter.HighlightAll('dragreplace02');
    dp.SyntaxHighlighter.HighlightAll('dragreplace03');
&lt;/script&gt;
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IOaQ1qq07cYdosBV2pc55xz_2zw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IOaQ1qq07cYdosBV2pc55xz_2zw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IOaQ1qq07cYdosBV2pc55xz_2zw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IOaQ1qq07cYdosBV2pc55xz_2zw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/1rwuadqslTM" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/javascript-link/dragreplace.html</feedburner:origLink></entry><entry>    <title>sassを使ってCSSのめんどくさい繰り返し部分を楽に記述する</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/o33U_uDd_0Y/sass-loop.html" />    <id>tag:css-eblog.com,2011://1.207</id>    <published>2011-12-20T13:45:00Z</published>    <updated>2011-12-20T23:52:36Z</updated>    <summary>sassのちょっと便利な使い方を紹介。繰り返し処理をメインに、めんどくさい処理を手軽に書く方法を解説しています。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="sass" scheme="http://www.sixapart.com/ns/types#category" />        <category term="css" label="css" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="sass" label="sass" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="scss" label="scss" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;p&gt;この記事は&lt;a href="http://atnd.org/events/21919" target="_blank"&gt;Less &amp;amp; Sass Advent calendar 2011&lt;/a&gt;の20日目として書いている記事です。&lt;/p&gt;

&lt;h2 class="sectionTitle"&gt;sassを使った繰り返し処理の基本&lt;/h2&gt;
&lt;p&gt;
sassにはプログラム言語と同じような処理が存在します。&lt;br /&gt;
その中でも繰り返し処理をピックアップして、ちょっとめんどくさい処理を簡単にする方法をご紹介します。&lt;br /&gt;
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;


&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;単純な繰り返し処理&lt;/h2&gt;
&lt;p&gt;
sassには繰り返し処理に使える文として、@each と @for があります。&lt;br /&gt;
JSなどではおなじみですね。&lt;br /&gt;
使い方も、他のプログラム言語のものと同じです。&lt;br /&gt;
@eachは指定したリストを順番に処理するもの、@forは指定した数値の間で繰り返し処理をするものです。&lt;br /&gt;
また繰り返しではありませんが、めんどくさい処理をまとめる、という意味で@functionも紹介したいと思います。
&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;記述方法を見てみる(@each)&lt;/h3&gt;
&lt;p&gt;実際の記述方法は以下になります。&lt;/p&gt;

&lt;p&gt;展開前&lt;/p&gt;
&lt;textarea class="css" cols="40" rows="5" id="sass-sample1" name="sass-sample1"&gt; 
    .hoge {
        @each $prefix in -webkit-, -moz-, -ms-, -o-, '' {
            #{$prefix}border-radius: 4px;
        }
    }
&lt;/textarea&gt;

&lt;p&gt;展開後&lt;/p&gt;
&lt;textarea class="css" cols="40" rows="5" id="sass-sample2" name="sass-sample2"&gt; 
.hoge {
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    -ms-border-radius: 4px;
    -o-border-radius: 4px;
    border-radius: 4px;
}
&lt;/textarea&gt;

&lt;p&gt;
@eachは、いくつかの決まったリストなどを処理することに向いています。&lt;br /&gt;
例で書いたように、ベンダープレフィクスなどがいい例だと思います。&lt;br /&gt;
こうしてベンダープレフィクスを自動でつける処理を書いておけば、あとはこれを指定すれば自動的にベンダープレフィクスをつけてくれる、というわけです。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;


&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;記述方法を見てみる(@for)&lt;/h3&gt;
&lt;p&gt;では続いて@for文を見てみましょう。&lt;/p&gt;

&lt;p&gt;展開前&lt;/p&gt;
&lt;textarea class="css" cols="40" rows="5" id="sass-sample3" name="sass-sample3"&gt; 
.hoge {
    @for $i from 0 through 10 {
        li:nth-child(#{$i + 1}) {
            left: #{50 * $i}px;
            top:  #{80 * $i}px;
        }
    }
}
&lt;/textarea&gt;

&lt;p&gt;
@eachとは違い、連番や決まった回数だけ繰り返すのに向いている処理です。&lt;br /&gt;
またプログラムのように、現在何回目の繰り返しかが分かるので（例では変数$i）、
それを利用することで、例のように等間隔で配置される要素の位置指定などにも使えます。
&lt;/p&gt;

&lt;p&gt;実際にこれをCSSに出力すると、以下のようになります。&lt;/p&gt;

&lt;textarea class="css" cols="40" rows="5" id="sass-sample4" name="sass-sample4"&gt; 
.hoge li:nth-child(1) {
  left: 0px;
  top: 0px;
}
.hoge li:nth-child(2) {
  left: 50px;
  top: 80px;
}
.hoge li:nth-child(3) {
  left: 100px;
  top: 160px;
}
.hoge li:nth-child(4) {
  left: 150px;
  top: 240px;
}
.hoge li:nth-child(5) {
  left: 200px;
  top: 320px;
}
.hoge li:nth-child(6) {
  left: 250px;
  top: 400px;
}
.hoge li:nth-child(7) {
  left: 300px;
  top: 480px;
}
.hoge li:nth-child(8) {
  left: 350px;
  top: 560px;
}
.hoge li:nth-child(9) {
  left: 400px;
  top: 640px;
}
.hoge li:nth-child(10) {
  left: 450px;
  top: 720px;
}
.hoge li:nth-child(11) {
  left: 500px;
  top: 800px;
}
&lt;/textarea&gt;

&lt;p&gt;
sassではそれほどの行を書いていなくても、繰り返す回数が増えれば増えるだけどんどんとCSSの中身が増えていきます。&lt;br /&gt;
例では10回だけでしたが、それでもこれを実際に手で書くとなるとかなりめんどくさいですよね。&lt;br /&gt;
こうした繰り返し処理を簡単にしてくれるのがsassのいいところです。&lt;br /&gt;
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;


&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;@functionを使って何度も記述することをまとめる&lt;/h2&gt;
&lt;p&gt;
さて、最後に紹介するのは@function文です。&lt;br /&gt;
これも他のプログラムと同様、決まった処理をしてくれるものです。&lt;br /&gt;
簡単に例を書いてみます。
&lt;/p&gt;

&lt;textarea class="css" cols="40" rows="5" id="sass-sample5" name="sass-sample5"&gt; 
//フォントサイズのリスト
$fontSizeList: 62%, 70%, 77%, 85%, 93%, 100%, 108%, 116%, 124%, 131%, 139%, 147%, 154%, 162%, 170%, 177%, 185%, 193%, 200%, 208%, 216%, 224%, 231%, 239%, 247%, 254%, 262%, 270%, 277%, 285%, 293%, 300%, 308%;

//指定したフォントサイズに該当する%を返す関数
@function fz($size) {
    @if $size &lt; 8 {
        $size: 8;
    }
    @if $size &gt; 40 {
        $size: 40;
    }
    @return nth($fontSizeList, $size - 7);
}
&lt;/textarea&gt;

&lt;p&gt;
今回の例では、事前に作っておいたフォントサイズのリストから、指定したサイズの%を返す関数を書いて見ました。&lt;br /&gt;
普段CSSを書いていて、%の相対的なサイズを指定していると、12px相当はいくつだったっけ・・というように、細かい数字が思い出せないことがあります。&lt;br /&gt;
しかしこうして関数化しておけば、&lt;span class="pickup"&gt;font-size: fz(10);&lt;/span&gt;というように指定するだけで、10px相当の%を自動で設定してくれます。
&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;@if文を使って条件分岐&lt;/h3&gt;
&lt;p&gt;
@if文を@functionの中で使うと、さらに柔軟な対応が可能になります。&lt;br /&gt;
上の例でも使っているように、8以下、あるいは40以上の数字が指定されていた場合は、それぞれ数値を丸める処理を入れています。（↓ここの部分）
&lt;/p&gt;

&lt;textarea class="css" cols="40" rows="5" id="sass-sample6" name="sass-sample6"&gt; 
@if $size &lt; 8 {
    $size: 8;
}
@if $size &gt; 40 {
    $size: 40;
}
&lt;/textarea&gt;

&lt;p&gt;
こうした安全対策や、条件分岐を入れることで汎用的な関数を作ることができるというわけです。
&lt;/p&gt;

&lt;p&gt;
今度の例は渡された引数に応じて出力する値を変化させるものです。&lt;br /&gt;
JSなどプログラムに触れたことがある方は見てすぐにどんな処理がされているのか分かると思います。&lt;br /&gt;
sassでは、こうした「CSSだとめんどくさい！」と思うことをプログラムを扱うように簡単に記述することができるのが最大のメリットだと思います。&lt;br /&gt;
&lt;/p&gt;

&lt;p&gt;
またもうひとつのメリットとして、プログラムが分からなくても使える、という点です。&lt;br /&gt;
つまり、sassの基本的な記述法である"入れ子"だけを使い、こうした繰り返し処理を使わなくてもCSSに変換することができることです。
&lt;/p&gt;
&lt;p&gt;
さらに言えば、入れ子すら使わず、&lt;strong class="attention"&gt;ただCSSをそのまま記述するだけでも問題ありません。&lt;/strong&gt;&lt;br /&gt;
これは、sassが分からない人でも問題なく使える、ということを意味しています。&lt;br /&gt;
&lt;/p&gt;

&lt;p&gt;
そして、徐々に興味があることやこんなことをやってみたい、と思った処理を導入していくだけで、いずれはsassの書き方が身についていくことでしょう。&lt;br /&gt;
プログラムにアレルギーのある人でも、とりあえず一度導入してみてはどうでしょうか。&lt;br /&gt;
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;GUIを使う&lt;/h2&gt;
&lt;p&gt;
余談として、sassを使うにはターミナルなどの、いわゆる「黒い画面」を使わないとできないからなーと思っている人もいるかもしれません。&lt;br /&gt;
しかし、Adobe AIR製の&lt;a href="http://mhs.github.com/scout-app/" target="_blank"&gt;GUIでsassファイルのコンパイル&lt;/a&gt;ができるアプリも登場したようです。&lt;br /&gt;
これを使えば、ターミナルなどのCUIが分からない人でも問題なくsassを使うことができると思います。&lt;br /&gt;
sassを恐れずに、ぜひ一度試してみてください。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;script type="text/javascript"&gt; 
    dp.SyntaxHighlighter.HighlightAll('sass-sample1');
    dp.SyntaxHighlighter.HighlightAll('sass-sample2');
    dp.SyntaxHighlighter.HighlightAll('sass-sample3');
    dp.SyntaxHighlighter.HighlightAll('sass-sample4');
    dp.SyntaxHighlighter.HighlightAll('sass-sample5');
    dp.SyntaxHighlighter.HighlightAll('sass-sample6');
&lt;/script&gt;
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/anujUdpVEN0soWZP2uqNnAM08VY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/anujUdpVEN0soWZP2uqNnAM08VY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/anujUdpVEN0soWZP2uqNnAM08VY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/anujUdpVEN0soWZP2uqNnAM08VY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/o33U_uDd_0Y" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/sass/sass-loop.html</feedburner:origLink></entry><entry>    <title>TwtterにすぐつぶやけるWebアプリ「速ツイ」を作ってみた</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/iOUBhGP2Vdw/twitter-sokutwi.html" />    <id>tag:css-eblog.com,2011://1.205</id>    <published>2011-11-06T00:24:00Z</published>    <updated>2011-11-08T03:14:52Z</updated>    <summary>Node.jsをベースに、OAuthの勉強がてら作った「速攻つぶやけるTwitterクライアント」です。iPhoneならホーム画面に追加することで起動後すぐにつぶやくことができます。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="Node.js" scheme="http://www.sixapart.com/ns/types#category" />            <category term="ツール" scheme="http://www.sixapart.com/ns/types#category" />        <category term="nodejs" label="Node.js" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="twitter" label="Twitter" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;とにかくつぶやくだけ！&lt;/h2&gt;
&lt;p&gt;&lt;ins class="insert" datetime="2011-11-07T23:54:00+09:00"&gt;※問題があったのでいったん落としました。&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;&lt;ins class="insert" datetime="2011-11-07T23:54:00+09:00"&gt;※ログインができない問題を対処しました。&lt;/ins&gt;&lt;/p&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1111/img_sokutwi.jpg" alt="速ツイキャプチャ" /&gt;&lt;/p&gt;
&lt;p&gt;Node.jsとOAuthの勉強ということで、とにかくつぶやくだけのTwitterクライアント「&lt;a href="http://sokutwi.edo-m18.me/" target="_blank"&gt;速ツイ [ http://sokutwi.edo-m18.me/ ]&lt;/a&gt;」を作ってみました。&lt;/p&gt;
&lt;p&gt;Twitterにつぶやきたいときとタイムラインを見たい時はタイミングが違うなーと思ったのがきっかけで作ったものです。&lt;/p&gt;
&lt;p&gt;とにかくすぐにつぶやきたい！ というときに使えるクライアントです。&lt;/p&gt;
&lt;p&gt;なので、タイムラインの閲覧やReply、DirectMessageなどの普通はある機能は一切ありません。なのでページを開くだけなので非常に高速。&lt;br /&gt;
またiPhoneの場合は「ホーム画面に追加」で追加するとWebアプリとして機能するように作ってあります。&lt;/p&gt;
&lt;p&gt;作った感想や使ったモジュールなどは&lt;a href="http://d.hatena.ne.jp/edo_m18/" target="_blank"&gt;別ブログ&lt;/a&gt;でNode.js関係の話を書いているので、そちらで書こうと思ってます。（時間があれば・・・）&lt;/p&gt;
&lt;p&gt;ただ、本当に勉強のために作ったのと、もともと自分で使う想定で作ったので、使う場合は自己責任でお願いします・・。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AvIykWMiSYEOAiyPCnJkbrRu_o4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AvIykWMiSYEOAiyPCnJkbrRu_o4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AvIykWMiSYEOAiyPCnJkbrRu_o4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AvIykWMiSYEOAiyPCnJkbrRu_o4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/iOUBhGP2Vdw" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/tools/twitter-sokutwi.html</feedburner:origLink></entry><entry>    <title>HTML5でスマホをコントローラにするゲームを作ってみた</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/hKpditkNzIg/html5-sp-controll.html" />    <id>tag:css-eblog.com,2011://1.204</id>    <published>2011-10-27T00:00:00Z</published>    <updated>2011-10-27T00:03:03Z</updated>    <summary> Canvasゲームをカスタマイズ ゲーム自体は以前作ったものをそのまま使いまし...</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="Canvas関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="HTML5" scheme="http://www.sixapart.com/ns/types#category" />            <category term="Javascript関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="スマートフォン関連" scheme="http://www.sixapart.com/ns/types#category" />        <category term="html5" label="HTML5" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="iphone" label="iPhone" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="websocket" label="WebSocket" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;Canvasゲームをカスタマイズ&lt;/h2&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1110/html5-sp-controll.png" /&gt;&lt;/p&gt;
&lt;p&gt;ゲーム自体は&lt;a href="/canvas/canvas-shooting-game.html"&gt;以前作ったもの&lt;/a&gt;をそのまま使いました。&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle" style="clear: both;"&gt;今回作ったスマホコントローラ版&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://edo-m18.me:9000/" target="_blank"&gt;http://edo-m18.me:9000/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以前作ったものをカスタマイズして、弾を打つ部分と自機を移動する部分を、関連付けたスマホから操作できるようにしてみたものです。&lt;br /&gt;
これはあくまでアイデア、ってことで快適にプレイできるまでは作りこんでいません(; ´Д`)&lt;br /&gt;
ただ、特にプラグインなどを使わずともここまでできる、というのは非常に面白いなと思いました。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;Node.jsを使って実装&lt;/h3&gt;
&lt;p&gt;
今回、WebSocket部分は&lt;a href="http://nodejs.jp/" target="_blank"&gt;Node.js&lt;/a&gt;を使って実装しました。&lt;br /&gt;
最近Node.jsにハマりすぎてプライベートではNode.jsしか触ってませんｗ&lt;br /&gt;
やはりサーバサイドとクライアントサイドが同じ言語、というのはとても実装しやすいですね。Node.jsおすすめです。&lt;br /&gt;
ちなみに最近、Node.js関連については別ブログで記事を書いてます。まだ全然記事数が少ないですが、興味がある方はぜひ。→ &lt;a href="http://d.hatena.ne.jp/edo_m18/" target="_blank"&gt;EBLOG Branch&lt;/a&gt;
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;機能説明&lt;/h3&gt;
&lt;p&gt;
簡単に機能を説明すると、Node.jsの&lt;a href="http://socket.io/" target="_blank"&gt;Socket.IO&lt;/a&gt;モジュールを使ってWebSocketを使えるようにします。&lt;br /&gt;
その後、Socket.IOのversion0.7? から追加されたnamespaceを使ってPCで見ている画面とスマホ画面を結びつけます。
&lt;/p&gt;

&lt;p&gt;
最初にPCでアクセスするとスマホでアクセスするためのID入力が求められるので適当なアルファベットでIDを入力します。&lt;br /&gt;
するとそのIDを元にスマホでアクセスするURLが表示されるので、そのURLにスマホでアクセスします。
&lt;/p&gt;

&lt;p&gt;
すると画面には「tab to shoot!」という文字しか出ませんが、タップで弾を発射、加速度センサーで自機の移動ができるようになります。&lt;br /&gt;
横向きに持ち、左右に傾けることで自機を動かすことができるようになっています。
&lt;/p&gt;

&lt;p&gt;
若干タイムラグが発生しますが、ゲーム画面のコントローラとしてスマホを使うのは面白なーと思って作ってみました。&lt;br /&gt;
※まだ全然調整していないので、Androidでは動いてません。現状はiOSオンリーです。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M1VUJPfDO4WeX7RuI-3iBpK90JY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M1VUJPfDO4WeX7RuI-3iBpK90JY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M1VUJPfDO4WeX7RuI-3iBpK90JY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M1VUJPfDO4WeX7RuI-3iBpK90JY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/hKpditkNzIg" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/html5/html5-sp-controll.html</feedburner:origLink></entry><entry>    <title>本番環境でテスト？！ Charlesを使った簡単サイト修正</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/if-bA5lTzPM/charles.html" />    <id>tag:css-eblog.com,2011://1.203</id>    <published>2011-09-12T00:00:00Z</published>    <updated>2011-09-12T00:23:55Z</updated>    <summary>Charlesというプロキシツールを使った、本番で修正をテストしてしまう方法を、動画デモを使って紹介しています。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="webの便利なものを紹介" scheme="http://www.sixapart.com/ns/types#category" />            <category term="ツール" scheme="http://www.sixapart.com/ns/types#category" />        <category term="charles" label="Charles" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="proxy" label="proxy" 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" />    <category term="修正" label="修正" scheme="http://www.sixapart.com/ns/types#tag" />        <content type="html" xml:lang="ja" xml:base="http://css-eblog.com/">        &lt;div class="section"&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1109/cap_charles.jpg" alt="Charles site" /&gt;&lt;/p&gt;
&lt;p&gt;前回の「&lt;a href="/tools/weinre.html"&gt;スマホの開発が超絶楽に！ weinreでスマートフォンをPCでリモートデバッグ！&lt;/a&gt;」は大変好評なようでうれしい限りです。自分もこれを知ったときはかなり興奮したのを覚えているので、同じ気持になってもらえたら幸いです。&lt;/p&gt;
&lt;p&gt;さて、今回はデバッグツール的なつながりで&lt;a href="http://www.charlesproxy.com/" target="_blank"&gt;Charles&lt;/a&gt;というプロキシツールの話をしたいと思います。&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;プロキシって？&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://e-words.jp/w/E38397E383ADE382ADE382B7E382B5E383BCE38390.html" target="_blank"&gt;プロキシサーバー&lt;/a&gt;とは、e-Wordsでは「&lt;q&gt;単にプロキシと言う場合は、WWW閲覧のためにHTTPによる接続を中継するHTTPプロキシを指す場合が多い。&lt;/q&gt;」という説明がされています。&lt;/p&gt;
&lt;p&gt;つまりどういうことかと言うと、&lt;strong class="attention"&gt;外部と通信する際に、通信そのものを代理でやり取りしてくれるソフトウェア（サーバ）&lt;/strong&gt;ということができると思います。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;デモ動画&lt;/h2&gt;
&lt;p&gt;今回もまた、文章では伝わりづらいので実際にその作業をしているデモ動画を作成しました。&lt;/p&gt;
&lt;p&gt;※注意：デモでは本来なら手を入れることができないサイトに対しても使える＝本番環境でも問題ない、ということを説明するためにYahoo! Japanのサイトでテストしています。なので、実際には修正を行おうとしているサイトと、修正すべきファイルは手元にあるはずなので適宜それらと置き換えて読み進めてください。&lt;/p&gt;
&lt;p&gt;&lt;iframe width="510" height="382" src="http://www.youtube.com/embed/fUWhPTSlmI0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;デモ解説&lt;/h3&gt;
&lt;p&gt;いかがでしたでしょうか。Charlesを使うことで非常に手軽に本番環境でのテストが行えることが分かってもらえたのではないでしょうか。&lt;/p&gt;
&lt;p&gt;ただ注意としては、（当然ですが）実際に本番環境をいじっているわけではないのでCharlesを落としてしまえば本当の本番環境に戻ります。なので、最終的にはこうして修正・チェックしたファイルを本番へ上げる必要があります。&lt;/p&gt;
&lt;p&gt;ただCharlesを使うことによって、「&lt;strong class="attention"&gt;テストで大丈夫だったものを本番に上げたらおかしくなった&lt;/strong&gt;」ということを極力減らすことができる、ということです。（なんせ、本番環境でうまく行っていたのだから、それをアップしたら当然テストしたものと同じ結果になる、という理屈）&lt;/p&gt;
&lt;p&gt;では、動画でやっていたことをピックアップしながらなにをしていたのかの詳細をしていきたいと思います。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;作業手順 - 1&lt;/h3&gt;
&lt;p&gt;まず、&lt;a href="http://www.charlesproxy.com/" target="_blank"&gt;Charles&lt;/a&gt;のサイトからアプリをダウンロードします。（Windows版、Mac版ともにあります）&lt;/p&gt;
&lt;p&gt;サイトトップ右側にある「Download a free trial Version **」からダウンロードページへ進みます。&lt;/p&gt;
&lt;p&gt;するとページ中程にWindows 32bit版、64bit版、Mac OS X版、Linux / UNIX版のリンクがあるので、そこから該当のファイルをダウンロードし、インストールします。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;作業手順 - 2&lt;/h3&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1109/cap_charles_01.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;インストール後、起動したらメニューバーから「Proxy &amp;gt; Mac OS X Proxy(とMozilla Firefox Proxy)」のチェックを入れます。（Macの場合）&lt;/p&gt;
&lt;p&gt;Firefoxに限っては、専用のCharlesアドオンをインストールしないとダメなようです。ただ、インストールは簡単で、「Mozilla Firefox Proxy」のチェックを入れるとインストールするかどうかを聞かれるので、そのまま「はい」を選択してインストールすればOKです。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section" style="clear: both;"&gt;
&lt;h3 class="sectionTitle"&gt;作業手順 - 3&lt;/h3&gt;
&lt;p&gt;続いて、メニューバーの「Tools &amp;gt; Map Local」を選び、マッピングの設定を行います。&lt;/p&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1109/cap_charles_02.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;マッピングについては、まずリダイレクトしたいURLを指定し、そのURLへアクセスした場合にどのファイルを参照させるかを指定します。（つまり、参照先のURLを無理やりローカル（手元）にあるファイルにリダイレクトする＝Map Local）&lt;/p&gt;
&lt;p&gt;ここまで設定したところで、設定したサイトを見てみると、上で設定したファイルの変更がそのまま反映することが確認できると思います。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;いかがでしょうか。それほど導入がむずかしくないことが分かるかと思います。&lt;/p&gt;
&lt;p&gt;一点注意としては、Trial版は30分経つとCharlesが自動で終了する、という点です。（ただ、もう一度普通に起動し直せば、設定した内容は保存されているので使い続けることはできます）&lt;/p&gt;
&lt;p&gt;今回のケースはHTMLでデモをしましたが、もちろんCSSやJSを同じようにローカルファイルを参照させることもできます。（逆に、ある程度の規模の案件だとHTMLはPHPなりのプログラムで書き出している、ということも少なくないと思います。その場合は今回の手法では修正がむずかしいかもしれません）&lt;/p&gt;
&lt;p&gt;ちなみに、画像ファイルの場合はとあるディレクトリ以下をすべてローカルのファイルを参照するようにしたい、なんていう要望があるかもしれません。その場合は、URLの指定の箇所で「http://hoge.com/img/*」のようにアスタリスクを入れることで、その下のディレクトリにアクセスがあった場合は、ローカルの指定したディレクトリにリダイレクト、という設定もできるようになっています。&lt;/p&gt;
&lt;p&gt;このCharels、知ったときはかなり感動しました。たとえば、アカウントがなくて本番にアクセスできない環境（ファイルを納品だけしている場合など）のときに、でもなんとか原因を調べてくれ、なんていう要望をもらったときでもなんとかできてしまったりします。&lt;/p&gt;
&lt;p&gt;もちろん通常の開発時でもとても役に立つので、一度試してみてはいかがでしょうか。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D5CNJDk_GqSdHC4Se6mmHhG4OXw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D5CNJDk_GqSdHC4Se6mmHhG4OXw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D5CNJDk_GqSdHC4Se6mmHhG4OXw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D5CNJDk_GqSdHC4Se6mmHhG4OXw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/if-bA5lTzPM" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/tools/charles.html</feedburner:origLink></entry><entry>    <title>スマホの開発が超絶楽に！ weinreでスマートフォンをPCでリモートデバッグ！</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/MeXDts5JTBU/weinre.html" />    <id>tag:css-eblog.com,2011://1.202</id>    <published>2011-09-05T00:07:00Z</published>    <updated>2011-09-05T00:10:11Z</updated>    <summary>リモートデバッグを実現するweinreの使い方と、動画によるデモを公開しています。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="Android関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="iPhone関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="webの便利なものを紹介" scheme="http://www.sixapart.com/ns/types#category" />            <category term="ツール" scheme="http://www.sixapart.com/ns/types#category" />        <category term="remotedebug" label="remote debug" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="webkit" label="webkit" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="weinre" label="weinre" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;weinreって？&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://phonegap.github.com/weinre/" target="_blank"&gt;weinre&lt;/a&gt;とは、サイトでは次のように書かれています。&lt;q&gt;weinre is Web Inspector Remote.&lt;/q&gt;。&lt;br /&gt;
この単語の頭2文字ずつをつなげて「we in re」ということのようです。読みは「ワイナリー」とか「ワイナー」みたいな。&lt;/p&gt;
&lt;p&gt;つまり、リモートでデバッグができる、ということです。百聞は一見にしかず、ということで、実際に使ってみたものの動画キャプチャをアップしているので、下の動画を見てみてください。きっとその機能に驚くはずです。(&lt;strong class="attention"&gt;ちょっと画面が小さいので、720pにしてフルスクリーンで見るといいかも&lt;/strong&gt;）&lt;/p&gt;

&lt;p&gt;&lt;iframe width="510" height="316" src="http://www.youtube.com/embed/wFPB4yTUTcM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;ダウンロード&lt;/h3&gt;
&lt;p&gt;Githubで公開されている&lt;a href="https://github.com/phonegap/weinre/archives/master" target="_blank"&gt;phonegap / weinre - Github&lt;/a&gt;からダウンロードできます。&lt;/p&gt;
&lt;p&gt;zipで公開されている2ファイルのうち、今回は「weinre-jar-1.5.0.zip」を使いました。Mac版はアプリになっていて使いやすいのですが、ただ設定をいじるのが大変だったので、jarファイルを直接実行するのがいいでしょう。デモもそれを想定してターミナルから実行しています。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;weinreをターミナルから実行する&lt;/h2&gt;
&lt;p&gt;さて、今回のデモでやっているように、weinreをターミナルから実行してみます。（社内のサーバに設置しておくときにもやりやすいかと思います）&lt;/p&gt;
&lt;p&gt;まず、Githubから落としてきたファイルを解凍します。生成されるファイルは2つで、使う方はweinre.jarのほうです。場所はどこでもいいので、あとあと使いやすい場所に保存しておくといいでしょう。&lt;/p&gt;
&lt;p&gt;次に、ターミナルを起動します。通常は、アプリケーション &amp;#62; ユーティリティのフォルダの中にアプリケーションがあります。&lt;/p&gt;
&lt;p&gt;起動したら、上記で保存したファイルの場所まで移動してください。（操作がよくわからない人は、cd (cdの後ろに半角スペース）と入力後、保存したフォルダをFinderで表示し、そのフォルダをターミナル上にドラッグ&amp;#38;ドロップし、Enterキーを押すと移動できます）&lt;/p&gt;
&lt;p&gt;続いて、&lt;span class="pickup"&gt;java -jar weinre.jar --httpPort 8080&lt;/span&gt;と入力し、Enterキーを押します。エラーが特になければ、実行成功です。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;ブラウザでweinreを表示する&lt;/h2&gt;
&lt;p&gt;起動が無事完了したら、あとはブラウザで実行すればOKです。Google Chromeを立ち上げ、&lt;span class="pickup"&gt;http://localhost:8080/&lt;/span&gt;にアクセスしてください。&lt;/p&gt;
&lt;p&gt;デモで見た画面が表示されればOKです。ページが表示されたら、ページ中程にある&lt;span class="pickup"&gt;bookmarklet url in a pre&lt;/span&gt;と書かれた箇所にあるJavaScriptのソースをコピー&lt;sup&gt;*1&lt;/sup&gt;します。&lt;/p&gt;
&lt;p&gt;コピーしたら、一番上にあるリンク &lt;span class="pickup"&gt;http://localhost:8080/client/#anonymous&lt;/span&gt; をクリックしてデバッグページを表示させます。&lt;/p&gt;
&lt;p&gt;続いて、iPhoneエミュレータか、別のGoogle Chromeのウィンドウでリモートデバッグしたいページを開き、*1でコピーしたJavaScriptをロケーションバーに貼りつけて実行&lt;sup&gt;*2&lt;/sup&gt;してください。&lt;/p&gt;
&lt;p&gt;デバッグページの画面にデバッグしたいページのURLが表示されれば接続完了です。あとは、Google Chromeで普段行なっているのと同じようにデバッグすることができます。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;Tips&lt;/h2&gt;
&lt;p&gt;実はファイルを落としてきてやる方法以外に、weinreのAPIがすでに用意されていて、そちらを使うことで手前で準備しなくてもリモートデバッグを体験することができます。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://debug.phonegap.com/client/#hoge"&gt;http://debug.phonegap.com/client/#hoge&lt;/a&gt;にアクセスし、*2で実行したJavaScriptの、読み込むJS部分を&lt;span class="pickup"&gt;http://debug.phonegap.com/target/target-script-min.js#hoge&lt;/span&gt;に変更すればOK。&lt;/p&gt;
&lt;p&gt;ちなみに、#hogeとなっている箇所（ローカルで実行しているもの、APIどちらも）はIDになっていて、それを任意の文字列に変更し、JSを読み込ませるブックマークレットの部分のIDも同じものにすることで、ひとつのサーバで複数のページのデバッグができるようになります。(※http://localhost:8080/client/#debugtest のように)&lt;/p&gt;
&lt;p&gt;APIを利用する場合は、実機でも確認することができるのでさらにそのすごさを実感することができると思います。（ネットワークの設定などをいじれば、同じネットワーク内のものであればローカルで準備したものでも実機での検証ができますが、ちょっと話がそれるので割愛）&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;p&gt;今回の記事を書くにあたって、「&lt;a href="http://alpha.mixi.co.jp/blog/?p=3248" target="_blank"&gt;スマートフォンブラウザのWebInspectorをリモートで実現するweinreが凄い&lt;/a&gt;」の記事を参考にさせてもらいました。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wPiwELWWXtFnvC9DQU9LjLeo_hQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wPiwELWWXtFnvC9DQU9LjLeo_hQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wPiwELWWXtFnvC9DQU9LjLeo_hQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wPiwELWWXtFnvC9DQU9LjLeo_hQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/MeXDts5JTBU" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/tools/weinre.html</feedburner:origLink></entry><entry>    <title>これは簡単！ a要素にクラスを追加するだけでiPhone UIボタン</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/eYeCwXab_j8/iphone-ui-template.html" />    <id>tag:css-eblog.com,2011://1.201</id>    <published>2011-08-29T00:05:00Z</published>    <updated>2011-08-29T02:39:03Z</updated>    <summary>要素を入れ子にせず、a要素にひとつのクラス名をつけるだけでiPhoneのボタン風UIを実装するCSSテンプレートです。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="CSS3関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="CSSテクニック" scheme="http://www.sixapart.com/ns/types#category" />            <category term="iPhone関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="テンプレート" scheme="http://www.sixapart.com/ns/types#category" />        <category term="css" label="CSS" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="css3" label="CSS3" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="iphone" label="iPhone" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="ui" label="UI" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;p&gt;↓実際に動いているデモはこちら(iPhone向けに作っているため、iPhone / WebKitでしか最適化されていません)&lt;/p&gt;
&lt;script type="text/javascript" src="http://jsdo.it/blogparts/abFI/js?view=design"&gt;&lt;/script&gt;&lt;p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"&gt;&lt;a href="http://jsdo.it/edo_m18/abFI" title="これは簡単！ a要素ひとつでiPhone UIボタン"&gt;これは簡単！ a要素ひとつでiPhone UIボタン - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ちなみにiPhone / WebKitで実際に見るとこんな感じに見えます↓&lt;/p&gt;
&lt;img src="/images/1108/img_iphone_button.jpg" alt="実際に適用したサンプル" /&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;a要素に1クラス追加するだけで実現するのでお手軽&lt;/h2&gt;
&lt;p&gt;
今回のサンプル作成でこだわったのは、1要素に1クラスを指定するだけでiPhoneのようなデザインを実装することです。&lt;br /&gt;
つまり、以下のように指定するだけでiPhone風ボタンに早変わりする、というような手軽さを意識しました。
&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;HTMLソース&lt;/h3&gt;
&lt;textarea class="xml" cols="40" rows="5" id="iphoneBtn-html" name="iphoneBtn-html"&gt; 
&lt;p&gt;&lt;a href="#" class="btnTypeA"&gt;ボタンタイプA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="#" class="btnTypeB"&gt;ボタンタイプB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="#" class="btnTypeC"&gt;ボタンタイプC&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="#" class="btnTypeD"&gt;ボタンタイプD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="#" class="btnTypeE"&gt;ボタンタイプE&lt;/a&gt;&lt;/p&gt;
&lt;/textarea&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;CSSソース&lt;/h3&gt;
&lt;textarea class="css" cols="40" rows="5" id="iphoneBtn-css" name="iphoneBtn-css"&gt; 
/* btnType Serise */
a.btnTypeA, a.btnTypeB, a.btnTypeC, a.btnTypeD, a.btnTypeE {
  position: relative;
  margin-bottom: 12px;
  margin-top: 12px;
  padding: 5px 10px;
  display: block;
  color: #000;
  text-decoration: none;
  text-align: center;
  text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3);
  z-index: 5;
}

.btnTypeA:after, a.btnTypeB:after, a.btnTypeC:after, a.btnTypeD:after, a.btnTypeE:after {
  content: "";
  position: absolute;
  left: -3px;
  top: -3px;
  width: 100%;
  height: 100%;
  padding: 2px;
  border-radius: 10px;
  background-color: #bebebe;
  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(255, 255, 255, 0.7)), color-stop(0.5, rgba(255, 255, 255, 0.3)), color-stop(0.5, rgba(255, 255, 255, 0)));
  -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(0, 0, 0, 0.2), 1px 1px 2px rgba(0, 0, 0, 0.3);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.9) inset, 0 1px 0 rgba(0, 0, 0, 0.2), 1px 1px 2px rgba(0, 0, 0, 0.3);
  z-index: -1;
}

.btnTypeA:before, a.btnTypeB:before, a.btnTypeC:before, a.btnTypeD:before, a.btnTypeE:before {
  content: "";
  position: absolute;
  left: -6px;
  top: -5px;
  width: 100%;
  height: 100%;
  padding: 5px 5px 4px 5px;
  border-radius: 14px;
  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #545454), color-stop(1, #9e9e9e));
  z-index: -2;
  -webkit-box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.7), 0 1px 0 rgba(255, 255, 255, 0.3), 0 1.3px 0 rgba(0, 0, 0, 0.2);
  box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.7), 0 1px 0 rgba(255, 255, 255, 0.3), 0 1.3px 0 rgba(0, 0, 0, 0.2);
}

a.btnTypeB {
  color: #fff;
  text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5);
}

a.btnTypeB:after {
  background-color: #475ab0;
}

a.btnTypeC {
  color: #fff;
  text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5);
}

a.btnTypeC:after {
  background-color: #333;
}

a.btnTypeD {
  color: #fff;
  text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5);
}

a.btnTypeD:after {
  background-color: #f00;
}

a.btnTypeE {
  color: #fff;
  text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5);
}

a.btnTypeE:after {
  background-color: #009d0e;
}
&lt;/textarea&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;


&lt;h3 class="sectionTitle"&gt;実は見出し部分も画像なし&lt;/h3&gt;
&lt;p&gt;
実はタイトル周りもCSSのみで実装しています。&lt;br /&gt;
ソースもかなりシンプル。&lt;br /&gt;
さらには背景の縞々模様もCSSのみで作っていたりします。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;ダウンロード&lt;/h2&gt;
&lt;div class="pickupBox download"&gt;
&lt;div class="pickupBoxInner"&gt;
&lt;a href="https://github.com/edom18/iPhone-button-CSS-template" target="_blank"&gt;GitHub - iPhone-button-CSS-template&lt;/a&gt;
&lt;!-- /.pickupBoxInner --&gt;&lt;/div&gt;
&lt;!-- /.pickupBox --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;
CSS3のポテンシャルは非常に高いです。&lt;br /&gt;
こうした比較的シンプルなデザインであればCSSのみで、かつ要素を何重にも入れ子に・・なんてしなくても実現できてしまいます。&lt;br /&gt;
（具体的には、:after擬似要素、:before擬似要素を匠に使うことで、無理に思えるデザインも実装できてしまったりします）&lt;br /&gt;
&lt;ins datetime="2011-08-29T11:36:02 +0900" class="insert"&gt;[追記] Twitterで指摘をもらいましたが、:after(:before)擬似要素はCSS3からの定義ではありません。ここで言いたかったのは、それらを工夫して使うことでCSS3の力が増し、CSSのみで複雑なデザインが実現できる、ということでした。:after(:before)擬似要素がCSS3だと勘違いされる人がいるかもしれないので追記しておきます。&lt;/ins&gt;
&lt;/p&gt;
&lt;p&gt;
iPhone4の対応で画像サイズがーという悩みを解消できることを考えると、色々とテンプレートとして作ってみるのも面白いのではないでしょうか。&lt;br /&gt;
ぜひぜひみなさんも色々なデザインを、少数構成で実現できるように挑戦してみてください。
&lt;/p&gt;

&lt;p&gt;ちなみにこのサンプルは、自分で作った&lt;a href="/css3/css3-generator.html"&gt;CSS3ジェネレーター&lt;/a&gt;でグラデーションを調整しながら作りました。よかったら使ってみてください。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;script type="text/javascript"&gt; 
  dp.SyntaxHighlighter.HighlightAll('iphoneBtn-html');
  dp.SyntaxHighlighter.HighlightAll('iphoneBtn-css');
&lt;/script&gt;
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SmGRD7rNJEwzH2R4Epp4but3f4o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SmGRD7rNJEwzH2R4Epp4but3f4o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SmGRD7rNJEwzH2R4Epp4but3f4o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SmGRD7rNJEwzH2R4Epp4but3f4o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/eYeCwXab_j8" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/iphone/iphone-ui-template.html</feedburner:origLink></entry><entry>    <title>CSS3なら簡単！ アニメーションするリングメニューを作る</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/l4s82cKoKog/css3-ring-menu.html" />    <id>tag:css-eblog.com,2011://1.193</id>    <published>2011-07-18T22:40:00Z</published>    <updated>2011-07-18T22:43:01Z</updated>    <summary>CSS3を使って、CSSのみでアニメーションするリングメニューを作るテクニックの紹介</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="CSS3関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="CSSだけでアクションを作る" scheme="http://www.sixapart.com/ns/types#category" />            <category term="CSSテクニック" scheme="http://www.sixapart.com/ns/types#category" />        <category term="css3" label="CSS3" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="menu" label="menu" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="transform" label="transform" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="transition" label="transition" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1107/ring_menu_cap.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://jsdo.it/" target="_blank"&gt;jsdo.it&lt;/a&gt;で公開したら意外と好評だったので、解説などを書いてみたいと思います。&lt;/p&gt;
&lt;p&gt;ゲームなどにありそうなリングメニューを、CSSだけを使って実装した例です。下に実際の動くサンプルもあるので、ぜひ触って見てください。&lt;/p&gt;
&lt;p&gt;ちなみに右の画像は、中央の「main」にマウスオーバーした際にアニメーションでメニューが出てくる瞬間の画像です。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section" style="clear: both;"&gt;
&lt;h2 class="sectionTitle"&gt;デモ&lt;/h2&gt;
&lt;p&gt;まずは下のサンプルをご覧ください。ちなみにアニメーションに対応しているブラウザのみ、アニメーションが実行されます。具体的には、GoogleChrome、Safari、Firefox、Operaです。&lt;/p&gt;
&lt;script type="text/javascript" src="http://jsdo.it/blogparts/9Whu/js?view=design"&gt;&lt;/script&gt;&lt;p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"&gt;&lt;a href="http://jsdo.it/edo_m18/9Whu" title="リングメニューをCSSで実装してみる"&gt;リングメニューをCSSで実装してみる - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;テクニックの肝&lt;/h2&gt;
&lt;p&gt;
今回のテクニックの肝は、&lt;span class="pickup"&gt;transform-origin&lt;/span&gt;です。このプロパティは、transform系の値を変更する際、&lt;strong class="attention"&gt;どこを基点にするか&lt;/strong&gt;というものになります。
&lt;/p&gt;
&lt;p&gt;このtransform-origin、デフォルト値は&lt;span class="pickup"&gt;50% 50%&lt;/span&gt;となっています。つまりその要素の縦横中央、ということですね。もしこれを&lt;span class="pickup"&gt;0 0&lt;/span&gt;とすれば左上が基点となり、&lt;span class="pickup"&gt;100% 100%&lt;/span&gt;とすれば右下が基点となるわけです。そしてこの数値には、&lt;span class="pickup"&gt;px&lt;/span&gt;も指定することができるので、細かく位置を調整することも可能となります。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;CSS3でのアニメーションの解説&lt;/h2&gt;
&lt;p&gt;
上で、transform-originにはpxでの指定も可能だと書きました。今回のテクニックは、このpx指定を使って位置を厳密に決めています。
&lt;/p&gt;
&lt;p&gt;
下の画像が、実際に指定している値とそれぞれの指定の意味を解説した図になります。&lt;br /&gt;
top, right, bottom, leftそれぞれの左上（&lt;span class="pickup"&gt;transform-origin: 0 0&lt;/span&gt;）からどれくらいの位置を基点にしたらいいかを記載しています。図を見てもらうと、なんとなくどれくらいの値を設定すればいいがイメージできるかと思います。
&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/1107/ring_menu_ex.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;
さて、ここまで数値と概念が分かれば、あとはそれぞれCSSで値を設定していくだけです。
&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;HTMLソース&lt;/h3&gt;
&lt;textarea class="xml" cols="40" rows="5" id="ring-menu-html" name="ring-menu-html"&gt; 
&lt;div class="ringMenu"&gt;
  &lt;ul&gt;
    &lt;li class="main"&gt;&lt;a href="#"&gt;main&lt;/a&gt;&lt;/li&gt;
    &lt;li class="top"&gt;&lt;a href="#"&gt;top&lt;/a&gt;&lt;/li&gt;
    &lt;li class="right"&gt;&lt;a href="#"&gt;right&lt;/a&gt;&lt;/li&gt;
    &lt;li class="bottom"&gt;&lt;a href="#"&gt;bottom&lt;/a&gt;&lt;/li&gt;
    &lt;li class="left"&gt;&lt;a href="#"&gt;left&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;!-- /.ringMenu --&gt;&lt;/div&gt;
&lt;/textarea&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;CSSソース&lt;/h3&gt;
&lt;textarea class="css" cols="40" rows="5" id="ring-menu-css" name="ring-menu-css"&gt; 
/* 上下左右のメニューへマウスを移動する際に.ringMenuからmouseoutが発生しないようコンテナのサイズを少し大きくする */
.ringMenu:hover {
  padding: 30px 30px;
  margin: -30px -30px;
}
.ringMenu ul {
  position: relative;
}

/* transition時のアニメーションの具合を定義 */
.ringMenu ul li {
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
.ringMenu ul li a {
  display: block;
  width: 100px;
  height: 100px;
  background: rgba(50,50,50,0.7);
  text-align: center;
  line-height: 100px;
  -webkit-border-radius: 50px;
  -moz-border-radius: 50px;
  border-radius: 50px;
}

/* main以外は通常時はscale(0)で実質非表示 */
.ringMenu ul li:not(.main) {
  -webkit-transform: rotate(-180deg) scale(0);
  -moz-transform: rotate(-180deg) scale(0);
  -o-transform: rotate(-180deg) scale(0);
  transform: rotate(-180deg) scale(0);
  opacity: 0;
}

/* マウスオーバー時に、非表示にしていた各要素をscale(1)にして表示 */
.ringMenu:hover ul li {
  -webkit-transform: rotate(0) scale(1);
  -moz-transform: rotate(0) scale(1);
  -o-transform: rotate(0) scale(1);
  transform: rotate(0) scale(1);
  opacity: 1;
}

/* 以下、top, right, bottom, leftのそれぞれの位置を調整 */
.ringMenu ul li.top {
  -webkit-transform-origin: 50% 152px;
  -moz-transform-origin: 50% 152px;
  -o-transform-origin: 50% 152px;
  transform-origin: 50% 152px;
  position: absolute;
  top: -102px;
  left: 0;
}
.ringMenu ul li.bottom {
  -webkit-transform-origin: 50% -52px;
  -moz-transform-origin: 50% -52px;
  -o-transform-origin: 50% -52px;
  transform-origin: 50% -52px;
  position: absolute;
  bottom: -102px;
  left: 0;
}
.ringMenu ul li.right {
  -webkit-transform-origin: -52px 50%;
  -moz-transform-origin: -52px 50%;
  -o-transform-origin: -52px 50%;
  transform-origin: -52px 50%;
  position: absolute;
  top: 0px;
  right: -102px;
}
.ringMenu ul li.left {
  -webkit-transform-origin: 152px 50%;
  -moz-transform-origin: 152px 50%;
  -o-transform-origin: 152px 50%;
  transform-origin: 152px 50%;
  position: absolute;
  top: 0;
  left: -102px;
}
&lt;/textarea&gt; 

&lt;p&gt;
上記の指定を記述すれば、サンプルのアニメーションを持ったリングメニューの完成です。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;いくつかポイントを解説&lt;/h3&gt;
&lt;p&gt;まず、&lt;span class="pickup"&gt;.ringMenu:hover&lt;/span&gt;で若干、コンテナのサイズを拡張します。これは、マウスオーバーでメニューが表示された際、それぞれのメニューへマウスを移動しようとすると、初期のサイズだと上下左右のメニューの中間にマウスを持って行くとメニューが閉じてしまいます。（実際に拡張している部分を消して試してみると分かると思います）&lt;br /&gt;
そのため、スムーズにメニューを選べるようにするために拡張しているわけです。
&lt;/p&gt;
&lt;p&gt;
次にアニメーションをさせる部分ですが、mainのメニュー以外を&lt;span class="pickup"&gt;transform: scale(0)&lt;/span&gt;を使って実質非表示にしておきます。加えて、&lt;span class="pickup"&gt;rotate(-180deg)&lt;/span&gt;を同時に指定しておきます。
&lt;/p&gt;
&lt;p&gt;
そして、.ringMenu:hoverの際に、それぞれのscaleを1に、rotateを0に戻します。すると、transform-originで指定した基点を中心にして、回転しながら元のサイズに戻ります。さらにtransitionを指定しているのでその遷移がアニメーションを伴って表示され、結果回転してメニューが出現する「リングメニュー」になる、というわけです。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;script type="text/javascript"&gt; 
dp.SyntaxHighlighter.HighlightAll('ring-menu-html');
dp.SyntaxHighlighter.HighlightAll('ring-menu-css');
&lt;/script&gt; 
    
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EqFhUplfh5cZCt8QLy-DQZ4DhWY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EqFhUplfh5cZCt8QLy-DQZ4DhWY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EqFhUplfh5cZCt8QLy-DQZ4DhWY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EqFhUplfh5cZCt8QLy-DQZ4DhWY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/l4s82cKoKog" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/css3/css3-ring-menu.html</feedburner:origLink></entry><entry>    <title>iOSのフォトビューワのような動きを実装するfrick-image.js</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/dHki-kWE5KY/frick-image.html" />    <id>tag:css-eblog.com,2011://1.199</id>    <published>2011-07-11T00:34:00Z</published>    <updated>2011-07-11T00:35:07Z</updated>    <summary>iOSの「写真」アプリのような、ドラッグで大きめの写真を見るJSライブラリ。飛び出したときに戻るアニメーション付き。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="Javascript関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="iPhone関連" scheme="http://www.sixapart.com/ns/types#category" />        <category term="frickimage" label="frick-image" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="ios" label="iOS" 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" />    <category term="慣性" label="慣性" scheme="http://www.sixapart.com/ns/types#tag" />        <content type="html" xml:lang="ja" xml:base="http://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;JavaScriptライブラリ作りました&lt;/h2&gt;
&lt;p&gt;
久々にJavaScriptライブラリを作ってみました。その名も「&lt;a href="https://github.com/edom18/frick-image.js" target="_blank"&gt;frick-image.js&lt;/a&gt;」。
&lt;/p&gt;
&lt;p&gt;
まずは下のデモを見てもらうと、どんなものか分かると思います。ちなみに、&lt;strong class="attention"&gt;アニメーションを実装しているのはFirefoxとWebKit系（iOS、Android含む）のブラウザのみ&lt;/strong&gt;になります。それ以外は、ドラッグ可能なことと、あふれた要素を強制的に定位置に戻す機能のみとなります。
&lt;/p&gt;
&lt;script type="text/javascript" src="http://jsdo.it/blogparts/bTZJ/js?view=design"&gt;&lt;/script&gt;&lt;p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"&gt;&lt;a href="http://jsdo.it/edo_m18/bTZJ" title="iOSのフォトビューワのような動きを実装する"&gt;iOSのフォトビューワのような動きを実装する - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;使い方&lt;/h2&gt;
&lt;p&gt;
使い方は簡単です。写真を内包するコンテナになる要素(*A)と、その中に写真を含むボックスのふたつの要素(*B)を用意し、以下のようにスクリプトを実行すればOKです。指定するのは、コンテナではなく、Bの方の要素のID（やクラス）を渡します。指定方法はjQueryで指定できる方法で指定することができます。
&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;JavaScript&lt;/h3&gt;
&lt;textarea class="javascript" cols="40" rows="5" id="frick-image" name="frick-image"&gt; 
new FrickImage('#img');
&lt;/textarea&gt; 

&lt;h3 class="sectionTitle"&gt;HTML&lt;/h3&gt;
&lt;textarea class="xml" cols="40" rows="5" id="frick-image2" name="frick-image2"&gt; 
&lt;div id="viewer"&gt;
&lt;div id="img"&gt;&lt;img src="img/hoge.jpg" /&gt;&lt;/div&gt;
&lt;!-- /#viewer --&gt;&lt;/div&gt;
&lt;/textarea&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;ダウンロード&lt;/h2&gt;
&lt;div class="pickupBox download"&gt;
&lt;div class="pickupBoxInner"&gt;
&lt;a href="https://github.com/edom18/frick-image.js" target="_blank"&gt;frick-image.js - GitHub&lt;/a&gt;
&lt;!-- /.pickupBoxInner --&gt;&lt;/div&gt;
&lt;!-- /.pickupBox --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

 
&lt;script type="text/javascript"&gt; 
dp.SyntaxHighlighter.HighlightAll('frick-image');
dp.SyntaxHighlighter.HighlightAll('frick-image2');
&lt;/script&gt; 
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2ZNeGoGYOH58pqZ0NE0wpK9voy0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2ZNeGoGYOH58pqZ0NE0wpK9voy0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2ZNeGoGYOH58pqZ0NE0wpK9voy0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2ZNeGoGYOH58pqZ0NE0wpK9voy0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/dHki-kWE5KY" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/javascript-link/frick-image.html</feedburner:origLink></entry><entry>    <title>手軽にDataURIに変換できるChromeアプリを作ってみた</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/yJ3U-IqQlIU/convert-data-uri.html" />    <id>tag:css-eblog.com,2011://1.198</id>    <published>2011-06-21T23:55:00Z</published>    <updated>2011-06-22T00:06:24Z</updated>    <summary>Chromeのホーム画面からさっと起動できる、画像をDataURIに変換できるツールです。画像がアップできないオンラインサービスで画像を表示したいときなどに。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="ツール" scheme="http://www.sixapart.com/ns/types#category" />        <category term="datauri" label="Data URI" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="googlechrome" label="Google Chrome" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;Google Chromeアプリを作ってみた&lt;/h2&gt;
&lt;p class="image"&gt;&lt;a href="https://chrome.google.com/webstore/detail/moogkmfimdaiafogckabfonkgoknajkp?hl=ja" target="_blank"&gt;&lt;img src="/images/1106/unnamed.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
ちょっと仕事でChromeアプリについて調べる必要があったので調べていたら、かなり簡単に作れそうだったので試しに作ってみた。
&lt;/p&gt;
&lt;p&gt;
いつも、ちょっとした画像をDataURIに変換するためにブックマークからサイトを開いたり、ということをしていたのだけど、それが以外にめんどくさかったので、Chromeのホームから直に開けるのはいいなぁ、ということで作ってみたアプリ。その名も「&lt;a href="https://chrome.google.com/webstore/detail/moogkmfimdaiafogckabfonkgoknajkp?hl=ja" target="_blank"&gt;Convert to DataURI&lt;/a&gt;」。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;操作は簡単ドラッグ&amp;#38;ドロップ&lt;/h2&gt;
&lt;p&gt;
操作方法は簡単です。インストールして起動後、DataURIに変換したい画像を、左カラムにある「Drag&amp;#38;Drop image here」と書かれた箇所にドラッグ&amp;#38;ドロップするだけ。
&lt;/p&gt;
&lt;p&gt;
すると右下のボックスに、Base64にエンコードされ、DataURI化された文字列が表示されます。あとはこれをコピペするだけで使用することができます。IE対応などを視野に入れるとなかなか使いどころが難しいですが、&lt;a href="http://jsdo.it/" target="_blank"&gt;jsdo.it&lt;/a&gt;や&lt;a href="http://jsfiddle.net/" target="_blank"&gt;jsfiddle&lt;/a&gt;などの画像がアップできないサービスには重宝すると思います。ぜひ使ってみてください。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ae9K6pH24TLkIPi46CGijU3YJwI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ae9K6pH24TLkIPi46CGijU3YJwI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ae9K6pH24TLkIPi46CGijU3YJwI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ae9K6pH24TLkIPi46CGijU3YJwI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/yJ3U-IqQlIU" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/tools/convert-data-uri.html</feedburner:origLink></entry><entry>    <title>Adobe - ADC MEETUP ROUND01で、jQuery Mobileについて話してきました</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/vd3b94-cxI0/adc-meetup-round01.html" />    <id>tag:css-eblog.com,2011://1.197</id>    <published>2011-06-21T00:19:00Z</published>    <updated>2011-06-21T04:27:58Z</updated>    <summary>Adobe主催のADC MEETUP ROUND01に参加してきたときのプレゼン資料の公開をしています。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="スマートフォン関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="登壇" scheme="http://www.sixapart.com/ns/types#category" />        <category term="adc" label="ADC" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="adobe" label="adobe" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="jquery" label="jQuery" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="jquerymobile" label="jQuery Mobile" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="meetup" label="MEETUP" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;イベントの主題は「モバイルを攻略せよ」&lt;/h2&gt;

&lt;p&gt;6/11(土)に、Adobeが主催する、&lt;a href="http://www.adobe.com/jp/joc/adc/meetup/round01/" target="_blank"&gt;ADC MEETUP ROUND01&lt;/a&gt;に登壇してきました。&lt;/p&gt;
&lt;p&gt;今回自分が話した内容は、「ネイティブアプリに変わる、新しいアプリ開発スタイル」というタイトルです。&lt;br /&gt;
今まので（モバイルの）アプリ開発（言語）から、HTML5+JavaScriptを使った開発へのシフトする可能性、それらを実現するフレームワークや注意すべき点などを発表させて頂きました。&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;プレゼン資料公開&lt;/h3&gt;
&lt;p&gt;土曜日のセッションで使用した資料は、&lt;a href="http://jsdo.it/" target="_blank"&gt;jsdo.it&lt;/a&gt;上ですでに公開されています。よかったら見てみてください。（※WebKitに最適化されています。また、最近のVersionUpでGoogle Chromeでの閲覧がなんだかおかしなことになってるので、Safariで見てもらえると幸せになれます）&lt;/p&gt;
&lt;p&gt;&lt;a href="http://jsdo.it/edo_m18/adc-meetup-round01" target="_blank"&gt;「ADC MEETUP ROUND01 - ネイティブアプリに変わる、新しいアプリ開発スタイル」の資料はこちら&lt;/a&gt;&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;jQuery Mobileに触ってみよう&lt;/h3&gt;
&lt;p&gt;さて、資料をみていただくと分かりますがその中身の大半は「&lt;a href="http://jquerymobile.com/" target="_blank"&gt;jQuery Mobile&lt;/a&gt;」の話です。&lt;br /&gt;Dreamweaver CS5.5がサポートしたことによって、そのシェアはかなりのものになると予想しています。&lt;/p&gt;
&lt;p&gt;もともとjQuery自体のシェア率がとても高いので親和性が高いことも上げられます。また、jQueryの使いやすさと同じように、jQuery Mobileもとても使いやすいものとなっています。&lt;/p&gt;
&lt;p&gt;極端に言えば、jQuery Mobileとその関連ファイルを読み込み、あとは(jQuery Mobileの)作法に則ってマークアップするだけで、まるでアプリのような外観と機能を持ったサイトが作れてしまいます。&lt;/p&gt;
&lt;p&gt;（&lt;a href="http://dev.screw-axis.com/doc/jquery_mobile/" target="_blank"&gt;jQuery Mobileの日本語のリファレンス&lt;/a&gt;を作っている方がいるので、そちらを参考にするといいかも）&lt;/p&gt;
&lt;p&gt;そんなお手軽なjQuery Mobileを手軽に触れるイベントが、jsdo.it上で開催中です。その名も「&lt;a href="http://jsdo.it/event/topics/2011/06/jquery-mobile" target="_blank"&gt;jQuery Mobileを触りながら覚えよう！&lt;/a&gt;」です。&lt;/p&gt;
&lt;p&gt;ちなみに実際に作ってみたデモは↓こんな感じ。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;script type="text/javascript" src="http://jsdo.it/blogparts/wGgQ/js?view=design"&gt;&lt;/script&gt;&lt;p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"&gt;&lt;a href="http://jsdo.it/edo_m18/wGgQ" title="jQuery Mobileデモ1"&gt;jQuery Mobileデモ1 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
jsdo.itは手軽にJavaScriptとHTML、CSSを使ってコードが書けるサイトです。その場で確認したり、他の人に共有したり、ということができるサービスです。↑のようにブログに貼りつけてサンプルのように使うこともできるので、とても助かってます。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;jQuery Mobileはまだα版&lt;/h3&gt;
&lt;p&gt;
&lt;del datetime="2011-06-21"&gt;これだけ話しておいてなんですが、実はまだjQuery Mobileはアルファ版です。&lt;br /&gt;
なので、メイン業務に使うには注意が必要。&lt;/del&gt;&lt;ins class="insert" datetime="2011-06-21"&gt;これを書いたあとに気づいたんですが、すでにjQuery Mobileはβ版になっていました(; ´Д`) とはいえ、それでもまだβなので注意が必要なのには変わりありません。&lt;/ins&gt;&lt;br /&gt;
とはいえ、現時点でも完成度は高く、またちょっとしたモックなどはjQuery Mobileでさくっと作ると説得力が増すのかなーと思っています。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YKEygZ4dFaF4uARDNnSEuziel-4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YKEygZ4dFaF4uARDNnSEuziel-4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YKEygZ4dFaF4uARDNnSEuziel-4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YKEygZ4dFaF4uARDNnSEuziel-4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/vd3b94-cxI0" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/seminar/adc-meetup-round01.html</feedburner:origLink></entry><entry>    <title>コーディングを3倍速くする！ Vim入門</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/46b_IEwLPXM/vim-beginner.html" />    <id>tag:css-eblog.com,2011://1.194</id>    <published>2011-05-11T01:00:00Z</published>    <updated>2011-06-02T00:49:31Z</updated>    <summary>コーディングが3倍(以上)速くなること間違いなしのVimエディタ。その便利な機能の一部を、ライブコーディングを使ったムービーで紹介しています。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="ツール" scheme="http://www.sixapart.com/ns/types#category" />        <category term="vim" label="vim" 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" />    <category term="入門" label="入門" scheme="http://www.sixapart.com/ns/types#tag" />        <content type="html" xml:lang="ja" xml:base="http://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;CSS Nite Ginza Vol.56で登壇してきました&lt;/h2&gt;
&lt;p&gt;
気づけば3ヶ月も更新していなかったことに気づきました。まぁ、3倍と3ヶ月で3つながり、ということで(謎
&lt;/p&gt;
&lt;p&gt;
さて、そんな訳で先日開催された &lt;a href="http://cssnite.jp/archives/post_2080.html" target="_blank"&gt;CSS Nite Ginza Vol.56&lt;/a&gt; で、Vim についての話で登壇してきました。見出しの通り、3倍(以上)速くなることまちがいなしのエディタ「Vim」。その速さを知ってもらうために行ったライブコーディングの様子もあるのでぜひ見てみてください！
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;Vimのライブコーディング&lt;/h2&gt;
&lt;p&gt;
Vimとは、ざっくりと説明すると&lt;a href="http://e-words.jp/w/CUI.html" target="_blank"&gt;CUI&lt;/a&gt;時代のエディタ「vi」の機能拡張版。CUIとは、キーボードで操作することを基本としたUIのことです。マウスで操作するのは&lt;a href="http://e-words.jp/w/GUI.html" target="_blank"&gt;GUI&lt;/a&gt;。なので、コーディングなど、キーボードで作業することがメインの職種（MEやプログラマなど）にはとても親和性の高いエディタとなっています。
&lt;/p&gt;
&lt;p&gt;
タグの中のテキストをさっとコピーしたい！　とか、ダブルクォーテーションの中の文字をざっと削除したい！　なんていう「思ったこと」をそのまま実行してくれるのがVimのいいところ。
&lt;/p&gt;
&lt;p&gt;
と、文字でいくら力説してもなかなか伝わらないので、実際に登壇時に行ったライブコーディングの様子がムービーでアップされているので、ぜひそちらを見てみてください。そして興味を持った方はぜひ、一度Vimに手を出してみてください。多分、一度は挫折しますｗ（かくいう自分も一度挫折した口ですｗ）
&lt;/p&gt;
&lt;p&gt;
ですが、それを乗り越えた先には信じられないくらいコーディングがスピードアップした自分がいることでしょう。そう、まるで宇宙船で100倍の重力に耐えた悟空のように。（ネタが古い）
&lt;/p&gt;
&lt;p&gt;&lt;iframe src="http://player.vimeo.com/video/22709519?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="400" height="250" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://vimeo.com/22709519"&gt;コーディングを3倍速くする！ Vim入門／比留間 和也（カヤック）&lt;/a&gt; from &lt;a href="http://vimeo.com/cssnite"&gt;CSS Nite&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QZpU9qhA-WL5_LZChRNzQ0XmGhI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QZpU9qhA-WL5_LZChRNzQ0XmGhI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QZpU9qhA-WL5_LZChRNzQ0XmGhI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QZpU9qhA-WL5_LZChRNzQ0XmGhI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/46b_IEwLPXM" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/tools/vim-beginner.html</feedburner:origLink></entry><entry>    <title>磨りガラスで見たような にじんだ文字を表現するtext-shadow</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/Ug4N1s_nUI8/text-blur.html" />    <id>tag:css-eblog.com,2011://1.192</id>    <published>2011-02-07T00:00:00Z</published>    <updated>2011-02-07T00:02:01Z</updated>    <summary> text-shadowを使って にじんだ文字を表現する 前回と合わせて連続でt...</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="CSS3関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="CSSテクニック" scheme="http://www.sixapart.com/ns/types#category" />            <category term="CSS小技" scheme="http://www.sixapart.com/ns/types#category" />        <category term="css3" label="CSS3" scheme="http://www.sixapart.com/ns/types#tag" />    <category term="textshadow" label="text-shadow" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;text-shadowを使って にじんだ文字を表現する&lt;/h2&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1102/img_text-blur_samp.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/css3/steric-text.html"&gt;前回&lt;/a&gt;と合わせて連続で&lt;span class="pickup"&gt;text-shadow&lt;/span&gt;ネタです。今回は、text-shdaow のぼかし部分を利用して、CSS のみでテキストをぼかすテクニックの紹介です。&lt;/p&gt;

&lt;p&gt;
今回のテクニックは text-shadow に対応しているブラウザであれば、CSS のみで実現可能です。&lt;br /&gt;
まずは下の &lt;a href="http://jsdo.it/"&gt;jsdo.it&lt;/a&gt; のサンプルを見てください。（下の方にある「Play」ボタンを押すと実行されます）&lt;br /&gt;
スタイルを&lt;span class="pickup"&gt;textarea&lt;/span&gt;に設定しているので、ぼかし状態の文字が入力されるのが確認できると思います。
&lt;/p&gt;

&lt;script type="text/javascript" src="http://jsdo.it/blogparts/7ue1/js"&gt;&lt;/script&gt;&lt;p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"&gt;&lt;a href="http://jsdo.it/edo_m18/7ue1" title="[Demo] Blur text for CSS3"&gt;[Demo] Blur text for CSS3 - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;ちょっとだけ解説&lt;/h2&gt;
&lt;p&gt;
まずポイントとなるプロパティは当然、&lt;span class="pickup"&gt;text-shadow&lt;/span&gt;です。&lt;br /&gt;
普通はテキストに影をつけるためのプロパティですね。&lt;br /&gt;
それを以下のようにすることでぼかし部分だけを表示することができます。
&lt;/p&gt;
&lt;textarea class="css" cols="40" rows="5" id="textBlur" name="textBlur"&gt;
  color: transparent;
  text-shadow: 0 0 5px #303030;
&lt;/textarea&gt;

&lt;p&gt;
&lt;span class="pickup"&gt;color&lt;/span&gt; が大事なポイントです。普通はカラーは色をつけるのが当たり前ですが、今回のテクニックの場合はこれを透明にしてしまいます。&lt;br /&gt;
つまり、影の上に乗っているテキストの色を透明にすることで、結果、影だけが表示されぼかし効果が残る、というわけです。
&lt;/p&gt;
&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;アニメーションを追加してより効果的に&lt;/h3&gt;
&lt;p&gt;サンプルを WebKit 系ブラウザで見ている人は気づいていると思いますが、実はこのサンプルにはアニメーションを設定しています。&lt;br /&gt;
text-shadow のぼかし部分を 0 から 10px などに指定することで、プレゼンツールで表示されるような効果を得ることができます。ぜひ試してみてください。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;script type="text/javascript"&gt; 
dp.SyntaxHighlighter.HighlightAll('textBlur');
&lt;/script&gt;            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A2Nxzv4B-bM9jpbWR47euJQrU9I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A2Nxzv4B-bM9jpbWR47euJQrU9I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A2Nxzv4B-bM9jpbWR47euJQrU9I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A2Nxzv4B-bM9jpbWR47euJQrU9I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/Ug4N1s_nUI8" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/css3/text-blur.html</feedburner:origLink></entry><entry>    <title>超立体的！text-shadowの意外な使い方</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/HCZdfOBG-RA/steric-text.html" />    <id>tag:css-eblog.com,2011://1.191</id>    <published>2011-02-01T00:32:30Z</published>    <updated>2011-02-23T16:18:03Z</updated>    <summary>text-shadowを使った超立体的な文字の演出方法のサンプルと、その解説をしています。</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="CSS3関連" scheme="http://www.sixapart.com/ns/types#category" />            <category term="CSSテクニック" scheme="http://www.sixapart.com/ns/types#category" />            <category term="CSS小技" scheme="http://www.sixapart.com/ns/types#category" />        <category term="textshadow" label="text-shadow" 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://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;text-shadowだけで手軽に立体文字を作る&lt;/h2&gt;
&lt;p&gt;&lt;ins class="insert" datetime="2011-02-24T01:14:00"&gt;
元々は &lt;a href="http://markdotto.com/playground/3d-text/" target="_blank"&gt;CSS3 Watch&lt;/a&gt; の記事じゃないか、というコメントを頂きました。調べたところ、そこでこのCSSに関する記事が見つかったので参考として記載しておきます。
&lt;/ins&gt;&lt;/p&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1101/img_steric_samp.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;今回は、とあるサイトで見かけた面白い表現を紹介したいと思います。&lt;br /&gt;右にある画像が、その表現を拡大したものです。これはテキストに対して&lt;span class="pickup"&gt;text-shadow&lt;/span&gt;を指定しただけです。&lt;/p&gt;
&lt;p&gt;もちろんテキストなのでコピペもできるし、&lt;span class="pickup"&gt;textarea&lt;/span&gt;に指定すれば入力した文字がこのような立体的な文字になります。&lt;/p&gt;
&lt;p&gt;下にjsdo.it上で作成したデモを載せてあります。下のほうにある「Play」ボタンを押すことでサンプルが実行されます。&lt;br /&gt;サンプルは&lt;span class="pickup"&gt;textarea&lt;/span&gt;なので、自由にテキストを入力してみてください。（対応ブラウザは WebKit 系か、Firefoxです）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;※ちなみにアンチエイリアスのかかったフォントじゃないとあんまりきれいに見えませんｗ&lt;/strong&gt;&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;デモ&lt;/h2&gt;
&lt;script type="text/javascript" src="http://jsdo.it/blogparts/m8FA/js"&gt;&lt;/script&gt;&lt;p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"&gt;&lt;a href="http://jsdo.it/edo_m18/m8FA" title="Steric text used 'text-shadow' property."&gt;Steric text used 'text-shadow' property. - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt; 
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;ちょっとだけ解説&lt;/h2&gt;
&lt;p&gt;今回のこのテクニックの肝は&lt;span class="pickup"&gt;text-shadow&lt;/span&gt;（というかそれだけ）です。&lt;/p&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;複数指定できるtext-shadow&lt;/h3&gt;
&lt;p&gt;この text-shadow、実は影の部分の指定を複数指定することができるのです。&lt;br /&gt;意外と知らない人は知らない気がするこの指定、カンマ区切りで列挙すればひとつの要素に対して様々な影をつけることが可能になります。&lt;/p&gt;
&lt;p&gt;さて、ではどんなことをやっているかというと、サンプルを見ていただくと一目瞭然ですがこの「影を複数指定できる」というのを利用して、立体的に見えるようにたくさんの影を指定することで実現しています。&lt;/p&gt;
&lt;p&gt;&lt;span class="pickup"&gt;.realText&lt;/span&gt;クラスに指定している text-shadow の値の最初の 5 つが、文字が飛び出しているように見せる部分。そのあとの 7 つが、その盛り上がった文字からできる影を表現しています。&lt;/p&gt;
&lt;p&gt;最初の 5 つの指定で、徐々に暗くなるように色を指定しています。（実際のものは同じ色でも光の当たり方によってグラデーションができます。それを表現している、というわけです）&lt;/p&gt;
&lt;p&gt;そして次の 7 で、盛り上がった（ように見える）テキストから、さも影が落ちているような演出をしている、というわけです。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h3 class="sectionTitle"&gt;IE では・・・？&lt;/h3&gt;
&lt;p&gt;残念ながら、最初のほうにも書いた通り、対象ブラウザが限定されてしまいます。&lt;br /&gt;しかし、対応していないブラウザでも、立体的に見えないだけでテキストは正常に表示されます。&lt;br /&gt;なので、こうしたリッチ表現ができるブラウザにはリッチな表現を、そうでないブラウザに対しては情報にアクセスできるようにしておく、という対応ができます。いわゆる「プログレッシブ・エンハンスメント」ですね。&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;
            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ghqi1I8974NXEdef6iLX1T8QWXI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ghqi1I8974NXEdef6iLX1T8QWXI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ghqi1I8974NXEdef6iLX1T8QWXI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ghqi1I8974NXEdef6iLX1T8QWXI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/HCZdfOBG-RA" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/css3/steric-text.html</feedburner:origLink></entry><entry>    <title>Canvasを使ってシューティングゲームを作ってみた</title>    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Css-eblog/~3/00ObD1aEGfY/canvas-shooting-game.html" />    <id>tag:css-eblog.com,2011://1.190</id>    <published>2011-01-09T05:47:00Z</published>    <updated>2011-01-09T06:03:41Z</updated>    <summary> Canvasって面白いね！ なかなか更新できてなくてしょんぼりな近頃ですが、な...</summary>    <author>        <name>えど</name>        <uri>http://css-eblog.com/</uri>    </author>            <category term="Canvas関連" scheme="http://www.sixapart.com/ns/types#category" />            <content type="html" xml:lang="ja" xml:base="http://css-eblog.com/">        &lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;Canvasって面白いね！&lt;/h2&gt;
&lt;p class="photo"&gt;&lt;img src="/images/1101/shooting-game.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;
なかなか更新できてなくてしょんぼりな近頃ですが、なんでだかゲームプログラミングが最近楽しすぎて色々勉強してますｗ&lt;br /&gt;
そして Canvas の使い方が段々分かってきた感じです。
&lt;/p&gt;
&lt;p&gt;
Canvas、めちゃんこ楽しいです。ある程度タイムライン的な動かし方のコツを掴んだらなんでもできそうに錯覚しますね。&lt;br /&gt;
ってことで、お正月三が日は &lt;a href="http://jsdo.it/" target="_blank"&gt;jsdo.it&lt;/a&gt; 上で色々やってましたｗ
&lt;/p&gt;
&lt;p&gt;
今勉強がてら作ったゲームが↓のものです。（※音が出るので注意）&lt;br /&gt;
コードの下のほうにある「play」ボタンを押すと再生されます。
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;※ローディング部分の作りが甘いので、たまに隕石が破壊できないとか音が鳴らないとかバグがあるので、そうなったら再読込してください・・。&lt;/strong&gt;
&lt;/p&gt;
&lt;script type="text/javascript" src="http://jsdo.it/blogparts/aZ0h/js"&gt;&lt;/script&gt;&lt;p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"&gt;&lt;a href="http://jsdo.it/edo_m18/aZ0h" title="forked from: Meteorite Shooting Games"&gt;forked from: Meteorite Shooting Games - jsdo.it - share JavaScript, HTML5 and CSS&lt;/a&gt;&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;

&lt;div class="section"&gt;
&lt;h2 class="sectionTitle"&gt;作ってみて学んだこと&lt;/h2&gt;
&lt;p&gt;
canvas の使い方がなんとなく見えてきた、ということ。&lt;br /&gt;
静的な画像であればそれほど問題ないですが、アニメーションの場合は
&lt;/p&gt;
&lt;ol class="para"&gt;
&lt;li&gt;各オブジェクトの描画&lt;/li&gt;
&lt;li&gt;canvasのクリア&lt;/li&gt;
&lt;li&gt;各オブジェクトの次のフレーム位置の計算&lt;/li&gt;
&lt;li&gt;各オブジェクトの描画&lt;/li&gt;
&lt;li&gt;...以下繰り返し&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
という、かなりめんどくさい処理をする必要があります。&lt;br /&gt;
しかし、今回の制作を通して学んだコツとしてはフレームを描画する関数を作り、その中にさらに各オブジェクトを描画する関数を入れて、それぞれのオブジェクトを描画する関数を定義する、ということです。&lt;br /&gt;
そして、FPS にしたがって連続的にフレームを描画する関数（サンプルでは updateFrame 関数）を実行することでアニメーションが作成できます。
&lt;/p&gt;
&lt;p&gt;
canvasはスマートフォンにも応用できるし、JS で画像のロールオーバーなんかを実装するのであれば、いっそ canvas でやってしまう、というのも面白いかもしれません。
&lt;/p&gt;
&lt;!-- /.section --&gt;&lt;/div&gt;            
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3cCkoB9rHi43K53VhJHfi8fA_sM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3cCkoB9rHi43K53VhJHfi8fA_sM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3cCkoB9rHi43K53VhJHfi8fA_sM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3cCkoB9rHi43K53VhJHfi8fA_sM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Css-eblog/~4/00ObD1aEGfY" height="1" width="1"/&gt;</content><feedburner:origLink>http://css-eblog.com/canvas/canvas-shooting-game.html</feedburner:origLink></entry></feed>

