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

<channel>
	<title>zudolog</title>
	<atom:link href="http://zudolab.net/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://zudolab.net/blog</link>
	<description>Takazudoがうだうだ書くドキュメント</description>
	<lastBuildDate>Sat, 30 Jan 2010 08:26:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS Niteに出演します</title>
		<link>http://zudolab.net/blog/?p=199</link>
		<comments>http://zudolab.net/blog/?p=199#comments</comments>
		<pubDate>Sat, 30 Jan 2010 08:26:37 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=199</guid>
		<description><![CDATA[CSS Niteで、CSS3についてしゃべることになりました。


CSS Nite in Ginza Vol.45
CSS Nite LP9

高津戸壮です。よろしくお願いします！
]]></description>
			<content:encoded><![CDATA[<p>CSS Niteで、CSS3についてしゃべることになりました。</p>
<p><span class="morePoint" id="more-199"></span></p>
<ul>
<li><a href="http://cssnite.jp/ginza/vol45/">CSS Nite in Ginza Vol.45</a></li>
<li><a href="http://lp9.cssnite.jp/">CSS Nite LP9</a></li>
</ul>
<p>高津戸壮です。よろしくお願いします！</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=199</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MdN web creators 2010年3月号(vol.99)に寄稿しました</title>
		<link>http://zudolab.net/blog/?p=195</link>
		<comments>http://zudolab.net/blog/?p=195#comments</comments>
		<pubDate>Fri, 29 Jan 2010 14:43:50 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=195</guid>
		<description><![CDATA[またweb creatorsにHTML+CSSコーディングネタの記事を書かせていただきました。今回は結構自分が書きたかったけど貯めておいた系の話をぼろぼろ書かせていただいています。

書いたのはこんなのです。7ページも書きました。

コーディングガイドラインを作成する
美しい余白を作りだすHTML+CSSの設計
抽象度を考慮してclass名をつける
body要素のclassでCSSデザインを切り替える
似た形状のデザインを最小限のCSSで組む
emとpxの特性をふまえ最適な余白指定を行う
サイトの規模に合わせたCSSを書く

Tips形式ではありますが、なるべく、ほいこれやったらこうなるべー終わり！みたいな感じではなく、こーいう概念が大事なんじゃないかなーどうでしょうーって言う感じを意識して書きました。
店頭で見かけたら見て頂けるとうれしいでーす。

Amazon &#8211; Web creators ( ウェブクリエイターズ ) 2010年 03月号

]]></description>
			<content:encoded><![CDATA[<p>またweb creatorsにHTML+CSSコーディングネタの記事を書かせていただきました。今回は結構自分が書きたかったけど貯めておいた系の話をぼろぼろ書かせていただいています。</p>
<p><span class="morePoint" id="more-195"></span></p>
<p>書いたのはこんなのです。7ページも書きました。</p>
<ul>
<li>コーディングガイドラインを作成する</li>
<li>美しい余白を作りだすHTML+CSSの設計</li>
<li>抽象度を考慮してclass名をつける</li>
<li>body要素のclassでCSSデザインを切り替える</li>
<li>似た形状のデザインを最小限のCSSで組む</li>
<li>emとpxの特性をふまえ最適な余白指定を行う</li>
<li>サイトの規模に合わせたCSSを書く</li>
</ul>
<p>Tips形式ではありますが、なるべく、ほいこれやったらこうなるべー終わり！みたいな感じではなく、こーいう概念が大事なんじゃないかなーどうでしょうーって言う感じを意識して書きました。</p>
<p>店頭で見かけたら見て頂けるとうれしいでーす。</p>
<ul>
<li><a href="http://www.amazon.co.jp/gp/product/B0034C7S56?ie=UTF8&amp;tag=takazudo-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=B0034C7S56">Amazon &#8211; Web creators ( ウェブクリエイターズ ) 2010年 03月号</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=195</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コーディングな人</title>
		<link>http://zudolab.net/blog/?p=190</link>
		<comments>http://zudolab.net/blog/?p=190#comments</comments>
		<pubDate>Sat, 23 Jan 2010 05:35:22 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[雑多]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=190</guid>
		<description><![CDATA[最近技能をどー言う風にいかせば売り上げが上がるのか考えねばなーって感じだ。
まーそれなりに、HTMLCSSJavaScriptやれます、でかめのサイトでもカオスなサイトでもうまく立ち回ります、MTやれます、とかいった感じではあって、フリーの時も、色んな縁から、そーいうところを買ってもらって仕事を依頼していただけたりはしたのだけれど、そーいうことやるのの単価って、全然上がる気がしない。というか、特にコーディングって、単価どんどん下がってきてるよねぇ。

どーすっぺというアンサーとして、一つの道は、クオリティの高いコーディングを、安価で提供する道だと思うんですが、これってーのは、自分が思うに、テンプレートの部分をがっつりキッチリ作れば、量産部分は、それほどの知識が無くとも、出来ると思うんです。学生バイトとかそんな感じの人でも。そーいう状態に持っていくのが、テンプレート作るっていう仕事だと思うので。コロコロコロと作ったHTMLのモジュール並べたらあら綺麗に余白できて何の問題も起こらないわぁという状態を作った後は、あとは人件費安く大量生産できるってー面がありますよね。そこ、テンプレ作れるひとがやったらあんま意味ない。なので、そこは安くどかっとやる。そーいう体制作れば、安くていいものをガッツリ提供できますってーのがあります。
HTMLのテンプレ作るのに、どんな付加価値があるのさ、安くても、見れりゃーいいじゃんかいと思うのはまぁ分かりますが、自分はこーいった部分で管理・保守性に優れたものを作れることは価値があると思ってます経験上。ただ、それっていうのは、そーいう量産体制が築けたり、デカめや複雑なサイトで、長く保守できてるってー状態にならんと、その価値は発揮できなさげだと思うんですよね。この3ページ、デザインあげるからやって。ってーところでは、この価値はあんま変わんないと思う。まじすごいクオリティでコーディングしてきやがった・・・！とかなったとしても。
まー一つそういう道があるなーとして、やっぱりそれは価格競争に乗るって感じになるよなーと。牛丼はやっぱ500円以内だし、そこ、1000円2000円で売れるのって、まー、高級な肉使っててまじでウマイですとかなら分かりますけど、コーディングにおいて、そこまでのコーディングスーパースターってどんなんだい。っていうか居るのかねそれは、その価値を説明したうえで納得して貰えるもんなんだろうかというのがある。（てか、フリーランスでコーディングしますとか言ってる輩にそれなりの金額で発注していただけてた時点でもうかなりありがたい。）
でまー思うに、コーディングやりますっていう立ち位置にいると、そっから抜けらん無いんじゃないかねと思うんですなー。というのも、コーディングを頼まれるって時点で、そのコーディングを頼むのは、やはりWeb制作会社だったり、サイトを作る部署がある企業だったりするわけなんですよね。そー考えると、決まった予算内でやらざるを得なくない？それ以上の対価を払えるコーディングって？ってなるよなーと。
んじゃ、どーしたらその根っこの価格を上げられるのさって言ったら、例えば、あなたのサイト100万で作ります。そしたら200万売り上げがあがりますよ！みたいな価値を生み出す部分なのではないかなと思うんですよね。あたりまえだけど。コーディングうんぬん考えててもだめなんじゃねーのかなーと。まーこりゃJavaScriptだのMTだのでも同じなんですが。
前、会社にいた時、jQuery覚えて色々使ったり、Flashぽいのも作ったりするんだけど、それやっても別に見積り上がんないし・・・ってジレンマがちとあった。ただそれって、そこの価値をハナっからクライアントに説明してないってのがダメな点だったのかなーって思う。俺のターンに回ってくるところで、おっしゃここツールチップにして、画像はモーダルダイアログで出しましょう。色々調べた結果、このライブラリがベストなんです！って言って実装したとしても、そこで言ったところで、もう遅いって言うか、まぁクライアントには満足して貰えるだろうけど、それって見積り的に言えば無料サービスになっちゃってたりする。そーいうのって、最初っから、ウチはこうやるんですよ、リッチでこんなにユーザーは満足する物になりますよ、だからいくらですって言う面までもっていかないと、金額的な面では意味ない気が。まーこれって、まさに分業してやってる自分が陥りそうな感じではありますねよく考えたら。
じゃーそのJavaScriptだの、コーディングだのを、どうやって商売に結び付けていけばいいのかって言ったら、それで何が成せるのだってのをどんどん出していかないといかんなーと思うんですよね。もう、依頼されてハイこれ実装するのにはいくらですって感じじゃなくて。そーいうことお考えなら、こー言うのどうでしょうか？これはいくらなんですよ。って言う感じで。
まーその自分が、自分に必要って思ってるのは、そーいう面なんです。JSできんのは分かった。CSSできんのは分かったから、で、それがどーいう役に立つんじゃ？提案しなさーいって面です。そのためには、もっと、技術面だけでなく、JavaScriptとCSSを理解せねばならんと思いました。
あとは、みんなでなんかやるってーことです。別に自分が提案しなくてもいいから、まーこんな技術屋デスって立ち位置な人間よか、どーのこーのしたいって考えてるひとはいるもので、そーいう人と一緒に考えて何かやるってことです。でもまー良く考えたらWeb制作会社ってそーいう集まりなはずなんですよねー。自分の認識が足りてなかっただけか？
そーいうのが自分にはこれから必要な面だーと思ったりなんなり。
]]></description>
			<content:encoded><![CDATA[<p>最近技能をどー言う風にいかせば売り上げが上がるのか考えねばなーって感じだ。</p>
<p>まーそれなりに、HTMLCSSJavaScriptやれます、でかめのサイトでもカオスなサイトでもうまく立ち回ります、MTやれます、とかいった感じではあって、フリーの時も、色んな縁から、そーいうところを買ってもらって仕事を依頼していただけたりはしたのだけれど、そーいうことやるのの単価って、全然上がる気がしない。というか、特にコーディングって、単価どんどん下がってきてるよねぇ。</p>
<p><span class="morePoint" id="more-190"></span></p>
<p>どーすっぺというアンサーとして、一つの道は、クオリティの高いコーディングを、安価で提供する道だと思うんですが、これってーのは、自分が思うに、テンプレートの部分をがっつりキッチリ作れば、量産部分は、それほどの知識が無くとも、出来ると思うんです。学生バイトとかそんな感じの人でも。そーいう状態に持っていくのが、テンプレート作るっていう仕事だと思うので。コロコロコロと作ったHTMLのモジュール並べたらあら綺麗に余白できて何の問題も起こらないわぁという状態を作った後は、あとは人件費安く大量生産できるってー面がありますよね。そこ、テンプレ作れるひとがやったらあんま意味ない。なので、そこは安くどかっとやる。そーいう体制作れば、安くていいものをガッツリ提供できますってーのがあります。</p>
<p>HTMLのテンプレ作るのに、どんな付加価値があるのさ、安くても、見れりゃーいいじゃんかいと思うのはまぁ分かりますが、自分はこーいった部分で管理・保守性に優れたものを作れることは価値があると思ってます経験上。ただ、それっていうのは、そーいう量産体制が築けたり、デカめや複雑なサイトで、長く保守できてるってー状態にならんと、その価値は発揮できなさげだと思うんですよね。この3ページ、デザインあげるからやって。ってーところでは、この価値はあんま変わんないと思う。まじすごいクオリティでコーディングしてきやがった・・・！とかなったとしても。</p>
<p>まー一つそういう道があるなーとして、やっぱりそれは価格競争に乗るって感じになるよなーと。牛丼はやっぱ500円以内だし、そこ、1000円2000円で売れるのって、まー、高級な肉使っててまじでウマイですとかなら分かりますけど、コーディングにおいて、そこまでのコーディングスーパースターってどんなんだい。っていうか居るのかねそれは、その価値を説明したうえで納得して貰えるもんなんだろうかというのがある。（てか、フリーランスでコーディングしますとか言ってる輩にそれなりの金額で発注していただけてた時点でもうかなりありがたい。）</p>
<p>でまー思うに、コーディングやりますっていう立ち位置にいると、そっから抜けらん無いんじゃないかねと思うんですなー。というのも、コーディングを頼まれるって時点で、そのコーディングを頼むのは、やはりWeb制作会社だったり、サイトを作る部署がある企業だったりするわけなんですよね。そー考えると、決まった予算内でやらざるを得なくない？それ以上の対価を払えるコーディングって？ってなるよなーと。</p>
<p>んじゃ、どーしたらその根っこの価格を上げられるのさって言ったら、例えば、あなたのサイト100万で作ります。そしたら200万売り上げがあがりますよ！みたいな価値を生み出す部分なのではないかなと思うんですよね。あたりまえだけど。コーディングうんぬん考えててもだめなんじゃねーのかなーと。まーこりゃJavaScriptだのMTだのでも同じなんですが。</p>
<p>前、会社にいた時、jQuery覚えて色々使ったり、Flashぽいのも作ったりするんだけど、それやっても別に見積り上がんないし・・・ってジレンマがちとあった。ただそれって、そこの価値をハナっからクライアントに説明してないってのがダメな点だったのかなーって思う。俺のターンに回ってくるところで、おっしゃここツールチップにして、画像はモーダルダイアログで出しましょう。色々調べた結果、このライブラリがベストなんです！って言って実装したとしても、そこで言ったところで、もう遅いって言うか、まぁクライアントには満足して貰えるだろうけど、それって見積り的に言えば無料サービスになっちゃってたりする。そーいうのって、最初っから、ウチはこうやるんですよ、リッチでこんなにユーザーは満足する物になりますよ、だからいくらですって言う面までもっていかないと、金額的な面では意味ない気が。まーこれって、まさに分業してやってる自分が陥りそうな感じではありますねよく考えたら。</p>
<p>じゃーそのJavaScriptだの、コーディングだのを、どうやって商売に結び付けていけばいいのかって言ったら、それで何が成せるのだってのをどんどん出していかないといかんなーと思うんですよね。もう、依頼されてハイこれ実装するのにはいくらですって感じじゃなくて。そーいうことお考えなら、こー言うのどうでしょうか？これはいくらなんですよ。って言う感じで。</p>
<p>まーその自分が、自分に必要って思ってるのは、そーいう面なんです。JSできんのは分かった。CSSできんのは分かったから、で、それがどーいう役に立つんじゃ？提案しなさーいって面です。そのためには、もっと、技術面だけでなく、JavaScriptとCSSを理解せねばならんと思いました。</p>
<p>あとは、みんなでなんかやるってーことです。別に自分が提案しなくてもいいから、まーこんな技術屋デスって立ち位置な人間よか、どーのこーのしたいって考えてるひとはいるもので、そーいう人と一緒に考えて何かやるってことです。でもまー良く考えたらWeb制作会社ってそーいう集まりなはずなんですよねー。自分の認識が足りてなかっただけか？</p>
<p>そーいうのが自分にはこれから必要な面だーと思ったりなんなり。</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=190</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML5+CSS3についてぶつくさ</title>
		<link>http://zudolab.net/blog/?p=183</link>
		<comments>http://zudolab.net/blog/?p=183#comments</comments>
		<pubDate>Sat, 16 Jan 2010 18:45:46 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=183</guid>
		<description><![CDATA[HTML5+CSS3が、会社のwebサイトを作るーみたいな状況上でどう生かせるかーという話は、そーいう状況をベースとして考えるってこと自体が、HTML5+CSS3ができることの中での、非常に狭い領域の話だと思う。
そもそもブラウザベンダーってのは何のためにブラウザを作ってるかって考えたら、まー広い話で言えば、それによって生活が豊かになることだったり、幸せに暮らせることだったりするんじゃなかろーか。そーいった上で、ブラウザが目指すものとしては、新しいテクノロジのプラットフォームになることなんじゃないすかね。
例えばWiiの上にOperaが乗っかってたりとか、ケータイにChromeだのSafariが入ってるのって、あーそれはwebを見るためのものね、PCで見れるやつがケータイでも見れるのねっていうことより、ずっと価値のあること。HTML5なりCSS3ってのがどんどん策定され、みんなそれ実装していったら、そのプラットフォーム自体ができることが増えるわけだから、どんどん今以上の使われ方がされていくハズ。

たとえば、数年後、冷蔵庫だの音楽プレイヤーだの、なんでもかんでも、そういった日常で使われるような機器にスクリーンがつき、色々な機能を持ち、GUIが使われたら、その中で組まれるプログラムの表側がHTML周辺の技術でも作れるとか、ていうかそれがスタンダードっすよねってなったりすんじゃないすかねー。うちの目覚ましwebkitでできてるっぽいとか。おっと音楽プレイヤーは既にwebkitでした。あ、携帯電話もでした。
HTML5+CSS3を採用することでIEを切ると言う話は、今の時点で言えば、多くの人の役に立つ上での半数以上を切り落としていることにもなるので、確かにあんま嬉しくないことだし、みんなを幸せにはしないことかもしんない。
ただ、それをベースにして作られるアプリケーションは、高度なプラットフォームを利用したデザイン ー設計面とビジュアルの面でー を低コストで、高い管理・運用性を持たせて作ることができるわけで、これは明らかに価値のあること。さらに、時間がたてばそのIEとやらでも使える可能性が非常に高いわけだし。
だからまー、IEを対象にして、万人に使えるwebサービス ーweb上に配置され、参照されるドキュメントとしての、いわゆる普通のwebサイトを含むー と言うのは、それなりにレガシーな技術を使う必要があり、それを保守するための費用もかかってしまう。それに対し、うん年前のブラウザの性能の低さを嘆くのは構わないが、その状況を悲観しているのは多くの場合、時間の無駄になる。あたりまえだけど、需要ありきで仕事は成り立つ。ただし、それを排除した環境の上でモノ作ることを前提とするのであれば、レガシーな技術を使う意味など全くない。
具体的に使えそうなところで考えてみれば、社内でのみ利用されるスケジュール管理システムだったり、サイトを更新するためのCMSのGUIが、IEで使えないからと言って、何か問題があるのだろうか。最新の技術を使い、メンテナンス性の高いアプリケーションを作るということ、これは、幸運なことに、性能の低いレガシーな技術しか使えないプラットフォームで同等のモノを作ることよりも、ずっと簡単で運用も楽になっていく。
画面描画一つとっても、レガシーなブラウザにも同様な結果をもたらすためにかけるコストを、誰が払いたい？ それは、コードをつぎはぎだらけにし、運用のコストを増大させるという結果をもたらしてまで、実現させたいことだろうか？
そもそも、ChromeだってFirefoxだって、MacでもWinでもLinux上でも動くわけだし、パソコンの上で動くもので良いのであれば、その環境を用意することなど、たいていの場合、なんの障害も無い。それらのプラットフォームとなる、Webブラウザと呼んでいるものらは、webサイトを見ると言う意味を超えた存在にこれからなっていくハズなんじゃなかろーか。っていうかなってきてる。
もちろん、レガシーな環境に合わせてwebサイトと呼んでいるモノを作るのは、必要なことだし、大体それが私の仕事の中心デス。ただ、これっていうのは、HTML+CSSができることのごくごく一部でしかない。っていう状況に至るまで、そんな時間はかかんないんじゃないかなぁ。
※ ここでいうhtml5ってのは主にAPIの話
]]></description>
			<content:encoded><![CDATA[<p>HTML5+CSS3が、会社のwebサイトを作るーみたいな状況上でどう生かせるかーという話は、そーいう状況をベースとして考えるってこと自体が、HTML5+CSS3ができることの中での、非常に狭い領域の話だと思う。</p>
<p>そもそもブラウザベンダーってのは何のためにブラウザを作ってるかって考えたら、まー広い話で言えば、それによって生活が豊かになることだったり、幸せに暮らせることだったりするんじゃなかろーか。そーいった上で、ブラウザが目指すものとしては、新しいテクノロジのプラットフォームになることなんじゃないすかね。</p>
<p>例えばWiiの上にOperaが乗っかってたりとか、ケータイにChromeだのSafariが入ってるのって、あーそれはwebを見るためのものね、PCで見れるやつがケータイでも見れるのねっていうことより、ずっと価値のあること。HTML5なりCSS3ってのがどんどん策定され、みんなそれ実装していったら、そのプラットフォーム自体ができることが増えるわけだから、どんどん今以上の使われ方がされていくハズ。</p>
<p><span class="morePoint" id="more-183"></span></p>
<p>たとえば、数年後、冷蔵庫だの音楽プレイヤーだの、なんでもかんでも、そういった日常で使われるような機器にスクリーンがつき、色々な機能を持ち、GUIが使われたら、その中で組まれるプログラムの表側がHTML周辺の技術でも作れるとか、ていうかそれがスタンダードっすよねってなったりすんじゃないすかねー。うちの目覚ましwebkitでできてるっぽいとか。おっと音楽プレイヤーは既にwebkitでした。あ、携帯電話もでした。</p>
<p>HTML5+CSS3を採用することでIEを切ると言う話は、今の時点で言えば、多くの人の役に立つ上での半数以上を切り落としていることにもなるので、確かにあんま嬉しくないことだし、みんなを幸せにはしないことかもしんない。</p>
<p>ただ、それをベースにして作られるアプリケーションは、高度なプラットフォームを利用したデザイン ー設計面とビジュアルの面でー を低コストで、高い管理・運用性を持たせて作ることができるわけで、これは明らかに価値のあること。さらに、時間がたてばそのIEとやらでも使える可能性が非常に高いわけだし。</p>
<p>だからまー、IEを対象にして、万人に使えるwebサービス ーweb上に配置され、参照されるドキュメントとしての、いわゆる普通のwebサイトを含むー と言うのは、それなりにレガシーな技術を使う必要があり、それを保守するための費用もかかってしまう。それに対し、うん年前のブラウザの性能の低さを嘆くのは構わないが、その状況を悲観しているのは多くの場合、時間の無駄になる。あたりまえだけど、需要ありきで仕事は成り立つ。ただし、それを排除した環境の上でモノ作ることを前提とするのであれば、レガシーな技術を使う意味など全くない。</p>
<p>具体的に使えそうなところで考えてみれば、社内でのみ利用されるスケジュール管理システムだったり、サイトを更新するためのCMSのGUIが、IEで使えないからと言って、何か問題があるのだろうか。最新の技術を使い、メンテナンス性の高いアプリケーションを作るということ、これは、幸運なことに、性能の低いレガシーな技術しか使えないプラットフォームで同等のモノを作ることよりも、ずっと簡単で運用も楽になっていく。</p>
<p>画面描画一つとっても、レガシーなブラウザにも同様な結果をもたらすためにかけるコストを、誰が払いたい？ それは、コードをつぎはぎだらけにし、運用のコストを増大させるという結果をもたらしてまで、実現させたいことだろうか？</p>
<p>そもそも、ChromeだってFirefoxだって、MacでもWinでもLinux上でも動くわけだし、パソコンの上で動くもので良いのであれば、その環境を用意することなど、たいていの場合、なんの障害も無い。それらのプラットフォームとなる、Webブラウザと呼んでいるものらは、webサイトを見ると言う意味を超えた存在にこれからなっていくハズなんじゃなかろーか。っていうかなってきてる。</p>
<p>もちろん、レガシーな環境に合わせてwebサイトと呼んでいるモノを作るのは、必要なことだし、大体それが私の仕事の中心デス。ただ、これっていうのは、HTML+CSSができることのごくごく一部でしかない。っていう状況に至るまで、そんな時間はかかんないんじゃないかなぁ。</p>
<p>※ ここでいうhtml5ってのは主にAPIの話</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=183</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JaxerでActiveJS &#8211; ActiveRecordを使う &#8211; その1</title>
		<link>http://zudolab.net/blog/?p=174</link>
		<comments>http://zudolab.net/blog/?p=174#comments</comments>
		<pubDate>Fri, 04 Dec 2009 18:47:33 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jaxer]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=174</guid>
		<description><![CDATA[JaxerでActiveJS &#8211; ActiveRecordを使うと、簡単にDBをいじれます。そのサンプル。SQLiteを使う時のサンプルです。


サンプル (server.js)

このサンプルでは、以下のようなDBを作ります。これが全部終わった後の状態。

コードちょい解説
とりあえずDBに接続。sqliteのファイル名を指定できる。最初にこれやらないとだめ。
/**
 * Connect first
 * If you use sqlite, Jaxer create 'appdata.sqlite' in db directory.
 * You can specify this db file name by third argument.
 */
ActiveRecord.connect(ActiveRecord.Adapters.JaxerSQLite);

     // following works too.
     // ActiveRecord.connect(ActiveRecord.Adapters.JaxerSQLite,'filenamehere.sqlite');
logを有効にすると、Jaxer.Log.info()でログを取りまくってくれる。
/**
 * Logging
 * Following enables logging.
 * If true, ActiveRecord execute [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jaxer.org/">Jaxer</a>で<a href="http://activerecordjs.org/">ActiveJS &#8211; ActiveRecord</a>を使うと、簡単にDBをいじれます。そのサンプル。<br />SQLiteを使う時のサンプルです。</p>
<p><span class="morePoint" id="more-174"></span></p>
<ul>
<li><a href="http://dl.dropbox.com/u/268240/zudologFiles/activeJS01/server.js">サンプル (server.js)</a></li>
</ul>
<p>このサンプルでは、以下のようなDBを作ります。これが全部終わった後の状態。</p>
<p><img src="http://dl.dropbox.com/u/268240/zudologFiles/activeJS01/capture01.png" alt="" /></p>
<h3>コードちょい解説</h3>
<p>とりあえずDBに接続。sqliteのファイル名を指定できる。最初にこれやらないとだめ。</p>
<pre class="prettyprint">/**
 * Connect first
 * If you use sqlite, Jaxer create 'appdata.sqlite' in db directory.
 * You can specify this db file name by third argument.
 */
ActiveRecord.connect(ActiveRecord.Adapters.JaxerSQLite);

     // following works too.
     // ActiveRecord.connect(ActiveRecord.Adapters.JaxerSQLite,'filenamehere.sqlite');</pre>
<p>logを有効にすると、Jaxer.Log.info()でログを取りまくってくれる。</p>
<pre class="prettyprint">/**
 * Logging
 * Following enables logging.
 * If true, ActiveRecord execute Jaxer.Log.info() for each sql execution or something like it.
 */
ActiveRecord.logging = true;</pre>
<p>直接SQL文を実行させるには以下のような感じ</p>
<pre class="prettyprint">/**
 * Execute simple sql
 * After you executed ActiveRecord.connect(),
 * You can use ActiveRecord.execute() to execute sql.
 */
ActiveRecord.execute('CREATE TABLE IF NOT EXISTS exampletable1 (id INTEGER PRIMARY KEY, username, mailaddr, profile)');</pre>
<p>tableをラップしたモデルを作れます。モデルを作れば、createで簡単にrecord追加できます。</p>
<pre class="prettyprint">/**
 * Create model
 * ActiveRecord.create(tableName) creates a model object.
 * You can use sql execution without writhing sql strings.
 * Followings are the examples of create new records.
 * 'exampletable1' is the table you created above.
 */
var ExampleModel1 = ActiveRecord.create('exampletable1');

ExampleModel1.create({
     username: 'Takazudo',
     mailaddr: 'takazudo@gmail.com',
     profile: 'hey! I am Takazudo.'
});
ExampleModel1.create({
     username: 'Hogezudo',
     mailaddr: 'hogezudo@gmail.com',
     profile: 'hey! I am Hogezudo.'
}); </pre>
<p>モデル作成時、インターフェイスを定義すると、findByメソッドらが使えます。<br />ActiveRecord.create()するとき、そのtableがなけりゃ勝手に作ります。<br />PRIMARY KEYはIDでこれは勝手に入ります。</p>
<pre class="prettyprint">/**
 * Model - finder methods
 * Followings are the examples of finder methods.
 * Defining the interface by second argument of create allows you to use finder methods.
 */
var ExampleModel2 = ActiveRecord.create('exampletable2',{
     username: '',
     mailaddr: '',
     profile: ''
});

ExampleModel2.create({
     username: 'Takazudo',
     mailaddr: 'takazudo@gmail.com',
     profile: 'hey! I am Takazudo.'
});
ExampleModel2.create({
     username: 'Hogezudo',
     mailaddr: 'takazudo@gmail.com',
     profile: 'hey! I am Hogezudo.'
});
ExampleModel2.create({
     username: 'AnyOtherMan1',
     mailaddr: 'someone@gmail.com',
     profile: 'hey! I am AnyOtherMan.'
});
ExampleModel2.create({
     username: 'AnyOtherMan2',
     mailaddr: 'someone@gmail.com',
     profile: 'hey! I am AnyOtherMan.'
}); </pre>
<p>findByHoge(val)で、マッチした最初のrecordをラップしたオブジェクトが戻ってきます。<br />各keyの値は普通にメンバ変数として格納されてる。<br />PRIMARY KEYのIDから探すときは、findByIdですが、これだけは、インターフェイスを定義しなくても使えます。</p>
<pre class="prettyprint">     /**
      * ModelInstanceObject.findBy{property}(val)
      * findBy{property}(val) returns a object which wrapped a record.
      * this method finds a record with limit=1.
      */
     var res = ExampleModel2.findByUsername('Takazudo');

     Jaxer.Log.info(res.username); // Takazudo
     Jaxer.Log.info(res.mailaddr); // takazudo@gmail.com
     Jaxer.Log.info(res.profile); // hey! I am Takazudo.
     Jaxer.Log.info(res.id); // 1

          /**
           * ModelInstanceObject.findById(val)
           * findById(val) is allowed specially without defining interface.
           */
          var res = ExampleModel2.findById(1);
          Jaxer.Log.info(res.username); // Takazudo
</pre>
<p>マッチしたやつ全部欲しいと言う場合はfindAllByHoge。<br />recordをラップしたオブジェクトを詰め込んだArrayが返ってくる。</p>
<pre class="prettyprint">     /**
      * ModelInstanceObject.findAllBy{property}(val)
      * findAllBy{property}(val) returns an array of matched recoreds.
      * each member of the array is the object which wrapped a record.
      * these objects are same record wrapped instance objects as above.
      */
     var res = ExampleModel2.findAllByMailaddr('takazudo@gmail.com');

     Jaxer.Log.info('the matched records length is... '+res.length);
          // the matched records length is... 2

     for(var i=0,l=res.length; i&lt;l; i++){
          Jaxer.Log.info(res[i].username);
     }
          // Takazudo
          // Hogezudo
</pre>
<p>find(条件のハッシュ)で、複数の条件でrecordの取得が可能。<br />戻ってくるのは上記と同じようにrecordラップしたオブジェクトが詰め込まれたArray。</p>
<pre class="prettyprint">     /**
      * ModelInstanceObject.find(hash)
      * find(hash) returns matched objects' array.
      * same as above. but you can specify multi conditions
      */
     var res = ExampleModel2.find({
          mailaddr: 'someone@gmail.com',
          profile: 'hey! I am AnyOtherMan.'
     });

     Jaxer.Log.info('the matched records length is... '+res.length);
          // the matched records length is... 2

     for(var i=0,l=res.length; i&lt;l; i++){
          Jaxer.Log.info(res[i].username);
     }
          // AnyOtherMan1
          // AnyOtherMan2
</pre>
<p>もっと色々機能あるのでまだ調べてみているところ。</p>
<h3>参考</h3>
<ul>
<li><a href="http://jaxer.org/">Jaxer</a></li>
<li><a href="http://activerecordjs.org/">ActiveJS</a></li>
<li><a href="http://activerecordjs.org/record.html">ActiveJS &#8211; ActiveRecord</a></li>
<li><a href="http://github.com/aptana/activejs/downloads">gitHub &#8211; aptana/activejs</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=174</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>outline.vimでコメントをアウトライン化</title>
		<link>http://zudolab.net/blog/?p=154</link>
		<comments>http://zudolab.net/blog/?p=154#comments</comments>
		<pubDate>Mon, 23 Nov 2009 18:23:34 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=154</guid>
		<description><![CDATA[vimプラグインを書いてみました。
こんな感じ（その１、その２）でコメントが書かれたドキュメントのアウトラインを出します。
CSSやJavaScriptでこれ欲しいと思ったので。

GitHub &#8211; Takazudo&#8217;s outline.vim


使い方
vimのプラグインディレクトリに outline.vim を入れます。
zipの中に入っている、sample.cssもしくはsample.jsをvimで開きます。
コマンド、:Oo （もしくは:OutlineOpen）を実行します。

こんな感じでコメントのアウトラインが横に出ます。左のウィンドウ（アウトラインバッファ）に出る各行は、メインウィンドウ（ペアレントバッファ）のコメントと対応しています。
アウトラインバッファの任意の行でEnterを押す（もしくは、:OutlineJump を実行する）と、ペアレントバッファの対応する行にジャンプします。
ペアレントバッファの任意の行で :ToO（もしくは :ToOuline）を実行すると、アウトラインバッファの対応する位置へカーソルが移動します。
アウトラインバッファは、アウトラインバッファにカーソルが移った時、ペアレントバッファが保存された時に自動的に更新されます。アウトラインバッファにカーソルがある状態で r を押すか、:Or（もしくは :OutlineRefresh）を実行することでも、アウトラインバッファの更新が行えます。
アウトラインバッファを閉じるには、アウトラインバッファにカーソルがある状態で、 q を押すか、:Oc（OutlineClose）を実行します。ただ単純にアウトラインバッファを閉じるだけでOKです。
秀丸のアウトライン機能をこういう形で使ってたんですが、vimのプラグイン探しても良さそうなのが無かったので、作ってみました。windowsのgvimで作ってるんですけど、これって他の環境でも動くんでしょうか。まだ作ったばっかりで色々改良すると思うのですが、ひとまず動作したのでアップします。あとは、アウトライン化する項目を色々設定できたらなーとか、気が向いたら。
GitHubってやつにアップロードしてみた。
]]></description>
			<content:encoded><![CDATA[<p>vimプラグインを書いてみました。<br />
こんな感じ（<a href="http://github.com/Takazudo/outline.vim/blob/master/sample.css">その１</a>、<a href="http://github.com/Takazudo/outline.vim/blob/master/sample.js">その２</a>）でコメントが書かれたドキュメントのアウトラインを出します。<br />
CSSやJavaScriptでこれ欲しいと思ったので。</p>
<ul>
<li><a href="http://github.com/Takazudo/outline.vim">GitHub &#8211; Takazudo&#8217;s outline.vim</a></li>
</ul>
<p><span class="morePoint" id="more-154"></span></p>
<h3>使い方</h3>
<p>vimのプラグインディレクトリに outline.vim を入れます。<br />
zipの中に入っている、sample.cssもしくはsample.jsをvimで開きます。<br />
コマンド、:Oo （もしくは:OutlineOpen）を実行します。</p>
<p><img src="http://dl.dropbox.com/u/268240/zudologFiles/vim/plugin/outline/screenshot01.png" alt="" /></p>
<p>こんな感じでコメントのアウトラインが横に出ます。<br />左のウィンドウ（アウトラインバッファ）に出る各行は、メインウィンドウ（ペアレントバッファ）のコメントと対応しています。</p>
<p>アウトラインバッファの任意の行でEnterを押す（もしくは、:OutlineJump を実行する）と、ペアレントバッファの対応する行にジャンプします。</p>
<p>ペアレントバッファの任意の行で :ToO（もしくは :ToOuline）を実行すると、アウトラインバッファの対応する位置へカーソルが移動します。</p>
<p>アウトラインバッファは、アウトラインバッファにカーソルが移った時、ペアレントバッファが保存された時に自動的に更新されます。アウトラインバッファにカーソルがある状態で r を押すか、:Or（もしくは :OutlineRefresh）を実行することでも、アウトラインバッファの更新が行えます。</p>
<p>アウトラインバッファを閉じるには、アウトラインバッファにカーソルがある状態で、 q を押すか、:Oc（OutlineClose）を実行します。ただ単純にアウトラインバッファを閉じるだけでOKです。</p>
<p>秀丸のアウトライン機能を<a href="http://gyauza.egoism.jp/clip/archives/2009/04/post-7/">こういう形で使ってた</a>んですが、vimのプラグイン探しても良さそうなのが無かったので、作ってみました。windowsのgvimで作ってるんですけど、これって他の環境でも動くんでしょうか。まだ作ったばっかりで色々改良すると思うのですが、ひとまず動作したのでアップします。あとは、アウトライン化する項目を色々設定できたらなーとか、気が向いたら。</p>
<p>GitHubってやつにアップロードしてみた。</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=154</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vimの基本操作だの、vimrcだののメモ</title>
		<link>http://zudolab.net/blog/?p=132</link>
		<comments>http://zudolab.net/blog/?p=132#comments</comments>
		<pubDate>Sat, 21 Nov 2009 15:56:01 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=132</guid>
		<description><![CDATA[先週より、メインのテキストエディタとしてgvimを使いだしまして、最初は頭が痛くなる上、仕事のの速度が超絶に下がっていたのですが、ようやく慣れてきて、普通に頭痛無しで使えるようになってきたので、メモを残します。

vimrcやらgvimrcに書いたやつ
Takazudoはwindowsのgvimなので,GUI系の設定は、windows以外では動かないかもしれません

"vi compatible mode off
set nocompatible
vi互換モードオフ
"share clipboard with other applications
set clipboard=unnamed
vimのクリップボードは独自に持っているので、他のアプリと連携できるように変更
"number ruler
set number
左にでる行番号出す
"define backup dir
set backupdir=$HOME/vimbackup
set directory=$HOME/vimbackup
自動バックアップの場所、スワップファイルの場所指定。
" ignore case in search
set ignorecase
検索時に大文字小文字を区別しない
" consider case if the search pattern contains uppercase
set smartcase
ただし検索する文字に大文字が1つでも入っていた場合、大文字小文字を区別する
" incsearch
set noincsearch
インクリメンタルサーチしない
" seach ends at the end of the buffer
set nowrapscan
ファイルの最後まで検索したら、そこで検索やめる。
" tab = 4space
set tabstop=4
タブはスペース４つ分
" tab is tab. doesnot expand to space.
set noexpandtab
タブをスペースに自動変換しない
" allow autoindent
set [...]]]></description>
			<content:encoded><![CDATA[<p>先週より、メインのテキストエディタとしてgvimを使いだしまして、最初は頭が痛くなる上、仕事のの速度が超絶に下がっていたのですが、ようやく慣れてきて、普通に頭痛無しで使えるようになってきたので、メモを残します。</p>
<p><span class="morePoint" id="more-132"></span></p>
<h3>vimrcやらgvimrcに書いたやつ</h3>
<p>Takazudoはwindowsのgvimなので,GUI系の設定は、windows以外では動かないかもしれません</p>
<div class="codeAndComments">
<pre>"vi compatible mode off
set nocompatible</pre>
<p>vi互換モードオフ</p>
<pre>"share clipboard with other applications
set clipboard=unnamed</pre>
<p>vimのクリップボードは独自に持っているので、他のアプリと連携できるように変更</p>
<pre>"number ruler
set number</pre>
<p>左にでる行番号出す</p>
<pre>"define backup dir
set backupdir=$HOME/vimbackup
set directory=$HOME/vimbackup</pre>
<p>自動バックアップの場所、スワップファイルの場所指定。</p>
<pre>" ignore case in search
set ignorecase</pre>
<p>検索時に大文字小文字を区別しない</p>
<pre>" consider case if the search pattern contains uppercase
set smartcase</pre>
<p>ただし検索する文字に大文字が1つでも入っていた場合、大文字小文字を区別する</p>
<pre>" incsearch
set noincsearch</pre>
<p>インクリメンタルサーチしない</p>
<pre>" seach ends at the end of the buffer
set nowrapscan</pre>
<p>ファイルの最後まで検索したら、そこで検索やめる。</p>
<pre>" tab = 4space
set tabstop=4</pre>
<p>タブはスペース４つ分</p>
<pre>" tab is tab. doesnot expand to space.
set noexpandtab</pre>
<p>タブをスペースに自動変換しない</p>
<pre>" allow autoindent
set autoindent</pre>
<p>自動的にインデントする</p>
<pre>" backspace can delete linefeed, tab, space
set backspace=2</pre>
<p>backspaceで改行、タブ、スペースを消せるようにする</p>
<pre>" hilight another brace if the cursor was on it
set showmatch</pre>
<p>対応する括弧をハイライトする</p>
<pre>" add extra features to command-line
set wildmenu</pre>
<p>コマンドライン上で、上押すと上のディレクトリに、<br />
	下押すと下のディレクトリに移動できるようにしたりする</p>
<pre>" show ruler
set ruler</pre>
<p>行番号とか右下に出す</p>
<pre>" show whitespace chars
set list</pre>
<p>スペース、改行、タブなどを表示する</p>
<pre>&quot; show whitespace chars as following
set lcs=tab:&gt;-,eol:$,trail:_,extends:\</pre>
<p>スペース、改行、タブをどのように出すか指定</p>
<pre>" doesnt allow textwrap
set nowrap</pre>
<p>ウィンドウの右端で文字を折り返さない</p>
<pre>" show status line
set laststatus=2</pre>
<p>ステータスライン（下に出るバー）を常に出す</p>
<pre>" commandline height
set cmdheight=1</pre>
<p>コマンドラインの行の高さを指定</p>
<pre>" show commandline
set showcmd</pre>
<p>コマンドラインを出す</p>
<pre>" show filename on titlebar
set title</pre>
<p>ファイル名をGUIのタイトルバーに出す</p>
<pre>" hilight cursor line
autocmd WinEnter *  setlocal cursorline
autocmd WinLeave *  setlocal nocursorline
set cursorline</pre>
<p>カーソルのある行をハイライトさせる</p>
<pre>"shell slash \ to /
set shellslash</pre>
<p>windowsのディレクトリ区切り文字はバックスラッシュだけど、ただのスラッシュとして表示させる</p>
<pre>" automatically change directory where the buffer's file exists
set autochdir</pre>
<p>現在ディレクトリを、バッファで開いているファイルが存在しているディレクトリに自動的に置き換え</p>
<pre>" hilight searched chars
set hlsearch</pre>
<p>検索実行時、パターンにマッチした文字列をハイライト</p>
<pre>" dont use annoying indent
set nosmartindent</pre>
<p>自動的に括弧を見てインデントしてくれる機能を使わない。（JSだと入れ子が複雑になるためうざかったので）</p>
<pre>" make me go to next line
set whichwrap=b,s,h,l,&lt;,&gt;,[,]</pre>
<p>行終わりで右に移動したら次の行にいけるようにしたりなどする</p>
<pre>" statusline
set statusline=%&lt;%f\ %m%r%h%w%{'['.(&amp;fenc!=''?&amp;fenc:&amp;enc).']['.&amp;ff.']'}%=%l,%c%V%8P</pre>
<p>ステータスラインにファイルのパスと現在の文字コード等を出す</p>
<pre>" font
set guifont=VL_Gothic:h12:cSHIFTJIS</pre>
<p>フォント変える。これにした。<a href="http://dicey.org/vlgothic/">VLゴシック</a></p>
<pre>"number of screen lines to show around the cursor
set scrolloff=2</pre>
<p>上下最低２行を残してウィンドウをスクロールさせる</p>
<pre>" minimal number of columns to keep left and right of the cursor
set sidescrolloff=3</pre>
<p>左右最低３文字を残してウィンドウをスクロールさせる</p>
<pre>" first directory is where the buffer exists
set browsedir=buffer</pre>
<p>初期ディレクトリをバッファの開いたディレクトリにする</p>
<pre>" hide toolbars
set guioptions-=T</pre>
<p>ツールバーを消す</p>
<pre>" don't allow to send selected text to the clipboard automatically in visual mode
set guioptions-=a</pre>
<p>ビジュアルモードでつまんだテキストを自動的にレジスタに入れない</p>
<pre>" use console dialog instead of popup dialogs for simple choice
set guioptions+=c</pre>
<p>単純なGUIの確認ダイアログを、代わりにコマンドラインに表示させる</p>
<pre>" enable horizontal scrollbar
set guioptions+=b</pre>
<p>横スクロールを出す</p>
<pre>" show wrap break
set showbreak=++++</pre>
<p>折り返されている行の頭に++++を表示</p>
<pre>"load colorscheme
colorscheme wombat</pre>
<p>カラースキーム変える。何かかっこよかったのでこれにした。<br />
	runtime/colorに突っ込む。<a href="http://dengmao.wordpress.com/2007/01/22/vim-color-scheme-wombat/">wombat</a></p>
<pre>&quot; show japanese charactors (this works only if this file was saved as Sfhit-jis)
highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=#555555
au BufNewFile,BufRead * match ZenkakuSpace /　//</pre>
<p>日本語の全角文字に色を付けて表示</p>
<pre>&quot; delete buffer but splitted window remains there
command! Kwbd let kwbd_bn= bufnr(&quot;%&quot;)|enew|exe &quot;bdel &quot;.kwbd_bn|unlet kwbd_bn
command! FKwbd let kwbd_bn= bufnr(&quot;%&quot;)|enew|exe &quot;bdel! &quot;.kwbd_bn|unlet kwbd_bn</pre>
<p>ウィンドウ分割を保持したままバッファを閉じるコマンド。<br />
	FKwbdは強制的に閉じる。<a href="http://nanasi.jp/articles/vim/kwbd_vim.html">kwbd.vim : ウィンドウレイアウトを崩さないでバッファを閉じる&mdash;名無しのvim使い</a></p>
<pre>" encoding commands
command! Cp932 edit ++enc=cp932
command! Eucjp edit ++enc=euc-jp
command! Iso2022jp edit ++enc=iso-2202-jp
command! Utf8 edit ++enc=utf-8
command! Jis Iso2022jp
command! Sjis ++enc=cp932</pre>
<p>指定した文字コードで開きなおすコマンド群</p>
<pre>"change encoding commands
command! ChgencCp932 set fenc=cp932
command! ChgencEucjp set fenc=euc-jp
command! ChgencIso2022jp set fenc=iso-2202-jp
command! ChgencUtf8 set fenc=utf-8
command! ChgencJis ChgencIso2022jp
command! ChgencSjis set fenc=cp932</pre>
<p>開いているバッファの文字コードを変えるコマンド群</p>
<pre>"change hjkl behavior for line wrap
noremap j gj
noremap k gk
noremap gj j
noremap gk k</pre>
<p>jkでのカーソルを表示行単位で移動できるように変更</p>
<pre>&quot; tab change
map &lt;F2&gt; &lt;ESC&gt;:bprevious&lt;CR&gt;
map &lt;F3&gt; &lt;ESC&gt;:bnext&lt;CR&gt;
map &lt;F4&gt; &lt;ESC&gt;:bwipe&lt;CR&gt;
map &lt;F9&gt; &lt;ESC&gt;:Kwbd&lt;CR&gt;
map &lt;S-F9&gt; &lt;ESC&gt;:FKwbd&lt;CR&gt;</pre>
<p>Fキーでバッファ切り替え等を行う<br />
	F2: 前のバッファ<br />
	F3: 次のバッファ<br />
	F4: バッファ削除<br />
	F9: レイアウトを維持した状態でバッファ削除<br />
	Shift F9: レイアウトを維持した状態でバッファ削除（強制）</p>
<pre>&quot; gui tab
map &lt;F5&gt; &lt;ESC&gt;:tabprevious&lt;CR&gt;
map &lt;F6&gt; &lt;ESC&gt;:tabnext&lt;CR&gt;
map &lt;F7&gt; &lt;ESC&gt;:tabnew&lt;CR&gt;
map &lt;F8&gt; &lt;ESC&gt;:tabclose&lt;CR&gt;</pre>
<p>FキーでGUIタブの切り替え等を行う<br />
	F5: 前のタブ<br />
	F6: 次のタブ<br />
	F7: 新規タブ<br />
	F8: タブを閉じる</p>
</div>
<h3>基本コマンド、操作など</h3>
<h4>コマンドライン上で</h4>
<dl>
<dt>&lt;C-h&gt;</dt>
<dd>= backspace</dd>
<dt>&lt;C-w&gt;</dt>
<dd>入力しようとしてたコマンド, 1word分消す</dd>
<dt>&lt;C-u&gt;</dt>
<dd>入力しようとしてたコマンド全消し</dd>
<dt>&lt;C-d&gt;</dt>
<dd>ディレクトリ、ファイル、コマンドの候補を一覧（広く）</dd>
<dt>&lt;tab&gt;</dt>
<dd>ディレクトリ、ファイル、コマンドの候補を一覧</dd>
<dt>&lt;C-r&gt;*</dt>
<dd>レジスタのデータを張り付ける。</dd>
<dt>&lt;C-r&gt;%</dt>
<dd>現在のファイル名を張り付ける。<br />
vimgrep+quickFixと合わせてつかったりする。</dd>
<dt>&lt;C-r&gt;&lt;C-w&gt;<br />
&lt;C-r&gt;&lt;C-a&gt;</dt>
<dd>現在カーソルがある位置の、word/WORDをペースト</dd>
</dl>
<h4>vimgrep &amp; quickFix</h4>
<p>:vim[grep] {patterns} {file}<br />
でgrepが使える。<br />
このとき、{files}にはワイルドカードが使える。<br />
**は、以下のディレクトリ全て（正確には30ディレクトリ下まで）を示す。<br />
*は全ての文字列を示す。</p>
<p>例：<br />
:vim /hogehoge/ *html<br />
同じディレクトリにあるhtmlファイル全部を/hogehoge/で検索<br />
:vim /hogehoge/ **/*html<br />
現在ディレクトリ以下にあるhtmlファイル全部を/hogehoge/で検索</p>
<p>:vim[grep] {patterns} {file} | cw<br />
で、grep結果が分割ウィンドウで、新しいバッファとして開かれる。<br />これは特殊な機能を持ったバッファで、quickFixという名前。<br />
このバッファには、ヒットしたファイルと行の内容が一覧され、<br />
開きたい個所でEnterを押すと、そのファイルを開いて該当の個所にジャンプできるという、非常に便利なもの。<br />
コレどこにあったっけと、コレ全部変えたいと言う時はvimgrepとquickFixで一気に変更できる。</p>
<h4>Visualモードで</h4>
<dl>
<dt>&lt;C-E&gt;</dt>
<dd>マウス位置をずらさず下にスクロール Extra Lines</dd>
<dt>&lt;C-Y&gt;</dt>
<dd>マウス位置をずらさず上にスクロール</dd>
</dl>
<p>テキストを選択した状態で</p>
<dl>
<dt>&lt;S-&gt;&gt;</dt>
<dd>インデント１段深く</dd>
<dt>&lt;S-&lt;&gt;</dt>
<dd>インデント１段浅く</dd>
<dt>&lt;C-a&gt;</dt>
<dd>数値なら加算+1</dd>
<dt>&lt;C-x&gt;</dt>
<dd>数値なら減算-1</dd>
<dt>.</dt>
<dd>直前の動作繰り返し（インデントぼこぼこ繰り返したりなど）</dd>
<dt>=</dt>
<dd>選択範囲を自動インデント</dd>
</dl>
<h4>Normalモードで</h4>
<dl>
<dt>%</dt>
<dd>カーソル位置に括弧があるとき、対応する括弧にジャンプ</dd>
<dt>m{char}</dt>
<dd>カーソル位置をマークして登録</dd>
<dt>&#8216;{char}</dt>
<dd>マークした位置にジャンプ</dd>
<dt>&#8216;[</dt>
<dd>最後に編集した個所の最初の位置へ</dd>
<dt>']</dt>
<dd>最後に編集した個所の最後の位置へ</dd>
<dt>f{char}</dt>
<dd>カーソル位置直後にあるcharという文字へ移動 find</dd>
<dt>F{char}</dt>
<dd>カーソル位置直前にあるcharという文字へ移動 findの逆</dd>
<dt>t{char}</dt>
<dd>カーソル位置直後にあるcharという文字まで移動（１文字前でストップ） till</dd>
<dt>T{char}</dt>
<dd>カーソル位置直前にあるcharという文字まで移動（１文字前でストップ） tillの逆</dd>
</dl>
<p>以下vhogeは、オペレーターとモーションというやつで、vの部分をdだのyだのに変えて、便利に使える。</p>
<dl>
<dt>vw</dt>
<dd>カーソル位置にある単語を選択（カーソルの前の文字列は選択されない） （ハイフンやカンマを区切り位置とみなす） visual, word</dd>
<dt>vW</dt>
<dd>カーソル位置にある単語を選択（カーソルの前の文字列は選択されない） （スペースを区切り位置とみなす） visual, WORD</dd>
<dt>viw</dt>
<dd>カーソル位置にあるの単語選択（カーソルの前の文字列も選択される） （ハイフンやカンマを区切り位置とみなす） visual, innner word</dd>
<dt>viW</dt>
<dd> カーソル位置にあるの単語選択（カーソルの前の文字列も選択される） （スペースを区切り位置とみなす） visual, inner WORD</dd>
<dt>vaw</dt>
<dd>カーソル位置にあるの単語選択（カーソルの前の文字列も選択される） （単語直後にあるスペースまでを１単語とみなす） （ハイフンやカンマを区切り位置とみなす） visual, a word</dd>
<dt>vaW</dt>
<dd>カーソル位置にあるの単語選択（カーソルの前の文字列も選択される） （単語直後にあるスペースまでを１単語とみなす） （スペースを区切り位置とみなす） visual, a WORD</dd>
<dt>vit</dt>
<dd>xmlタグの中身を選択visual, inner tag</dd>
<dt>vat</dt>
<dd>xmlタグごと選択visual, a tag</dd>
<dt>vi&#8217;</dt>
<dd>シングルクオートの中身選択 visual, inner &#8216;</dd>
<dt>vi&quot;</dt>
<dd>ダブルクオートの中身選択 visual, inner &quot;</dd>
<dt>va&#8217;</dt>
<dd>シングルクオートごと選択 visual, a &#8216;</dd>
<dt>va&quot;</dt>
<dd>ダブルクオートごと選択 visual, a &quot;</dd>
</dl>
<p>その他vi&lt;, vi{, vi(とかでもその中選択、va&lt;, va{, va(でもそれごと選択になる。</p>
<h4>ウィンドウ系コマンド（Normalモードで）</h4>
<dl>
<dt>&lt;C-w&gt;v</dt>
<dd>現在のウィンドウを縦に分割</dd>
<dt>&lt;C-w&gt;s</dt>
<dd>現在のウィンドウを横に分割</dd>
<dt>&lt;C-w&gt;n</dt>
<dd>横に分割して、空のバッファを開く</dd>
<dt>&lt;C-w&gt;o</dt>
<dd>現在フォーカスされているバッファを残し、ウィンドウ分割を解除</dd>
<dt>&lt;C-w&gt;r</dt>
<dd>現在のバッファを右のウィンドウへ</dd>
<dt>&lt;C-w&gt;R</dt>
<dd>現在のバッファを左のウィンドウへ</dd>
<dt>&lt;C-w&gt;x</dt>
<dd>現在フォーカスされているウィンドウに、次のバッファを読みこむ</dd>
<dt>&lt;C-w&gt;H<br />
&lt;C-w&gt;J<br />
&lt;C-w&gt;K<br />
&lt;C-w&gt;L</dt>
<dd>現在の分割ウィンドウを一番左/下/上/右へ移動</dd>
<dt>&lt;C-w&gt;T</dt>
<dd>現在フォーカスが当たっている分割されたウィンドウを閉じ、新しいGUIタブを開いてこのバッファを表示</dd>
<dt>&lt;C-w&gt;=</dt>
<dd>各分割ウィンドウの幅と高さを揃える</dd>
<dt>&lt;C-w&gt;|</dt>
<dd>現在の分割ウィンドウを可能な限りでかくする</dd>
<dt>&lt;C-w&gt;&lt;C-w&gt;</dt>
<dd>次のウィンドウへ</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=132</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Re:JavaScript1000本ノックはじめました &#124; Blog hamashun.com</title>
		<link>http://zudolab.net/blog/?p=127</link>
		<comments>http://zudolab.net/blog/?p=127#comments</comments>
		<pubDate>Fri, 20 Nov 2009 17:16:39 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=127</guid>
		<description><![CDATA[
Re:JavaScript1000本ノックはじめました &#124; Blog hamashun.com

コードを書くときに自分はこう思っているとか、そういう感じの話です。内容に対するダイレクトなレスではないですけども、見ていて思ったり、最近自分がぼりぼりコードを書いているときに思ったことをメモがてら返信。

使いまわせるコードを書きたいというのはまーそうなんだけど、使わない機能は作っても大体の場合、無駄になります。組み込まない機能は十分にテストされたものでないので、えてして実用的なものにならないし、使ってないから後から見てなんだっけ？ってなる。こーしたいんだけどっていう追加の必要があれば実装すればいいと思われます。
いくつか作ったら、これはいつも使う必要がでてくるからこういう風にしておこうとか、そういう順序でしか汎用的なものというのは作れないんじゃないかなと。変数名とかも最初は適当でいいし、あとで見てこーかな？って思ったら直すとかそういうレベルで全然問題ない。
作りながら悩んでしまうことはメモっておいて、ひとまず動いたあとで、「動作する状態」を保持しながら、ちょっとずつソースコードを改良して考えればいい。同じ処理を２回かいてたら、なんかできんかとか考えたり、エロい人に相談すればいいんではないかと。
例えば昔、ちび画像ギャラリー的なものを作ったのだけれど、その時は、クラス的な概念が全然わかってなかったので、その仕組みは、１個完結で、増やせないものになってた。でもあとで、同じページの中にそれが出てきたので、このままじゃその部分のコードをまるっとコピーし、関数名をちょっと変え、同じのを使いたい分だけコピるみたいになってしまった。
プログラミングの経験が浅い人がここで、それってね、これnewすればできちゃうんですよみたいなことをいきなりやるのは、そういった問題にぶちあたらないと、解決するのはかなり難しいんじゃないだろうか。
細かいことを言われても、しっくりこなかったら、そうかも程度でとどめておき、明日のオレは昨日自分がなりたかったオレ！的にバンバン書いていけばいいのかなーと。こんな書き方じゃダメな気がする＞＜というのはまさに思いこみでしかなく、思った動作をしていれば、どんなふうに書いていようが、それは「仕様を満たした、テストされたコード」であり、完成品であるー。
当然、色んな事を知っていればソースコードの品質は上がるけれども、たぶんそれはもやもやしたままノックしまくった後でよいのではないかなと。

Wikipedia &#8211; リファクタリング

]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.hamashun.com/blog/2009/11/javascript1000.html">Re:JavaScript1000本ノックはじめました | Blog hamashun.com</a></li>
</ul>
<p>コードを書くときに自分はこう思っているとか、そういう感じの話です。<br />内容に対するダイレクトなレスではないですけども、見ていて思ったり、<br />最近自分がぼりぼりコードを書いているときに思ったことをメモがてら返信。</p>
<p><span class="morePoint" id="more-127"></span></p>
<p>使いまわせるコードを書きたいというのはまーそうなんだけど、使わない機能は作っても大体の場合、無駄になります。組み込まない機能は十分にテストされたものでないので、えてして実用的なものにならないし、使ってないから後から見てなんだっけ？ってなる。こーしたいんだけどっていう追加の必要があれば実装すればいいと思われます。</p>
<p>いくつか作ったら、これはいつも使う必要がでてくるからこういう風にしておこうとか、そういう順序でしか汎用的なものというのは作れないんじゃないかなと。変数名とかも最初は適当でいいし、あとで見てこーかな？って思ったら直すとかそういうレベルで全然問題ない。</p>
<p>作りながら悩んでしまうことはメモっておいて、ひとまず動いたあとで、「動作する状態」を保持しながら、ちょっとずつソースコードを改良して考えればいい。同じ処理を２回かいてたら、なんかできんかとか考えたり、エロい人に相談すればいいんではないかと。</p>
<p>例えば昔、ちび画像ギャラリー的なものを作ったのだけれど、その時は、クラス的な概念が全然わかってなかったので、その仕組みは、１個完結で、増やせないものになってた。でもあとで、同じページの中にそれが出てきたので、このままじゃその部分のコードをまるっとコピーし、関数名をちょっと変え、同じのを使いたい分だけコピるみたいになってしまった。</p>
<p>プログラミングの経験が浅い人がここで、それってね、これnewすればできちゃうんですよみたいなことをいきなりやるのは、そういった問題にぶちあたらないと、解決するのはかなり難しいんじゃないだろうか。</p>
<p>細かいことを言われても、しっくりこなかったら、そうかも程度でとどめておき、明日のオレは昨日自分がなりたかったオレ！的にバンバン書いていけばいいのかなーと。こんな書き方じゃダメな気がする＞＜というのはまさに思いこみでしかなく、思った動作をしていれば、どんなふうに書いていようが、それは「仕様を満たした、テストされたコード」であり、完成品であるー。</p>
<p>当然、色んな事を知っていればソースコードの品質は上がるけれども、たぶんそれはもやもやしたままノックしまくった後でよいのではないかなと。</p>
<ul>
<li><a href="http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)">Wikipedia &#8211; リファクタリング</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=127</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>$().ajaxDialog: jQuery UI &#8211; dialog をajaxで</title>
		<link>http://zudolab.net/blog/?p=121</link>
		<comments>http://zudolab.net/blog/?p=121#comments</comments>
		<pubDate>Sun, 25 Oct 2009 10:26:13 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=121</guid>
		<description><![CDATA[jQuery UI &#8211; dialog のダイアログの中身を、ajaxで取ってこれるようにしたものを作りました。jQuery UI &#8211; dialogのラッパーなちょろっとしたスクリプトですが。

jQuery UI
サンプル1 &#8211; テーマ：flick
サンプル2 &#8211; テーマ：ui-lightness
jquery.ajaxDialog.js
まとめてzip


The end of Thickbox
ダイアログを開くとき、頼まれる側としては、「Thickboxで。」って言われて頼まれることが非常に多いです。ところが、Thickboxだと、あんまり拡張性がなくて、コールバックを渡したりすることができません。（開いたときに何か実行させたり、閉じる瞬間に何か実行させたりすることができないということ）普通にダイアログ開くだけの時はいいのですが、要件が複雑になると、Thickboxでは対応できないこともあり、自分で 似たようなもの を作ってみたりもしました。最近、Thickboxのページを見たところ、もう開発終わってるので他の使ってくれとのメッセージが出ていたので、他のを試してみることにしました。とりあえず、jQuery UI の dialog を試しました。
なぜjQuery UI dialogを使おうとしたのかというと、jQuery UIの出来がすごい良いと感じたからです。dialogは使ったことが無かったのですが、別の機会でjQuery UIの sortable を使うことがありました。sortableは、その名の通り、要素をドラッグ＆ドロップで並べ替えることができるスクリプトなのですが、ドロップした瞬間、つまんだ瞬間にcallbackを送ることができたり、つまんでいる間にどこそこにclassを付けたりなど、あーこれは必要そうだと思われる機能がほとんど実装されていました。自分でThickboxクローンを作った時も、こういった機能が必要だから作ったのですが、あーこれ使っておけばよかったとか思いました。jQuery UIと銘打ってるだけあって、そこらへんに転がっている同系統のものよりかははるかに作り込まれていると思います。
$().ajaxDialog
ですが、jQuery UIを使ってみたところ、これは、ページ内のコンテンツをダイアログとして表示する機能のみを有していました。大体、通常のサイトで使う時は、今までwindow.openをして開いていたようなものをちょろっと開くことが多いです。そんなこんなで、$.ajaxでページ内容を取ってきてjQuery UI dialogにするのが、この$().ajaxDialogです。
使い方は以下のような形です。optionsには、jQuery UI の dialogに設定したいものを指定します。
$(function(){

    $('a.dialogOpen1').ajaxDialog({
        bgiframe: true,
        [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery UI &#8211; dialog のダイアログの中身を、ajaxで取ってこれるようにしたものを作りました。<br />jQuery UI &#8211; dialogのラッパーなちょろっとしたスクリプトですが。</p>
<ul>
<li><a href="http://jqueryui.com/">jQuery UI</a></li>
<li><a href="http://dl.getdropbox.com/u/268240/zudologFiles/ajaxDialog/0.1/dialogSample-flick.html">サンプル1 &#8211; テーマ：flick</a></li>
<li><a href="http://dl.getdropbox.com/u/268240/zudologFiles/ajaxDialog/0.1/dialogSample-ui-lightness.html">サンプル2 &#8211; テーマ：ui-lightness</a></li>
<li><a href="http://dl.getdropbox.com/u/268240/zudologFiles/ajaxDialog/0.1/jquery.ajaxDialog.js">jquery.ajaxDialog.js</a></li>
<li><a href="http://dl.getdropbox.com/u/268240/zudologFiles/ajaxDialog/archives/ajaxDialog0.1.zip">まとめてzip</a></li>
</ul>
<p><span class="morePoint" id="more-121"></span></p>
<h3>The end of Thickbox</h3>
<p>ダイアログを開くとき、頼まれる側としては、「<a href="http://jquery.com/demo/thickbox/">Thickbox</a>で。」って言われて頼まれることが非常に多いです。ところが、Thickboxだと、あんまり拡張性がなくて、コールバックを渡したりすることができません。（開いたときに何か実行させたり、閉じる瞬間に何か実行させたりすることができないということ）普通にダイアログ開くだけの時はいいのですが、要件が複雑になると、Thickboxでは対応できないこともあり、自分で <a href="http://dl.getdropbox.com/u/268240/zudologFiles/ajaxDialog/inPageDialog/example1.html">似たようなもの</a> を作ってみたりもしました。最近、Thickboxのページを見たところ、もう開発終わってるので他の使ってくれとのメッセージが出ていたので、他のを試してみることにしました。とりあえず、<a href="http://jqueryui.com/">jQuery UI</a> の <a href="http://jqueryui.com/demos/dialog/">dialog</a> を試しました。</p>
<p>なぜjQuery UI dialogを使おうとしたのかというと、jQuery UIの出来がすごい良いと感じたからです。dialogは使ったことが無かったのですが、別の機会でjQuery UIの <a href="http://jqueryui.com/demos/sortable/">sortable</a> を使うことがありました。sortableは、その名の通り、要素をドラッグ＆ドロップで並べ替えることができるスクリプトなのですが、ドロップした瞬間、つまんだ瞬間にcallbackを送ることができたり、つまんでいる間にどこそこにclassを付けたりなど、あーこれは必要そうだと思われる機能がほとんど実装されていました。自分でThickboxクローンを作った時も、こういった機能が必要だから作ったのですが、あーこれ使っておけばよかったとか思いました。jQuery UIと銘打ってるだけあって、そこらへんに転がっている同系統のものよりかははるかに作り込まれていると思います。</p>
<h3>$().ajaxDialog</h3>
<p>ですが、jQuery UIを使ってみたところ、これは、ページ内のコンテンツをダイアログとして表示する機能のみを有していました。大体、通常のサイトで使う時は、今までwindow.openをして開いていたようなものをちょろっと開くことが多いです。そんなこんなで、$.ajaxでページ内容を取ってきてjQuery UI dialogにするのが、この$().ajaxDialogです。</p>
<p>使い方は以下のような形です。optionsには、jQuery UI の dialogに設定したいものを指定します。</p>
<pre class="prettyprint">$(function(){

    $('a.dialogOpen1').ajaxDialog({
        bgiframe: true,
        modal: true,
        buttons: {
            'close': function(){
                $(this).dialog('close');
            }
        }
    });

});</pre>
<pre class="prettyprint">&lt;a href=&quot;test01.html&quot; class=&quot;dialogOpen1&quot; title=&quot;test hoge test hoge1&quot;&gt;Dialog1 - 01&lt;/a&gt;</pre>
<p>これで、Thickboxみたいに、クリックしたらダイアログが開く形になります。ajaxDialogに渡すオプションの値は、ほぼそのまま、jQuery UI &#8211; dialogに渡されます。指定できるオプションの詳細については　<a href="http://jqueryui.com/demos/dialog/">jQuery UI &#8211; dialog</a>　のページを参照のほど。</p>
<p>jQuery UI のいいところは、前述したとおり、ダイアログ開いたらどうするとか、閉じるときどうするとかいうコールバックが色々用意されているところが非常に大きいのですが、jQuery UIのテーマが手軽に使えるという所も利点です。<a href="http://jqueryui.com/themeroller/">jQuery UI &#8211; ThemeRoller</a>　のページにて、すでに用意されているテーマを選んだり、それらをちょろっとカスタマイズすることができます。ThemeRollerのページでテーマを選んだ後、jQuery UIのダウンロードを行うと、そのテーマのCSSが一緒に入っていますので、そのCSSを読み込むだけで、気軽に色々なデザインが使えます。</p>
<p>まぁしかし、このままだとloading中の表示を出せないし、画像だっけを出すようなこともできませんので、その部分のみ追加で作るなりしてバージョンアップしていくか、また別のものを試してみようかと考えています。</p>
<h3>参考</h3>
<ul>
<li><a href="http://jqueryui.com">jQuery UI</a></li>
<li><a href="http://jqueryui.com/demos/dialog/">jQuery UI &#8211; dialog</a></li>
<li><a href="http://jqueryui.com/themeroller/">jQuery UI &#8211; ThemeRoller</a></li>
<li><a href="http://jquery.com/demo/thickbox/">Thickbox</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=121</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>なんでアイテム課金ゲームが非難されるの？</title>
		<link>http://zudolab.net/blog/?p=112</link>
		<comments>http://zudolab.net/blog/?p=112#comments</comments>
		<pubDate>Sat, 24 Oct 2009 09:12:04 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[雑多]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=112</guid>
		<description><![CDATA[サンシャイン牧場っていうmixiアプリが、今週から課金ゲームになりました。
課金ゲームっていっても、いままでやっていたことはそのままできるんですが、特別なアイテムをお金で買えるようになったって感じです。これが、猛烈な非難を掲示板で受けている…。自分は、その非難する人らの気持ちがさっぱりわかりませんでした。

アイテム販売を始めたmixiサンシャイン牧場のクレームがすごい &#8211; ぼくはまちちゃん！(Hatena)

今まで通り無料で遊べるのに、一気に冷めただの課金するのがアホらしいとかの書き込みばかり、一体なんなんでしょうかこれは。自分としては、「みんなで楽しく遊んでた公園の滑り台、ちょっとボロいけど、ある日横にローラー滑り台が設置され、これが1回10円。そんな金もうけ主義の公園にはもう行ってやんないね！」みたいな幼稚な感じに見えてしまいます。以下、うだうだ思ったこと。

掲示板に書き込むのは、一部のセグメントされた層の人たちだけ
まず、そこまで非難を受けているわけではないのではないかということ。
掲示板に書き込む人らというのは、ごく一握りの層の人だけだということは、一つの事実としてあるかと思います。サンシャイン牧場は、mixiアプリの中でかなりの人気ゲームであり、プレイ人数が非常に多い。このため、1%の人が不満をもっていて、その人らがガーガー書き込めば、猛烈な非難を受けているように見えてしまいます。ゲームをしていても、その掲示板に書き込むという行為は、かなりポテンシャルが必要とされます。このゲームすげー楽しいとか、最悪とか、そういう感想を持つ人らは良く書きこみますが、普通にログインしてちょろっと遊んでいる人は、書き込み等を行わないんじゃないでしょうか。
やけにアンチの人が集まってアマゾンで販売しているゲームのレビューが偏ってしまったりすることが、たまにあります。（さらにそれが発売前だったりとかも・・・）ほかにも、Webで集計するアンケートというのは、街頭でアンケートをとるのとはわけが違います。このようなアンケートを正確にとるには、アンケートの取り方などの条件に気を使わないと、どうしても、かなりセグメントされた層の人らになってしまいます。ランダムなサンプルを選ぶことが難しい。だから、実際に掲示板を見ると、ものすごい勢いで非難されているように見えるが、実際に不満を持っている人はごくわずかなのではないかとか。
理想の世界では
アイテム課金（を含め、追加で課金されるようなゲーム）の理想としては、「普通に遊んでいても無料で楽しめるが、ちょっとおこずかいを払えばもっと楽しくなる！」という状態かと思います。これがうまくいけば、お金を払わなければプレイできないゲームよりも多くのユーザーを集めることができますし、やりこみたい人にとってのみお金がかかるという状態にすることができます。しかし、なぜそのような状態にならないんでしょうか？
もし、今までに一切のゲームをやったことがない人がサンシャイン牧場をプレイし、それが初めてのゲームなのであれば、この理想にピッタリはまるということもあるのかなーと思います。「このゲームというものは、お金を払うことで、もっと色々なことができるようになるんだね、お小遣い程度でできるし、おもしろいね」と。ところが、実際にこのようにはならない。これはなぜ？
アイテム課金ゲームとそれ以外は別物？
色々考えたんですが、「アイテム課金のゲーム」というのが、「アイテム課金を前提としていないゲーム」とは、全く別の視点の下に開発されないとダメなのかなーとか思いました。「アイテム課金のゲーム」の多くは、今までコンシューマーで出ていたRPGだのアクションゲームだのを、課金という体系を付けてオンラインに持ってきたようなものが多いかなと思います。たとえば、強い武器防具がお金で買えたり、お金を払うとステータスをあげられたりといったものです。
こういった方法だと、コンシューマーゲームばかりやっていたユーザーにとっては、今まで普通にプレイしていれば手に入ったものが、オンラインになったとたん有料になり、「結局は金ですか！」というような感覚になってしまうのではないかと。「あのボス倒せば手に入ったはずの武器をお金で売るのね！」って感じです。実際には、コンシューマーゲームは、先にお金を払っているだけなのですが、プレイ中はそんなことは忘れてしまっています。このため、いままで無料だったのが有料なんかいーという気分になってしまうのかなと。ここでは、そのアイテムがその価値に見合うものか否かという点は無視されます。たとえそれが10円であっても、「金か！」という結論になってしまう。
また、コンシューマーゲームでは、ほとんどの場合、プレイヤーは支配的な立場になることができます。単純にプレイ時間を多くかけ、プレイヤーのスキルも磨いていけば、必ずその立場にたどり着くことができる。レベル99にはれば最強！とかそんな形。ところが、アイテム課金前提のゲームでは、この支配権は、ゲーム運営側により操作されることになる。これがなんか気持ち良くないのかなと。お金の力で有利不利が生まれることで、「自分が支配」という状態ではなくなります。自分が支配状態になるためには、お金をかけなければならない。これがプレイヤーをしらけさせてしまうのかもしれないとか思いました。
しかし、そもそもなぜゲームを買うのかというと、それは、「ゲームをプレイすることで得られる体験を買っている」ことであると自分は思うのですが、どうにもそういったユーザーの人らには、そのように思えないみたいなんですよね。支配的な状態になるのがゲームのゴールなのかもしれないですが、それは結果であり、そのために「無駄な時間を費やした」などと思ってしまっているようでは、「ならゲームやらなきゃいいじゃん…」と言いたくもなります。1000円払ってレベル99になったらそれで満足なわけがないと思うんですが…
じゃーどうすりゃいいんじゃ
じゃーどうすればいいのかっては分かんないですが、アイテムなり課金の場合は、そもそものゲーム自体の仕組みを、今までとは違ったものにしないといかんのではないかなーと思います。金払えば単純に強くなれますとかいうのではなくて。
「支配的な立場になることがゲームの本質ではない！」とか言ったとしても、それは一つの考えなだけであり、支配的な立場になることも面白くはあります。やっぱりゲームやってりゃ、そのゲーム内でキャラクターを強くしたりなんなりしたいですし、それがおもろいですから、プレイヤーをしらけさせずに、そこにうまくはまるように作らないといかんのかなーと思うのです。
「ゲームをプレイすることで得られる体験を買っている」という考えからすると、「お金を払うことでレベルが上げることができる」という仕組みは、売った体験をスキップさせるためにさらにお金を取っているように見えてしまい、よくわからない仕組みに見えてしまいます。それが100％ダメってわけではなくて、そこには非常に繊細な注意が必要になると思うんです。そもそもずっと遊べて楽しいゲームを作るっていうこと自体が難しいことですから、そこにお金を絡めてさらに楽しくってのは、非常に難しいはずなんです。単純に有利不利を生むだけの課金は、ゲーム自体の寿命を縮めそう。
例えばRPGみたいなものなら、課金で強い武器とかではなくて、課金すると、戦士、僧侶、魔法使いに加えて、魔法戦士と盗賊をプレイすることができます。でもそんなにバカ強いわけではありませんとか。シムシティがオンラインになったとしたら、普通のフィールドとは別に、海ばっかりで土地はせまいけど漁業が発達しやすいフィールドが選べますとかそんなのとかどうなんでしょう。選択肢が広がりますとかそういう形で。もちろん追加要素が無い状態でつまんなかったらまた非難ゴーゴーですが。
お互いのレベルやスキルが異なってしまうと、差が出てきて面白みが薄れてしまうゲームは多いです。そういう状態を起こさず、みんなで楽しめるゲームがあれば、課金されようと課金されまいと、最高だろうなーとは思いますねー。
課金に対する告知がされなかったこと
ほかに、運営側からの告知がされなかったことも、非難の原因になってそうです。
サンシャイン牧場について、アイテム課金を始めることは、アイテム課金が始まるまで告知されていませんでした。この点、サービス運営側からすると、「こんな楽しいオプションサービスを追加しました、どうよ！」といきなり発表する、ドッキリびっくり嬉しいような効果も期待できるのかもしれませんが、結果的にこれは最悪な感じの受け取り方をした人が多かったようです。課金制度という仕組み自体はダメなわけではないと思うけど、そうするなら最初からそう告知しておくべきだったのかも。Web作る仕事だって、最初から、これ以上は追加開発になるのでコストかかりますって言わなけりゃ、クライアントにとっては、なんぞそれ！そんなこともやってくれないの！なのです。ほうれんそうほうれんそうほうれんそう。
支払方法
クレジットカードでしか支払えないのもちょっと非難されてました。たしかにこれだと学生以下の年齢の層は払いづらい。まぁそれはそのうち何とかなると思いますが、ついでなかんじでボコボコたたかれてました。
　
自分は、サンシャイン牧場は結構あそんでいて、課金が始まっても有利不利とかでしらけるようなゲームでもなく、タダでも遊べて、レベル差も気にならない、まったくもって良心的なゲームで全然アリだと思うのですが、まーなんというか、ゲームで課金するというのは本当に難しいもんなのだなーと思いました。現実世界では高いお金払っておいしいメシを食ったり、漫画買ったりなんなりしてるわけですから、ゲームにお金払うのもそこまで抵抗がある行為のではないとは思うのですがねー。ただ、水道水はタダだけど、アルプスの天然水がおいしくてちょっとだけお金がかかるように、ゲームも無料なものが多いので、秀でたものにしなければ「水道水のほうがうまいし！なに調子こいてんですか！」とか非難をうけてしまいやすいのかもしれないですな。
参考

アイテム販売を始めたmixiサンシャイン牧場のクレームがすごい &#8211; ぼくはまちちゃん！(Hatena)
wikipedia &#8211; アイテム課金
4Gamer.net ― 【切込隊長】そろそろ「無料」と銘打つのはやめにしないか，オンラインゲーム業界は
mixiのサンシャイン牧場にリアルクレジットカードシステムが導入された件:アルファルファモザイク &#8211; ２ちゃんねるスレッドまとめブログ
mixiアプリ「サン牧」200万ユーザー突破　有料機能導入 &#8211; ITmedia News
痛いニュース(ﾉ∀`):箱○テイルズ、レベルアップやゲーム内のお金をDLCで販売

]]></description>
			<content:encoded><![CDATA[<p>サンシャイン牧場っていうmixiアプリが、今週から課金ゲームになりました。<br />
課金ゲームっていっても、いままでやっていたことはそのままできるんですが、特別なアイテムをお金で買えるようになったって感じです。これが、猛烈な非難を掲示板で受けている…。自分は、その非難する人らの気持ちがさっぱりわかりませんでした。</p>
<ul>
<li><a href="http://d.hatena.ne.jp/Hamachiya2/20091022/literacy">アイテム販売を始めたmixiサンシャイン牧場のクレームがすごい &#8211; ぼくはまちちゃん！(Hatena)</a></li>
</ul>
<p>今まで通り無料で遊べるのに、一気に冷めただの課金するのがアホらしいとかの書き込みばかり、一体なんなんでしょうかこれは。自分としては、「みんなで楽しく遊んでた公園の滑り台、ちょっとボロいけど、ある日横にローラー滑り台が設置され、これが1回10円。そんな金もうけ主義の公園にはもう行ってやんないね！」みたいな幼稚な感じに見えてしまいます。以下、うだうだ思ったこと。</p>
<p><span class="morePoint" id="more-112"></span></p>
<h3>掲示板に書き込むのは、一部のセグメントされた層の人たちだけ</h3>
<p>まず、そこまで非難を受けているわけではないのではないかということ。<br />
掲示板に書き込む人らというのは、ごく一握りの層の人だけだということは、一つの事実としてあるかと思います。サンシャイン牧場は、mixiアプリの中でかなりの人気ゲームであり、プレイ人数が非常に多い。このため、1%の人が不満をもっていて、その人らがガーガー書き込めば、猛烈な非難を受けているように見えてしまいます。ゲームをしていても、その掲示板に書き込むという行為は、かなりポテンシャルが必要とされます。このゲームすげー楽しいとか、最悪とか、そういう感想を持つ人らは良く書きこみますが、普通にログインしてちょろっと遊んでいる人は、書き込み等を行わないんじゃないでしょうか。</p>
<p>やけにアンチの人が集まってアマゾンで販売しているゲームのレビューが偏ってしまったりすることが、たまにあります。（さらにそれが発売前だったりとかも・・・）ほかにも、Webで集計するアンケートというのは、街頭でアンケートをとるのとはわけが違います。このようなアンケートを正確にとるには、アンケートの取り方などの条件に気を使わないと、どうしても、かなりセグメントされた層の人らになってしまいます。ランダムなサンプルを選ぶことが難しい。だから、実際に掲示板を見ると、ものすごい勢いで非難されているように見えるが、実際に不満を持っている人はごくわずかなのではないかとか。</p>
<h3>理想の世界では</h3>
<p>アイテム課金（を含め、追加で課金されるようなゲーム）の理想としては、「普通に遊んでいても無料で楽しめるが、ちょっとおこずかいを払えばもっと楽しくなる！」という状態かと思います。これがうまくいけば、お金を払わなければプレイできないゲームよりも多くのユーザーを集めることができますし、やりこみたい人にとってのみお金がかかるという状態にすることができます。しかし、なぜそのような状態にならないんでしょうか？</p>
<p>もし、今までに一切のゲームをやったことがない人がサンシャイン牧場をプレイし、それが初めてのゲームなのであれば、この理想にピッタリはまるということもあるのかなーと思います。「このゲームというものは、お金を払うことで、もっと色々なことができるようになるんだね、お小遣い程度でできるし、おもしろいね」と。ところが、実際にこのようにはならない。これはなぜ？</p>
<h3>アイテム課金ゲームとそれ以外は別物？</h3>
<p>色々考えたんですが、「アイテム課金のゲーム」というのが、「アイテム課金を前提としていないゲーム」とは、全く別の視点の下に開発されないとダメなのかなーとか思いました。「アイテム課金のゲーム」の多くは、今までコンシューマーで出ていたRPGだのアクションゲームだのを、課金という体系を付けてオンラインに持ってきたようなものが多いかなと思います。たとえば、強い武器防具がお金で買えたり、お金を払うとステータスをあげられたりといったものです。</p>
<p>こういった方法だと、コンシューマーゲームばかりやっていたユーザーにとっては、今まで普通にプレイしていれば手に入ったものが、オンラインになったとたん有料になり、「結局は金ですか！」というような感覚になってしまうのではないかと。「あのボス倒せば手に入ったはずの武器をお金で売るのね！」って感じです。実際には、コンシューマーゲームは、先にお金を払っているだけなのですが、プレイ中はそんなことは忘れてしまっています。このため、いままで無料だったのが有料なんかいーという気分になってしまうのかなと。ここでは、そのアイテムがその価値に見合うものか否かという点は無視されます。たとえそれが10円であっても、「金か！」という結論になってしまう。</p>
<p>また、コンシューマーゲームでは、ほとんどの場合、プレイヤーは支配的な立場になることができます。単純にプレイ時間を多くかけ、プレイヤーのスキルも磨いていけば、必ずその立場にたどり着くことができる。レベル99にはれば最強！とかそんな形。ところが、アイテム課金前提のゲームでは、この支配権は、ゲーム運営側により操作されることになる。これがなんか気持ち良くないのかなと。お金の力で有利不利が生まれることで、「自分が支配」という状態ではなくなります。自分が支配状態になるためには、お金をかけなければならない。これがプレイヤーをしらけさせてしまうのかもしれないとか思いました。</p>
<p>しかし、そもそもなぜゲームを買うのかというと、それは、「ゲームをプレイすることで得られる体験を買っている」ことであると自分は思うのですが、どうにもそういったユーザーの人らには、そのように思えないみたいなんですよね。支配的な状態になるのがゲームのゴールなのかもしれないですが、それは結果であり、そのために「無駄な時間を費やした」などと思ってしまっているようでは、「ならゲームやらなきゃいいじゃん…」と言いたくもなります。1000円払ってレベル99になったらそれで満足なわけがないと思うんですが…</p>
<h3>じゃーどうすりゃいいんじゃ</h3>
<p>じゃーどうすればいいのかっては分かんないですが、アイテムなり課金の場合は、そもそものゲーム自体の仕組みを、今までとは違ったものにしないといかんのではないかなーと思います。金払えば単純に強くなれますとかいうのではなくて。</p>
<p>「支配的な立場になることがゲームの本質ではない！」とか言ったとしても、それは一つの考えなだけであり、支配的な立場になることも面白くはあります。やっぱりゲームやってりゃ、そのゲーム内でキャラクターを強くしたりなんなりしたいですし、それがおもろいですから、プレイヤーをしらけさせずに、そこにうまくはまるように作らないといかんのかなーと思うのです。</p>
<p>「ゲームをプレイすることで得られる体験を買っている」という考えからすると、「お金を払うことでレベルが上げることができる」という仕組みは、売った体験をスキップさせるためにさらにお金を取っているように見えてしまい、よくわからない仕組みに見えてしまいます。それが100％ダメってわけではなくて、そこには非常に繊細な注意が必要になると思うんです。そもそもずっと遊べて楽しいゲームを作るっていうこと自体が難しいことですから、そこにお金を絡めてさらに楽しくってのは、非常に難しいはずなんです。単純に有利不利を生むだけの課金は、ゲーム自体の寿命を縮めそう。</p>
<p>例えばRPGみたいなものなら、課金で強い武器とかではなくて、課金すると、戦士、僧侶、魔法使いに加えて、魔法戦士と盗賊をプレイすることができます。でもそんなにバカ強いわけではありませんとか。シムシティがオンラインになったとしたら、普通のフィールドとは別に、海ばっかりで土地はせまいけど漁業が発達しやすいフィールドが選べますとかそんなのとかどうなんでしょう。選択肢が広がりますとかそういう形で。もちろん追加要素が無い状態でつまんなかったらまた非難ゴーゴーですが。</p>
<p>お互いのレベルやスキルが異なってしまうと、差が出てきて面白みが薄れてしまうゲームは多いです。そういう状態を起こさず、みんなで楽しめるゲームがあれば、課金されようと課金されまいと、最高だろうなーとは思いますねー。</p>
<h3>課金に対する告知がされなかったこと</h3>
<p>ほかに、運営側からの告知がされなかったことも、非難の原因になってそうです。<br />
サンシャイン牧場について、アイテム課金を始めることは、アイテム課金が始まるまで告知されていませんでした。この点、サービス運営側からすると、「こんな楽しいオプションサービスを追加しました、どうよ！」といきなり発表する、ドッキリびっくり嬉しいような効果も期待できるのかもしれませんが、結果的にこれは最悪な感じの受け取り方をした人が多かったようです。課金制度という仕組み自体はダメなわけではないと思うけど、そうするなら最初からそう告知しておくべきだったのかも。Web作る仕事だって、最初から、これ以上は追加開発になるのでコストかかりますって言わなけりゃ、クライアントにとっては、なんぞそれ！そんなこともやってくれないの！なのです。ほうれんそうほうれんそうほうれんそう。</p>
<h3>支払方法</h3>
<p>クレジットカードでしか支払えないのもちょっと非難されてました。たしかにこれだと学生以下の年齢の層は払いづらい。まぁそれはそのうち何とかなると思いますが、ついでなかんじでボコボコたたかれてました。</p>
<p>　</p>
<p>自分は、サンシャイン牧場は結構あそんでいて、課金が始まっても有利不利とかでしらけるようなゲームでもなく、タダでも遊べて、レベル差も気にならない、まったくもって良心的なゲームで全然アリだと思うのですが、まーなんというか、ゲームで課金するというのは本当に難しいもんなのだなーと思いました。現実世界では高いお金払っておいしいメシを食ったり、漫画買ったりなんなりしてるわけですから、ゲームにお金払うのもそこまで抵抗がある行為のではないとは思うのですがねー。ただ、水道水はタダだけど、アルプスの天然水がおいしくてちょっとだけお金がかかるように、ゲームも無料なものが多いので、秀でたものにしなければ「水道水のほうがうまいし！なに調子こいてんですか！」とか非難をうけてしまいやすいのかもしれないですな。</p>
<h3>参考</h3>
<ul>
<li><a href="http://d.hatena.ne.jp/Hamachiya2/20091022/literacy">アイテム販売を始めたmixiサンシャイン牧場のクレームがすごい &#8211; ぼくはまちちゃん！(Hatena)</a></li>
<li><a href="http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E8%AA%B2%E9%87%91">wikipedia &#8211; アイテム課金</a></li>
<li><a href="http://www.4gamer.net/games/000/G000000/20090817032/">4Gamer.net ― 【切込隊長】そろそろ「無料」と銘打つのはやめにしないか，オンラインゲーム業界は</a></li>
<li><a href="http://alfalfa.livedoor.biz/archives/51519908.html">mixiのサンシャイン牧場にリアルクレジットカードシステムが導入された件:アルファルファモザイク &#8211; ２ちゃんねるスレッドまとめブログ</a></li>
<li><a href="http://www.itmedia.co.jp/news/articles/0910/22/news104.html">mixiアプリ「サン牧」200万ユーザー突破　有料機能導入 &#8211; ITmedia News</a></li>
<li><a href="http://blog.livedoor.jp/dqnplus/archives/1168109.html">痛いニュース(ﾉ∀`):箱○テイルズ、レベルアップやゲーム内のお金をDLCで販売</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=112</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
