<?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>Kwappa研究開発室</title>
	<atom:link href="http://randd.kwappa.net/feed" rel="self" type="application/rss+xml" />
	<link>http://randd.kwappa.net</link>
	<description>略称：「かっぱ研」</description>
	<lastBuildDate>Sun, 19 Feb 2012 07:29:53 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>デブサミで喋る</title>
		<link>http://randd.kwappa.net/2012/02/19/425</link>
		<comments>http://randd.kwappa.net/2012/02/19/425#comments</comments>
		<pubDate>Sun, 19 Feb 2012 07:29:53 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[StudyGroup]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=425</guid>
		<description><![CDATA[10周年を迎えた「開発者の祭典」、デブサミことDevelopers Summit。私は2009年から通算3回目の参加になる。そして今回は幸運かつ光栄なことに、スピーカーとして参加することができた。 From レガシー開発 to アジャイル開発～レガシー開発からアジャイル開発へ～ セッション枠は【17-C-7】で2日目ラスト。壮絶な裏番組と戦いながらもタイムテーブルでは「満席」。実際の開場も開始時点でほぼ満席、という状態で始めることができた。 前半は昨年9月に @regtan と「XP祭り2011」で行ったセッションの再演、後半は @yoshiori を迎えてのトークセッションという構成になった。 講演資料 三周まわったおれたちのアジャイル View more presentations from kwappa ひとりごと 個人的な事情だが、昨年末から仕事がヒートアップし、準備にまわす時間がほとんど取れなかった。「アジャイルな現場」の事例紹介をするというのに、自分の現場は「いきいき」とは程遠い炎上状態。実は「どの口でアジャイルとか言うんだお前は」という自責の念を持ちながらの発表だった。 それでも、喋ることができて本当によかったと思う。現場が、チームが、「いきいき」とした状態で毎日の仕事に取り組むために、理想を追い求めることをやめちゃいけないんだ、と再確認することができたから。 セッションの最後で、「小さなものでいいから、覚悟をしてみてください」と言った。それは見に来てくれた皆さんに向けた言葉であり、自分自身への言葉でもあった。 今は日曜日の夕方。久しぶりの休みを家族と過ごしながら、明日からの仕事に立ち向かうための英気を養っている。明日は「小さな覚悟」と一緒に出社する。 謝辞 相方の @regtan 。第二部ゲストの @yoshiori 。 @lchin と3名のチームメイト各位。もしこのセッションにちょっとでも価値があったとしたら、それは彼らのおかげです。 デブサミ関係者のみなさん、特に @kohsei と @t_wada 。「あこがれのデブサミ」に登壇する機会をいただけて、ひとりのDeveloperとして大変光栄です。 そして、当日会場に来てくださったみなさん。どんなセッションでも、聞いてくださる方がいなければ成立しません。 ありがとうございました。 Links 10年後も世界で通じるエンジニアであるために　Developers Summit 2012 デブサミでレガシー開発とアジャイル開発のお話をしてきました。 &#8211; regtan’s TechNote デブサミで僕が話したことの簡単なまとめ &#8211; YoshioriのBlog デブサミ2012 【17-C-7】 From Legacy to [...]]]></description>
			<content:encoded><![CDATA[<p>10周年を迎えた「開発者の祭典」、デブサミこと<a href="http://codezine.jp/devsumi/2012" target="_blank">Developers Summit</a>。私は2009年から通算3回目の参加になる。そして今回は幸運かつ光栄なことに、スピーカーとして参加することができた。</p>

<div id="attachment_428" class="wp-caption aligncenter" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2012/02/IMG_9593.jpg"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2012/02/IMG_9593-300x225.jpg" alt="From Legacy to Agile" title="From Legacy to Agile" width="300" height="225" class="size-medium wp-image-428" /></a><p class="wp-caption-text">From Legacy to Agile</p></div>

<h4>From レガシー開発 to アジャイル開発～レガシー開発からアジャイル開発へ～</h4>

<p>セッション枠は【17-C-7】で2日目ラスト。壮絶な裏番組と戦いながらも<a href="http://seshop.com/se/timetable/21" target="_blank">タイムテーブル</a>では「満席」。実際の開場も開始時点でほぼ満席、という状態で始めることができた。</p>

<p>前半は昨年9月に <a href="http://twitter.com/regtan" target="_blank">@regtan</a> と「<a href="http://xpjug.com/xpx/" target="_blank">XP祭り2011</a>」で行った<a href="http://randd.kwappa.net/2011/09/07/383" target="_blank">セッション</a>の再演、後半は <a href="http://twitter.com/yoshioria" target="_blank">@yoshiori</a> を迎えてのトークセッションという構成になった。</p>

<div id="attachment_429" class="wp-caption aligncenter" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2012/02/IMG_9623.jpg"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2012/02/IMG_9623-300x225.jpg" alt="満員御礼" title="満員御礼" width="300" height="225" class="size-medium wp-image-429" /></a><p class="wp-caption-text">満員御礼</p></div>

<h5>講演資料</h5>

<div style="width:425px" id="__ss_11644420"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/ss-11644420" title="三周まわったおれたちのアジャイル" target="_blank" target="_blank">三周まわったおれたちのアジャイル</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/11644420" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank" target="_blank">kwappa</a> </div> </div>

<span id="more-425"></span>

<h4>ひとりごと</h4>

<div id="attachment_427" class="wp-caption alignright" style="width: 235px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2012/02/IMG_9588.jpg"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2012/02/IMG_9588-225x300.jpg" alt="出番はあったのかな？" title="出番はあったのかな？" width="225" height="300" class="size-medium wp-image-427" /></a><p class="wp-caption-text">出番はあったのかな？</p></div>

<p>個人的な事情だが、昨年末から仕事がヒートアップし、準備にまわす時間がほとんど取れなかった。「アジャイルな現場」の事例紹介をするというのに、自分の現場は「いきいき」とは程遠い炎上状態。実は「どの口でアジャイルとか言うんだお前は」という自責の念を持ちながらの発表だった。</p>

<p>それでも、喋ることができて本当によかったと思う。現場が、チームが、「いきいき」とした状態で毎日の仕事に取り組むために、理想を追い求めることをやめちゃいけないんだ、と再確認することができたから。</p>

<p>セッションの最後で、「小さなものでいいから、覚悟をしてみてください」と言った。それは見に来てくれた皆さんに向けた言葉であり、自分自身への言葉でもあった。</p>

<p>今は日曜日の夕方。久しぶりの休みを家族と過ごしながら、明日からの仕事に立ち向かうための英気を養っている。明日は「小さな覚悟」と一緒に出社する。</p>

<br style="clear:both;" />

<h4>謝辞</h4>

<p>相方の <a href="http://twitter.com/regtan" target="_blank">@regtan</a> 。第二部ゲストの <a href="http://twitter.com/yoshioria" target="_blank">@yoshiori</a> 。 <a href="http://twitter.com/lchin" target="_blank">@lchin</a> と3名のチームメイト各位。もしこのセッションにちょっとでも価値があったとしたら、それは彼らのおかげです。</p>

<p>デブサミ関係者のみなさん、特に <a href="http://twitter.com/kohsei" target="_blank">@kohsei</a> と <a href="http://twitter.com/t_wada" target="_blank">@t_wada</a> 。「あこがれのデブサミ」に登壇する機会をいただけて、ひとりのDeveloperとして大変光栄です。</p>

<p>そして、当日会場に来てくださったみなさん。どんなセッションでも、聞いてくださる方がいなければ成立しません。</p>

<p>ありがとうございました。</p>

<h4>Links</h4>

<ul>
<li><a href="http://codezine.jp/devsumi/2012" target="_blank">10年後も世界で通じるエンジニアであるために　Developers Summit 2012</a></li>
<li><a href="http://d.hatena.ne.jp/celitan/20120217/1329504016" target="_blank">デブサミでレガシー開発とアジャイル開発のお話をしてきました。 &#8211; regtan’s TechNote</a></li>
<li><a href="http://d.hatena.ne.jp/Yoshiori/20120217/1329491437" target="_blank">デブサミで僕が話したことの簡単なまとめ &#8211; YoshioriのBlog</a></li>
<li><a href="http://togetter.com/li/259647" target="_blank">デブサミ2012 【17-C-7】 From Legacy to Agile　～レガシー開発からアジャイル開発へ～ &#8211; Togetter</a></li>
</ul>

<h4>Togetterまとめ</h4>

<script src="http://togetter.com/js/parts.js"></script><script>tgtr.ExtendWidget({id:'259647',url:'http://togetter.com/'});</script>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2012/02/19/425/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 CanvasにJavaScriptでベジェ曲線を描画する</title>
		<link>http://randd.kwappa.net/2012/01/09/414</link>
		<comments>http://randd.kwappa.net/2012/01/09/414#comments</comments>
		<pubDate>Mon, 09 Jan 2012 05:12:39 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Git / Github]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=414</guid>
		<description><![CDATA[すっかり松も明け「成人の日」になってしまったが、みなさまあけましておめでとうございます。昨年後半はちょっと忙しくて放置気味だったので、今年はもう少しコンスタントに書いていきたいと思っている。予定は未定だけれど。 と言いつつ、今年最初の記事は昨年から引っ張ってるネタだったりする。お題はHTML5のCanvasについて。 ベジェ曲線を書いてみた ベジェ曲線を書いてみた View more presentations from kwappa きっかけ 昨年、「中学生でもわかるベジェ曲線」という記事を見かけた。大変わかりやすくまとまっており、何となく使って吐いたがきちんと理解していなかった「ベジェ曲線」というものに一定の理解を与えてくれ、中学生ならずとも役に立つすばらしい記事だった。 記事中には動きを解説するためのアニメーションGIFがいくつか置かれており、このおかげで容易に理解することができた。しかし、一通り理屈がわかったら、自分でポイントを打って確かめてみたい、というのが自然な発想だろう。 ないものは、作るしかない。HTML5が盛り上がり始めた昨今、Canvasを使えば簡単に実現できるんじゃないか？そう考えて、2時間ほど取り組んでみた。 動作例 動作させるとこんな感じになる。 実際に動かせるページを用意しておいたので、興味のある方は試してみてほしい。 黒いグリッドがCanvasエレメント。点がない状態でクリックすると、最初の2点が始点と終点。それ以降が制御点になる。runで動かし、resetで点をすべてクリアするのは見ての通り。 ソースコード 書いたものはすべてgithubに公開している。こちらも興味のある方はご覧いただきたい。 周辺事情 このコードそのものは、単純な好奇心から書いたものだ。しかし、なぜかいろんな周辺事情ができてしまったので、一区切りのためにまとめておくことにする。 Lab 勤務先では昨年から「Lab」というスタイルで技術記事を配信している。記事はエンジニアが持ち回りで書いていて、私も一本寄稿している。 このネタも書いた直後はLabで記事にしよう…と思っていたのだが、どうもネタの大きさもレベルも中途半端で、面白い記事にすることができなかった。結局そのまま掲載を見送った…という経緯がある。 みゆっき☆Think その後しばらくして、 「ドワンゴ研究開発チャンネル」のコンテンツである「みゆっき☆Think」に出演することになった。テーマは「Git」。バージョン管理システムの歴史とGitというプロダクト、そしてチーム開発とコミュニティについて、高校生エンジニアである鳥居みゆっきに講義をする、という番組内容だった。 講義の内容とは直接関係しないのだが、githubを使ってforkとpull requestをしてみよう！という宿題のために、今回のベジェ曲線レンダラのリポジトリを使ってみた。 みゆっきがpull requestしてくれたのはこのcommit。ちゃんと宿題やってくれた上に、バグをひとつ潰してもらった。 ちょっと話はそれるが、みゆっきは飲み込みが早く質問が的確な、とても優秀な生徒だった。講義の準備をすること、実際に講義をすることで、むしろ私のほうが勉強になったぐらい。この先の成長が楽しみだ。 HTML5ハッカソン さらにしばらくして。職場のエンジニアが全員でスマートフォン向けのHTML5を学ぶ、というイベントが開催された。スマートフォン向けHTML5に馴染みがないエンジニアは座学+ハンズオンの研修、もう慣れているエンジニアはハッカソン形式で開発し、最後にLT形式でプレゼンする、というものだ。 講義は株式会社アシアルさんのプログラム。スペシャルゲストとしてamachangが来てくれるという豪華なイベントになった。イベントの模様はamachangのblog「ドワンゴの社内ハッカソンに行ってきた！ &#8211; IT戦記」や「ドワンゴ研究開発ブログ」でレポートされているので、ぜひご覧いただきたい。 で、私は仕事の都合で途中から参加したのだけれど、LTには自重せず飛び込んできた。そのネタとしてこのベジェ曲線レンダラを使った、という次第。 実はこのイベント、企画段階をちょっとだけお手伝いしている。こうやって記事にまとまったのを見ると、手伝うことができてよかったなぁとしみじみ思う。amachangとちゃんとお話できなかったのが心残り。 まとめ …というわけで後半はテクニカルな要素まったくなかったけれど、昨年からなぜか長いことつきあってきたベジェ曲線レンダラについて、ひとつまとめることができたのでよいことにする。 今年はもっと新しいことに飛びついていきたいなーと思いつつ、今後とも「Kwappa研究開発室」をどうぞよろしくお願いいたします。 Links Program 中学生でもわかるベジェ曲線 &#8211; Rui&#8217;s Blog git://github.com/kwappa/bezier-renderer.git Lab Lab by engineering@dwango.jp みゆっき☆Think ドワンゴ研究開発チャンネル [...]]]></description>
			<content:encoded><![CDATA[
<p>すっかり松も明け「成人の日」になってしまったが、みなさまあけましておめでとうございます。昨年後半はちょっと忙しくて放置気味だったので、今年はもう少しコンスタントに書いていきたいと思っている。予定は未定だけれど。</p>

<p>と言いつつ、今年最初の記事は昨年から引っ張ってるネタだったりする。お題はHTML5のCanvasについて。</p>

<h4>ベジェ曲線を書いてみた</h4>

<div style="width:425px" id="__ss_10900797"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/ss-10900797" title="ベジェ曲線を書いてみた" target="_blank" target="_blank">ベジェ曲線を書いてみた</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/10900797" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank" target="_blank">kwappa</a> </div> </div>

<span id="more-414"></span>

<h5>きっかけ</h5>

<p>昨年、「<a href="http://ruiueyama.tumblr.com/post/11197882224" target="_blank">中学生でもわかるベジェ曲線</a>」という記事を見かけた。大変わかりやすくまとまっており、何となく使って吐いたがきちんと理解していなかった「ベジェ曲線」というものに一定の理解を与えてくれ、中学生ならずとも役に立つすばらしい記事だった。</p>

<p>記事中には動きを解説するためのアニメーションGIFがいくつか置かれており、このおかげで容易に理解することができた。しかし、一通り理屈がわかったら、自分でポイントを打って確かめてみたい、というのが自然な発想だろう。</p>

<p>ないものは、作るしかない。HTML5が盛り上がり始めた昨今、Canvasを使えば簡単に実現できるんじゃないか？そう考えて、2時間ほど取り組んでみた。</p>

<h5>動作例</h5>

<p>動作させるとこんな感じになる。</p>

<div id="attachment_415" class="wp-caption aligncenter" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2012/01/bezier.png"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2012/01/bezier-300x167.png" alt="bezier" title="bezier" width="300" height="167" class="size-medium wp-image-415" /></a><p class="wp-caption-text">実行例</p></div>

<p><a href="http://www.kwappa.net/misc/bezier-renderer/" target="_blank">実際に動かせるページ</a>を用意しておいたので、興味のある方は試してみてほしい。</p>

<p>黒いグリッドがCanvasエレメント。点がない状態でクリックすると、最初の2点が始点と終点。それ以降が制御点になる。runで動かし、resetで点をすべてクリアするのは見ての通り。</p>

<h5>ソースコード</h5>

<p>書いたものはすべて<a href="https://github.com/kwappa/bezier-renderer" target="_blank">githubに公開</a>している。こちらも興味のある方はご覧いただきたい。</p>

<h4>周辺事情</h4>

<p>このコードそのものは、単純な好奇心から書いたものだ。しかし、なぜかいろんな周辺事情ができてしまったので、一区切りのためにまとめておくことにする。</p>

<h5>Lab</h5>

<div id="attachment_417" class="wp-caption alignright" style="width: 220px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2012/01/lab.png"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2012/01/lab.png" alt="lab" title="lab" width="210" height="120" class="size-full wp-image-417" /></a><p class="wp-caption-text">lab</p></div>

<p>勤務先では昨年から「<a href="http://lab.dwango.jp/" target="_blank">Lab</a>」というスタイルで技術記事を配信している。記事はエンジニアが持ち回りで書いていて、私も一本<a href="http://lab.dwango.jp/articles/agile-samurai.html" target="_blank">寄稿</a>している。</p>

<p>このネタも書いた直後はLabで記事にしよう…と思っていたのだが、どうもネタの大きさもレベルも中途半端で、面白い記事にすることができなかった。結局そのまま掲載を見送った…という経緯がある。</p>

<br style="clear:both;" />

<h5>みゆっき☆Think</h5>
<a href="http://randd.kwappa.net/wp/wp-content/uploads/2012/01/myk_top_bnr2.png"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2012/01/myk_top_bnr2.png" alt="みゆっき☆Thinke" title="myk_top_bnr2" width="629" height="78" class="alignnone size-full wp-image-419" /></a>

<p></p>

<p>その後しばらくして、 「<a href="http://ch.nicovideo.jp/channel/dwango-engineer" target="_blank">ドワンゴ研究開発チャンネル</a>」のコンテンツである「みゆっき☆Think」に出演することになった。テーマは「Git」。バージョン管理システムの歴史とGitというプロダクト、そしてチーム開発とコミュニティについて、高校生エンジニアである<a href="http://twitter.com/toriimiyukki" target="_blank">鳥居みゆっき</a>に講義をする、という番組内容だった。</p>

<p>講義の内容とは直接関係しないのだが、githubを使ってforkとpull requestをしてみよう！という宿題のために、今回のベジェ曲線レンダラのリポジトリを使ってみた。</p>

<p>みゆっきがpull requestしてくれたのは<a href="https://github.com/kwappa/bezier-renderer/pull/2" target="_blank">このcommit</a>。ちゃんと宿題やってくれた上に、バグをひとつ潰してもらった。</p>

<p>ちょっと話はそれるが、みゆっきは飲み込みが早く質問が的確な、とても優秀な生徒だった。講義の準備をすること、実際に講義をすることで、むしろ私のほうが勉強になったぐらい。この先の成長が楽しみだ。</p>

<h5>HTML5ハッカソン</h5>

<a href="http://randd.kwappa.net/wp/wp-content/uploads/2012/01/23517ecc2a1011e19e4a12313813ffc0_7.jpg"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2012/01/23517ecc2a1011e19e4a12313813ffc0_7-300x300.jpg" alt="" title="23517ecc2a1011e19e4a12313813ffc0_7" width="300" height="300" class="alignright size-medium wp-image-421" /></a>

<p>さらにしばらくして。職場のエンジニアが全員でスマートフォン向けのHTML5を学ぶ、というイベントが開催された。スマートフォン向けHTML5に馴染みがないエンジニアは座学+ハンズオンの研修、もう慣れているエンジニアはハッカソン形式で開発し、最後にLT形式でプレゼンする、というものだ。</p>

<p>講義は<a href="http://www.asial.co.jp/" target="_blank">株式会社アシアル</a>さんのプログラム。スペシャルゲストとして<a href="http://twitter.com/amachang" target="_blank">amachang</a>が来てくれるという豪華なイベントになった。イベントの模様はamachangのblog「<a href="http://d.hatena.ne.jp/amachang/20111220/1324362455" target="_blank">ドワンゴの社内ハッカソンに行ってきた！ &#8211; IT戦記</a>」や「<a href="http://info.dwango.co.jp/rd/2011/12/smartphone-hackathon.html" target="_blank">ドワンゴ研究開発ブログ</a>」でレポートされているので、ぜひご覧いただきたい。</p>

<p>で、私は仕事の都合で途中から参加したのだけれど、LTには自重せず飛び込んできた。そのネタとしてこのベジェ曲線レンダラを使った、という次第。</p>

<p>実はこのイベント、企画段階をちょっとだけお手伝いしている。こうやって記事にまとまったのを見ると、手伝うことができてよかったなぁとしみじみ思う。amachangとちゃんとお話できなかったのが心残り。</p>
<br style="clear:both;" />
<h4>まとめ</h4>

<p>…というわけで後半はテクニカルな要素まったくなかったけれど、昨年からなぜか長いことつきあってきたベジェ曲線レンダラについて、ひとつまとめることができたのでよいことにする。</p>

<p>今年はもっと新しいことに飛びついていきたいなーと思いつつ、今後とも「Kwappa研究開発室」をどうぞよろしくお願いいたします。</p>

<h4>Links</h4>

<h5>Program</h5>

<ul>
<li><p><a href="http://ruiueyama.tumblr.com/post/11197882224" target="_blank">中学生でもわかるベジェ曲線 &#8211; Rui&#8217;s Blog</a></p></li>
<li><p><a href="https://github.com/kwappa/bezier-renderer" target="_blank">git://github.com/kwappa/bezier-renderer.git</a></p></li>
</ul>

<h5>Lab</h5>

<ul>
<li><a href="http://lab.dwango.jp/" target="_blank">Lab by engineering@dwango.jp</a></li>
</ul>

<h5>みゆっき☆Think</h5>

<ul>
<li><p><a href="http://ch.nicovideo.jp/channel/dwango-engineer" target="_blank">ドワンゴ研究開発チャンネル &#8211; ニコニコチャンネル</a></p></li>
<li><p><a href="http://www.nicovideo.jp/watch/1320841151" target="_blank">第9回 みゆっき☆Think 「はじめて学ぶバージョン管理とGit」 ‐ ニコニコ動画(原宿)</a></p></li>
<li><p><a href="http://info.dwango.co.jp/rd/2011/11/think-9-git.html" target="_blank">みゆっき☆Think 第9回 「はじめて学ぶバージョン管理とGit」 &#8211; ドワンゴ 研究開発ブログ</a></p></li>
<li><p><a href="https://twitter.com/#!/toriimiyukki" target="_blank">鳥居みゆっき (toriimiyukki) on Twitter</a></p></li>
</ul>

<h5>hack-a-thon</h5>

<ul>
<li><p><a href="http://d.hatena.ne.jp/amachang/20111220/1324362455" target="_blank">ドワンゴの社内ハッカソンに行ってきた！ &#8211; IT戦記</a></p></li>
<li><p><a href="https://twitter.com/#!/amachang" target="_blank">´・ω・)ﾉｼ あまちゃんです (amachang) on Twitter</a></p></li>
<li><p><a href="http://d.hatena.ne.jp/tushuhei/20111219/1324307754" target="_blank">ドワンゴの開発研修に行ってきたよ！ &#8211; tulog</a> </p></li>
<li><p><a href="http://info.dwango.co.jp/rd/2011/12/smartphone-hackathon.html" target="_blank">スマートフォンWebアプリ開発研修&amp;ハッカソン &#8211; ドワンゴ 研究開発ブログ</a></p></li>
<li><p><a href="http://www.slideshare.net/kwappa/ss-10900797" target="_blank">ベジェ曲線を書いてみた</a></p></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2012/01/09/414/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Xmas, Rubyists!</title>
		<link>http://randd.kwappa.net/2011/12/24/404</link>
		<comments>http://randd.kwappa.net/2011/12/24/404#comments</comments>
		<pubDate>Fri, 23 Dec 2011 15:00:05 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=404</guid>
		<description><![CDATA[この記事は「Ruby Advent Calendar jp: 2011」12/24の記事です。 Happy Xmas, Rubyists! INSTALL gem install pebbles-xmas USAGE xmas [height] ORIGINAL ターミナルにクリスマスツリー LINKS kwappa/pebbles-xmas &#8211; GitHub pebbles-xmas &#124; RubyGems.org &#124; your community gem host kwappa &#124; skitch.com POSTSCRIPT コネタかつ二番煎じで失礼しました。よいクリスマスを！]]></description>
			<content:encoded><![CDATA[<div id="attachment_405" class="wp-caption alignleft" style="width: 374px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/12/pebbles-xmas.jpg"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/12/pebbles-xmas.jpg" alt="Happy Xmas!" title="Happy Xmas!" width="364" height="383" class="size-full wp-image-405" /></a><p class="wp-caption-text">Happy Xmas!</p></div>

<p>この記事は「<a href="http://atnd.org/events/22021" target="_blank">Ruby Advent Calendar jp: 2011</a>」12/24の記事です。</p>

<br style="clear:both;" />

<span id="more-404"></span>

<h4>Happy Xmas, Rubyists!</h4>

<h5>INSTALL</h5>

<pre class="code">gem install pebbles-xmas</pre>

<h5>USAGE</h5>

<pre class="code">xmas [height]</pre>

<h5>ORIGINAL</h5>

<ul>
<li><a href="http://d.hatena.ne.jp/sugyan/20110608/1307460864" target="_blank">ターミナルにクリスマスツリー</a></li>
</ul>

<h5>LINKS</h5>

<ul>
<li><a href="https://github.com/kwappa/pebbles-xmas" target="_blank">kwappa/pebbles-xmas &#8211; GitHub</a></li>
<li><a href="https://rubygems.org/gems/pebbles-xmas" target="_blank">pebbles-xmas | RubyGems.org | your community gem host</a></li>
<li><a href="https://skitch.com/kwappa/guijx/zsh-120x64" target="_blank">kwappa | skitch.com</a></li>
</ul>

<h4>POSTSCRIPT</h4>

<p>コネタかつ二番煎じで失礼しました。よいクリスマスを！</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/12/24/404/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>アジャイルサムライ他流試合に参加する</title>
		<link>http://randd.kwappa.net/2011/09/26/400</link>
		<comments>http://randd.kwappa.net/2011/09/26/400#comments</comments>
		<pubDate>Mon, 26 Sep 2011 12:13:57 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[StudyGroup]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=400</guid>
		<description><![CDATA[9/18(日)、オラクル青山センターで開催された「アジャイルサムライ他流試合」に参加してきた。 「アジャイルサムライ」とは 7月にオーム社から刊行された「アジャイルサムライ――達人開発者への道」という本のこと。アジャイル開発手法についての「実践的なマニュアル」とでも呼ぶべき内容で、刊行されるとすぐに各所で読書会が立ち上げられた。 私の勤務先でも読書会が開催され、その模様については技術blogにまとめてある。 「他流試合」とは 各道場の読書会参加者が集い、ワザマエを競ったりマスター・センセイの講話を伺ったりする集いである。 当日の様子は詳細なレポートや動画アーカイブ、togetterまとめなどが詳しいので参照されたい。 アジャイル開発を実践している人、実践したい人、SIerの人、Servicerの人。いろんな開発者が集まる、とても刺激的な集いだった。 「かくたに祭り」 監訳者の一人である(当日のみマスター・センセイこと)角谷(@kakutani)氏へのお礼の意味を込めて、懇親会で野良LTをしてきた。XP祭りの再演ではあるのだが、ご本人の前でLTできたのは光栄だし、嬉しかった。 アジャイルなサムライとプラクティスづくり View more presentations from kwappa まとめとLinks 朝から晩まで熱気あふれるイベントに参加できて、暑苦しい刺激を補充することができたように思う。アジャイル開発の道を極めるために、引き続き精進したいと思う。 主催者・スタッフの皆さん、懇親会設計のマスター・ヤマシロ、参加者の皆さん、ありがとうございました！ Readingagilesamuraimixed &#8211; GitHub アジャイルサムライ他流試合 : ATND アジャイルサムライ読書会 他流試合(道場大集合) #agilesamurai #他流試合 &#8211; Togetter アジャイルサムライ読書会(他流試合)に参加してきた【前編】 #agilesamurai #他流試合 &#8211; Shinya’s Dairy Report 「アジャイルサムライ」読書会 &#124; Lab by engineering@dwango.jp アジャイルサムライ他流試合の動画 &#8211; ぷぎがぽぎ アジャイルなサムライとプラクティスづくり]]></description>
			<content:encoded><![CDATA[<p>9/18(日)、オラクル青山センターで開催された「<a href="http://atnd.org/events/19733" target="_blank">アジャイルサムライ他流試合</a>」に参加してきた。</p>

<h4>「アジャイルサムライ」とは</h4>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4274068560&#038;nou=1&#038;ref=qf_sp_asin_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;float:left;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<p>7月にオーム社から刊行された「<a href="http://amzn.to/qCVEAT" target="_blank">アジャイルサムライ――達人開発者への道</a>」という本のこと。アジャイル開発手法についての「実践的なマニュアル」とでも呼ぶべき内容で、刊行されるとすぐに<a href="https://github.com/agile-samurai-ja/support/wiki/AgilesamuraiDojo" target="_blank">各所で読書会</a>が立ち上げられた。</p>

<p>私の勤務先でも<a href="https://github.com/agile-samurai-ja/support/wiki/ReadingAgileSamuraiInDwango" target="_blank">読書会</a>が開催され、その模様については<a href="http://lab.dwango.jp/" target="_blank">技術blog</a>に<a href="http://lab.dwango.jp/articles/agile-samurai.html" target="_blank">まとめてある</a>。</p>


<br style="clear:both;" />
<span id="more-400"></span>

<h4>「他流試合」とは</h4>

<p>各道場の読書会参加者が集い、ワザマエを競ったりマスター・センセイの講話を伺ったりする集いである。</p>

<p>当日の様子は<a href="http://d.hatena.ne.jp/absj31/20110918/1316423657" target="_blank">詳細なレポート</a>や<a href="http://d.hatena.ne.jp/brtRiver/20110920/1316532732" target="_blank">動画アーカイブ</a>、<a href="http://togetter.com/li/189708" target="_blank">togetterまとめ</a>などが詳しいので参照されたい。</p>

<p>アジャイル開発を実践している人、実践したい人、SIerの人、Servicerの人。いろんな開発者が集まる、とても刺激的な集いだった。</p>

<h4>「かくたに祭り」</h4>

<p>監訳者の一人である(当日のみマスター・センセイこと)角谷(<a href="http://twitter.com/kakutani" target="_blank">@kakutani</a>)氏へのお礼の意味を込めて、懇親会で野良LTをしてきた。<a href="http://randd.kwappa.net/2011/09/07/383" target="_blank">XP祭り</a>の再演ではあるのだが、ご本人の前でLTできたのは光栄だし、嬉しかった。</p>

<div style="width:425px" id="__ss_9313364"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/ss-9313364" title="アジャイルなサムライとプラクティスづくり" target="_blank">アジャイルなサムライとプラクティスづくり</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9313364" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank">kwappa</a> </div> </div>

<h4>まとめとLinks</h4>

<p>朝から晩まで熱気あふれるイベントに参加できて、暑苦しい刺激を補充することができたように思う。アジャイル開発の道を極めるために、引き続き精進したいと思う。</p>

<p>主催者・スタッフの皆さん、懇親会設計の<a href="http://twitter.com/yamashiro" target="_blank">マスター・ヤマシロ</a>、参加者の皆さん、ありがとうございました！</p>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4274068560&#038;nou=1&#038;ref=qf_sp_asin_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;float:right;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<ul>
<li><a href="https://github.com/agile-samurai-ja/support/wiki/Readingagilesamuraimixed" target="_blank">Readingagilesamuraimixed &#8211; GitHub</a></li>
<li><a href="http://atnd.org/events/19733" target="_blank">アジャイルサムライ他流試合 : ATND</a></li>
<li><a href="http://togetter.com/li/189708" target="_blank">アジャイルサムライ読書会 他流試合(道場大集合) #agilesamurai #他流試合 &#8211; Togetter</a></li>
<li><a href="http://d.hatena.ne.jp/absj31/20110918/1316423657" target="_blank">アジャイルサムライ読書会(他流試合)に参加してきた【前編】 #agilesamurai #他流試合 &#8211; Shinya’s Dairy Report</a></li>
<li><a href="http://lab.dwango.jp/articles/agile-samurai.html" target="_blank">「アジャイルサムライ」読書会 | Lab by engineering@dwango.jp</a></li>
<li><a href="http://d.hatena.ne.jp/brtRiver/20110920/1316532732" target="_blank">アジャイルサムライ他流試合の動画 &#8211; ぷぎがぽぎ</a></li>
<li><a href="http://www.slideshare.net/kwappa/ss-9313364" target="_blank">アジャイルなサムライとプラクティスづくり</a></li>
</ul>


]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/09/26/400/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ITコミュニティ夏祭り2011に参加する</title>
		<link>http://randd.kwappa.net/2011/09/19/395</link>
		<comments>http://randd.kwappa.net/2011/09/19/395#comments</comments>
		<pubDate>Mon, 19 Sep 2011 05:07:47 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[StudyGroup]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=395</guid>
		<description><![CDATA[9/17、お台場の「カルチャーカルチャー」で開催された「ITコミュニティ夏祭り2011」に参加してきた。 イベント概要 「DevLOVE」、「Genesis Lightning Talks」、それに「エンジニアライフ」という3つのコミュニティが集まり、ITコミュニティの活動をよく知らない人向けに普段の活動をアピールし、コミュニティ活動に参加することの意義を知ってもらおう、というイベントだ。 私は「【セッション2】フリーダム・ライトニングトーク祭り」を、「銀河一の司会者」こと@gerozさんと一緒に仕切るのが担当職務。トーカーにツッコミを入れつつ場をつなぐ、という普段とは逆の役割は、勝手が違ってなかなか緊張したけれど、新鮮で楽しい経験ではあった。 終演後の懇親会では飛び込みでLTをしてきた。 DevLOVEとGLTとエンジニアライフとコミュニティとLTとアロハシャツと私 View more presentations from kwappa 例によってスライドだけじゃさっぱりわからないと思うけど、Ust中継の録画があるので興味のある方はご覧いただきたい。 雑感 イベントの対象は「ITコミュニティ活動に興味がある人」。結構広い客席はほぼ満席まで埋まり、しかも意外と見知った顔も少ない。つまり「興味があるけど踏み出せなかった人」にリーチしたいという当初の目的は、結構達成されたんじゃないかと思う。 残念な職場で閉塞感に悩んでいる人、そもそも自分の環境が閉塞していることにも気づかない人に、これをきっかけとして「外の世界」を知ってもらえたら、スタッフの一員として光栄である。 登壇者の皆さん、首謀者のかねたけさん、そしてなによりご来場いただいたみなさん、ありがとうございました！ Links ITコミュニティ夏祭り　TOKYO CULTURE CULTURE：@nifty Ustream.tv: ユーザー tokyoculture2: ITコミュニティ夏祭り, Recorded on 2011/09/17. その他 Ustream.tv: ユーザー tokyoculture2: ITコミュニティ夏祭り延長戦, Recorded on 2011/09/17. その他 ITコミュニティ夏祭り 2011.09.17 &#8211; Togetter]]></description>
			<content:encoded><![CDATA[<div id="attachment_396" class="wp-caption alignleft" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/09/matsuri.jpg"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/09/matsuri-300x180.jpg" alt="ITコミュニティ夏祭り" title="ITコミュニティ夏祭り" width="300" height="180" class="size-medium wp-image-396" /></a><p class="wp-caption-text">ITコミュニティ夏祭り</p></div>

<p>9/17、お台場の「<a href="http://tcc.nifty.com/" target="_blank">カルチャーカルチャー</a>」で開催された「<a href="http://tcc.nifty.com/cs/catalog/tcc_schedule/catalog_110816203681_1.htm" target="_blank">ITコミュニティ夏祭り2011</a>」に参加してきた。</p>

<br style="clear:both;" />

<h4>イベント概要</h4>

<p>「<a href="http://www.devlove.org/" target="_blank">DevLOVE</a>」、「<a href="genesislightningtalks.com" target="_blank">Genesis Lightning Talks</a>」、それに「<a href="http://el.jibun.atmarkit.co.jp/" target="_blank">エンジニアライフ</a>」という3つのコミュニティが集まり、ITコミュニティの活動をよく知らない人向けに普段の活動をアピールし、コミュニティ活動に参加することの意義を知ってもらおう、というイベントだ。</p>
<span id="more-395"></span>
<p>私は「【セッション2】フリーダム・ライトニングトーク祭り」を、「銀河一の司会者」こと<a href="http://twitter.com/georz" target="_blank">@geroz</a>さんと一緒に仕切るのが担当職務。トーカーにツッコミを入れつつ場をつなぐ、という普段とは逆の役割は、勝手が違ってなかなか緊張したけれど、新鮮で楽しい経験ではあった。</p>

<p>終演後の懇親会では飛び込みでLTをしてきた。</p>

<div style="width:425px" id="__ss_9301297"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/devlovegltlt" title="DevLOVEとGLTとエンジニアライフとコミュニティとLTとアロハシャツと私" target="_blank">DevLOVEとGLTとエンジニアライフとコミュニティとLTとアロハシャツと私</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9301297" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank">kwappa</a> </div> </div>

<p>例によってスライドだけじゃさっぱりわからないと思うけど、Ust中継の録画があるので興味のある方はご覧いただきたい。</p>

<h4>雑感</h4>

<p>イベントの対象は「ITコミュニティ活動に興味がある人」。結構広い客席はほぼ満席まで埋まり、しかも意外と見知った顔も少ない。つまり「興味があるけど踏み出せなかった人」にリーチしたいという当初の目的は、結構達成されたんじゃないかと思う。</p>

<p>残念な職場で閉塞感に悩んでいる人、そもそも自分の環境が閉塞していることにも気づかない人に、これをきっかけとして「外の世界」を知ってもらえたら、スタッフの一員として光栄である。</p>

<p>登壇者の皆さん、首謀者のかねたけさん、そしてなによりご来場いただいたみなさん、ありがとうございました！</p>

<h4>Links</h4>

<ul>
<li><a href="http://tcc.nifty.com/cs/catalog/tcc_schedule/catalog_110816203681_1.htm" target="_blank">ITコミュニティ夏祭り　TOKYO CULTURE CULTURE：@nifty</a></li>
<li><a href="http://www.ustream.tv/recorded/17324450" target="_blank">Ustream.tv: ユーザー tokyoculture2: ITコミュニティ夏祭り, Recorded on 2011/09/17. その他</a></li>
<li><a href="http://www.ustream.tv/recorded/17326509" target="_blank">Ustream.tv: ユーザー tokyoculture2: ITコミュニティ夏祭り延長戦, Recorded on 2011/09/17. その他</a></li>
<li><a href="http://togetter.com/li/189266" target="_blank">ITコミュニティ夏祭り 2011.09.17 &#8211; Togetter</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/09/19/395/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP祭り2011に参加する</title>
		<link>http://randd.kwappa.net/2011/09/07/383</link>
		<comments>http://randd.kwappa.net/2011/09/07/383#comments</comments>
		<pubDate>Wed, 07 Sep 2011 04:30:12 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Event]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=383</guid>
		<description><![CDATA[9月3日に開催された「XP祭り2011」に参加して、計3回登壇してきた。初参加でそれはちょっと自重しなさすぎじゃないか？と思わなくもないが、まあそこを気にするナイーブさはだいぶ失われている。 土曜の午後、「オレオレアジャイル」について喋りまくってきた記録を残しておく。]]></description>
			<content:encoded><![CDATA[<div id="attachment_386" class="wp-caption alignright" style="width: 299px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/09/xpx_logo-289x300.png"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/09/xpx_logo-289x300.png" alt="XP祭り2011" title="XP祭り2011" width="289" height="300" class="size-full wp-image-386" /></a><p class="wp-caption-text">XP祭り2011</p></div>


<p>9月3日に開催された「<a href="http://xpjug.com/xpx/" target="_blank">XP祭り2011</a>」に参加して、計3回登壇してきた。初参加でそれはちょっと自重しなさすぎじゃないか？と思わなくもないが、まあそこを気にするナイーブさはだいぶ失われている。</p>

<p>土曜の午後、「オレオレアジャイル」について喋りまくってきた記録を残しておく。</p>
<br style="clear:both; />
<span id="more-383"></span>

<h4>野良LT</h4>

<p>昼休みの時間にメイン会場で行われた「喋りたいヤツが喋る」枠。参加希望者がわりと少なかったので、「告知」にしぼってLTしてみた。</p>

<div style="width:425px" id="__ss_9117260"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/ss-9117260" title="アジャイルでいきいきした開発をするためにぼくらは" target="_blank">アジャイルでいきいきした開発をするためにぼくらは</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9117260" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank">kwappa</a> </div> </div>

<p>我ながら、これはひどいな。私利私欲にまみれている。</p>

<h4>From レガシー開発 to アジャイル開発～レガシー開発からアジャイル開発へ～</h4>

<h5>プレゼンテーション</h5>

<p>午後最初のセッションとしてE会場で行われた「<a href="http://xpjug.com/xpx-contents-e3/" target="_blank">本編</a>」では、現職のアジャイル開発への取り組みを紹介する事例集的なプレゼンテーションをした。</p>

<div style="width:425px" id="__ss_9117509"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/ss-9117509" title="三周まわったおれたちのアジャイル" target="_blank">三周まわったおれたちのアジャイル</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9117509" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank">kwappa</a> </div> </div>


<h5>パネルディスカッション</h5>

<p>後半は<a href="http://twitter.com/regtan" target="_blank">@regtan</a>と私の掛け合いに、会場から質問を受けつつのパネルディスカッション。スライドにも登場してくれた<a href="http://twitter.com/shokos" target="_blank">@shokos</a>が「かんばん娘」として書記をつとめてくれた。</p>

<div id="attachment_390" class="wp-caption aligncenter" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/09/xpx_e3_wb.jpg"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/09/xpx_e3_wb-300x225.jpg" alt="ホワイトボード" title="ホワイトボード" width="300" height="225" class="size-medium wp-image-390" /></a><p class="wp-caption-text">ホワイトボード</p></div>

<p>会場は予想より多くの参加者がいて、質問も活発に出てきた(ありがとうございます)。みんなそれぞれ、アジャイルに興味を持ちつつ現実と戦っている、という印象を受けた。</p>

<h4>Lightning Talk</h4>

<p>登壇が決まったあと、運営の方から「人数把握のため参加申し込みしてくださいね」と言われたので「<a href="http://kokucheese.com/event/index/14347/" target="_blank">こくちーず</a>」からエントリしたのだが、フォームに「LTしますか？」という欄があったのでつい「はい」をチェックしてしまった。そしたらなんと採択されたので、最後の枠でも好き勝手に喋らせていただいた。</p>

<div style="width:425px" id="__ss_9118321"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/ss-9118321" title="アジャイルなサムライとプラクティスづくり" target="_blank">アジャイルなサムライとプラクティスづくり</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9118321" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank">kwappa</a> </div> </div>

<p>アジャイル関連で読んだ本から3冊ピックアップして、私に与えてくれた影響みたいなことについて話した。正直なところ先にタイトルを思いついたので内容はあとづけなのだけれども、結果的にはまあまあまとまったと言えなくもない。</p>

<p>この3冊、いずれも<a href="http://twitter.com/kakutani" target="_blank">角谷さん</a>の監訳によるもの。裏テーマとして「かくたに祭り」というのがあったのだが、スライドに組み込めなかったのは反省点。</p>

<h4>まとめ</h4>

<h5>ふりかえり</h5>

<ul>
<li>Keep
<ul>
<li>まずは無事に登壇を終えることができた。</li>
<li>予想より多くの方に参加していただいた。</li>
<li>プレゼンをまとめることで、社内の取り組みを知ることができた。</li>
</ul></li>
<li>Problem
<ul>
<li>会場からの質問を取り上げる時間が不足していた。</li>
<li>パネル中もスライドなにか出した方がよかったかも。</li>
<li>俺喋り過ぎ…</li>
</ul></li>
<li>Try
<ul>
<li>再演したい！</li>
<li>質疑応答の時間を長く取る。</li>
<li>他社も含めて、さらに事例調査したい。</li>
</ul></li>
</ul>

<h5>感想</h5>

<ul>
<li>XP祭りは初参加。しかも区切りの10回目というタイミングでいきなり登壇させていただいたのは光栄だ。</li>
<li>当日は断続的に強い雨が降り、しかも直前になって会場が変更になるという悪条件が重なった。閑古鳥相手にお通夜のような60分をなかば覚悟していたのだが、フタを開けてみたら30人以上の来場があり、質問も活発にいただいた。ありがたいことです。</li>
<li>結構規模の大きいイベントなのに、全体的にゆるーい雰囲気が漂っていた。小さなお子さんが何人かそこら中を駆け回っていたりして。勉強会ではあるのだが、休日に家族で参加できる、という空気はとてもいいと思った。</li>
</ul>

<h5>謝辞</h5>

<p>参加者の皆さん(特にE3セッションにご来場いただいた方)、貴重な場を提供してくださったスタッフの皆さん、相方の<a href="http://twitter.com/regtan" target="_blank">@regtan</a>と「かんばん娘」<a href="http://twitter.com/shokos" target="_blank">@shokos</a>、コンテンツ化してくれた同僚各位。本当にありがとうございました！</p>

<h5>Links</h5>

<p><a href="http://xpjug.com/xpx/" target="_blank">XP祭り2011</a><br />

http://xpjug.com/xpx/</p>

<p><a href="http://xpjug.com/xpx-contents-e3/" target="_blank">E-3 From レガシー開発 to アジャイル開発～レガシー開発からアジャイル開発へ～【講演】</a><br />

http://xpjug.com/xpx-contents-e3/</p>

<p><a href="http://d.hatena.ne.jp/celitan/20110903/1315080531" target="_blank">XP祭2011でセッションを開催しました &#8211; regtan’s TechNote</a><br />

http://d.hatena.ne.jp/celitan/20110903/1315080531</p>

<div style="float:left;">

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4274068560&#038;nou=1&#038;ref=qf_sp_asin_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4274066940&#038;nou=1&#038;ref=qf_sp_asin_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4839924023&#038;nou=1&#038;ref=qf_sp_asin_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=486401051X&#038;nou=1&#038;ref=qf_sp_asin_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

</div>

<p><br style="clear:both;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/09/07/383/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Macでフォント描画のアンチエイリアシングが効かない問題を解決する</title>
		<link>http://randd.kwappa.net/2011/08/27/369</link>
		<comments>http://randd.kwappa.net/2011/08/27/369#comments</comments>
		<pubDate>Sat, 27 Aug 2011 05:59:59 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Environment]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=369</guid>
		<description><![CDATA[会社から仕事用マシンとしてMacBook Pro (13 Early 2011)が支給されて、非常に快適に仕事をしている。今までのWindows機は外部モニタを2枚つないで本体は閉じていたのだが、Macになってからは本体のモニタ+外部モニタ構成にしたので、机の上もだいぶ省スペースにできた。 ところが、更なる快適さを求めてプライマリモニタを本体から外部モニタに変えてみたら、微妙な落とし穴にハマってしまった。 Twitterで嘆いたら幸いにもすぐ反応をいただき、しかもそれがドンピシャ。見事翌日には解決したので、経緯をメモとして残しておく。 現象 フォントのアンチエイリアシングがおかしい。かかってはいるが、なにかかすれている感がある。 こんな感じ。 いろいろ検証した結果、「外部モニタが接続され、そのモニタがプライマリ(メニューバーがあるほう)に指定されている」状態で起動したアプリケーションがこの現象に見舞われるようだった。 外部モニタを外した状態で起動したアプリケーションはきちんとアンチエイリアシングされ、そのあと外部モニタを接続しても問題なかった。 Twitterでのやりとり http://twitter.com/#!/kwappa/status/106004002453467138 外部モニタを接続した状態で起動したアプリでアンチエイリアスがおかしくなるな。起動したあとなら接続しても問題なく描画される。うーむむ。less than a minute ago via YoruFukurou Favorite Retweet ReplySHIOYA, Hiromukwappa http://twitter.com/#!/tkono1/status/106019767030259713 http://twitter.com/#!/kwappa/status/106020451599384576 http://twitter.com/#!/tkono1/status/106025517060329473 @kwappa Snow Leopard時代にも外部モニタとアンチエイリアスで問題があった様です。明日にでもどうぞー http://t.co/GImThyCless than a minute ago via YoruFukurou Favorite Retweet ReplyTsubura KONOtkono1 http://twitter.com/#!/kwappa/status/106212816796655616 ジャストミートな情報をいただいたので早速試してみる。 解決方法 ターミナルで以下を実行する。 % defaults -currentHost write -globalDomain AppleFontSmoothing -int 1 リンク先を読んでみると… [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_370" class="wp-caption alignright" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/lion_desktop.jpg"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/lion_desktop-300x225.jpg" alt="現在の仕事環境" title="現在の仕事環境" width="300" height="225" class="size-medium wp-image-370" /></a><p class="wp-caption-text">現在の仕事環境</p></div>
<p>会社から仕事用マシンとしてMacBook Pro (13 Early 2011)が支給されて、非常に快適に仕事をしている。今までのWindows機は外部モニタを2枚つないで本体は閉じていたのだが、Macになってからは本体のモニタ+外部モニタ構成にしたので、机の上もだいぶ省スペースにできた。</p>

<p>ところが、更なる快適さを求めてプライマリモニタを本体から外部モニタに変えてみたら、微妙な落とし穴にハマってしまった。</p>

<p>Twitterで嘆いたら幸いにもすぐ反応をいただき、しかもそれがドンピシャ。見事翌日には解決したので、経緯をメモとして残しておく。</p>

<h4>現象</h4>

<p>フォントのアンチエイリアシングがおかしい。かかってはいるが、なにかかすれている感がある。</p>

<div id="attachment_371" class="wp-caption aligncenter" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/anti_alias_0.png"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/anti_alias_0-300x131.png" alt="アンチエイリアスが弱い" title="アンチエイリアスが弱い" width="300" height="131" class="size-medium wp-image-371" /></a><p class="wp-caption-text">アンチエイリアスが弱い</p></div>

<p>こんな感じ。</p>
<span id="more-369"></span>
<p>いろいろ検証した結果、「外部モニタが接続され、そのモニタがプライマリ(メニューバーがあるほう)に指定されている」状態で起動したアプリケーションがこの現象に見舞われるようだった。</p>

<p>外部モニタを外した状態で起動したアプリケーションはきちんとアンチエイリアシングされ、そのあと外部モニタを接続しても問題なかった。</p>

<h4>Twitterでのやりとり</h4>

<ul>
<li><p><a href="http://twitter.com/#!/kwappa/status/106004002453467138" target="_blank">http://twitter.com/#!/kwappa/status/106004002453467138</a>
<!-- http://twitter.com/#!/kwappa/status/106004002453467138 --> <style type='text/css'>.bbpBox106004002453467138 {background:url(http://a1.twimg.com/images/themes/theme9/bg.gif) #1A1B1F;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style> <div class='bbpBox106004002453467138'><p class='bbpTweet'>外部モニタを接続した状態で起動したアプリでアンチエイリアスがおかしくなるな。起動したあとなら接続しても問題なく描画される。うーむむ。<span class='timestamp'><a title='Tue Aug 23 14:04:58 +0000 2011' href='http://twitter.com/#!/kwappa/status/106004002453467138'>less than a minute ago</a> via <a href="http://sites.google.com/site/yorufukurou/" rel="nofollow">YoruFukurou</a> <a href='http://twitter.com/intent/favorite?tweet_id=106004002453467138'><img src='http://si0.twimg.com/images/dev/cms/intents/icons/favorite.png' /> Favorite</a> <a href='http://twitter.com/intent/retweet?tweet_id=106004002453467138'><img src='http://si0.twimg.com/images/dev/cms/intents/icons/retweet.png' /> Retweet</a> <a href='http://twitter.com/intent/tweet?in_reply_to=106004002453467138'><img src='http://si0.twimg.com/images/dev/cms/intents/icons/reply.png' /> Reply</a></span><span class='metadata'><span class='author'><a href='http://twitter.com/kwappa'><img src='http://a2.twimg.com/profile_images/1032729417/kwappa_face_RGBL2_normal.gif' /></a><strong><a href='http://twitter.com/kwappa'>SHIOYA, Hiromu</a></strong><br/>kwappa</span></span></p></div> <!-- end of tweet --></p></li>
<li><p><a href="http://twitter.com/#!/tkono1/status/106019767030259713" target="_blank">http://twitter.com/#!/tkono1/status/106019767030259713</a></p></li>
<li><p><a href="http://twitter.com/#!/kwappa/status/106020451599384576" target="_blank">http://twitter.com/#!/kwappa/status/106020451599384576</a></p></li>
<li><p><a href="http://twitter.com/#!/tkono1/status/106025517060329473" target="_blank">http://twitter.com/#!/tkono1/status/106025517060329473</a>
<!-- http://twitter.com/#!/tkono1/status/106025517060329473 --> <style type='text/css'>.bbpBox106025517060329473 {background:url(http://a1.twimg.com/images/themes/theme4/bg.gif) #0099B9;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style> <div class='bbpBox106025517060329473'><p class='bbpTweet'>@<a class="tweet-url username" href="http://twitter.com/kwappa" rel="nofollow">kwappa</a> Snow Leopard時代にも外部モニタとアンチエイリアスで問題があった様です。明日にでもどうぞー <a href="http://t.co/GImThyC" rel="nofollow">http://t.co/GImThyC</a><span class='timestamp'><a title='Tue Aug 23 15:30:27 +0000 2011' href='http://twitter.com/#!/tkono1/status/106025517060329473'>less than a minute ago</a> via <a href="http://sites.google.com/site/yorufukurou/" rel="nofollow">YoruFukurou</a> <a href='http://twitter.com/intent/favorite?tweet_id=106025517060329473'><img src='http://si0.twimg.com/images/dev/cms/intents/icons/favorite.png' /> Favorite</a> <a href='http://twitter.com/intent/retweet?tweet_id=106025517060329473'><img src='http://si0.twimg.com/images/dev/cms/intents/icons/retweet.png' /> Retweet</a> <a href='http://twitter.com/intent/tweet?in_reply_to=106025517060329473'><img src='http://si0.twimg.com/images/dev/cms/intents/icons/reply.png' /> Reply</a></span><span class='metadata'><span class='author'><a href='http://twitter.com/tkono1'><img src='http://a1.twimg.com/profile_images/840243497/me_20100411_normal.jpg' /></a><strong><a href='http://twitter.com/tkono1'>Tsubura KONO</a></strong><br/>tkono1</span></span></p></div> <!-- end of tweet --></p></li>
<li><p><a href="http://twitter.com/#!/kwappa/status/106212816796655616" target="_blank">http://twitter.com/#!/kwappa/status/106212816796655616</a></p></li>
</ul>

<p>ジャストミートな情報をいただいたので早速試してみる。</p>

<h4>解決方法</h4>

<p>ターミナルで以下を実行する。</p>

<pre class="src">% defaults -currentHost write -globalDomain AppleFontSmoothing -int 1</pre>

<p>リンク先を読んでみると…</p>

<ul>
<li>Snow Leopardのころからあるバグだよ</li>
<li>サードパーティの液晶モニタをCRT(ブラウン管モニタ)と誤検出してしまうよ
<ul>
<li>Dell, Samsung, LG, HP, EIZO, and Lenovo</li>
</ul></li>
<li>アンチエイリアシングの度合いを決める数字のデフォルトを変更すればいいよ
<ul>
<li>0 : Standard (CRT向け)</li>
<li>1 : Light</li>
<li>2 : Medium (液晶向け)</li>
<li>3 : Strong</li>
</ul></li>
</ul>

<p>リンク先の指示では「-int 2」と書かれていたが、Emacs + Rictyの組み合わせだとちょっと効き過ぎのような気がしたので「-int 1」を指定してみた。</p>

<div id="attachment_372" class="wp-caption aligncenter" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/anti_alias_1.png"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/anti_alias_1-300x131.png" alt="アンチエイリアス : 1" title="アンチエイリアス : 1" width="300" height="131" class="size-medium wp-image-372" /></a><p class="wp-caption-text">アンチエイリアス : 1</p></div>

<div id="attachment_373" class="wp-caption aligncenter" style="width: 310px"><a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/anti_alias_2.png"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/anti_alias_2-300x131.png" alt="アンチエイリアス : 2" title="アンチエイリアス : 2" width="300" height="131" class="size-medium wp-image-373" /></a><p class="wp-caption-text">アンチエイリアス : 2</p></div>

<p>この辺はやってみて好みで決めればいいのではなかろうか。</p>

<h4>まとめとLinks</h4>

<p>twitterで嘆いたらあっという間に解決するという大変幸運な事例であった。<a href="http://twitter.com/tkono1" target="_blank">@tkono1</a>さん、ありがとうございました！</p>

<p><a href="http://hints.macworld.com/article.php?story=20090828224632809" target="_blank">10.6: Re-enable LCD font smoothing for some monitors &#8211; Mac OS X Hints</a><br />

http://hints.macworld.com/article.php?story=20090828224632809</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/08/27/369/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mac OS X Lionの開発環境を整える</title>
		<link>http://randd.kwappa.net/2011/08/15/350</link>
		<comments>http://randd.kwappa.net/2011/08/15/350#comments</comments>
		<pubDate>Mon, 15 Aug 2011 04:59:01 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Environment]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=350</guid>
		<description><![CDATA[MacBook Airがモデルチェンジした。 今のMacBook Pro (13 mid 2009)でも動作的な不満はあまりないのだが、物理的な重さにはだいぶメゲていた。2年も使えば償却も十分、ということで、発売日にオーダーして使っている。 そして職場で開発に使うマシンとして、MacBook Pro (13 Early 2011)が支給された。もちろんOSはLion。やったぜ！ というわけで手元にはクリーンインストールされたLionマシンが2台ある、という状態になった。真っさらのOSを開発できるように整えていくのは、面倒だけど楽しい作業でもある。手元にあるMacも順次Lionに入れ替えていくので、いろいろ行った作業の手順をメモっておく。 各種アップデート ソフトウェアアップデート 自動的に行われなければアップルメニューから。 App Store 夜フクロウ Xcode 4.1 Xcodeのインストール インストーラに「iTunesを終了しろ」と怒られるときは、アクティビティモニタから「iTunes Helper」を終了する。 システム環境設定 トラックパッド ポイントとクリック タップでクリック => on その他のジェスチャ ページ間をスワイプ => on 2本指または3本指でスワイプ ユニバーサルアクセス マウスとトラックパッド トラックパッドオプション&#8230; ドラッグ => on / ドラッグロックなし キーボード キーボードショートカット キーボードと文字入力 前の入力ソースを選択 => off 入力メニューの次のソースを選択 => off デスクトップとスクリーンセーバ デスクトップ 半透明メニューバー [...]]]></description>
			<content:encoded><![CDATA[<img src="http://images.apple.com/jp/macosx/images/overview_callout_osx.png" style="border:0;float:right;margin:16px;" />

<p>MacBook Airがモデルチェンジした。</p>

<p>今のMacBook Pro (13 mid 2009)でも動作的な不満はあまりないのだが、物理的な重さにはだいぶメゲていた。2年も使えば償却も十分、ということで、発売日にオーダーして使っている。</p>

<p>そして職場で開発に使うマシンとして、MacBook Pro (13 Early 2011)が支給された。もちろんOSはLion。やったぜ！</p>

<p>というわけで手元にはクリーンインストールされたLionマシンが2台ある、という状態になった。真っさらのOSを開発できるように整えていくのは、面倒だけど楽しい作業でもある。手元にあるMacも順次Lionに入れ替えていくので、いろいろ行った作業の手順をメモっておく。</p>

<br style="clear:both;" />

<span id="more-350"></span>
<h4>各種アップデート</h4>

<h5>ソフトウェアアップデート</h5>

<p>自動的に行われなければアップルメニューから。</p>

<h5>App Store</h5>

<ul>
<li>夜フクロウ</li>
<li>Xcode 4.1</li>
</ul>

<h5>Xcodeのインストール</h5>

<p>インストーラに「iTunesを終了しろ」と怒られるときは、アクティビティモニタから「iTunes Helper」を終了する。</p>

<h4>システム環境設定</h4>

<h5>トラックパッド</h5>

<ul>
<li>ポイントとクリック
<ul>
<li>タップでクリック => on</li>
</ul></li>
<li>その他のジェスチャ
<ul>
<li>ページ間をスワイプ => on</li>
<li>2本指または3本指でスワイプ</li>
</ul></li>
</ul>

<h5>ユニバーサルアクセス</h5>

<ul>
<li>マウスとトラックパッド
<ul>
<li>トラックパッドオプション&#8230;</li>
<li>ドラッグ => on / ドラッグロックなし</li>
</ul></li>
</ul>

<h5>キーボード</h5>

<ul>
<li>キーボードショートカット
<ul>
<li>キーボードと文字入力</li>
<li>前の入力ソースを選択 => off</li>
<li>入力メニューの次のソースを選択 => off</li>
</ul></li>
</ul>

<h5>デスクトップとスクリーンセーバ</h5>

<ul>
<li>デスクトップ
<ul>
<li>半透明メニューバー => off</li>
</ul></li>
</ul>

<h5>共有</h5>

<ul>
<li>コンピュータ名を適切なものに変更</li>
</ul>

<h4>アプリケーション</h4>

<ul>
<li><p><a href="http://www.apple.com/downloads/dashboard/status/istatpro.html" target="_blank">Apple &#8211; Downloads &#8211; Dashboard Widgets &#8211; iStat Pro</a><br />http://www.apple.com/downloads/dashboard/status/istatpro.html</p></li>
<li><p><a href="http://www.gkoya.com/2006/11/23/locktight-for-mac-os-x-intel/" target="_blank">LockTight for Mac OS X Intel | gkoya</a><br />http://www.gkoya.com/2006/11/23/locktight-for-mac-os-x-intel/</p></li>
<li><p><a href="http://growl.info/" target="_blank">Growl</a><br />http://growl.info/</p></li>
<li><p><a href="http://www.clamxav.com/" target="_blank">ClamXav</a><br />http://www.clamxav.com/</p></li>
<li><p><a href="http://www.culater.net/software/SIMBL/SIMBL.php" target="_blank">SIMBL</a><br />http://www.culater.net/software/SIMBL/SIMBL.php</p>

<ul>
<li><a href="https://sites.google.com/a/yedo.com/www/swapoptcmd" target="_blank">SwapOptCmd</a><br />https://sites.google.com/a/yedo.com/www/swapoptcmd</li>
</ul></li>
</ul>

<h4>開発環境</h4>

<h5>homebrew</h5>

<ul>
<li><a href="http://www.milligramme.cc/wp/archives/2880" target="_blank">[homebrew]Homebrewインストールメモ | milligramme 3cc</a><br />http://www.milligramme.cc/wp/archives/2880</li>
</ul>

<pre class="code">
% ruby -e "$(curl -fsSL https://gist.github.com/raw/323731/install_homebrew.rb)"
</pre>

<ul>
<li>インストール時に怒られた</li>
</ul>

<pre class="code">
% sudo dscl /Local/Default -append /Groups/staff GroupMembership $USER
</pre>

<ul>
<li>/usr/localに書き込み権限がない！</li>
</ul>

<pre class="code">
% sudo chown root:staff /usr/local
% sudo chmod g+w /usr/local
</pre>

<ul>
<li>ねんのため</li>
</ul>

<pre class="code">
% brew update
</pre>

<h6>のちのちいるものを入れておく</h6>

<pre class="code">
% brew install git
% brew install wget
% brew install markdown
% brew install colordiff
% brew install lv
</pre>

<h5>emacs</h5>

<ul>
<li>いろいろpatchが必要</li>
<li>23.3用のformulaは書いた
<ul>
<li><a href="https://gist.github.com/1106334" target="_blank">emacs 23.3 formula for homebrew with Xcode4.1 / Lion / &#8211;cocoa — Gist</a><br />https://gist.github.com/1106334</li>
</ul></li>
</ul>

<h5>rvm</h5>

<h6>本体のインストール</h6>

<ul>
<li><a href="https://rvm.beginrescueend.com/rvm/install/" target="_blank">RVM: Ruby Version Manager &#8211; Installing RVM</a><br />https://rvm.beginrescueend.com/rvm/install/</li>
<li>.zshrc / .bashrcなどに追記</li>
</ul>

<pre class="code">
if [[ -s $HOME/.rvm/scripts/rvm ]] ; then source $HOME/.rvm/scripts/rvm ; fi
</pre>

<h6>依存パッケージのインストール</h6>

<pre class="code">
% rvm pkg install ree_dependencies
</pre>

<blockquote>
  <p>&#8216;ree_dependencies&#8217; installs zlib, ncurses, readline, openssl and iconv in this order.</p>
</blockquote>

<h6>Rubyのインストール</h6>

<pre class="code">
% rvm install 1.9.2 --with-readline-dir=$rvm_usr_path \
                    --with-iconv-dir=$rvm_usr_path \
                    --with-zlib-dir=$rvm_usr_path \
                    --with-openssl-dir=$rvm_usr_path
</pre>

<h5>diffとgit diff</h5>

<ul>
<li>.zshrc / .bashrcなどに追記</li>
</ul>

<pre class="code">
export LC_ALL=C
alias diff=colordiff
export GIT_PAGER='/usr/local/bin/lv -c -Au8'
</pre>

<ul>
<li>上から…
<ul>
<li>colordiffはperlなので、perlのための環境変数設定</li>
<li>diffといえばcolordiff</li>
<li>gitのページャをlvに指定、文字コードにutf-8を指定</li>
</ul></li>
</ul>

<h4>まとめ</h4>

<p>これでだいたい違和感なく開発できる環境になった。LionかわいいよLion。</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/08/15/350/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>autotestの結果をgrowlに通知する</title>
		<link>http://randd.kwappa.net/2011/08/07/338</link>
		<comments>http://randd.kwappa.net/2011/08/07/338#comments</comments>
		<pubDate>Sun, 07 Aug 2011 05:23:53 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=338</guid>
		<description><![CDATA[先日TDD Boot Camp Tokyo 1.6に参加してきた。参加記事はまたいずれ。 同僚と一緒に参加したらすっかり熱が上がってしまい、翌週「社内TDDBC」なんてのを開催してしまった。この記事も近いうちに。 ということで最近テスト方面が盛り上がっているのだが、TDDBCにautotestの準備が間に合わなかったのが悔やまれる。社内TDDBCでは使っているペアがいたので、悔しくなって急遽セットアップしてみた。 まずはコマンドラインで 必要なrubygemsのインストール % gem install rspec % gem install ZenTest % rspec --version #=> 2.6.4 ディレクトリ構成 kvs/ &#124;-- autotest &#124; `-- discover.rb &#124;-- kvs.rb `-- spec `-- kvs_spec.rb 実装クラスがkvs.rb、テストコードがspec/kvs_spec.rb。 autotest/discover.tb Autotest.add_discovery { "rspec2" } 実行してみる プロジェクトのルートで % autotest これでテストファイルの変更を監視している状態。kvs_spec.rbに変更を加えるとテストが実行される。kvs.rbは特に監視していない。 Growlで通知 Macで開発しているので、テストの結果をGrowlに通知してくれると楽しい。 必要なソフトウェアのインストール セットアップはこちらを参考にした。 % gem install ruby-growl % [...]]]></description>
			<content:encoded><![CDATA[<a href="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/rails_ok.png"><img src="http://randd.kwappa.net/wp/wp-content/uploads/2011/08/rails_ok.png" alt="ok kinoco" title="ok kinoco" width="64" height="64" class="alignleft size-full wp-image-358" /></a>

<p>先日<a href="http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GPGlAww" target="_blank">TDD Boot Camp Tokyo 1.6</a>に参加してきた。参加記事はまたいずれ。</p>

<p>同僚と一緒に参加したらすっかり熱が上がってしまい、翌週「社内TDDBC」なんてのを開催してしまった。この記事も近いうちに。</p>

<p>ということで最近テスト方面が盛り上がっているのだが、TDDBCにautotestの準備が間に合わなかったのが悔やまれる。社内TDDBCでは使っているペアがいたので、悔しくなって急遽セットアップしてみた。</p>
<br style="clear:both;" />
<span id="more-338"></span>
<h4>まずはコマンドラインで</h4>

<h5>必要なrubygemsのインストール</h5>

<pre class="code">
 % gem install rspec
 % gem install ZenTest
 % rspec --version #=> 2.6.4
</pre>

<h5>ディレクトリ構成</h5>

<pre class="code">
kvs/
|-- autotest
|   `-- discover.rb
|-- kvs.rb
`-- spec
    `-- kvs_spec.rb
</pre>

<p>実装クラスがkvs.rb、テストコードがspec/kvs_spec.rb。</p>

<h6>autotest/discover.tb</h6>

<pre class="src">
<span class="type">Autotest</span>.add_discovery { <span class="string">"rspec2"</span> }
</pre>

<h5>実行してみる</h5>

<p>プロジェクトのルートで</p>

<pre class="code">
 % autotest
</pre>

<p>これでテストファイルの変更を監視している状態。kvs_spec.rbに変更を加えるとテストが実行される。kvs.rbは特に監視していない。</p>

<h4>Growlで通知</h4>

<p>Macで開発しているので、テストの結果をGrowlに通知してくれると楽しい。</p>

<h5>必要なソフトウェアのインストール</h5>

<p>セットアップは<a href="http://d.hatena.ne.jp/hkj/20100810/p1" target="_blank">こちら</a>を参考にした。</p>

<pre class="code">
% gem install ruby-growl
% gem install redgreen
% brew install growlnotify
</pre>

<h5>通知画像の取得</h5>

<p>97きのこ本の<a href="http://inside.cocooooooon.com/2010/12/10/index.html" target="_blank">イラスト</a>を書かれた@mayucoさんの<a href="http://cocooooooon.com/kinotan/" target="_blank">素材</a>を使わせていただくことにした。</p>


<pre class="code">
% mdkir ~/.autotest.d/
% cd ~/.autotest.d/
% wget http://cocooooooon.com/kinotan/rails_ok.png
% wget http://cocooooooon.com/kinotan/rails_fail.png
% wget http://cocooooooon.com/kinotan/rails_pending.png
</pre>
<h5>~/.autotest</h5>

<p>autotestの結果を受け取ってgrowlに流すのは、~/.autotestで行う。</p>

<p>中身は<a href="http://d.hatena.ne.jp/hkj/20100810/p1" target="_blank">こちら</a>と<a href="http://kiyorin-net.blogspot.com/2008/12/rspec-zentest-autotest-snarl.html" target="_blank">こちら</a>を参考に書いてみた。</p>

<p>一応全文を書いておくが、修正するかもなので参考にされる際は<a href="https://github.com/kwappa/dotfiles/blob/master/.autotest" target="_blank">GitHub</a>をご覧いただきたい。</p>

    <pre class="src">
<span class="comment-delimiter"># </span><span class="comment">-*- ruby -*-
</span><span class="keyword">module</span> <span class="type">Autotest</span>::<span class="type">Growl</span>
  <span class="keyword">def</span> <span class="function-name">self.growl</span> title, msg, img=<span class="string">"~/.autotest.d/rails_ok.png"</span>, pri=0, sticky=<span class="string">""</span>
    msg += <span class="string">" at </span><span class="variable-name">#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}</span><span class="string">"</span>
    system <span class="string">"growlnotify -n autotest --image </span><span class="variable-name">#{img}</span><span class="string"> -p </span><span class="variable-name">#{pri}</span><span class="string"> -m </span><span class="variable-name">#{msg.inspect}</span><span class="string"> </span><span class="variable-name">#{title}</span><span class="string"> </span><span class="variable-name">#{sticky}</span><span class="string">"</span>
  <span class="keyword">end</span>

  <span class="type">Autotest</span>.add_hook <span class="constant">:ran_command</span> <span class="keyword">do</span> |at|
    results = [at.results].flatten.join(<span class="string">"\n"</span>)
    output = results.slice(<span class="string">/\d+\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pendings?)?/</span>)
    <span class="keyword">if</span> output
      <span class="keyword">if</span> <span class="variable-name">$~</span>[1].to_i &gt; 0
        growl <span class="string">"Tests Failed"</span>, <span class="string">"</span><span class="variable-name">#{output}</span><span class="string">"</span>, <span class="string">"~/.autotest.d/rails_fail.png"</span>, 2
      <span class="keyword">else</span>
        <span class="keyword">if</span> <span class="variable-name">$~</span>[3].to_i &gt; 0
          growl <span class="string">"Pending"</span>, <span class="string">"</span><span class="variable-name">#{output}</span><span class="string">"</span>, <span class="string">"~/.autotest.d/rails_pending.png"</span>, 2
        <span class="keyword">else</span>
          growl <span class="string">"Tests Passed"</span>, <span class="string">"</span><span class="variable-name">#{output}</span><span class="string">"</span>, <span class="string">"~/.autotest.d/rails_ok.png"</span>, -2
        <span class="keyword">end</span>
      <span class="keyword">end</span>
    <span class="keyword">else</span>
      growl <span class="string">"Tests Errored </span><span class="variable-name">#{output}</span><span class="string">"</span>, <span class="string">"errors"</span>, <span class="string">"~/.autotest.d/rails_fail.png"</span>, 2
    <span class="keyword">end</span>
  <span class="keyword">end</span>
<span class="keyword">end</span>
</pre>

<h4>まとめとLinks</h4>

<p>そういえばずいぶん前の勉強会(たぶん<a href="http://www.java-users.jp/contents/events/ccc2008fall/sessions.html" target="_blank">これ</a>のA-4…かくたにさんとわださんじゃないか!)を見て、画面の下からredとかgreenがあがってくる光景(たぶんGrowlの「Music Video」)にえらく感動した記憶がある。3年も前に見たデモに今頃たどり着くなんて不勉強この上ないが、正しい道を進んでいることは確
認できたような気がする。</p>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4873114799&#038;nou=1&#038;ref=tf_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>


<p><a href="https://github.com/rspec/rspec/wiki/autotest" target="_blank">autotest &#8211; GitHub</a><br />

https://github.com/rspec/rspec/wiki/autotest</p>

<p><a href="http://cocooooooon.com/" target="_blank">cocooooooon.com</a><br />

http://cocooooooon.com/</p>

<p><a href="http://d.hatena.ne.jp/hkj/20100810/p1" target="_blank">Autospecを使ってRSpecのテストを自動化 with Growl &#8211; ほくの日記</a><br />

http://d.hatena.ne.jp/hkj/20100810/p1</p>

<p><a href="http://kiyorin-net.blogspot.com/2008/12/rspec-zentest-autotest-snarl.html" target="_blank">プログラマの覚書: RSpec+autotest+Snarl その１</a><br />

http://kiyorin-net.blogspot.com/2008/12/rspec-zentest-autotest-snarl.html</p>

<br style="clear:both;" />
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/08/07/338/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDD Boot Camp Tokyo 1.6に参加する</title>
		<link>http://randd.kwappa.net/2011/08/06/329</link>
		<comments>http://randd.kwappa.net/2011/08/06/329#comments</comments>
		<pubDate>Sat, 06 Aug 2011 07:40:54 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[StudyGroup]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=329</guid>
		<description><![CDATA[7/31、大森のniftyで開催された「TDD Boot Camp Tokyo 1.6」に参加してきた。 TDDとは「Test Driven Development」、つまり「テスト駆動開発」のこと。それをBoot Campになぞらえて、講演とワークショップで1日みっちり叩き込まれる、という硬派なイベントがTDD Boot Camp (TDDBC)だ。 2009年に第1回が開催されて以来徐々に注目を集め、7/9に行われた会では定員36人に100人以上が殺到する、という大騒ぎになった。私もかねてから参加したいと思っていたので、今回もぐりこむことができてラッキーだった。 講演 午前中とワークショップ終了後の前後半構成で、TDDの伝道師こと和田卓人氏(@t_wada)によるセッションが行われた。 TDDBC Fukuoka Day1 View more presentations from Takuto Wada このスライドは先日福岡で行われたときのもので、今回はこれに若干内容を追加したスライドでのセッションだった。このまま増えると100枚超えるな、という余計な心配がよぎる。 セッション中は例によって聞きながらtwitter実況を行っていた。togetterにまとめられているので参照されたい。 一番グッとくるのは「TDDは個人のスキル。絶望の底にいても、孤立無援でも、ひとりから始められる。」という言葉。まず自分から、自分のコードから変革していこう、という姿勢は、いつだって忘れてはいけないものだろう。 ワークショップ 午後は参加者同士がペアを組んでのワークショップ。あらかじめ設定されたお題を「ペアプロ」かつ「TDD」で実装していく。ネタバレになるような気がするので、詳細の説明は避ける。興味があってネタバレ上等の方は、記事の最後にgithubへのリンクを記載するので参照されたい。 前半は@naitohさんとペアを組んで実装。RSpecだけどxUnitっぽい平易な書き方をして、順調に実装を進めた。メソッド名の付け方とか性格が出て面白い。Ruby 1.8系は「IndexError」はあっても「KeyError」はない、というのが発見だった。 Ruby組テーブルの向かい側では、日本Rubyの会とyokohama.rbから来た二人の高橋さんが「チーム高橋」を結成していた。すごい光景ではあった。 後半はペアの組み替えが行われ、TAの@ukstudioさんと一緒に実装。…えっ、ゆーけーさん？なんとゆー贅沢な相方。私はASCII配列に苦戦したこともあり、すっかり借りてきた猫状態だった。RSpec「らしい」書き方を間近で体験でき、とても勉強になった。 クロージング 前半のラストと後半終了後はそれぞれコードレビューとふりかえり。苦戦したところ、仕様の解釈、テストの粒度や密度など、いろんな視点を感じることができたのが大きな収穫。和田さんがセッションで話していた「同一の問題を複数のチームで解決するのを仕事で体験することはまずない(無駄だから)。他人の考え方に触れることができるのがTDDBCの価値。」という言葉の意味を実感できた。 セッション枠をtwitter実況していたら、なんと「本日のt_wada賞」をいただくことになってしまった。ほとんど自分用のメモを垂れ流しているだけなのに…。ありがとうございました。副賞として「データベース・リファクタリング」をいただいたので、レガシーに立ち向かう武器が増えたのも大きな収穫。 家庭の事情で懇親会は申し込まなかったのだが、事情が再逆転したので参加可能になった。ところが参加枠の残りはあと1つ。争奪戦のジャンケンに見事敗れ、そのまま帰宅したのだった。駅までの道すがら、高橋会長とお話できた、というボーナスはついたのだけれども。 スタッフの皆さん、講師の和田さん、ありがとうございました。参加してた同僚と「社内でやるしかない！」と盛り上がった(そして昨日(8/5)開催した)ので、受け取ったものをいろんなところに広げていきたいと思います。 Links TDD Boot Camp 東京 1.6 #tddbc on Zusaar http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GPGlAww TDD Boot Camp(TDDBC) &#8211; TDDBC http://devtesting.jp/tddbc/ Togetter [...]]]></description>
			<content:encoded><![CDATA[<p>7/31、大森のniftyで開催された「<a href="http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GPGlAww" target="_blank">TDD Boot Camp Tokyo 1.6</a>」に参加してきた。</p>

<p>TDDとは「Test Driven Development」、つまり「テスト駆動開発」のこと。それをBoot Campになぞらえて、講演とワークショップで1日みっちり叩き込まれる、という硬派なイベントがTDD Boot Camp (TDDBC)だ。</p>

<p>2009年に第1回が開催されて以来徐々に注目を集め、<a href="http://atnd.org/events/16311" target="_blank">7/9に行われた会</a>では定員36人に100人以上が殺到する、という大騒ぎになった。私もかねてから参加したいと思っていたので、今回もぐりこむことができてラッキーだった。</p>

<span id="more-329"></span>

<h4>講演</h4>

<p>午前中とワークショップ終了後の前後半構成で、TDDの伝道師こと和田卓人氏(<a href="http://tako3.com/http://twitter.com/t_wada" target="_blank">@t_wada</a>)によるセッションが行われた。</p>

<div style="width:425px" id="__ss_7353562"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/t_wada/tddbc-fukuoka-day1" title="TDDBC Fukuoka Day1" target="_blank">TDDBC Fukuoka Day1</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/7353562" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/t_wada" target="_blank">Takuto Wada</a> </div> </div>

<p>このスライドは先日福岡で行われたときのもので、今回はこれに若干内容を追加したスライドでのセッションだった。このまま増えると100枚超えるな、という余計な心配がよぎる。</p>

<p>セッション中は例によって聞きながらtwitter実況を行っていた。<a href="http://togetter.com/li/168958" target="_blank">togetterにまとめられている</a>ので参照されたい。</p>

<p>一番グッとくるのは「TDDは個人のスキル。絶望の底にいても、孤立無援でも、ひとりから始められる。」という言葉。まず自分から、自分のコードから変革していこう、という姿勢は、いつだって忘れてはいけないものだろう。</p>

<h4>ワークショップ</h4>

<p>午後は参加者同士がペアを組んでのワークショップ。あらかじめ設定されたお題を「ペアプロ」かつ「TDD」で実装していく。ネタバレになるような気がするので、詳細の説明は避ける。興味があってネタバレ上等の方は、記事の最後にgithubへのリンクを記載するので参照されたい。</p>

<p>前半は<a href="http://twitter.com/naitoh" target="_blank">@naitoh</a>さんとペアを組んで実装。RSpecだけどxUnitっぽい平易な書き方をして、順調に実装を進めた。メソッド名の付け方とか性格が出て面白い。Ruby 1.8系は「IndexError」はあっても「KeyError」はない、というのが発見だった。</p>

<p>Ruby組テーブルの向かい側では、日本Rubyの会とyokohama.rbから来た二人の高橋さんが「チーム高橋」を結成していた。すごい光景ではあった。</p>

<p>後半はペアの組み替えが行われ、TAの<a href="http://twitter.com/ukstudio" target="_blank">@ukstudio</a>さんと一緒に実装。…えっ、ゆーけーさん？なんとゆー贅沢な相方。私はASCII配列に苦戦したこともあり、すっかり借りてきた猫状態だった。RSpec「らしい」書き方を間近で体験でき、とても勉強になった。</p>

<h4>クロージング</h4>

<p>前半のラストと後半終了後はそれぞれコードレビューとふりかえり。苦戦したところ、仕様の解釈、テストの粒度や密度など、いろんな視点を感じることができたのが大きな収穫。和田さんがセッションで話していた「同一の問題を複数のチームで解決するのを仕事で体験することはまずない(無駄だから)。他人の考え方に触れることができるのがTDDBCの価値。」という言葉の意味を実感できた。</p>

<p>セッション枠をtwitter実況していたら、なんと「本日のt_wada賞」をいただくことになってしまった。ほとんど自分用のメモを垂れ流しているだけなのに…。ありがとうございました。副賞として「<a href="http://www.amazon.co.jp/gp/product/4894715007/?tag=bottomline02-22" target="_blank">データベース・リファクタリング</a>」をいただいたので、レガシーに立ち向かう武器が増えたのも大きな収穫。</p>

<p>家庭の事情で懇親会は申し込まなかったのだが、事情が再逆転したので参加可能になった。ところが参加枠の残りはあと1つ。争奪戦のジャンケンに見事敗れ、そのまま帰宅したのだった。駅までの道すがら、高橋会長とお話できた、というボーナスはついたのだけれども。</p>

<p>スタッフの皆さん、講師の和田さん、ありがとうございました。参加してた同僚と「社内でやるしかない！」と盛り上がった(そして昨日(8/5)開催した)ので、受け取ったものをいろんなところに広げていきたいと思います。</p>

<h4>Links</h4>

<p><a href="http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GPGlAww" target="_blank">TDD Boot Camp 東京 1.6 #tddbc on Zusaar</a><br />

http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GPGlAww</p>

<p><a href="http://devtesting.jp/tddbc/" target="_blank">TDD Boot Camp(TDDBC) &#8211; TDDBC</a><br />

http://devtesting.jp/tddbc/</p>

<p><a href="http://togetter.com/li/168958" target="_blank">Togetter &#8211; 「TDD Boot Camp 東京 1.6 #tddbc」</a><br />

http://togetter.com/li/168958</p>

<p>和田さんのセッションで紹介されていた関連書籍など。</p>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;nou=1&#038;bg1=000000&#038;fc1=FFFFFF&#038;lc1=639CBF&#038;t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;ref=tf_til&#038;asins=4873114799" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4894717115&#038;nou=1&#038;ref=tf_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4798116831&#038;nou=1&#038;ref=tf_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4894715007&#038;nou=1&#038;ref=tf_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=0131495054&#038;nou=1&#038;ref=tf_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=0321503627&#038;nou=1&#038;ref=tf_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=B001RTG88Q&#038;nou=1&#038;ref=tf_til&#038;fc1=FFFFFF&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=639CBF&#038;bc1=000000&#038;bg1=000000&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<br style="clear:both;" />

<p><a href="http://xunitpatterns.com/" target="_blank">index at XUnitPatterns.com</a><br />

http://xunitpatterns.com/</p>

<p><a href="http://www.fieldnotes.jp/xutp/" target="_blank">xUnit Test Patterns(xUTP)読書会 &#8211; FrontPage</a><br />

http://www.fieldnotes.jp/xutp/</p>

<p><a href="http://devtesting.jp/goos/" target="_blank">Growing Object-Oriented Software, Guided by Tests(goos)読書会 &#8211; FrontPage</a><br />

http://devtesting.jp/goos/</p>

<p><a href="http://twitter.com/#!/t_wada/status/9000231741" target="_blank">Twitter / @t_wada: 技術書の「写経」の方法。</a><br />

http://twitter.com/#!/t_wada/status/9000231741</p>

<p><a href="https://github.com/kwappa/tddbc/tree/master/tddbc16_kwappa" target="_blank">tddbc16_kwappa at master from kwappa/tddbc &#8211; GitHub</a><br />

https://github.com/kwappa/tddbc/tree/master/tddbc16_kwappa</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/08/06/329/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>日本Ruby会議2011に参加する</title>
		<link>http://randd.kwappa.net/2011/08/06/326</link>
		<comments>http://randd.kwappa.net/2011/08/06/326#comments</comments>
		<pubDate>Sat, 06 Aug 2011 05:56:58 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[StudyGroup]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=326</guid>
		<description><![CDATA[7/16〜18、練馬文化センターで開催された「日本Ruby会議2011」に参加してきた。 私はRubyKaigiは去年に続き2度目の参加。スタッフでもスポンサーでもないのだが、Lightning Talksに応募したら採択されたのでしゃべってきた。 pebbles : A namespace for joke gems View more presentations from kwappa プログラムとしてはMatzの基調講演の直前、順番としては最後から2番目。つまり、「最後のRubyKaigiで最後から3番目にしゃべった男」というのは私のことなのだ。…実際には日本Rubyの会高橋会長のクロージングがあったので最後から4番目なのだが。 ちなみに、初日の夜には「闇RubyKaigi」なる怪しげなイベントが開かれていたので、そこでもしゃべってきた。 「Railsでやろう」にまつわる話 View more presentations from kwappa イベントタイトルが「闇」とか言っちゃってるので闇っぽいネタを用意してきたら、意外とみんな普通に2分間の枠でLTしていた。基調講演では昔の写真を晒されるし、LTのテイストは一人で浮くし、さすが「闇」を冠するだけあってタフなイベントだった。 イベントの内容はgihyo.jpのレポートがすごく詳細なので、そちらを読めばいいと思う。動画も大半がVimeoにまとまっているので、興味があるセッションは追体験することができる。 RubyKaigi2011 スペシャルレポート：日本Ruby会議2011 直前レポート｜gihyo.jp … 技術評論社 http://gihyo.jp/news/report/01/rubykaigi2011/0000 RubyKaigi2011 スペシャルレポート：日本Ruby会議2011 1日目レポート［更新終了］｜gihyo.jp … 技術評論社 http://gihyo.jp/news/report/01/rubykaigi2011/0001 RubyKaigi2011 スペシャルレポート：日本Ruby会議2011 2日目レポート［更新終了］｜gihyo.jp … 技術評論社 http://gihyo.jp/news/report/01/rubykaigi2011/0002 RubyKaigi2011 スペシャルレポート：日本Ruby会議2011 3日目レポート［更新終了］｜gihyo.jp … 技術評論社 http://gihyo.jp/news/report/01/rubykaigi2011/0003 RubyKaigi 2011 on Vimeo http://vimeo.com/channels/rubykaigi2011 私のLightning [...]]]></description>
			<content:encoded><![CDATA[<p>7/16〜18、練馬文化センターで開催された「<a href="http://rubykaigi.org/2011/ja" target="_blank">日本Ruby会議2011</a>」に参加してきた。</p>

<p>私はRubyKaigiは<a href="http://randd.kwappa.net/2010/08/29/180" target="_blank">去年</a>に続き2度目の参加。スタッフでもスポンサーでもないのだが、<a href="http://rubykaigi.org/2011/ja/schedule/details/18M09" target="_blank">Lightning Talks</a>に応募したら<a href="http://rubykaigi.org/2011/ja/schedule/details/18M09_10" target="_blank">採択された</a>のでしゃべってきた。</p>

<div style="width:425px" id="__ss_8622710"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/pebbles-a-namespace-for-joke-gems" title="pebbles : A namespace for joke gems" target="_blank">pebbles : A namespace for joke gems</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8622710" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank">kwappa</a> </div> </div>

<span id="more-326"></span>

<p>プログラムとしてはMatzの基調講演の直前、順番としては最後から2番目。つまり、「最後のRubyKaigiで最後から3番目にしゃべった男」というのは私のことなのだ。…実際には日本Rubyの会高橋会長のクロージングがあったので最後から4番目なのだが。</p>

<p>ちなみに、初日の夜には「<a href="http://yami.rubykaigi.org/2011" target="_blank">闇RubyKaigi</a>」なる怪しげなイベントが開かれていたので、そこでもしゃべってきた。</p>

<div style="width:425px" id="__ss_8612447"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/rails-8612447" title="「Railsでやろう」にまつわる話" target="_blank">「Railsでやろう」にまつわる話</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8612447" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/kwappa" target="_blank">kwappa</a> </div> </div>

<p>イベントタイトルが「闇」とか言っちゃってるので闇っぽいネタを用意してきたら、意外とみんな普通に2分間の枠でLTしていた。<a href="http://yamirubykaigi.wordpress.com/2011/07/15/keynote/" target="_blank">基調講演</a>では昔の写真を晒されるし、LTのテイストは一人で浮くし、さすが「闇」を冠するだけあってタフなイベントだった。</p>

<p>イベントの内容はgihyo.jpのレポートがすごく詳細なので、そちらを読めばいいと思う。動画も大半が<a href="http://vimeo.com/channels/rubykaigi2011" target="_blank">Vimeoにまとまっている</a>ので、興味があるセッションは追体験することができる。</p>

<ul>
  <li><a href="http://gihyo.jp/news/report/01/rubykaigi2011/0000" target="_blank">RubyKaigi2011 スペシャルレポート：日本Ruby会議2011 直前レポート｜gihyo.jp … 技術評論社</a><br />

http://gihyo.jp/news/report/01/rubykaigi2011/0000</li>

  <li><a href="http://gihyo.jp/news/report/01/rubykaigi2011/0001" target="_blank">RubyKaigi2011 スペシャルレポート：日本Ruby会議2011 1日目レポート［更新終了］｜gihyo.jp … 技術評論社</a><br />

http://gihyo.jp/news/report/01/rubykaigi2011/0001</li>

  <li><a href="http://gihyo.jp/news/report/01/rubykaigi2011/0002" target="_blank">RubyKaigi2011 スペシャルレポート：日本Ruby会議2011 2日目レポート［更新終了］｜gihyo.jp … 技術評論社</a><br />

http://gihyo.jp/news/report/01/rubykaigi2011/0002</li>

  <li><a href="http://gihyo.jp/news/report/01/rubykaigi2011/0003" target="_blank">RubyKaigi2011 スペシャルレポート：日本Ruby会議2011 3日目レポート［更新終了］｜gihyo.jp … 技術評論社</a><br />

http://gihyo.jp/news/report/01/rubykaigi2011/0003</li>

  <li><a href="http://vimeo.com/channels/rubykaigi2011" target="_blank">RubyKaigi 2011 on Vimeo</a><br />

http://vimeo.com/channels/rubykaigi2011</li>

</ul>

<p>私のLightning Talksは<a href="http://vimeo.com/channels/rubykaigi2011#26631948" target="_blank">この動画</a>の49:50あたりから。話してるときはいっぱいいっぱいだったんだが、まあそこそこ笑い声はあがっていたのでよかったよかった。</p>

<p>Rubyを書くこと、RubyKaigiに参加することは、私にとっていろんなことをもたらしてくれた。RubyKaigiが終わっても、Rubyからもらったもの、RubyKaigiからもらったものを、これからRubyに触れる人に少しずつでも渡していけたらいいな、と思っている。</p>

<p>Rubyについて語るとつい感極まりがちになるのでこのへんで。やっとblogに書いたので、私のRubyKaigi2011はこれで終了である。</p>

<p>ところで、どっかで闇RubyKaigiの映像見られたりしないだろうか…。</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/08/06/326/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Amazon Product Advertising APIをRubyで使う</title>
		<link>http://randd.kwappa.net/2011/06/05/318</link>
		<comments>http://randd.kwappa.net/2011/06/05/318#comments</comments>
		<pubDate>Sat, 04 Jun 2011 20:19:28 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=318</guid>
		<description><![CDATA[スキャンした電子書籍を{ISBN}.pdfという名前で溜め込んでおいたら、あとから検索性が悪くて絶望した。一覧ページを作るために、「ISBN 検索 API」でググったところ、Amazonと楽天が有力候補(…というかそれ以外にほとんど存在しない)らしい。 普段から使っていることだしAmazonでいいか…と使ってみたら、いろいろやることがあったので手順をメモっておく。 API開発者登録をする 開発者登録には米国amazon.comのアカウントが必要だ。私は以前DVDを買ったときのがあったのでそれを使ったが、持ってない人は取得しておこう。 アカウントが用意できたら、使いたい国に開発者登録をする。プログラミングガイドにURLがまとまっているので、登録したい国(日本ならここ)に、amazon.comのアカウントでログインする。 Website or Application Description APIを利用するアプリケーションもしくはWebサイトの概要を記入する Check here to indicate &#8230; Amazon.co.jp Product Advertising API ライセンス契約を読み、同意したらチェックする Security Check 画像で表示された読みにくい英数字を入力する すべて入力が終わると完了画面が表示されメールが届くので、メールのリンクからAccess Key IDを取得する。私はログインしたら2009年に作成したキーがあったのでそれを再利用したのだが、当時何を作る気だったのかはまるで覚えていない。 アソシエイトプログラムに登録して鍵ペアを取得すると世界各国のProduct Advertising APIにリクエストを送れるようになるそうだが、ここは省略。 APIにリクエストを投げてみる ASINで一つの商品の情報を取得するには、ItemLookupというオペレーションにリクエストする。サンプル通りリクエストを組み立ててみると… http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&#38; AWSAccessKeyId={ACCESS KEY ID}&#38; Operation=ItemLookup&#38; ItemId=9784048687157 &#60;?xml version=&#34;1.0&#34;?&#62; &#60;ItemLookupErrorResponse xmlns=&#34;http://ecs.amazonaws.com/doc/2005-10-05/&#34;&#62; &#60;Error&#62; &#60;Code&#62;MissingParameter&#60;/Code&#62; &#60;Message&#62;The request must contain the parameter Signature.&#60;/Message&#62; &#60;/Error&#62; &#60;RequestID&#62;********-****-****-****-************&#60;/RequestID&#62; &#60;/ItemLookupErrorResponse&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>スキャンした電子書籍を{ISBN}.pdfという名前で溜め込んでおいたら、あとから検索性が悪くて絶望した。一覧ページを作るために、<a href="http://www.google.co.jp/search?hl=ja&amp;q=isbn+%E6%A4%9C%E7%B4%A2+api" target="_blank">「ISBN 検索 API」でググった</a>ところ、Amazonと楽天が有力候補(…というかそれ以外にほとんど存在しない)らしい。</p>

<p>普段から使っていることだしAmazonでいいか…と使ってみたら、いろいろやることがあったので手順をメモっておく。</p>
<span id="more-318"></span>
<h4>API開発者登録をする</h4>

<p>開発者登録には米国amazon.comのアカウントが必要だ。私は以前DVDを買ったときのがあったのでそれを使ったが、持ってない人は取得しておこう。</p>

<p>アカウントが用意できたら、使いたい国に開発者登録をする。<a href="https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html" target="_blank">プログラミングガイド</a>に<a href="https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html" target="_blank">URLがまとまっている</a>ので、登録したい国(日本なら<a href="https://affiliate-program.amazon.com/gp/flex/advertising/api/sign-in-jp.html" target="_blank">ここ</a>)に、<em>amazon.comのアカウントで</em>ログインする。</p>

<ul>
<li>Website or Application Description
<ul>
<li>APIを利用するアプリケーションもしくはWebサイトの概要を記入する</li>
</ul></li>
<li>Check here to indicate &#8230;
<ul>
<li>Amazon.co.jp Product Advertising API ライセンス契約を読み、同意したらチェックする</li>
</ul></li>
<li>Security Check
<ul>
<li>画像で表示された読みにくい英数字を入力する</li>
</ul></li>
</ul>

<p>すべて入力が終わると完了画面が表示されメールが届くので、メールのリンクからAccess Key IDを取得する。私はログインしたら2009年に作成したキーがあったのでそれを再利用したのだが、当時何を作る気だったのかはまるで覚えていない。</p>

<p>アソシエイトプログラムに登録して鍵ペアを取得すると世界各国のProduct Advertising APIにリクエストを送れるようになるそうだが、ここは省略。</p>

<h4>APIにリクエストを投げてみる</h4>

<p>ASINで一つの商品の情報を取得するには、<a href="https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html?ItemLookup.html" target="_blank">ItemLookup</a>というオペレーションにリクエストする。サンプル通りリクエストを組み立ててみると…</p>

<pre class="code">http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&amp;
AWSAccessKeyId={ACCESS KEY ID}&amp;
Operation=ItemLookup&amp;
ItemId=9784048687157
</pre>

<pre class="code"><span class="tag">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
<span class="tag">&lt;ItemLookupErrorResponse <span class="attr">xmlns=</span><span class="value">&quot;http://ecs.amazonaws.com/doc/2005-10-05/&quot;</span>&gt;</span>
  <span class="tag">&lt;Error&gt;</span>
    <span class="tag">&lt;Code&gt;</span>MissingParameter<span class="tag">&lt;/Code&gt;</span>
    <span class="tag">&lt;Message&gt;</span>The request must contain the parameter Signature.<span class="tag">&lt;/Message&gt;</span>
  <span class="tag">&lt;/Error&gt;</span>
  <span class="tag">&lt;RequestID&gt;</span>********-****-****-****-************<span class="tag">&lt;/RequestID&gt;</span>
<span class="tag">&lt;/ItemLookupErrorResponse&gt;</span></pre>

<p>…あれ？</p>

<p>荒技「エラーメッセージをそのままググる」でヒットするのが<a href="http://seo-love.blogspot.com/2009/08/amazon-web.html" target="_blank">こちら</a>。<a href="https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html?HMACSignatures.html" target="_blank">HMAC-SHA認証</a>が必要だそうだ。</p>

<p>実際にクエリを構築するサンプルは<a href="https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html?rest-signature.html" target="_blank">この辺</a>に。</p>

<h4>ruby-aaws</h4>

<p>理屈はわかったので、実装は既存のものを使うことにする。今回は車輪の再発明はしなくてもいいだろう。ググったら「<a href="https://rubygems.org/gems/ruby-aaws" target="_blank">ruby-aaws</a>」がヒットしたのでこれを使う。</p>

<h5>install</h5>

<p>インストールと使い方は<a href="http://cohakim.wordpress.com/2010/05/04/rails%E3%81%A7ruby-aaws%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6amazon/" target="_blank">こちら</a>を参考に。rubygems.orgに最新バージョンがあがっていないので、<a href="http://www.caliban.org/ruby/ruby-aws/" target="_blank">本家配布元</a>からgemパッケージを落としてきてインストールする。</p>

<pre class="code">% wget http://caliban.org/files/ruby/ruby-aaws-0.8.1.gem
% gem install ruby-aaws-0.8.1 --local
</pre>

<p>ruby-awsという紛らわしい名前のrubygemsもあるので注意。こちらはAmazon Web Servicesの操作をするものなので、今回は関係ない。</p>

<p>ドキュメントはあるにはあるが、あまりちゃんと書かれていないので若干手探りが必要だった。</p>

<h5>.amazonrc</h5>

<p>アクセスに必要な情報は.amazonrcファイルに書き込んでおく。/etc/.amazonrcや~/.amazonrcに書くのが定石だが、今回はアプリケーション内に閉じておきたいので、<a href="http://d.hatena.ne.jp/f-ikesan/20100505/1273075660" target="_blank">こちら</a>を参考に…</p>

<pre class="code">ENV[<span class="str">'AMAZONRCDIR'</span>]  = <span class="str">'/path/to/application_dir'</span>
ENV[<span class="str">'AMAZONRCFILE'</span>] = <span class="str">'.amazonrc'</span></pre>

<p>…とかして位置を指定してやる。中身はこんな感じ。</p>

<pre class="code">
key_id = 'XXXXX'
secret_key_id = 'XXXXX'
associate = 'XXXXX'
cache = false
locale = 'jp'
encoding = 'utf-8'
</pre>

<h5>usage</h5>

<p>今回はスキャンした本のPDF(ファイル名はISBNになっている)を整理したいので…</p>

<ul>
<li>オペレーション「ItemLookup」を使う</li>
<li>ISBNで検索する</li>
</ul>

<p>という方向で実装した。<a href="http://cohakim.wordpress.com/2010/05/04/rails%E3%81%A7ruby-aaws%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6amazon/" target="_blank">こちら</a>が大変参考になった。</p>

<h6>1件検索</h6>

<pre class="code">require <span class="str">'amazon/aws'</span>
require <span class="str">'amazon/aws/search'</span>
include Amazon::AWS

il = ItemLookup.new(<span class="str">'ISBN'</span>, ItemId: <span class="str">'9784048687157'</span>, SearchIndex: <span class="str">'Books'</span>)
request  = Search::Request.new
response = request.search il</pre>

<p>XMLで返ってきたレスポンスにアクセスする手段がruby-aawsによって用意されている(Amazon::AWS::AWSArray)。propertiesでプロパティの一覧が取得でき、プロパティ名で値を取得する。XMLがベースなのでネストしていることもある。</p>

<pre class="code">item = response.item_lookup_response.items.item
item.properties
<span class="rem"># =&gt; [&quot;asin&quot;, &quot;detail_page_url&quot;, &quot;item_links&quot;, &quot;sales_rank&quot;, &quot;small_image&quot;, &quot;medium_image&quot;, &quot;large_image&quot;, &quot;image_sets&quot;, &quot;item_attributes&quot;, &quot;offer_summary&quot;, &quot;offers&quot;, &quot;similar_products&quot;, &quot;browse_nodes&quot;]</span>
item.item_attributes.title
<span class="rem"># =&gt; [メタプログラミングRuby]</span></pre>

<h6>複数検索</h6>

<p>ItemLookup、ItemSearchなどのオペレーションを配列に入れてMultipoeOperationに渡すと、複数のオペレーションを同時に渡すことができる。</p>

<pre class="code">asins = [<span class="str">'9784274065972'</span>,
         <span class="str">'9784756145482'</span>,
         <span class="rem"># '9784798023809',</span>
        ]

operations = asins.map <span class="keyword">do</span> |asin|
  il = ItemLookup.new(<span class="str">'ISBN'</span>, ItemId: asin, SearchIndex: <span class="str">'Books'</span>)
  il
<span class="keyword">end</span>

multiple_operation = MultipleOperation.new operations
request = Search::Request.new
result  = request.search multiple_operation, :ALL_PAGES

result.item_lookup_response.items[<span class="num">0</span>].item.item_attributes.title
<span class="rem"># =&gt; [ハッカーと画家 コンピュータ時代の創造者たち]</span>
result.item_lookup_response.items[<span class="num">1</span>].item.item_attributes.title
<span class="rem"># =&gt; [Winnyの技術]</span>
</pre>

<p>ただし…</p>

<blockquote>
  <p>Amazon::AWS::Error::ExceededMaxBatchRequestsPerOperation: オペレーションごとのバッチリクエスト数の上限を超えました。1つ のオペレーションに入れられるバッチリクエスト数は、最大2です。</p>
</blockquote>

<p>という制限もあるので注意しよう。</p>

<h6>ResponseGroup</h6>

<p>オペレーションのresponse_groupプロパティにResponseGroupオブジェクトを渡すと、取得する内容を指定することができる。</p>

<pre class="code">il = ItemLookup.new(<span class="str">'ISBN'</span>, ItemId: <span class="str">'9784798023809'</span>, SearchIndex: <span class="str">'Books'</span>)
il.response_group = ResponseGroup.new(<span class="str">'ItemAttributes,Images'</span>)
request = Search::Request.new
result  = request.search il
item = response.item_lookup_response.items.item
item.properties
<span class="rem"># =&gt; [&quot;asin&quot;, &quot;detail_page_url&quot;, &quot;item_links&quot;, &quot;small_image&quot;, &quot;medium_image&quot;, &quot;large_image&quot;, &quot;image_sets&quot;, &quot;item_attributes&quot;]</span>
</pre>

<p>どう指定すると何が返ってくるかは<a href="http://wata-jp.ldblog.jp/archives/1579796.html" target="_blank">こちら</a>を参照。</p>

<h4>まとめ</h4>

<p>これでAmazonからISBNで情報を取得できるようになった。あとは一覧ページを自動生成するためにせっせと頑張るだけになったので、今日はこの辺にしておこう。アプリケーションの形になったらGithubで公開予定だ。</p>

<h4>Links</h4>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;nou=1&#038;bg1=000000&#038;fc1=FFFFFF&#038;lc1=639CBF&#038;t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;ref=tf_til&#038;asins=4861007623" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<p><a href="https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html" target="_blank">Product Advertising API</a><br />

https://images-na.ssl-images-amazon.com/images/G/09/associates/paapi/dg/index.html</p>

<p><a href="http://seo-love.blogspot.com/2009/08/amazon-web.html" target="_blank">SEO対策とか: Amazon Web サービス 仕様変更</a><br />

http://seo-love.blogspot.com/2009/08/amazon-web.html</p>

<p><a href="https://rubygems.org/gems/ruby-aaws" target="_blank">ruby-aaws | RubyGems.org | your community gem host</a><br />

https://rubygems.org/gems/ruby-aaws</p>

<p><a href="http://www.caliban.org/ruby/ruby-aws/" target="_blank">RDoc Documentation</a><br />

http://www.caliban.org/ruby/ruby-aws/</p>

<p><a href="http://d.hatena.ne.jp/f-ikesan/20100505/1273075660" target="_blank">Amazon Web Service を Ruby にて操作 &#8211; f-ikesanの日記</a><br />

http://d.hatena.ne.jp/f-ikesan/20100505/1273075660</p>

<p><a href="http://cohakim.wordpress.com/2010/05/04/rails%E3%81%A7ruby-aaws%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6amazon/" target="_blank">Railsでruby-aawsを使ってAmazon « cohakim&apos;s Weblog</a><br />

http://cohakim.wordpress.com/2010/05/04/rails%E3%81%A7ruby-aaws%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6amazon/</p>

</body>
</html>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/06/05/318/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>emacsでMarkdownを書く</title>
		<link>http://randd.kwappa.net/2011/05/31/312</link>
		<comments>http://randd.kwappa.net/2011/05/31/312#comments</comments>
		<pubDate>Tue, 31 May 2011 11:57:24 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=312</guid>
		<description><![CDATA[Makrdownとは、軽量マークアップ言語のひとつである。Wikiの記法をご存知の方は、似たようなものだと思っていただければよい。 GithubのREADMEを書くこともできるし、blog記事を書くにもラクができる。今までこのblogの記事もHTMLを手でちまちま書いていたのだが、いい加減ちゃんとしたツールを使おう、と思い立ち、emacsのmarkdown-modeが使える環境を整えた。 Markdownのインストール Macの場合 # brew install markdown Windowsの場合 Cygwinをインストールする Markdownをダウンロードする アーカイブからMarkdown.plを取り出し、適当な場所に置く markdown-modeのインストール markdown-mode.elをダウンロードし、ロードパスの通った場所に置く emacsの設定ファイルに以下を追記 (load "markdown-mode/markdown-mode.el") (add-to-list 'auto-mode-alist '("\\.markdown$" . markdown-mode)) ;; Windowsの場合Markdown.plを実行できるように以下の設定を追記 (setq markdown-command "perl /path/to/Markdown.pl") perl実行時に怒られたら… perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "JPN" are supported and installed on your system. [...]]]></description>
			<content:encoded><![CDATA[<p>Makrdownとは、軽量マークアップ言語のひとつである。Wikiの記法をご存知の方は、似たようなものだと思っていただければよい。</p>

<p><a href="https://github.com/" target="_blank">Github</a>の<a href="https://github.com/github/markup" target="_blank">README</a>を書くこともできるし、blog記事を書くにもラクができる。今までこのblogの記事もHTMLを手でちまちま書いていたのだが、いい加減ちゃんとしたツールを使おう、と思い立ち、emacsのmarkdown-modeが使える環境を整えた。</p>
<span id="more-312"></span>
<h4>Markdownのインストール</h4>

<h5>Macの場合</h5>

<pre class="code"># brew install markdown</pre>

<h5>Windowsの場合</h5>

<ul>
  <li><a href="http://www.cygwin.com/" target="_blank">Cygwin</a>をインストールする</li>
  <li><a href="http://daringfireball.net/projects/markdown/" target="_blank">Markdownをダウンロード</a>する</li>
  <li>アーカイブからMarkdown.plを取り出し、適当な場所に置く</li>
</ul>

<h4>markdown-modeのインストール</h4>

<ul>
  <li><a href="http://jblevins.org/projects/markdown-mode/" target="_blank">markdown-mode.elをダウンロード</a>し、ロードパスの通った場所に置く</li>
  <li>emacsの設定ファイルに以下を追記</li>
</ul>

<pre class="code">
(load "markdown-mode/markdown-mode.el")
(add-to-list 'auto-mode-alist '("\\.markdown$" . markdown-mode))
;; Windowsの場合Markdown.plを実行できるように以下の設定を追記
(setq markdown-command "perl /path/to/Markdown.pl")
</pre>

<ul>
  <li>perl実行時に怒られたら…</li>
</ul>

<pre class="code">
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LC_ALL = (unset),
    LANG = "JPN"
    are supported and installed on your system.
</pre>

<ul>
  <li>以下の設定を追記</li>
</ul>

<pre class="code">
(setenv "LC_ALL" "C")                   ; perl実行のために環境変数を設定
</pre>

<h4>まとめ</h4>

<p>身の回りに「もっと早くやればよかった」ということが多すぎるので、一つずつ潰していこう。</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/05/31/312/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhoneGapアプリでスプラッシュスクリーンを表示する</title>
		<link>http://randd.kwappa.net/2011/05/27/303</link>
		<comments>http://randd.kwappa.net/2011/05/27/303#comments</comments>
		<pubDate>Fri, 27 May 2011 10:35:38 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[Smartphone]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=303</guid>
		<description><![CDATA[最近はPhoneGapを使ってクロスプラットフォームなスマートフォンアプリを開発している。 iOS / Androidアプリを起動すると、まず1枚の画像が表示される。これをスプラッシュスクリーンという。指定しないと真っ白、もしくはPhoneGapに添付される画像が表示されるのだが、これを独自のものに変える方法をメモっておく。 iOS / Xcode4 iOSの場合はPhoneGapにあまり関係ない。ネーミングルールに従ってファイルを配置するだけだ。 Project navigatorの{app_name}/Resources/splashにpngファイルをドラッグ＆ドロップする ダイアログが出たら必要に応じてCopyをチェックし、OKを押してプロジェクトに追加する FinderなどでCopyしただけでは追加されないので注意。 ファイル名と画像サイズは… iPhone : Default.png (320 x 480) iPhone(Retina) : Default@2x.png (640 x 960) iPad : Default~iPad.png (768 x 1024) 画像サイズが違ってもシミュレータでは普通に表示されるが、実機では表示されないので注意。 Android / Eclipse こちらはPhoneGapの機能を使う。 Package Explorerの{project_name}/res/drawable-hdpiにsplash.pngをドラッグ＆ドロップ ダイアログが出たら必要に応じてCopyをチェックし、OKを押してプロジェクトに追加する gen/{package_name}/R.javaにsplashという定数が追加されるのを確認 src/{package_name}/Activity.java#onCreateにコードを追記する。 public void onCreate(Bundle savedInstance) { super.onCreate(savedInstance) ; // スプラッシュを表示するためのプロパティを設定 super.setIntegerProperty(&#34;splashscreen&#34;, R.drawable.splash) ; // 第2引数に表示する時間をミリ秒で指定 [...]]]></description>
			<content:encoded><![CDATA[<p>最近は<a href="http://www.phonegap.com/" target="_blank">PhoneGap</a>を使ってクロスプラットフォームなスマートフォンアプリを開発している。</p>

<p>iOS / Androidアプリを起動すると、まず1枚の画像が表示される。これをスプラッシュスクリーンという。指定しないと真っ白、もしくはPhoneGapに添付される画像が表示されるのだが、これを独自のものに変える方法をメモっておく。</p>
<span id="more-303"></span>
<h4>iOS / Xcode4</h4>

<p>iOSの場合はPhoneGapにあまり関係ない。ネーミングルールに従ってファイルを配置するだけだ。</p>

<ul>
  <li>Project navigatorの{app_name}/Resources/splashにpngファイルをドラッグ＆ドロップする</li>
  <li>ダイアログが出たら必要に応じてCopyをチェックし、OKを押してプロジェクトに追加する</li>
</ul>

<p>FinderなどでCopyしただけでは追加されないので注意。</p>

<p>ファイル名と画像サイズは…</p>

<ul>
  <li>iPhone : Default.png (320 x 480)</li>
  <li>iPhone(Retina) : Default@2x.png (640 x 960)</li>
  <li>iPad : Default~iPad.png (768 x 1024)</li>
</ul>

<p>画像サイズが違ってもシミュレータでは普通に表示されるが、実機では表示されないので注意。</p>

<h4>Android / Eclipse</h4>

<p>こちらはPhoneGapの機能を使う。</p>

<ul>
  <li>Package Explorerの{project_name}/res/drawable-hdpiにsplash.pngをドラッグ＆ドロップ</li>
  <li>ダイアログが出たら必要に応じてCopyをチェックし、OKを押してプロジェクトに追加する</li>
  <li>gen/{package_name}/R.javaにsplashという定数が追加されるのを確認</li>
  <li>src/{package_name}/Activity.java#onCreateにコードを追記する。</li>
</ul>
<pre class="code">
  <span class="keyword">public</span> <span class="keyword">void</span> onCreate(Bundle savedInstance) {
    <span class="keyword">super</span>.onCreate(savedInstance) ;
    <span class="rem">// スプラッシュを表示するためのプロパティを設定</span>
    <span class="keyword">super</span>.setIntegerProperty(<span class="str">&quot;splashscreen&quot;</span>, R.drawable.splash) ;
    <span class="rem">// 第2引数に表示する時間をミリ秒で指定</span>
    <span class="keyword">super</span>.loadUrl(<span class="str">&quot;file:///android_asset/index.html&quot;</span>, <span class="num">2000</span>) ;
  }
</pre>

<h4>まとめとLinks</h4>

<p>「クロスプラットフォーム」というふざげた幻想をぶち壊しつつ、PhoneGapと戯れる日々を送っている。勉強会をしようという話もあるので、興味ある方は参加されたい。</p>

<p><a href="http://www.phonegap.com/" target="_blank">PhoneGap</a><br />

http://www.phonegap.com/</p>

<p><a href="http://phonegap-fan.com/" target="_blank">PhoneGap Fan &#8211; PhoneGapの日本語コミュニティ</a><br />

http://phonegap-fan.com/</p>

<p><a href="http://blog.assortedgarbage.com/2011/02/adding-a-splash-screen-for-android-using-phonegap/" target="_blank">Assorted GARbage» Blog Archive » Adding a Splash Screen for Android using Phonegap</a><br />

http://blog.assortedgarbage.com/2011/02/adding-a-splash-screen-for-android-using-phonegap/</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/05/27/303/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>「第1回 チキチキ『( ゜ェ゜)・;&#8217;.、ゴフッ」に参加する</title>
		<link>http://randd.kwappa.net/2011/04/26/294</link>
		<comments>http://randd.kwappa.net/2011/04/26/294#comments</comments>
		<pubDate>Tue, 26 Apr 2011 08:14:58 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[StudyGroup]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=294</guid>
		<description><![CDATA[4/25、java-ja主催のデザインパターン勉強会「第1回 チキチキ『( ゜ェ゜)・;&#8217;.、ゴフッ」に参加してきた。 性懲りもなくプレゼン枠にも応募したのだが、直前になって家庭でも職場でも事故が発生し、準備の時間がほとんど取れなかった。その結果、デザインパターンについて発表するのにコードが1行も出てこない、というひどいプレゼンになってしまう。 しかも仕事の都合で出発が遅れ、到着したのは開始から1時間後。担当する「Abstract Factory」は発表順がトップ(アルファベット的な理由で)だったのに、間に合わなかったのでラストに回る事になった。これは非常にヤバい。 …といういろいろ言い訳だらけのプレゼンだけど、スライドはこちら。 AbstractFactory 抽象的な工場View more presentations from kwappa. 発表はニコ生でも中継された。5/2いっぱいはタイムシフト視聴できるので、興味があればどうぞ。 終了後、@t_wadaさんにツッコミをいただいた。「Abstract Factoryの真価はシグネチャを統一できること」「よってLLではあまり価値を持たない」「(私のスライドにおいて)生成するファクトリを決めるのは荒木先生の職務であってはならない」、というもの。そうか、確かにサンプルをRubyで考えていたら、しっくりこなかった。Javaで書くのを自分への宿題にしておこう。 会場となったGREEには、六本木ヒルズに移転してから行くのは初めて。広くてきれいで明るくて、節電に慣れた目にはとてもまぶしかった。さすが自家発電設備を持つビル…。 懇親会でも帰りの電車でも濃い口の話ができて、とても有意義だった。java-jaのみなさん、GREEさん、参加者のみなさん、そして@t_wadaさん、ありがとうございました！ Links 第1回 チキチキ『( ゜ェ゜)・;&apos;.、ゴフッ』 &#8211; [PARTAKE] http://partake.in/events/7d561376-f737-4307-9667-57b6c151e1ef FrontPage &#8211; 天下一java-ja(ββ) http://java-ja.yoshiori.org/ 第1回 チキチキ『( ゜ェ゜)・;&apos;.、ゴフッ』 &#8211; ニコニコ生放送 http://live.nicovideo.jp/gate/lv47747360 Togetter &#8211; 「第1回 チキチキ『( ゜ェ゜)・;&apos;.、ゴフッ』 #javaja_gof」 http://togetter.com/li/128336]]></description>
			<content:encoded><![CDATA[<p>4/25、<a href="http://java-ja.yoshiori.org/" target="_blank">java-ja</a>主催のデザインパターン勉強会「<a href="http://partake.in/events/7d561376-f737-4307-9667-57b6c151e1ef" target="_blank">第1回 チキチキ『( ゜ェ゜)・;&#8217;.、ゴフッ</a>」に参加してきた。</p>

<p>性懲りもなくプレゼン枠にも応募したのだが、直前になって家庭でも職場でも事故が発生し、準備の時間がほとんど取れなかった。その結果、デザインパターンについて発表するのにコードが1行も出てこない、というひどいプレゼンになってしまう。</p>

<p>しかも仕事の都合で出発が遅れ、到着したのは開始から1時間後。担当する「Abstract Factory」は発表順がトップ(アルファベット的な理由で)だったのに、間に合わなかったのでラストに回る事になった。これは非常にヤバい。</p>

<p>…といういろいろ言い訳だらけのプレゼンだけど、スライドはこちら。</p>

<div style="width:425px" id="__ss_7735211"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kwappa/abstractfactory" title="AbstractFactory 抽象的な工場">AbstractFactory 抽象的な工場</a></strong><object id="__sse7735211" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20110425kwappa-110426025859-phpapp01&#038;stripped_title=abstractfactory&#038;userName=kwappa" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7735211" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20110425kwappa-110426025859-phpapp01&#038;stripped_title=abstractfactory&#038;userName=kwappa" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/kwappa">kwappa</a>.</div></div>

<p>発表は<a href="http://live.nicovideo.jp/gate/lv47747360" target="_blank">ニコ生</a>でも中継された。5/2いっぱいはタイムシフト視聴できるので、興味があればどうぞ。</p>
<span id="more-294"></span>
<p>終了後、<a href="http://twitter.com/t_wada" target="_blank">@t_wada</a>さんにツッコミをいただいた。「Abstract Factoryの真価はシグネチャを統一できること」「よってLLではあまり価値を持たない」「(私のスライドにおいて)生成するファクトリを決めるのは荒木先生の職務であってはならない」、というもの。そうか、確かにサンプルをRubyで考えていたら、しっくりこなかった。Javaで書くのを自分への宿題にしておこう。</p>

<p>会場となったGREEには、六本木ヒルズに移転してから行くのは初めて。広くてきれいで明るくて、節電に慣れた目にはとてもまぶしかった。さすが自家発電設備を持つビル…。</p>

<p>懇親会でも帰りの電車でも濃い口の話ができて、とても有意義だった。java-jaのみなさん、GREEさん、参加者のみなさん、そして<a href="http://twitter.com/t_wada" target="_blank">@t_wada</a>さん、ありがとうございました！</p>

<h4>Links</h4>

<p><a href="http://partake.in/events/7d561376-f737-4307-9667-57b6c151e1ef" target="_blank">第1回 チキチキ『( ゜ェ゜)・;&apos;.、ゴフッ』 &#8211; [PARTAKE]</a><br />

http://partake.in/events/7d561376-f737-4307-9667-57b6c151e1ef</p>

<p><a href="http://java-ja.yoshiori.org/" target="_blank">FrontPage &#8211; 天下一java-ja(ββ)</a><br />

http://java-ja.yoshiori.org/</p>

<p><a href="http://live.nicovideo.jp/gate/lv47747360" target="_blank">第1回 チキチキ『( ゜ェ゜)・;&apos;.、ゴフッ』 &#8211; ニコニコ生放送</a><br />

http://live.nicovideo.jp/gate/lv47747360</p>

<p><a href="http://togetter.com/li/128336" target="_blank">Togetter &#8211; 「第1回 チキチキ『( ゜ェ゜)・;&apos;.、ゴフッ』 #javaja_gof」</a><br />

http://togetter.com/li/128336</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/04/26/294/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wasbookのVMをVirtual Boxで動かす</title>
		<link>http://randd.kwappa.net/2011/04/19/287</link>
		<comments>http://randd.kwappa.net/2011/04/19/287#comments</comments>
		<pubDate>Tue, 19 Apr 2011 14:30:03 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Environment]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=287</guid>
		<description><![CDATA[徳丸浩(@ockeghem)さんの著書「体系的に学ぶ 安全なWebアプリケーションの作り方　脆弱性が生まれる原理と対策の実践」(以下「wasbook」)を読んでいる。 添付のCD-ROMに実習環境としてVMWare Playerとディスクイメージが収録されている。しかし、私の手元の環境はMac / WindowsのVirtual Box。新たにインストールするのは面倒なので、ディスクイメージ(.vmdk)をVirtual Boxで読み込んでみた。 といっても手順は特に難しくない。以下作業メモ。 ディスクイメージを取り出す wasbookのCD-ROMから「WASBOOK/WASBOOK.ZIP/WASBOOK/wasbook.vmdk」を適当な場所に展開しておく。ついでにsource/以下も取り出しておこう。 新規VMを作る Virtual Box Managerから新規VMを作成する。 仮想マシン名とOSタイプ 名前：適当に オペレーティングシステム：Linux バージョン：Ubuntu メモリ お好みの量を(いちおう2GB振ってみた) 仮想ハードディスク 「既存のハードディスクを使用」→フォルダアイコンをクリック 先ほど取り出した「wasbook.vmdk」を選択 しばし待つと完了。 ネットワークの設定 起動前にネットワークインタフェースの設定をしておく。 設定→ネットワーク→アダプタ2 「ネットワークアダプタを有効化」をチェック 「割り当て」→「ホストオンリーアダプタ」 仮想マシンを起動し、root/wasbookでログイン。ネットワーク設定を編集し、eth2(ホストオンリーアダプタ)に固定IPアドレスを設定する。 ubuntuのネットワーク設定は以下のファイル。 # /etc/network/interfaces Virtualb Boxだとeth1, eth2になるので、以下のように書き換える。eth2のIPアドレスはお好みで。このIPをhostsに書いておけば名前でアクセスできる。 auto lo iface lo inet loopback auto eth1 iface eth1 inet dhcp auto eth2 iface eth2 inet static [...]]]></description>
			<content:encoded><![CDATA[<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;nou=1&#038;bg1=000000&#038;fc1=FFFFFF&#038;lc1=639CBF&#038;t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;ref=tf_til&#038;asins=4797361190" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<p>徳丸浩(<a href="http://twitter.com/ockeghem" target="_blank">@ockeghem</a>)さんの著書「<a href="http://www.amazon.co.jp/gp/product/4797361190/?tag=bottomline02-22" target="_blank">体系的に学ぶ 安全なWebアプリケーションの作り方　脆弱性が生まれる原理と対策の実践</a>」(以下「wasbook」)を読んでいる。</p>

<p>添付のCD-ROMに実習環境としてVMWare Playerとディスクイメージが収録されている。しかし、私の手元の環境はMac / WindowsのVirtual Box。新たにインストールするのは面倒なので、ディスクイメージ(.vmdk)をVirtual Boxで読み込んでみた。</p>

<br style="clear:both;" />

<p>といっても手順は特に難しくない。以下作業メモ。</p>
<span id="more-287"></span>
<h5>ディスクイメージを取り出す</h5>
    <p>wasbookのCD-ROMから「WASBOOK/WASBOOK.ZIP/WASBOOK/wasbook.vmdk」を適当な場所に展開しておく。ついでにsource/以下も取り出しておこう。</p>

<h5>新規VMを作る</h5>

<p>Virtual Box Managerから新規VMを作成する。</p>

<ul>
  <li>仮想マシン名とOSタイプ
    <ul>
      <li>名前：適当に</li>
      <li>オペレーティングシステム：Linux</li>
      <li>バージョン：Ubuntu</li>
    </ul>
  </li>
  <li>メモリ
    <ul>
      <li>お好みの量を(いちおう2GB振ってみた)</li>
    </ul>
  </li>
  <li>仮想ハードディスク
    <ul>
      <li>「既存のハードディスクを使用」→フォルダアイコンをクリック</li>
      <li>先ほど取り出した「wasbook.vmdk」を選択</li>
    </ul>
  </li>
</ul>

<p>しばし待つと完了。</p>

<h5>ネットワークの設定</h5>

<p>起動前にネットワークインタフェースの設定をしておく。</p>
<ul>
  <li>設定→ネットワーク→アダプタ2
    <ul>
      <li>「ネットワークアダプタを有効化」をチェック</li>
      <li>「割り当て」→「ホストオンリーアダプタ」</li>
    </ul>
  </li>
</ul>

<p>仮想マシンを起動し、root/wasbookでログイン。ネットワーク設定を編集し、eth2(ホストオンリーアダプタ)に固定IPアドレスを設定する。</p>

<p>ubuntuのネットワーク設定は以下のファイル。</p>

<pre class="code">
# /etc/network/interfaces
</pre>

<p>Virtualb Boxだとeth1, eth2になるので、以下のように書き換える。eth2のIPアドレスはお好みで。このIPをhostsに書いておけば名前でアクセスできる。</p>

<pre class="code">
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet dhcp

auto eth2
iface eth2 inet static
address 192.168.56.108
netmask 255.255.255.0
</pre>

<p>ホストオンリーアダプタ(ホスト→ゲストへの接続で使用)もDHCPによる動的IPアドレス割り当てでかまわない場合は、eth1と同様「iface eth2 inet dhcp」とだけ記述すればよい。</p>

<p>ネットワークを再起動すると反映される。</p>

<pre class="code">
# /etc/init.d/networking restart
# ifconfig -a
</pre>

<h4>関連アプリケーションのインストール</h4>

<p>リクエスト / レスポンスを見るために、Windows環境ではfiddlerをインストールする。</p>

<p><a href="http://www.fiddler2.com/fiddler2/" target="_blank">Fiddler Web Debugger &#8211; A free web debugging tool</a><br />

http://www.fiddler2.com/fiddler2/</p>

<p>Mac版は存在しないので、WireSharkを入れておくのがいいだろう。</p>

<p><a href="http://www.wireshark.org/" target="_blank">Wireshark · Go deep.</a><br />

http://www.wireshark.org/</p>

<h4>おわりに</h4>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;nou=1&#038;bg1=000000&#038;fc1=FFFFFF&#038;lc1=639CBF&#038;t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;ref=tf_til&#038;asins=4797361190" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

<p>ボリュームがある本なので大変だが、手を動かしながらちゃんと身につけていきたいところである。</p>
<br style="clear:both;" />
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/04/19/287/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【108番目のきのこ】転職の準備をしよう【新卒準備】</title>
		<link>http://randd.kwappa.net/2011/03/24/274</link>
		<comments>http://randd.kwappa.net/2011/03/24/274#comments</comments>
		<pubDate>Thu, 24 Mar 2011 03:50:45 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Text]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=274</guid>
		<description><![CDATA[この記事は「新卒準備カレンダー 2011春」および「108番目のきのこを生やす会」への参加記事です。 はじめに 2011年3月11日に発生した「東日本大震災」に被災された方に、心からお見舞い申し上げます。いつもの毎日が、一日も早く戻りますように。 お前、誰よ？ だいぶ歳を食ったプログラマです。来年(2012年)には不惑を迎えますが、いまだに惑いまくり。 職歴 フリーターをしていたらなぜかゲーム業界に入り、家庭用ゲームの制作を8年ちょっと(前半4年は企画職、後半4年はプログラマ)。結婚を機に転職し、数度の転職を経て、いまはCP(コンテンツプロバイダ)でプログラマをしています。 プログラミング歴 中学生の頃に8bitマイコン(X1 turbo)でBASICを触りました。しばらく空白があったのち、ISDNの時代には趣味でperlやPHP。ゲーム屋ではC/C++やJava。転職後はC/C++、PHP、Java、C#など。今は主にRubyを書いています。 で、何が言いたいの？ 自己紹介を読んでいただくとうすうす察しはつくと思いますが、大学には行ってないし新卒で就職したこともありません。なので、新卒について語れることはほとんどないのですが…そこは「自重はダークサイド」という言葉もありますし。IT業界にこれから入る新卒のみなさんに、新卒の経験「以外」でお話しできることを書こうと思います。 転職の準備をしよう これから新入社員になるみなさんに、いきなり転職の話をします。ちょっとした暴挙とも言えますが、おつきあいいただければ幸いです。 終身雇用制度の終わり 終身雇用制度は崩壊した、という話を、どこかで見聞きしたことはないでしょうか。 少し前の日本では、新卒で就職した会社に定年まで勤めることが当たり前でした。40年ほど働き、退職金と年金をもらい、老後はのんびり暮らす。それが普通のキャリアパスだったのです。 しかし、この20年で社会情勢は大きく変わりました。高度成長のあと「失われた20年」と言われる時期があり、さらにこの大震災です。復興のために、社会の変化はさらに加速していくでしょう。 そんな時代に新入社員となる皆さんは、40年後も同じ会社で働いているご自身の姿を想像できますか？「アタリマエ」か、それとも「アリエナイ」か。少し考えてみてください。 「アリエナイ」な人へ 今度入社する会社に、定年まで勤務するとは思えない。そう考えるあなたは、遅かれ早かれ「転職」というイベントを迎えることになるでしょう。 私の経験から、転職の準備は「早い方がいい」と断言できます。将来転職する見通しがあるなら、明日から準備を始めましょう。 「転職の準備」といっても、いきなり人材エージェントにコンタクトするわけではありません。転職するためにはまず… 転職市場が求めている人材やスキルを把握する 自分をアピールできる材料を揃える …ことが必要です。どちらも時間があれば入念な準備ができるのは自明ですね。 「アタリマエ」な人へ うらやましいですね。転職には大なり小なりリスクがあるので、しないですむならそれにこしたことはありません。 でも、会社を移る時のほかに、「自分をアピールする場面」はないのでしょうか？ たとえば、あなたの会社で新しいプロジェクトが立ち上がったとします。とても面白そうで、やりがいもありそう。あなたは「ぜひ参画したい」と思いました。 そんなプロジェクトなら、きっと同僚のみんなも参画したいでしょう。希望どおりにアサインされるためには、いかに自分のスキルがそのプロジェクトに役立つかをアピールする必要が出てきたりしないでしょうか。 また、どんなスキルが必要とされているかを知っておくことも無駄にはなりません。転職市場で必要とされているスキルなら、会社で取り組む案件でも必要とされる可能性は高いでしょう。 敵を知り、己を知れば どうやら転職するにしてもしないにしても、「転職の準備」をしておくことは無駄にならないようです。ではその「準備」について、具体的に書いてみましょう。 転職市場が求めている人材やスキルを把握する あなたに素晴らしいスキルがあったとしても、それを活かせる仕事がなければ宝の持ち腐れです。また、市場が求めているスキルは、そのまま「現在注目されている技術」と言い換えることもできます。 今どんなスキルが求められているかを知ることは、自分に不足しているところを補ったり、得意な部分を伸ばしたりするのにとても有益な指標になります。 IT系のwebメディアやblog、さらに「転職サイトそのもの」を見る習慣をつけると、現在求められているスキルとは何かが見えてくるはずです。 自分をアピールできる材料を揃える ITエンジニアが転職活動をする場合、一番多いのは人材エージェントを介するケースでしょう。転職サイトなどを通じて人材エージェントにコンタクトし、スキルシート(職務経歴書)を作り、それを求人している企業に送り、書類選考→面接→採用、という流れが一般的です。 この「スキルシートを作る」ということが、アピール材料を作る第一歩として役立ちます。 スキルシートとは、今までやってきた仕事とその中で得た経験やスキルを一覧にして、読み手に「この人は何ができるのか」を伝えるためのものです。仕事について自分をアピールするためにはほぼ必須のドキュメントと言えるでしょう。 さらにスキルシートを書くことは、自分のキャリアをふりかえり、スキルの棚卸しをすることも兼ねています。先ほどの「敵を知る」が実行できていれば、スキルシートを作成しているうちに、次に学ぶべきトピックに気づくこともあるでしょう。 アピールをしよう ここまで、転職をするにしてもしないにしても、「市場調査」と「自己アピール」が必要だ、というお話をしてきました。そのうちの「自己アピール」について、もう少し掘り下げてみます。 スキルシートの次にすべきこと スキルシートはあくまでも過去の経験をまとめたものです。もちろん自己アピールのためには大事なドキュメントですが、限られた紙面で十分なアピールができるか？といえば、十分ではないことがほとんどです。 ではスキルシートができたら、次に何をすべきか。それは「普段の行いをアウトプットする」ことです。 みなさんはtwitterアカウントはお持ちでしょうか。facebookは？はてなは？githubは？また、自分のblogは？ これらソーシャルメディアへ、普段の行いをアウトプットしておくことが、自己アピールにおいては強力な武器になります。 直面した問題とその解決をblogに書いておくことで、スキルシートより雄弁に自分のスキルをアピールすることができます。普段考えたことをtwitterに書いていれば、人間性についての判断材料にできます。githubでコードを公開していれば、直接力量を見せることもできるでしょう。 これらのアウトプットが充実してくれば、やがてスキルシートに書くべきことは、各種メディアのURLだけになるでしょう。 アウトプットすることによる学び また、アウトプットすることは、自分のスキルを磨くことにもつながります。 [...]]]></description>
			<content:encoded><![CDATA[<p>この記事は「<a href="http://atnd.org/events/13324" target="_blank">新卒準備カレンダー 2011春</a>」および「<a href="http://atnd.org/events/11274" target="_blank">108番目のきのこを生やす会</a>」への参加記事です。</p>

<hr size="50%" />

<h4>はじめに</h4><a href="http://udoyoshi.com/blog/?p=3815#more-3815" target="_blank">
<img alt="がんばろう日本" src="http://udoyoshi.com/blog/wp-content/uploads/Fight_Japan_hinomaru-300x205.jpg" title="がんばろう日本" class="alignright" width="300" height="205" /></a>
<p>2011年3月11日に発生した「東日本大震災」に被災された方に、心からお見舞い申し上げます。いつもの毎日が、一日も早く戻りますように。</p>

<h5 style="clear:both;">お前、誰よ？</h5>

<p>だいぶ歳を食ったプログラマです。来年(2012年)には不惑を迎えますが、いまだに惑いまくり。</p>

<h6>職歴</h6>

<p>フリーターをしていたらなぜかゲーム業界に入り、家庭用ゲームの制作を8年ちょっと(前半4年は企画職、後半4年はプログラマ)。結婚を機に転職し、数度の転職を経て、いまはCP(コンテンツプロバイダ)でプログラマをしています。</p>

<h6>プログラミング歴</h6>

<p>中学生の頃に8bitマイコン(X1 turbo)でBASICを触りました。しばらく空白があったのち、ISDNの時代には趣味でperlやPHP。ゲーム屋ではC/C++やJava。転職後はC/C++、PHP、Java、C#など。今は主にRubyを書いています。</p>

<h6>で、何が言いたいの？</h6>

<p>自己紹介を読んでいただくとうすうす察しはつくと思いますが、大学には行ってないし新卒で就職したこともありません。なので、新卒について語れることはほとんどないのですが…そこは「<a href="http://d.hatena.ne.jp/gothedistance/20110319/1300506934" target="_blank">自重はダークサイド</a>」という言葉もありますし。IT業界にこれから入る新卒のみなさんに、新卒の経験「以外」でお話しできることを書こうと思います。</p>

<h4>転職の準備をしよう</h4>

これから新入社員になるみなさんに、いきなり転職の話をします。ちょっとした暴挙とも言えますが、おつきあいいただければ幸いです。

<span id="more-274"></span>

<h5>終身雇用制度の終わり</h5>

<p>終身雇用制度は崩壊した、という話を、どこかで見聞きしたことはないでしょうか。</p>

<p>少し前の日本では、新卒で就職した会社に定年まで勤めることが当たり前でした。40年ほど働き、退職金と年金をもらい、老後はのんびり暮らす。それが普通のキャリアパスだったのです。</p>

<p>しかし、この20年で社会情勢は大きく変わりました。高度成長のあと「失われた20年」と言われる時期があり、さらにこの大震災です。復興のために、社会の変化はさらに加速していくでしょう。</p>

<p>そんな時代に新入社員となる皆さんは、40年後も同じ会社で働いているご自身の姿を想像できますか？「アタリマエ」か、それとも「アリエナイ」か。少し考えてみてください。</p>

<h6>「アリエナイ」な人へ</h6>

<p>今度入社する会社に、定年まで勤務するとは思えない。そう考えるあなたは、遅かれ早かれ「転職」というイベントを迎えることになるでしょう。</p>

<p>私の経験から、転職の準備は「早い方がいい」と断言できます。将来転職する見通しがあるなら、明日から準備を始めましょう。</p>

<p>「転職の準備」といっても、いきなり人材エージェントにコンタクトするわけではありません。転職するためにはまず…</p>

<ul>
  <li>転職市場が求めている人材やスキルを把握する</li>
  <li>自分をアピールできる材料を揃える</li>
</ul>

<p>…ことが必要です。どちらも時間があれば入念な準備ができるのは自明ですね。</p>

<h6>「アタリマエ」な人へ</h6>

<p>うらやましいですね。転職には大なり小なりリスクがあるので、しないですむならそれにこしたことはありません。</p>

<p>でも、会社を移る時のほかに、「自分をアピールする場面」はないのでしょうか？</p>

<p>たとえば、あなたの会社で新しいプロジェクトが立ち上がったとします。とても面白そうで、やりがいもありそう。あなたは「ぜひ参画したい」と思いました。</p>

<p>そんなプロジェクトなら、きっと同僚のみんなも参画したいでしょう。希望どおりにアサインされるためには、いかに自分のスキルがそのプロジェクトに役立つかをアピールする必要が出てきたりしないでしょうか。</p>

<p>また、どんなスキルが必要とされているかを知っておくことも無駄にはなりません。転職市場で必要とされているスキルなら、会社で取り組む案件でも必要とされる可能性は高いでしょう。</p>

<h5>敵を知り、己を知れば</h5>

<p>どうやら転職するにしてもしないにしても、「転職の準備」をしておくことは無駄にならないようです。ではその「準備」について、具体的に書いてみましょう。</p>

<h6>転職市場が求めている人材やスキルを把握する</h6>

<p>あなたに素晴らしいスキルがあったとしても、それを活かせる仕事がなければ宝の持ち腐れです。また、市場が求めているスキルは、そのまま「現在注目されている技術」と言い換えることもできます。</p>

<p>今どんなスキルが求められているかを知ることは、自分に不足しているところを補ったり、得意な部分を伸ばしたりするのにとても有益な指標になります。</p>

<p>IT系のwebメディアやblog、さらに「転職サイトそのもの」を見る習慣をつけると、現在求められているスキルとは何かが見えてくるはずです。</p>

<h6>自分をアピールできる材料を揃える</h6>

<p>ITエンジニアが転職活動をする場合、一番多いのは人材エージェントを介するケースでしょう。転職サイトなどを通じて人材エージェントにコンタクトし、スキルシート(職務経歴書)を作り、それを求人している企業に送り、書類選考→面接→採用、という流れが一般的です。</p>

<p>この「スキルシートを作る」ということが、アピール材料を作る第一歩として役立ちます。</p>

<p>スキルシートとは、今までやってきた仕事とその中で得た経験やスキルを一覧にして、読み手に「この人は何ができるのか」を伝えるためのものです。仕事について自分をアピールするためにはほぼ必須のドキュメントと言えるでしょう。</p>

<p>さらにスキルシートを書くことは、自分のキャリアをふりかえり、スキルの棚卸しをすることも兼ねています。先ほどの「敵を知る」が実行できていれば、スキルシートを作成しているうちに、次に学ぶべきトピックに気づくこともあるでしょう。</p>

<h5>アピールをしよう</h5>

<p>ここまで、転職をするにしてもしないにしても、「市場調査」と「自己アピール」が必要だ、というお話をしてきました。そのうちの「自己アピール」について、もう少し掘り下げてみます。</p>

<h6>スキルシートの次にすべきこと</h6>

<p>スキルシートはあくまでも過去の経験をまとめたものです。もちろん自己アピールのためには大事なドキュメントですが、限られた紙面で十分なアピールができるか？といえば、十分ではないことがほとんどです。</p>

<p>ではスキルシートができたら、次に何をすべきか。それは「普段の行いをアウトプットする」ことです。</p>

<p>みなさんはtwitterアカウントはお持ちでしょうか。facebookは？はてなは？githubは？また、自分のblogは？</p>

<p>これらソーシャルメディアへ、普段の行いをアウトプットしておくことが、自己アピールにおいては強力な武器になります。</p>

<p>直面した問題とその解決をblogに書いておくことで、スキルシートより雄弁に自分のスキルをアピールすることができます。普段考えたことをtwitterに書いていれば、人間性についての判断材料にできます。githubでコードを公開していれば、直接力量を見せることもできるでしょう。</p>

<p>これらのアウトプットが充実してくれば、やがてスキルシートに書くべきことは、各種メディアのURLだけになるでしょう。</p>

<h6>アウトプットすることによる学び</h6>

<p>また、アウトプットすることは、自分のスキルを磨くことにもつながります。</p>

<p>人間誰しも見栄の心はありますから、自分のblogに間違ったことは書きたくないでしょう。そのためには、書いたコードや解決策を再度確認することになります。この「ふりかえり」の作業が、経験を確かな「知識」として定着させてくれます。</p>

<p>また、間違ったことを書いてしまったとしても、公開することでツッコミがもらえるかもしれません。間違いを指摘されると恥ずかしい気持ちになりますが、間違ったまま時間が過ぎることのほうを恐れるべきです。いただいたツッコミもまた、成長するための貴重な資源となるでしょう。</p>

<p>自己アピールを意識しながらアウトプットすると、自分のスキルも磨かれていく。そういうよいサイクルを回せるようになると、皆さん自身にとっても社会全体にもプラスになり、「幸せの総量」が増えることになるのです。</p>

<h4>おわりに</h4>

 <p>長々とおつきあいいただきありがとうございました。みなさんが社会人として踏み出す第一歩が明るいものでありますように。そして、どこかの勉強会でお会いできるのを楽しみにしています。</p>

<h5>まとめ</h5>

<ul>
    <li>転職の準備とは「自己アピール」の準備である</li>
    <li>市場調査とスキルの棚卸しをしよう</li>
    <li>アウトプットすることで「自己アピール」と「スキルアップ」をしよう</li>
</ul>

<h5>Links</h5>

<iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;nou=1&#038;bg1=000000&#038;fc1=FFFFFF&#038;lc1=00FF00&#038;t=bottomline02-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;ref=tf_til&#038;asins=4873114799" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" ></iframe>

<p><a href="http://atnd.org/events/13324" target="_blank">新卒準備カレンダー 2011春 : ATND</a><br />

http://atnd.org/events/13324</p>

<p><a href="http://atnd.org/events/11274" target="_blank">108番目のきのこを生やす会 : ATND</a><br />

http://atnd.org/events/11274</p>

<p><a href="http://el.jibun.atmarkit.co.jp/wifehacks/2010/01/post-3b69.html" target="_blank">Wife Hacks ～仕事と家族とコミュニティと～: 書類審査で落とされない「職務経歴書の書き方」</a><br />

http://el.jibun.atmarkit.co.jp/wifehacks/2010/01/post-3b69.html</p>

<p><a href="http://amzn.to/fqBF5H"
target="_blank">Amazon.co.jp： プログラマが知るべき97のこと: 和田 卓人, Kevlin Henney, 夏目 大: 本</a><br />

http://amzn.to/fqBF5H</p>

<h5 style="clear:both;">次回予告</h5>

<p>次は<a href="http://twitter.com/rokujyouhitoma" target="_blank">@rokujyouhitoma</a>さんです。よろしくお願いします！</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/03/24/274/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>emacs23に乗り換える(GUI編)</title>
		<link>http://randd.kwappa.net/2011/03/10/258</link>
		<comments>http://randd.kwappa.net/2011/03/10/258#comments</comments>
		<pubDate>Thu, 10 Mar 2011 04:51:38 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=258</guid>
		<description><![CDATA[いがいがさんがcocoa emacsに乗り換えた記事を公開されてからはや3か月。ようやっと私もcarbonからcocoaに乗り換えた。 ついでにNTEmacs環境も整備して.emacs.d/以下を大掃除したので、メモとしてエントリを残しておく。 【追記】環境は… emacs 23.2 Mac OS X 10.6.6 (Snow Leopard) Windows7 64bit 記事を公開したその日にemacs 23.3がリリースされてしまったので、こちらもあわせてチェックしたい。 install cocoa emacs (mac) cocoa emacsにはtypesterさんのパッチ2種(フルスクリーンの問題 / 日本語入力中のshiftキーの問題)を当てるのが定石になっている。 インストールにはhomebrewを使った。brew updateで用意されるformula(emacs.rb)には前述のパッチ2種のうち、フルスクリーン問題のものは含まれているが、shiftキー問題のものは含まれていない。 単にパッチのURLを足すだけなので、formulaを自分で書き換えて対応した。gistに貼っておいたので参考にされたい。 あとはインストールするだけ。完成したアプリケーションパッケージは/Applicationsに移動しておく。 % brew install emacs --cocoa (snip) % mv /usr/local/Cellar/emacs/23.2/Emacs.app/ /Applications/ NTEmacs (windows) 環境変数$HOMEを用意する。「システムのプロパティ」→「詳細設定」→「環境変数」→「ユーザ環境変数」に、変数：「HOME」 / 値：「C:\home」のように指定しておく。 gnupackからビルド済みバイナリをダウンロード / 展開して、bin/runemacs.exeを実行する。 .emacs.d こちらを参考にディレクトリを構成した。 .emacs.d ├── config │   ├── builtins.el │   [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/igaiga555" target="_blank">いがいが</a>さんが<a href="http://igarashikuniaki.net/tdiary/20101230.html" target="_blank">cocoa emacsに乗り換えた記事</a>を公開されてからはや3か月。ようやっと私もcarbonからcocoaに乗り換えた。</p>

<p>ついでにNTEmacs環境も整備して.emacs.d/以下を大掃除したので、メモとしてエントリを残しておく。</p>

<p>【追記】環境は…
<ul>
<li>emacs 23.2</li>
<li>Mac OS X 10.6.6 (Snow Leopard)</li>
<li>Windows7 64bit</li>
</ul>
記事を公開したその日に<a href="http://www.gnu.org/software/emacs/#Releases" target="_blank">emacs 23.3がリリース</a>されてしまったので、こちらもあわせてチェックしたい。
</p>

<span id="more-258"></span>
<h4>install</h4>

<h5>cocoa emacs (mac)</h5>

<p>cocoa emacsには<a href="http://twitter.com/typester" target="_blank">typester</a>さんの<a href="https://github.com/typester/emacs/downloads" target="_blank">パッチ2種</a>(フルスクリーンの問題 / 日本語入力中のshiftキーの問題)を当てるのが定石になっている。</p>

<p>インストールにはhomebrewを使った。brew updateで用意されるformula(emacs.rb)には前述のパッチ2種のうち、フルスクリーン問題のものは含まれているが、shiftキー問題のものは含まれていない。</p>

<p>単にパッチのURLを足すだけなので、formulaを自分で書き換えて対応した。<a href="https://gist.github.com/861826" target="_blank">gistに貼っておいた</a>ので参考にされたい。</p>

<p>あとはインストールするだけ。完成したアプリケーションパッケージは/Applicationsに移動しておく。</p>

<pre class="code">
% brew install emacs --cocoa
(snip)
% mv /usr/local/Cellar/emacs/23.2/Emacs.app/ /Applications/
</pre>

<h5>NTEmacs (windows)</h5>

<p>環境変数$HOMEを用意する。「システムのプロパティ」→「詳細設定」→「環境変数」→「ユーザ環境変数」に、変数：「HOME」 / 値：「C:\home」のように指定しておく。</p>

<p><a href="http://gnupack.sourceforge.jp/docs/current/UsersGuide_download.html#_download_emacs" target="_blank">gnupack</a>からビルド済みバイナリをダウンロード / 展開して、bin/runemacs.exeを実行する。</p>

<h4>.emacs.d</h4>

<p><a href="http://www.clear-code.com/blog/2011/2/16.html" target="_blank">こちら</a>を参考にディレクトリを構成した。</p>

<pre class="code">
.emacs.d
├── config
│   ├── builtins.el
│   └── packages.el
├── env
│   ├── cocoa.el
│   └── ntemacs.el
├── init.el
└── packages
</pre>

<p>.emacs.d以下は<strike>近いうちに</strike><a href="https://github.com/kwappa/emacs" target="_blank">githubにあげてある</a><strike>る予定だ</strike>。</p>

<p>個人的に工夫しているのは、複数の環境を渡り歩くためにenvディレクトリを作成したこと。init.elの末尾で環境を判別し、env/{env_name}.elを読み込んでいる。</p>

    <pre class="src">
<span class="comment-delimiter">;; </span><span class="comment">system-type predicates
</span>(setq darwin-p  (eq system-type 'darwin)
      ns-p      (eq window-system 'ns)
      carbon-p  (eq window-system 'mac)
      linux-p   (eq system-type 'gnu/linux)
      cygwin-p  (eq system-type 'cygwin)
      nt-p      (eq system-type 'windows-nt)
      meadow-p  (<span class="keyword">featurep</span> '<span class="constant">meadow</span>)
      windows-p (or cygwin-p nt-p meadow-p))

<span class="comment-delimiter">;; </span><span class="comment">Mac - cocoa
</span>(<span class="keyword">when</span> ns-p
  (<span class="keyword">progn</span>
    (load <span class="string">"env/cocoa.el"</span>)
  ))
<span class="comment-delimiter">;; </span><span class="comment">Windows - ntemacs
</span>(<span class="keyword">when</span> nt-p
  (<span class="keyword">progn</span>
    (load <span class="string">"env/ntemacs.el"</span>)
  ))
</pre>

<h4>configuration</h4>

<p>以下、いくつかハマったポイントについて個別にメモしておく。</p>

<h5>Windows7固有の問題</h5>

<h6>フォント設定</h6>

<p><a href="http://ameblo.jp/tonjiru2121/entry-10488500864.html" target="_blank">こちら</a>をほぼそのままコピーしてフォント名だけ変えてある。</p>

<pre class="src">
(set-face-attribute 'default nil
                    <span class="builtin">:family</span> <span class="string">"Droid Sans Mono Slashed"</span>
                    <span class="builtin">:height</span> 80)
(set-fontset-font <span class="string">"fontset-default"</span>
                  'japanese-jisx0213-1
                  '(<span class="string">"&#65325;&#65331; &#12468;&#12471;&#12483;&#12463;"</span> . <span class="string">"unicode-bmp"</span>))
(set-fontset-font <span class="string">"fontset-default"</span>
                  'japanese-jisx0213-2
                  '(<span class="string">"&#65325;&#65331; &#12468;&#12471;&#12483;&#12463;"</span> . <span class="string">"unicode-bmp"</span>))
(set-fontset-font <span class="string">"fontset-default"</span>
                  'japanese-jisx0213-a
                  '(<span class="string">"&#65325;&#65331; &#12468;&#12471;&#12483;&#12463;"</span> . <span class="string">"unicode-bmp"</span>))
(set-fontset-font <span class="string">"fontset-default"</span>
                  'japanese-jisx0208
                  '(<span class="string">"&#65325;&#65331; &#12468;&#12471;&#12483;&#12463;"</span> . <span class="string">"jisx0208-sjis"</span>))
(set-fontset-font <span class="string">"fontset-default"</span>
                  'katakana-jisx0201
                  '(<span class="string">"&#65325;&#65331; &#12468;&#12471;&#12483;&#12463;"</span> . <span class="string">"jisx0201-katakana"</span>))
(add-to-list 'face-font-rescale-alist '(<span class="string">".*&#65325;&#65331; &#12468;&#12471;&#12483;&#12463;.*"</span> . 1.2))
</pre>

<p>face-font-rescale-alistは少しトライ＆エラーが必要かもしれない。</p>

<h5>フォントのアンチエイリアシングの問題</h5>

<p>Macではアンチエイリアスの効いた描画で使っているが、NTEmacsでは長らくMSゴシックのビットマップ表示で使っていた。Windows7(64bit)でもアンチエイリアス描画させるには、<a href="http://code.google.com/p/gdipp/" title="">gdipp</a>というソフトウェアを使う。</p>

<p>gdippはインストール時に「Shortcut」を選択し、デスクトップにプログラムローダのアイコンを作ってもらう。そのアイコン(32bitの方)にbin/emacs.exeをドラッグ＆ドロップすると、アンチエイリアスをかけて描画されるようになる。</p>

<p>ただし、runemacs.exeを経由していないのでよけいなコンソールが表示されてしまう、という問題が残る。探してみたところ<a href="http://applause.elfmimi.jp/diary/m201009.shtml#20211534" target="_blank">こちら</a>ではNTEmacs専用のgdipp_loader_32.exeをビルドして使っていた。</p>

<p>手元のWindowsにはVisual Studioが入っていないこと、MSゴシックをアンチエイリアス描画しても美しくないことがが理由で、今回はgdippの利用を見送ることにした。</p>

<h6>cygwinのgitでgithubにアクセスするときの問題</h6>

<p><a href="http://www.clear-code.com/blog/2011/2/16.html" target="_blank">おすすめ設定</a>で紹介されていたパッケージインストーラをいただいて使っているのだが、NTEmacsでgithubからインストールしようとするとエラーが出る。原因はSSLの証明書がないため、curl / wgetがSSLでアクセスできないため。</p>

<p>消極的な対策だが、gitのオプションで「証明書のチェックをしない」と設定することで回避した。参考にしたのは<a href="http://d.hatena.ne.jp/gnarl/20101105/1288940077" target="_blank">こちら</a>。</p>

<pre class="code">
% git config --global http.sslVerify false
</pre>

<h5>Mac固有の問題</h5>

<h6>フォント設定</h6>

<p><a href="http://d.hatena.ne.jp/setoryohei/20110117/1295336454" target="_blank">こちら</a>をまるっと参考に、ASCIIフォントはDroid Sans Slashedにした。日本語はosakaにしたい気持ちだったのだけど、文字の高さがだいぶ違ってバランスが悪いから断念。慣れたらヒラギノ丸ゴもいいもんだ。</p>

<pre lang="lisp">
<span class="comment-delimiter">;; </span><span class="comment">&#12501;&#12457;&#12531;&#12488;&#12475;&#12483;&#12488;&#12434;&#20316;&#12427;
</span>(<span class="keyword">let*</span> ((fontset-name <span class="string">"myfonts"</span>) <span class="comment-delimiter">; </span><span class="comment">&#12501;&#12457;&#12531;&#12488;&#12475;&#12483;&#12488;&#12398;&#21517;&#21069;
</span>       (size 12) <span class="comment-delimiter">; </span><span class="comment">ASCII&#12501;&#12457;&#12531;&#12488;&#12398;&#12469;&#12452;&#12474; [9/10/12/14/15/17/19/20/...]
</span>       (asciifont <span class="string">"Droid Sans Mono Slashed"</span>) <span class="comment-delimiter">; </span><span class="comment">ASCII&#12501;&#12457;&#12531;&#12488;
</span>       (jpfont <span class="string">"Hiragino Maru Gothic ProN"</span>) <span class="comment-delimiter">; </span><span class="comment">&#26085;&#26412;&#35486;&#12501;&#12457;&#12531;&#12488;
</span>       (font (format <span class="string">"%s-%d:weight=normal:slant=normal"</span> asciifont size))
       (fontspec (font-spec <span class="builtin">:family</span> asciifont))
       (jp-fontspec (font-spec <span class="builtin">:family</span> jpfont)) 
       (fsn (create-fontset-from-ascii-font font nil fontset-name)))
  (set-fontset-font fsn 'japanese-jisx0213.2004-1 jp-fontspec)
  (set-fontset-font fsn 'japanese-jisx0213-2 jp-fontspec)
  (set-fontset-font fsn 'katakana-jisx0201 jp-fontspec) <span class="comment-delimiter">; </span><span class="comment">&#21322;&#35282;&#12459;&#12490;
</span>  (set-fontset-font fsn '(#x0080 . #x024F) fontspec) <span class="comment-delimiter">; </span><span class="comment">&#20998;&#38899;&#31526;&#20184;&#12365;&#12521;&#12486;&#12531;
</span>  (set-fontset-font fsn '(#x0370 . #x03FF) fontspec) <span class="comment-delimiter">; </span><span class="comment">&#12462;&#12522;&#12471;&#12515;&#25991;&#23383;
</span>  )

(add-to-list 'default-frame-alist '(font . <span class="string">"fontset-myfonts"</span>))

<span class="comment-delimiter">;; </span><span class="comment">&#12501;&#12457;&#12531;&#12488;&#12469;&#12452;&#12474;&#12398;&#27604;&#12434;&#35373;&#23450;
</span>(<span class="keyword">dolist</span> (elt '((<span class="string">"^-apple-hiragino.*"</span> . 1.2)
               (<span class="string">".*osaka-bold.*"</span> . 1.2)
               (<span class="string">".*osaka-medium.*"</span> . 1.2)
               (<span class="string">".*courier-bold-.*-mac-roman"</span> . 1.0)
               (<span class="string">".*monaco cy-bold-.*-mac-cyrillic"</span> . 0.9)
               (<span class="string">".*monaco-bold-.*-mac-roman"</span> . 0.9)))
  (add-to-list 'face-font-rescale-alist elt))

<span class="comment-delimiter">;; </span><span class="comment">&#12487;&#12501;&#12457;&#12523;&#12488;&#12398;&#12501;&#12524;&#12540;&#12512;&#12497;&#12521;&#12513;&#12540;&#12479;&#12391;&#12501;&#12457;&#12531;&#12488;&#12475;&#12483;&#12488;&#12434;&#25351;&#23450;
</span><span class="comment-delimiter">;; </span><span class="comment"># &#12371;&#12428;&#12399;&#36215;&#21205;&#26178;&#12395; default-frame-alist &#12395;&#24467;&#12387;&#12383;&#12501;&#12524;&#12540;&#12512;&#12364;
</span><span class="comment-delimiter">;; </span><span class="comment"># &#20316;&#25104;&#12373;&#12428;&#12394;&#12356;&#29694;&#35937;&#12408;&#12398;&#23550;&#20966;
</span>(set-face-font 'default <span class="string">"fontset-myfonts"</span>)
</pre>

<p>設定を変えたらemacsを再起動しないと反映されないことが多い。</p>

<h6>optionキーとcommandキー</h6>

<p>メタキーがoptionキーに変更されていて、とてもびっくりした。いまさら人間の方のバインドは変更できないので、<a href="http://cgi.netlaputa.ne.jp/~kose/diary/?20090806" target="_blank">こちら</a>を参考に入れ替えておく。</p>

<pre class="src">
<span class="comment-delimiter">;; </span><span class="comment">Command-Key and Option-Key
</span>(setq ns-command-modifier (quote meta))
(setq ns-alternate-modifier (quote super))
</pre>

<h6>￥マークとバックスラッシュ</h6>

<p>M-\ (delete-horizontal-space)が動かないのでdescribe-keyしてみたら、「M-￥ is undefined」と言われる。またしても<a href="http://cgi.netlaputa.ne.jp/~kose/diary/?20090806" target="_blank">こちら</a>を参考に入れ替えた。副作用として半角の￥マークが打てなくなってしまったが…いや別に困らないか。</p>

<pre class="src">
<span class="comment-delimiter">;; </span><span class="comment">Backslashes
</span>(define-key global-map [165] nil)
(define-key global-map [67109029] nil)
(define-key global-map [134217893] nil)
(define-key global-map [201326757] nil)
(define-key function-key-map [165] [?\\])
(define-key function-key-map [67109029] [?\C-\\])
(define-key function-key-map [134217893] [?\M-\\])
(define-key function-key-map [201326757] [?\C-\M-\\])
</pre>

<h5>共通の問題</h5>

<h6>[f5]とanything.el</h6>

<p>キーボードマクロ関連をF3〜5にアサインしているのだが、anything.elをインストールしたら怒られるようになってしまった。</p>

<p>これはanything.elの機能を呼び出すキーバインドのプレフィクスとして「[f5] a」という微妙なアサインがされているため。</p>

<a href="http://www.wizard-limit.net/mt/pc/archives/2010_12.html" target="_blank">こちら</a>を参考に、とりあえず[f5]は外しておく。

<pre class="src">
<span class="comment-delimiter">;; </span><span class="comment">anything.el
</span><span class="comment-delimiter">;; </span><span class="comment">&lt;f5&gt; a &#12392;&#12356;&#12358;&#12496;&#12452;&#12531;&#12489;&#12364;&#12363;&#12406;&#12427;&#12398;&#12391;&#22793;&#26356;
</span>(custom-set-variables
  <span class="comment-delimiter">;; </span><span class="comment">custom-set-variables was added by Custom.
</span>  <span class="comment-delimiter">;; </span><span class="comment">If you edit it by hand, you could mess it up, so be careful.
</span>  <span class="comment-delimiter">;; </span><span class="comment">Your init file should contain only one such instance.
</span>  <span class="comment-delimiter">;; </span><span class="comment">If there is more than one, they won't work right.
</span> '(anything-command-map-prefix-key <span class="string">"\C-c\C-f"</span>))
</pre>

<h6>visible-bellの問題</h6>
<p>【2011-03-18追記】</p>

<p>ビープ音(ベル)がやかましい。対処としてよく紹介されているのが…</p>

<pre class="src">
(setq visible-bell t)
</pre>

<p>という設定。でもこれを設定すると、cocoa emacsでは画面中央に豆腐が表示されてしまう。これもなんとかしたい…と思っていたところ、<a href="http://d.hatena.ne.jp/berukann/20100926/1285519392" target="_blank">完全に止める方法</a>が紹介されていた。</p>

<pre class="src">
<span class="comment-delimiter">;; </span><span class="comment">&#12499;&#12540;&#12503;&#38899;,&#30011;&#38754;&#12501;&#12521;&#12483;&#12471;&#12517;&#12394;&#12375;
</span>(setq ring-bell-function 'ignore)
</pre>

<h4>まとめ</h4>

<p>まだ古い設定から移植しきっていない機能もあるが、とりあえず仕事をするのに不自由しないところまでは回復した。以前はいろんなelispを探してきては入れてカオスになってたんだけど、それらの多くが標準でできるようになってるのはとてもいいことだ。</p>

<p>次の目標は、CUI上のemacs(mac / CentOS)も同等の使い勝手にすること。</p>

<h4>Links</h4>

<p>【移行のきっかけになった記事】 <a href="http://igarashikuniaki.net/tdiary/20101230.html" target="_blank">igaiga diary(2010-12-30)</a><br />

http://igarashikuniaki.net/tdiary/20101230.html</p>

<p>【typesterさん作のpatch】 <a href="https://github.com/typester/emacs/downloads" target="_blank">Downloads for typester&apos;s emacs &#8211; GitHub</a><br />

https://github.com/typester/emacs/downloads</p>

<p>【patchを組み込んだformula】 <a href="https://gist.github.com/861826" target="_blank">emacs 23.2 formula for homebrew with `fix-shiftmodifier-with-ime.patch` — Gist</a><br />

https://gist.github.com/861826</p>

<p>【NTEmacsのダウンロード】 <a href="http://gnupack.sourceforge.jp/docs/current/UsersGuide_download.html#_download_emacs" target="_blank">gnupack Users Guide &#8211; ダウンロード</a><br />

http://gnupack.sourceforge.jp/docs/current/UsersGuide_download.html#_download_emacs</p>

<p>【.emacs.d/以下の構成】 <a href="http://www.clear-code.com/blog/2011/2/16.html" target="_blank">おすすめEmacs設定 &#8211; ククログ(2011-02-16)</a><br />

http://www.clear-code.com/blog/2011/2/16.html</p>

<p>【NTEmacsのフォント設定】 <a href="http://ameblo.jp/tonjiru2121/entry-10488500864.html" target="_blank">NTEmacs23 日本語環境設定｜とんじるのブログ</a><br />

http://ameblo.jp/tonjiru2121/entry-10488500864.html</p>

<p>【gdipp】 <a href="http://code.google.com/p/gdipp/" target="_blank">gdipp &#8211; Project Hosting on Google Code</a><br />

http://code.google.com/p/gdipp/</p>

<p>【gdippの使い方】 <a href="http://www.forest.impress.co.jp/docs/review/20100517_367633.html" target="_blank">窓の杜 &#8211; 【REVIEW】インストールするだけであらゆるソフトのテキストを美しく滑らかに描画「gdipp」</a><br />

http://www.forest.impress.co.jp/docs/review/20100517_367633.html</p>

<p>【NTEmacsとGDIPP】 <a href="http://applause.elfmimi.jp/diary/m201009.shtml#20211534" target="_blank">アプローズの日記</a><br />

http://applause.elfmimi.jp/diary/m201009.shtml#20211534</p>

<p>【cygwinとgithubの問題】 <a href="http://d.hatena.ne.jp/gnarl/20101105/1288940077" target="_blank">$ git config &#8211;global http.sslVerify false</a><br />

http://d.hatena.ne.jp/gnarl/20101105/1288940077</p>

<p>【carbon emacsのフォント設定】 <a href="http://d.hatena.ne.jp/setoryohei/20110117/1295336454" target="_blank">Cocoa Emacs のフォント設定について &#8211; 瀬戸亮平</a><br />

http://d.hatena.ne.jp/setoryohei/20110117/1295336454</p>

<p>【キーバインド】 <a href="http://cgi.netlaputa.ne.jp/~kose/diary/?20090806" target="_blank">過負荷な日々</a><br />

http://cgi.netlaputa.ne.jp/~kose/diary/?20090806</p>

<p>【f5とanything.el】 <a href="http://www.wizard-limit.net/mt/pc/archives/2010_12.html" target="_blank">PC日記: 2010年12月アーカイブ</a><br />

http://www.wizard-limit.net/mt/pc/archives/2010_12.html</p>

<p>【ベルも画面フラッシュもoff】 <a href="http://d.hatena.ne.jp/berukann/20100926/1285519392" target="_blank">Carbon Emacsの設定 &#8211; 情報関連の適当なノート</a><br />

http://d.hatena.ne.jp/berukann/20100926/1285519392</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/03/10/258/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rubyの組み込み例外クラスを調べる</title>
		<link>http://randd.kwappa.net/2011/02/07/250</link>
		<comments>http://randd.kwappa.net/2011/02/07/250#comments</comments>
		<pubDate>Mon, 07 Feb 2011 06:25:13 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=250</guid>
		<description><![CDATA[タイトルがすべてなのだけれど、一覧は意外と見当たらないので作ってみた。 環境 % ruby -v ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux] 概要 すべてのクラス定数を取得 ancestorsにExceptionクラスをもつものをピックアップ ソートして表示 以下のコードはワンライナーで書いたものを整形してコメントを追記しただけ。参考にしたのはこちら。 すべての組み込み例外クラス 以下のようなコードを書いてみた。 puts Object.constants.find_all { &#124;c&#124; (cc = Object.const_get(c)) &#38;&#38; # シンボルからクラス定数を取得 cc.respond_to?(:ancestors) &#38;&#38; # ancestorsメソッドを持つ cc.ancestors.include?(Exception) # Exceptionとそのサブクラス }.sort 結果は以下のとおり。 ArgumentError EOFError (snip) TypeError ZeroDivisionError 途中省略してる理由は後述。 ExceptionとStandardError Rubyの組み込み例外クラスはすべて祖先に「Exception」を持つ。そのうち「通常のプログラムで発生する可能性の高い例外クラスを束ねるためのクラス」として「StandardError」がある。StandardErrorはrescue節で補足する例外クラス名を省略した場合のデフォルトとして使われる。 ということは、Exceptionを継承しつつStandardErrorを継承していないのはわりとfatalな(=補足すべきではない)例外なのだろう。これはわけて調べる必要がありそうだ。 冒頭の一覧が省略されているのはそんなような理由である。コード自体は抽出条件を変えるだけなのでほとんど同じ。 StandardError puts Object.constants.find_all { &#124;c&#124; (cc = Object.const_get(c)) [...]]]></description>
			<content:encoded><![CDATA[<p>タイトルがすべてなのだけれど、一覧は意外と見当たらないので作ってみた。</p>

<h4>環境</h4>
<pre class="code">
% ruby -v
ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
</pre>

<h4>概要</h4>

<ul>
	<li>すべてのクラス定数を取得</li>
	<li>ancestorsにExceptionクラスをもつものをピックアップ</li>
	<li>ソートして表示</li>
</ul>

<p>以下のコードはワンライナーで書いたものを整形してコメントを追記しただけ。参考にしたのは<a href="http://d.hatena.ne.jp/saronpasu/20080227/1204120421" target="_blank">こちら</a>。</p>

<h4>すべての組み込み例外クラス</h4>

<p>以下のようなコードを書いてみた。</p>

<pre class="code">
puts Object.constants.find_all { |c|
  (cc = Object.const_get(c)) &amp;&amp;         <span class="rem"># シンボルからクラス定数を取得</span>
  cc.respond_to?(:ancestors) &amp;&amp;         <span class="rem"># ancestorsメソッドを持つ</span>
  cc.ancestors.include?(Exception)      <span class="rem"># Exceptionとそのサブクラス</span>
}.sort
</pre>
<span id="more-250"></span>
<p>結果は以下のとおり。</p>

<pre class="code">
ArgumentError
EOFError
(snip)
TypeError
ZeroDivisionError
</pre>

<p>途中省略してる理由は後述。</p>

<h4>ExceptionとStandardError</h4>

<p>Rubyの組み込み例外クラスはすべて祖先に「<a href="http://doc.okkez.net/static/192/class/Exception.html" target="_blank">Exception</a>」を持つ。そのうち「通常のプログラムで発生する可能性の高い例外クラスを束ねるためのクラス」として「<a href="http://doc.okkez.net/static/192/class/StandardError.html" target="_blank">StandardError</a>」がある。StandardErrorはrescue節で補足する例外クラス名を省略した場合のデフォルトとして使われる。</p>

<p>ということは、Exceptionを継承しつつStandardErrorを継承していないのはわりとfatalな(=補足すべきではない)例外なのだろう。これはわけて調べる必要がありそうだ。</p>

<p>冒頭の一覧が省略されているのはそんなような理由である。コード自体は抽出条件を変えるだけなのでほとんど同じ。</p>

<h5>StandardError</h5>

<pre class="code">
puts Object.constants.find_all { |c|
  (cc = Object.const_get(c)) &amp;&amp;         <span class="rem"># シンボルからクラス定数を取得</span>
  cc.respond_to?(:ancestors) &amp;&amp;         <span class="rem"># ancestorsメソッドを持つ</span>
  cc.ancestors.include?(StandardError)  <span class="rem"># StandardErrorとそのサブクラス</span>
}.sort
</pre>

<pre class="code">
ArgumentError
EOFError
EncodingError
FiberError
FloatDomainError
IOError
IndexError
KeyError
LocalJumpError
NameError
NoMethodError
RangeError
RegexpError
RuntimeError
StandardError
StopIteration
SystemCallError
ThreadError
TypeError
ZeroDivisionError
</pre>

<p>ライブラリの使い方を間違ったときなどによく見かけるエラーが並んでいる。</p>

<h5>Exception</h5>

<pre class="code">
puts Object.constants.find_all { |c|
  (cc = Object.const_get(c)) &amp;&amp;         <span class="rem"># シンボルからクラス定数を取得</span>
  cc.respond_to?(:ancestors) &amp;&amp;         <span class="rem"># ancestorsメソッドを持つ</span>
  cc.ancestors.include?(Exception) &amp;&amp;   <span class="rem"># Exceptionとそのサブクラス</span>
  !cc.ancestors.include?(StandardError) <span class="rem"># StandardErrorとそのサブクラス<strong>以外</strong></span>
}.sort
</pre>

<pre class="code">
Exception
Interrupt
LoadError
NoMemoryError
NotImplementedError
ScriptError
SecurityError
SignalException
SyntaxError
SystemExit
SystemStackError
</pre>

<p>いかにも致命的っぽいエラーが並んでいる。「NoMemoryError」なんか間違っても握りつぶしちゃいけない雰囲気が漂っているよね。</p>

<h4>まとめ</h4>

<ul>
	<li>Object.constantsで定数が取り出せる＞定義済みのクラス名が含まれている</li>
	<li>Rubyの例外には2系統ある</li>
	<li>例外を握りつぶすのはどこの世界でもご法度</li>
</ul>

<h4>Links</h4>

<p><a href="http://doc.okkez.net/static/192/class/Exception.html" target="_blank">class Exception</a><br />

http://doc.okkez.net/static/192/class/Exception.html</p>

<p><a href="http://doc.okkez.net/static/192/class/StandardError.html" target="_blank">通常のプログラムで発生する可能性の高い 例外クラスを束ねるためのクラス</a><br />

http://doc.okkez.net/static/192/class/StandardError.html</p>

<p><a href="http://d.hatena.ne.jp/saronpasu/20080227/1204120421" target="_blank">トップオブジェクトが持つClassを全部表示する方法 &#8211; [サ]ロンパスの日記</a><br />

http://d.hatena.ne.jp/saronpasu/20080227/1204120421</p>

<p><a href="http://sonic64.com/2004-10-14.html" target="_blank">Ruby で全ての例外を rescue (catch) する</a><br />

http://sonic64.com/2004-10-14.html</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/02/07/250/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQL*Plus上でSQLファイルを実行する</title>
		<link>http://randd.kwappa.net/2011/01/19/240</link>
		<comments>http://randd.kwappa.net/2011/01/19/240#comments</comments>
		<pubDate>Wed, 19 Jan 2011 08:13:31 +0000</pubDate>
		<dc:creator>kwappa</dc:creator>
				<category><![CDATA[DataBase]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://randd.kwappa.net/?p=240</guid>
		<description><![CDATA[Oracle DBの対話型シェル「SQL*Plus」上で、SQL文が記入されたスクリプトファイルを実行する必要が出てきた。ご存知の方にはなにも珍しくない内容だと思うが、私には初めての作業だったのでメモっておく。 やりかた 絶対パスの場合 SQL> @/path/to/sql/file/test.sql 相対パスの場合 SQL> HOST pwd /path/to/sql/file SQL> @@test.sql 注意 行末の「;」を必ず記入する 「HOST」はOSのコマンドを実行する命令。 HOST {command} : commandを実行する。 HOST : 単体で実行するとプロンプトがシェルに移る。exitするとSQL*Plusに帰ってくる。]]></description>
			<content:encoded><![CDATA[<p>Oracle DBの対話型シェル「SQL*Plus」上で、SQL文が記入されたスクリプトファイルを実行する必要が出てきた。ご存知の方にはなにも珍しくない内容だと思うが、私には初めての作業だったのでメモっておく。</p>

<h4>やりかた</h4>

<h5>絶対パスの場合</h5>

<pre class="code">
SQL> @/path/to/sql/file/test.sql
</pre>

<h5>相対パスの場合</h5>

<pre class="code">
SQL> HOST pwd
/path/to/sql/file

SQL> @@test.sql
</pre>
<span id="more-240"></span>
<h4>注意</h4>

<ul>
	<li>行末の「;」を必ず記入する</li>
	<li>「HOST」はOSのコマンドを実行する命令。
		<ul>
			<li> HOST {command} : commandを実行する。</li>
			<li> HOST : 単体で実行するとプロンプトがシェルに移る。exitするとSQL*Plusに帰ってくる。<?li>
		</ul>
	</li>
</ul>

<h4>いきさつ</h4>

<ul>
	<li>連携してるDB(Oracle)のテーブルをalterすることになった</li>
	<li>alter文を書いたsqlをもらったので流してテストしたい</li>
	<li>そういえばファイルを流し込んだことないな</li>
	<li>調べたら<a href="http://oracle.se-free.com/utl/C1_sql_run.html" target="_blank">やり方</a>出てきた</li>
	<li>twitterにメモった<br />
		<a href="http://twitter.com/#!/kwappa/status/27556967388020737" target="_blank">めも：sqlplus内でファイルからSQLを実行するには「@{sql_file_path}」。</a>
	</li>
	<li>「@@もあるよ」とご指摘をいただく
		<ul>
			<li><a href="http://twitter.com/#!/Nakunaru/status/27566032897966080">アットマーク二個とかもできるから場合によっては使い分けると便利ですよ</a>
 (<a href="http://twitter.com/#!/Nakunaru">@Nakunaru</a>
)</li>
			<li><a href="http://twitter.com/#!/onote2/status/27594982818840577">「@@」だと相対パスも大丈夫</a>
 (<a href="http://twitter.com/#!/onote2" target="_blank">@onote2</a>)</li>
		</ul>
	</li>
	<li>ほほう、ところでカレントディレクトリを調べるには？</li>
	<li>調べたら<a href="http://oracle.se-free.com/utl/C1_os_cmd.html" target="_blank">やり方</a>出てきた</li>
	<li>メモしておこう</li>
</ul>

 ご指摘いただいた <a href="http://twitter.com/#!/Nakunaru">@Nakunaru</a> と <a href="http://twitter.com/#!/onote2" target="_blank">@onote2</a> に感謝します。

<h4>Links</h4>

<h5>参照サイト</h5>

<p><a href="http://oracle.se-free.com/utl/C1_sql_run.html" target="_blank">@ : ＯＲＡＣＬＥ／オラクルＳＱＬリファレンス（SQLPLUS）</a><br />

http://oracle.se-free.com/utl/C1_sql_run.html</p>

<p><a href="http://oracle.se-free.com/utl/C1_os_cmd.html" target="_blank">HOST : ＯＲＡＣＬＥ／オラクルＳＱＬリファレンス（SQLPLUS）</a><br />

http://oracle.se-free.com/utl/C1_os_cmd.html</p>

<h5>twitter</h5>

<p><a href="http://twitter.com/#!/kwappa/status/27556967388020737" target="_blank">Twitter / @SHIOYA, Hiromu: めも：sqlplus内でファイルからSQLを実行する &#8230;</a><br />

http://twitter.com/#!/kwappa/status/27556967388020737</p>

<p><a href="http://twitter.com/#!/Nakunaru/status/27566032897966080" target="_blank">Twitter / @Nakunaru: @kwappa アットマーク二個とかもできるから場合 &#8230;</a><br />

http://twitter.com/#!/Nakunaru/status/27566032897966080</p>

<p><a href="http://twitter.com/#!/onote2/status/27594982818840577" target="_blank">Twitter / @Tetsuya ONODA: “@kwappa: めも：sqlplus内でファイル &#8230;</a><br />

http://twitter.com/#!/onote2/status/27594982818840577</p>

<h5>リファレンス</h5>

<p><a href="http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html" target="_blank">SQL*Plusコマンド・リファレンス</a><br />

http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html</p>

<p><a href="http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html#19936" target="_blank">@</a><br />

http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html#19936</p>

<p><a href="http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html#20476" target="_blank">@@</a><br />

http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html#20476</p>

<p><a href="http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html#33844" target="_blank">HOST</a><br />

http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19277-01/ch12.html#33844</p>
]]></content:encoded>
			<wfw:commentRss>http://randd.kwappa.net/2011/01/19/240/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

