<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>クックパッド開発者ブログ</title>
	<atom:link href="http://techlife.cookpad.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://techlife.cookpad.com</link>
	<description>クックパッドのエンジニアがサイトの開発と運営について書き綴ります</description>
	<lastBuildDate>Mon, 28 Dec 2009 05:16:47 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='techlife.cookpad.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/09c04b621ed760c746467e3647d28935?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>クックパッド開発者ブログ</title>
		<link>http://techlife.cookpad.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://techlife.cookpad.com/osd.xml" title="クックパッド開発者ブログ" />
		<item>
		<title>イベントレポート（食べログ＆クックパッド共催勉強会）</title>
		<link>http://techlife.cookpad.com/2009/12/28/tabepad2/</link>
		<comments>http://techlife.cookpad.com/2009/12/28/tabepad2/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 05:14:13 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=725</guid>
		<description><![CDATA[こんにちは。クックパッドでイベント運営を担当しているスミです。
去る12/17、食べログさんと共催で勉強会を行いました。食べログさん、クックパッドのエンジニアがそれぞれ3名ずつ、お集まり頂いた約30名のエンジニアの皆さまの前でプレゼンを行いました。
インフラのお話をテーマにした今回。会場の皆さまからたくさんのご質問を頂き、とても熱い時間を過ごさせて頂きました。ご来場頂いた皆さま、どうもありがとうございました。
クックパッドのエンジニアが使用した資料を公開いたしますので、是非ご覧くださいませ！
・クックパッドのスケーリング（高田悟史）

・800万人の&#8221;食べたい&#8221;をHadoopで分散処理（佐々木達也）

・サーバー・クライアントのボトルネック調査と高速化（菅原元気）

クックパッドでは、今後も継続的にイベントを開催してまいりますのでご興味のある方は是非ご参加ください。
※詳細は決まり次第こちらのブログで紹介いたします。
スミ
カテゴリー:イベント       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=725&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>こんにちは。クックパッドでイベント運営を担当しているスミです。</p>
<p>去る12/17、食べログさんと共催で勉強会を行いました。食べログさん、クックパッドのエンジニアがそれぞれ3名ずつ、お集まり頂いた約30名のエンジニアの皆さまの前でプレゼンを行いました。</p>
<p>インフラのお話をテーマにした今回。会場の皆さまからたくさんのご質問を頂き、とても熱い時間を過ごさせて頂きました。ご来場頂いた皆さま、どうもありがとうございました。</p>
<p>クックパッドのエンジニアが使用した資料を公開いたしますので、是非ご覧くださいませ！</p>
<p><strong>・クックパッドのスケーリング（高田悟史）</strong></p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=2756725&#038;doc=20091214tabelog-key-091221024948-phpapp01' width='480' height='394'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=2756725&#038;doc=20091214tabelog-key-091221024948-phpapp01' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object></p>
<p><strong>・800万人の&#8221;食べたい&#8221;をHadoopで分散処理（佐々木達也）</strong></p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=2735999&#038;doc=20091217800hadoop-091217053404-phpapp02' width='480' height='394'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=2735999&#038;doc=20091217800hadoop-091217053404-phpapp02' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object></p>
<p><strong>・サーバー・クライアントのボトルネック調査と高速化（菅原元気）</strong></p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=2757088&#038;doc=random-091221042843-phpapp01' width='480' height='394'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=2757088&#038;doc=random-091221042843-phpapp01' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object></p>
<p>クックパッドでは、今後も継続的にイベントを開催してまいりますのでご興味のある方は是非ご参加ください。</p>
<p>※詳細は決まり次第こちらのブログで紹介いたします。</p>
<p>スミ</p>
カテゴリー:イベント  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/725/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/725/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/725/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=725&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/12/28/tabepad2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>
	</item>
		<item>
		<title>Hadoopを業務で使ってみた話</title>
		<link>http://techlife.cookpad.com/2009/12/16/hadoop_for_business/</link>
		<comments>http://techlife.cookpad.com/2009/12/16/hadoop_for_business/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 04:51:34 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[エンジニア日記]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=683</guid>
		<description><![CDATA[8月に入社した佐々木です。こんにちわ！
入社してからはHadoopを使うことが多く、日々、大規模データと格闘しています。大変ではありますが、個人ではなかなか触ることが出来ないような大規模データを触れるのは楽しいです。
さて、Hadoopは最近色々なところで使われ始めてきていると思うんですが、実際に利用してみて困った事やtipsなど、実践的な情報はまだあまり公開されていません。その辺の情報をみんな求めているはず…！！
そこで、僕が実際に触ってみて困った事やHadoopを使う上でポイントだと思ったことなどを社内勉強会で発表したので公開してみます。Hadoopを使っている（使いたいと思っている）方の参考になれば幸いです。

Hadoopの利用はまだまだ試行錯誤の連続ですが、何とか使えるレベルになってきました。これからも処理に時間の掛かる部分にHadoopを利用して、より良いサービスを迅速に提供できるような仕組みを作りたいと考えています。
&#8212;
クックパッドではHadoopなどを使った大規模データ解析に興味があるエンジニアを募集しています。
[技術部] webシステムエンジニア
[技術部] サーバシステムエンジニア
カテゴリー:エンジニア日記       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=683&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>8月に入社した佐々木です。こんにちわ！</p>
<p>入社してからはHadoopを使うことが多く、日々、大規模データと格闘しています。大変ではありますが、個人ではなかなか触ることが出来ないような大規模データを触れるのは楽しいです。</p>
<p>さて、Hadoopは最近色々なところで使われ始めてきていると思うんですが、実際に利用してみて困った事やtipsなど、実践的な情報はまだあまり公開されていません。その辺の情報をみんな求めているはず…！！</p>
<p>そこで、僕が実際に触ってみて困った事やHadoopを使う上でポイントだと思ったことなどを社内勉強会で発表したので公開してみます。Hadoopを使っている（使いたいと思っている）方の参考になれば幸いです。</p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=2711363&#038;doc=20091214techblog-091213183529-phpapp02' width='480' height='394'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=2711363&#038;doc=20091214techblog-091213183529-phpapp02' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object></p>
<p>Hadoopの利用はまだまだ試行錯誤の連続ですが、何とか使えるレベルになってきました。これからも処理に時間の掛かる部分にHadoopを利用して、より良いサービスを迅速に提供できるような仕組みを作りたいと考えています。</p>
<p>&#8212;</p>
<p>クックパッドではHadoopなどを使った大規模データ解析に興味があるエンジニアを募集しています。</p>
<p><a href="http://info.cookpad.com/web_engineer">[技術部] webシステムエンジニア</a></p>
<p><a href="http://info.cookpad.com/network_engineer">[技術部] サーバシステムエンジニア</a></p>
カテゴリー:エンジニア日記  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/683/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/683/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/683/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/683/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/683/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/683/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=683&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/12/16/hadoop_for_business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>
	</item>
		<item>
		<title>日本最大級Railsサイトの裏側見せますvol.2～クックパッド＆食べログ共催勉強会～</title>
		<link>http://techlife.cookpad.com/2009/12/02/rails-semina/</link>
		<comments>http://techlife.cookpad.com/2009/12/02/rails-semina/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 11:45:17 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=671</guid>
		<description><![CDATA[去年、約80名のエンジニアにご参加頂き、大好評を頂いたこの勉強会。
満を持して第2回を開催することになりました。
楽しい忘年会シーズンを支える食べログ。バレンタインの恋する乙女を支えるクックパッド。
大規模トラフィックを支えるそれぞれのサイトのインフラ戦略、運用テクニックを
現場のエンジニアが発表いたします！
実施内容
■プレゼンテーション
「クックパッドのスケーリング」by高田/クックパッド
「食べログで動いている自作ライブラリのお話」by大石/食べログ
「800万人の&#8221;食べたい&#8221;をHadoopで分散処理」by佐々木/クックパッド
「PCI-Express型SSDをMySQLで試してみた」by葛西/食べログ
「サーバー・クライアントのボトルネック調査と高速化」by菅原/クックパッド
「ボトルネック特定の為のログ解析・監視設定」by京和/食べログ
■質疑応答
会場の皆さまから、どんどんご質問をお受けいたします。
■懇親会
プレゼンテーション、質疑応答の後に懇親会を予定しております。
今回は、プロのシェフがクリスマスにちなんだ素敵なメニューをご用意いたします。
当日の詳細
■日時
12/17（木）
19:00-20:30　プレゼンテーション＆質疑応答
20:30-          懇親会
■会場
クックパッドオフィス（東京都港区白金台5-12-7 ＭＧ白金台ビル5Ｆ）
http://info.cookpad.com/location
■費用
無料
■募集人数
30名（抽選）
■募集締め切り
12/14（月）18:00 　　当選された方には、12/15（火）にご連絡いたします。
申込方法
以下の内容をご記入の上、メールでお申し込みください。

【件名】
勉強会参加希望＠クックパッド
【本文】
・お名前
・ご年齢
・勉強会に期待すること
・今はまっていること
・ご自身で作成したサイトURL（あれば）
皆さまのご応募を心よりお待ちしております。
※公式ハッシュタグ⇒　#tabepad2
実行委員会一同
カテゴリー:イベント       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=671&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>去年、約80名のエンジニアにご参加頂き、大好評を頂いたこの勉強会。<br />
満を持して第2回を開催することになりました。</p>
<p>楽しい忘年会シーズンを支える食べログ。バレンタインの恋する乙女を支えるクックパッド。<br />
大規模トラフィックを支えるそれぞれのサイトのインフラ戦略、運用テクニックを<br />
現場のエンジニアが発表いたします！</p>
<p><span style="text-decoration:underline;">実施内容</span></p>
<p>■プレゼンテーション</p>
<p>「クックパッドのスケーリング」by高田/クックパッド</p>
<p>「食べログで動いている自作ライブラリのお話」by大石/食べログ</p>
<p>「800万人の&#8221;食べたい&#8221;をHadoopで分散処理」by佐々木/クックパッド</p>
<p>「PCI-Express型SSDをMySQLで試してみた」by葛西/食べログ</p>
<p>「サーバー・クライアントのボトルネック調査と高速化」by菅原/クックパッド</p>
<p>「ボトルネック特定の為のログ解析・監視設定」by京和/食べログ</p>
<p>■質疑応答<br />
会場の皆さまから、どんどんご質問をお受けいたします。</p>
<p>■懇親会<br />
プレゼンテーション、質疑応答の後に懇親会を予定しております。<br />
今回は、プロのシェフがクリスマスにちなんだ素敵なメニューをご用意いたします。</p>
<p><span style="text-decoration:underline;">当日の詳細</span></p>
<p>■日時<br />
12/17（木）<br />
19:00-20:30　プレゼンテーション＆質疑応答<br />
20:30-          懇親会</p>
<p>■会場<br />
クックパッドオフィス（東京都港区白金台5-12-7 ＭＧ白金台ビル5Ｆ）</p>
<p>http://info.cookpad.com/location</p>
<p>■費用<br />
無料</p>
<p>■募集人数<br />
30名（抽選）</p>
<p>■募集締め切り<br />
12/14（月）18:00 　　当選された方には、12/15（火）にご連絡いたします。</p>
<p><span style="text-decoration:underline;">申込方法</span><br />
以下の内容をご記入の上、メールでお申し込みください。<br />
<a href="http://cookpadtech.files.wordpress.com/2009/12/mailaddress.jpg"><img class="size-full wp-image-673 alignleft" title="mailaddress" src="http://cookpadtech.files.wordpress.com/2009/12/mailaddress.jpg?w=233&#038;h=27" alt="" width="233" height="27" /></a></p>
<p>【件名】<br />
勉強会参加希望＠クックパッド</p>
<p>【本文】<br />
・お名前<br />
・ご年齢<br />
・勉強会に期待すること<br />
・今はまっていること<br />
・ご自身で作成したサイトURL（あれば）</p>
<p>皆さまのご応募を心よりお待ちしております。</p>
<p><span style="color:#993300;">※公式ハッシュタグ⇒　#tabepad2</span></p>
<p>実行委員会一同</p>
カテゴリー:イベント  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/671/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=671&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/12/02/rails-semina/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>

		<media:content url="http://cookpadtech.files.wordpress.com/2009/12/mailaddress.jpg" medium="image">
			<media:title type="html">mailaddress</media:title>
		</media:content>
	</item>
		<item>
		<title>社内システムのiPhone対応について</title>
		<link>http://techlife.cookpad.com/2009/12/01/%e7%a4%be%e5%86%85%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%aeiphone%e5%af%be%e5%bf%9c%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/</link>
		<comments>http://techlife.cookpad.com/2009/12/01/%e7%a4%be%e5%86%85%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%aeiphone%e5%af%be%e5%bf%9c%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 06:54:40 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[エンジニア日記]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=665</guid>
		<description><![CDATA[はじめまして、技術部の西岡です。
普段の業務では社内システムやサービス開発をメインに行っています。
今年の6月に入社して以来、ひたすら何かを作っているのですが、クックパッドでは自分のやりたいことをベースに業務を決めることができるので、日々、楽しい開発ライフを送れています。
さて、クックパッドには様々な社内システムがあるのですが、その内の１つに全社員の目標を管理できるシステムがあります。このシステムでは、目標と共に顔写真や得意なことを設定する仕組みになっているため、普段あまり関わりのない人が、どのような業務を行っているのかをざっくり知ることが出来ます。
このシステムは私が開発したのですが、開発する際に少し余裕があったことと、個人的に興味があったことから、iPhoneのSafariからも閲覧できるようにしてみました。
残念ながら肝心のシステム内部の話はあまり紹介できないのですが、対応する際に調査したSafariの仕様などについての資料をアップしました。

最後の方にネイティブアプリについての言及があるのですが、先日リリースさせて頂いたクックパッドアプリではUIWebViewは利用せずに全てObjective-Cで開発しています。ここら辺の話もいずれ公開できればと思います。
クックパッドではクライアントアプリからサーバーアプリまで、816万人のユーザの期待を背負ったサービスを開発したいエンジニアを募集しています！
[技術部] webシステムエンジニア
[技術部] サーバシステムエンジニア
カテゴリー:エンジニア日記       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=665&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>はじめまして、技術部の西岡です。</p>
<p>普段の業務では社内システムやサービス開発をメインに行っています。</p>
<p>今年の6月に入社して以来、ひたすら何かを作っているのですが、クックパッドでは自分のやりたいことをベースに業務を決めることができるので、日々、楽しい開発ライフを送れています。</p>
<p>さて、クックパッドには様々な社内システムがあるのですが、その内の１つに全社員の目標を管理できるシステムがあります。このシステムでは、目標と共に顔写真や得意なことを設定する仕組みになっているため、普段あまり関わりのない人が、どのような業務を行っているのかをざっくり知ることが出来ます。</p>
<p>このシステムは私が開発したのですが、開発する際に少し余裕があったことと、個人的に興味があったことから、iPhoneのSafariからも閲覧できるようにしてみました。</p>
<p>残念ながら肝心のシステム内部の話はあまり紹介できないのですが、対応する際に調査したSafariの仕様などについての資料をアップしました。</p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=2612983&#038;doc=techblog-091130051240-phpapp02' width='480' height='394'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=2612983&#038;doc=techblog-091130051240-phpapp02' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object></p>
<p>最後の方にネイティブアプリについての言及があるのですが、先日リリースさせて頂いた<a href="http://itunes.apple.com/jp/app/id340368403?mt=8">クックパッドアプリ</a>ではUIWebViewは利用せずに全てObjective-Cで開発しています。ここら辺の話もいずれ公開できればと思います。</p>
<p>クックパッドではクライアントアプリからサーバーアプリまで、816万人のユーザの期待を背負ったサービスを開発したいエンジニアを募集しています！</p>
<p><a href="http://info.cookpad.com/web_engineer">[技術部] webシステムエンジニア</a><br />
<a href="http://info.cookpad.com/network_engineer">[技術部] サーバシステムエンジニア</a></p>
カテゴリー:エンジニア日記  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/665/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=665&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/12/01/%e7%a4%be%e5%86%85%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%aeiphone%e5%af%be%e5%bf%9c%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>
	</item>
		<item>
		<title>第一回techlifeライトニングトークの様子を公開いたしました！</title>
		<link>http://techlife.cookpad.com/2009/11/26/evebtreport/</link>
		<comments>http://techlife.cookpad.com/2009/11/26/evebtreport/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 05:47:48 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=634</guid>
		<description><![CDATA[こんにちは。クックパッド・イベント担当のスミです。
去る11/20（金）、クックパッドオフィスにて第一回techlifeライトニングトークを開催いたしました。
当日の模様をyoutubeにて公開いたしましたので、ぜひご覧くださいませ。
最初は、クックパッドの佐々木

続いて、ＧＲＥＥのkajidaiさん

3番手は、ＰＦＩの太田さん

4番手は、シリウステクノロジーの藤川さん

そしてトリは、浜本階生さん

5名の方のプレゼンに続き、キッチンで懇親会も行いました。
懇親会の途中から、弊社の代表も混ぜて頂き
あちこちで熱～いトークが繰り広げられていました。
お忙しい中ご参加頂いた皆様、本当にありがとうございました！
今後もtechlifeライトニングトークは、テーマを替えて行ってまいります。
次回のテーマは「puppet」　12/3（木）19:00～です。
ご応募を心からおまちしております！
お申し込みはこちらから↓
http://techlife.cookpad.com/2009/10/24/techlife_introduction/
これからもどうぞよろしくお願いいたします。
スミ
カテゴリー:イベント       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=634&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>こんにちは。クックパッド・イベント担当のスミです。</p>
<p>去る11/20（金）、クックパッドオフィスにて第一回techlifeライトニングトークを開催いたしました。</p>
<p>当日の模様をyoutubeにて公開いたしましたので、ぜひご覧くださいませ。</p>
<p>最初は、クックパッドの佐々木</p>
<p><span style="text-align:center; display: block;"><a href="http://techlife.cookpad.com/2009/11/26/evebtreport/"><img src="http://img.youtube.com/vi/idouTduKPGE/2.jpg" alt="" /></a></span></p>
<p>続いて、ＧＲＥＥのkajidaiさん</p>
<p><span style="text-align:center; display: block;"><a href="http://techlife.cookpad.com/2009/11/26/evebtreport/"><img src="http://img.youtube.com/vi/knzuAjkv-zg/2.jpg" alt="" /></a></span></p>
<p>3番手は、ＰＦＩの太田さん</p>
<p><span style="text-align:center; display: block;"><a href="http://techlife.cookpad.com/2009/11/26/evebtreport/"><img src="http://img.youtube.com/vi/PaBNM9i7xs4/2.jpg" alt="" /></a></span></p>
<p>4番手は、シリウステクノロジーの藤川さん</p>
<p><span style="text-align:center; display: block;"><a href="http://techlife.cookpad.com/2009/11/26/evebtreport/"><img src="http://img.youtube.com/vi/2R2jkINDIA8/2.jpg" alt="" /></a></span></p>
<p>そしてトリは、浜本階生さん</p>
<p><span style="text-align:center; display: block;"><a href="http://techlife.cookpad.com/2009/11/26/evebtreport/"><img src="http://img.youtube.com/vi/CU9oxF9WzQY/2.jpg" alt="" /></a></span></p>
<p>5名の方のプレゼンに続き、キッチンで懇親会も行いました。</p>
<p>懇親会の途中から、弊社の代表も混ぜて頂き</p>
<p>あちこちで熱～いトークが繰り広げられていました。</p>
<p>お忙しい中ご参加頂いた皆様、本当にありがとうございました！</p>
<p>今後もtechlifeライトニングトークは、テーマを替えて行ってまいります。</p>
<p>次回のテーマは「puppet」　12/3（木）19:00～です。</p>
<p>ご応募を心からおまちしております！</p>
<p>お申し込みはこちらから↓</p>
<p><a href="http://techlife.cookpad.com/2009/10/24/techlife_introduction/">http://techlife.cookpad.com/2009/10/24/techlife_introduction/</a></p>
<p>これからもどうぞよろしくお願いいたします。</p>
<p>スミ</p>
カテゴリー:イベント  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/634/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=634&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/11/26/evebtreport/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/idouTduKPGE/2.jpg" medium="image" />

		<media:content url="http://img.youtube.com/vi/knzuAjkv-zg/2.jpg" medium="image" />

		<media:content url="http://img.youtube.com/vi/PaBNM9i7xs4/2.jpg" medium="image" />

		<media:content url="http://img.youtube.com/vi/2R2jkINDIA8/2.jpg" medium="image" />

		<media:content url="http://img.youtube.com/vi/CU9oxF9WzQY/2.jpg" medium="image" />
	</item>
		<item>
		<title>techlifeライトニングトーク at クックパッド</title>
		<link>http://techlife.cookpad.com/2009/10/24/techlife_introduction/</link>
		<comments>http://techlife.cookpad.com/2009/10/24/techlife_introduction/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 05:39:25 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[おしらせ]]></category>
		<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=613</guid>
		<description><![CDATA[
techlifeライトニングトークは、実践的な技術交流のためのイベントです。
毎回テーマを決めて、それについてプレゼンをして頂きます。
・1人5分、参加者全員発表
・LTの内容は動画で公開予定
・あなたのtechlife（技術のある楽しい生活）に役立った内容のみ発表可能
・申し込み人数が10名を超える場合は、抽選とさせて頂きます。
techlifeライトニングトークは、平日19時から！
12/11　 Hive
1/7       iPhone

-申込方法
下記項目をご記載の上、までメールをお送りください。
〆切は開催2日前。ご参加頂く方には、詳細のメールを差し上げます。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
■タイトル（例えば分散処理の会なら）
「分散処理参加希望」
■本文
・お名前
・ご年齢
・ライトニングトークのおおまかな内容
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
twitterはじめました！ライトニングトークのテーマ募集中☆
＠techlifecookpad
カテゴリー:おしらせ, イベント       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=613&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p><a href="http://cookpadtech.files.wordpress.com/2009/10/img_2939.jpg"><img class="aligncenter size-medium wp-image-616" title="IMG_2939" src="http://cookpadtech.files.wordpress.com/2009/10/img_2939.jpg?w=300&#038;h=200" alt="IMG_2939" width="300" height="200" /></a></p>
<p>techlifeライトニングトークは、実践的な技術交流のためのイベントです。</p>
<p>毎回テーマを決めて、それについてプレゼンをして頂きます。</p>
<p>・1人5分、参加者全員発表</p>
<p>・LTの内容は動画で公開予定</p>
<p>・あなたのtechlife（技術のある楽しい生活）に役立った内容のみ発表可能</p>
<p>・申し込み人数が10名を超える場合は、抽選とさせて頂きます。</p>
<p><strong>techlifeライトニングトークは、平日19時から！</strong></p>
<p><strong>12/11　 Hive</strong></p>
<p><strong>1/7       iPhone<br />
</strong></p>
<p>-申込方法</p>
<p>下記項目をご記載の上、<img class="size-full wp-image-617 alignnone" title="mailaddress" src="http://cookpadtech.files.wordpress.com/2009/10/mailaddress.jpg?w=289&#038;h=28" alt="mailaddress" width="289" height="28" />までメールをお送りください。</p>
<p>〆切は開催2日前。ご参加頂く方には、詳細のメールを差し上げます。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><span style="text-decoration:underline;">■タイトル</span>（例えば分散処理の会なら）</p>
<p>「分散処理参加希望」</p>
<p><span style="text-decoration:underline;">■本文</span></p>
<p>・お名前</p>
<p>・ご年齢</p>
<p>・ライトニングトークのおおまかな内容</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>twitterはじめました！ライトニングトークのテーマ募集中☆</p>
<p>＠techlifecookpad</p>
カテゴリー:おしらせ, イベント  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/613/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/613/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/613/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=613&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/10/24/techlife_introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>

		<media:content url="http://cookpadtech.files.wordpress.com/2009/10/img_2939.jpg?w=300" medium="image">
			<media:title type="html">IMG_2939</media:title>
		</media:content>

		<media:content url="http://cookpadtech.files.wordpress.com/2009/10/mailaddress.jpg" medium="image">
			<media:title type="html">mailaddress</media:title>
		</media:content>
	</item>
		<item>
		<title>AWKのススメ</title>
		<link>http://techlife.cookpad.com/2009/10/23/awk/</link>
		<comments>http://techlife.cookpad.com/2009/10/23/awk/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 10:04:10 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[エンジニア日記]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=537</guid>
		<description><![CDATA[はじめまして。インフラチームの菅原といいます。
今年の7月に入社してから、コンソールとにらめっこする毎日を過ごしています。クックパッドのようにアクセスの多いサイトのサーバを扱うことが今まで無かったので、いろいろと勉強になることが多いです。
さて、インフラチームではサーバの状況をモニタリングして、サーバに問題がないかを常に把握するようにしています。そのため日常的にtailでログを追いかけているのですが、そんなときはAWKが非常に便利なことに気付き、最近はかなりAWKにハマっています。
今回は絶賛マイブーム中のAWKの活用例をご紹介したいと思います。
なぜAWKなのか？
残念ながらAWKの知名度はあまり高くないようで、社内でも「なぜRubyでやらないのか？」と聞かれることがありました。僕も入社するまではcutの代わりぐらいにしか使っていなかったのですが、あるときログ出力の整形に使って以来、AWKのおもしろさにすっかりハマってしまいました。
AWKの魅力はいろいろとあるのですが、ひとつあげるとすれば「ワンライナーの書きやすさ」です。もちろんRubyでもPerlでもワンライナーは書けるのですが、AWKはさらにワンライナーが書きやすい言語です。
仕事での活用例
普段、僕が仕事で使っているAWKスクリプトをいくつかご紹介します。AWKの文法についてはGNU Awk User&#8217;s Guideなどを参照してください。
Railsの500msec以上かかっている処理を追いかける
後からRailsのログを集計してもよいのですが、その場で状況を知りたいときは tail -f と AWK の組み合わせが強力です。次の簡単なAWKスクリプトは、遅くなっている処理をさくっと把握したいときに使っています。

$ tail -f log/production.log &#124; ¥
 awk '/^Completed/{if($3 &#62; 0.5) print }'
Completed in 0.56046 (1 reqs/sec) &#124; Rendering: 0.23351 (41%) ...
Completed in 0.59227 (1 reqs/sec) &#124; Rendering: 0.00010 (0%) ...
Completed in 1.90438 (0 reqs/sec) &#124; Rendering: 1.87990 (98%) ...
...

Apacheの平均応答時間を追いかける
アクセスが多くなると tail -f でaccess_logを追いかけようとしても、流れが速すぎて状況を把握できません。そこでAWKで100リクエストごとの平均応答時間を計算して、現在の応答時間がどのくらいなのかを把握しています。

$ tail -f access_log &#124; awk [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=537&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>はじめまして。インフラチームの菅原といいます。</p>
<p>今年の7月に入社してから、コンソールとにらめっこする毎日を過ごしています。クックパッドのようにアクセスの多いサイトのサーバを扱うことが今まで無かったので、いろいろと勉強になることが多いです。</p>
<p>さて、インフラチームではサーバの状況をモニタリングして、サーバに問題がないかを常に把握するようにしています。そのため日常的にtailでログを追いかけているのですが、そんなときはAWKが非常に便利なことに気付き、最近はかなりAWKにハマっています。</p>
<p>今回は絶賛マイブーム中のAWKの活用例をご紹介したいと思います。</p>
<h3>なぜAWKなのか？</h3>
<p>残念ながらAWKの知名度はあまり高くないようで、社内でも「なぜRubyでやらないのか？」と聞かれることがありました。僕も入社するまではcutの代わりぐらいにしか使っていなかったのですが、あるときログ出力の整形に使って以来、AWKのおもしろさにすっかりハマってしまいました。</p>
<p>AWKの魅力はいろいろとあるのですが、ひとつあげるとすれば「ワンライナーの書きやすさ」です。もちろんRubyでもPerlでもワンライナーは書けるのですが、AWKはさらにワンライナーが書きやすい言語です。</p>
<h3>仕事での活用例</h3>
<p>普段、僕が仕事で使っているAWKスクリプトをいくつかご紹介します。AWKの文法については<a href="http://www.gnu.org/software/gawk/manual/gawk.html">GNU Awk User&#8217;s Guide</a>などを参照してください。</p>
<h3>Railsの500msec以上かかっている処理を追いかける</h3>
<p>後からRailsのログを集計してもよいのですが、その場で状況を知りたいときは tail -f と AWK の組み合わせが強力です。次の簡単なAWKスクリプトは、遅くなっている処理をさくっと把握したいときに使っています。</p>
<pre class="brush: bash;">
$ tail -f log/production.log | ¥
 awk '/^Completed/{if($3 &gt; 0.5) print }'
Completed in 0.56046 (1 reqs/sec) | Rendering: 0.23351 (41%) ...
Completed in 0.59227 (1 reqs/sec) | Rendering: 0.00010 (0%) ...
Completed in 1.90438 (0 reqs/sec) | Rendering: 1.87990 (98%) ...
...
</pre>
<h3>Apacheの平均応答時間を追いかける</h3>
<p>アクセスが多くなると tail -f でaccess_logを追いかけようとしても、流れが速すぎて状況を把握できません。そこでAWKで100リクエストごとの平均応答時間を計算して、現在の応答時間がどのくらいなのかを把握しています。</p>
<pre class="brush: bash;">
$ tail -f access_log | awk '
{i++; t+=$4}
i &gt; 100 {
  print strftime(&quot;%H:%M:%S&quot;), &quot;|&quot;, t / i / 1000, &quot;ms&quot;
  i=t=0
}'
18:58:34 | 97.1538 ms
18:58:38 | 80.6553 ms
18:58:42 | 75.4794 ms
</pre>
<p>ちなみにクックパッドのaccess_logは以下のようなフォーマットで出力されます。</p>
<pre class="brush: bash;">
# ステータス, 時間, 処理時間(マイクロ秒), リクエストuri, パラメータ...
LogFormat &quot;%&gt;s\t%{%Y-%m-%d %H:%M:%S}t\t%D\t%U\t%q...&quot;
</pre>
<p>上記のスクリプトを少し修正して、単位時間あたりのリクエスト数を出力するようにすると、サービスへどのくらいアクセスがあるのかを把握できるようになります。</p>
<pre class="brush: bash;">
[...]$ tail -f access_log | awk '
BEGIN{st=systime()}
{i++}
i &gt; 200 {
  et=systime()
  printf(&quot;%s | %.1f req/sec\n&quot;,
    strftime(&quot;%H:%M:%S&quot;),  i / (et - st))
  i=0; st=et
}'
19:10:45 | 16.8 req/sec
19:10:55 | 20.1 req/sec
19:11:06 | 18.3 req/sec
</pre>
<h3>slow-query.logを追いかける</h3>
<p>mysqldumpslowというスロークエリログ用のツールがありますが、その場で状況を知りたいときには tail -f で追いかけるのが手軽です。しかし、そのままでは少々見にくいので、次のようなAWKスクリプトで整形します。</p>
<pre class="brush: bash;">
[...]$ tail -f slow-query.log | awk '
/^# Time/ {
  q=substr(q,0,64)
  printf(&quot;%s %s %-17s %2d %s\n&quot;, d, t, h, s, q)
  d=$3; t=$4
}
/User/ {h=$5}
/Query_time/ {s=$3}
/^[^ ]/ {q=$0}'
091010 17:46:45 [192.168.xxx.xxx]   2 SELECT foo, bar, zoo FROM...
091010 17:55:29 [192.168.xxx.xxx]   3 SELECT foo FROM...
091010 17:56:08 [192.168.xxx.xxx]   3 SELECT foo FROM...
</pre>
<p>ANSIエスケープシーケンスを使えば、10秒以上かかったクエリだけ赤く表示することもできます。</p>
<pre class="brush: bash;">
awk '
/^# Time/ {
  if (s &gt; 9) {
    printf(&quot;33[0;31m&quot;)
  } else {
    q=substr(q,0,64)
  }
  printf(&quot;%s %s %-17s %2d %s\n&quot;, d, t, h, s, q)
  printf(&quot;33[0m&quot;)
  d=$3; t=$4
}
/User/ {h=$5}
/Query_time/ {s=$3}
/^[^ ]/ {q=$0}'
</pre>
<h3>まとめ</h3>
<p>今回は、仕事で使っているAWKスクリプトをいくつかご紹介させていただきました。僕もまだAWK初心者なのでお世辞にも洗練されたコードとはいえませんが、それでも非常に役に立っています。<br />
ちなみに、AWKのワンライナーには何か癖になるものがあり、最近はワンライナーばかり書いているので、historyがスクリプトの保存先と化しつつあります。</p>
<p>みなさんもAWKで一行野郎を使いこなしましょう！</p>
<h3>おまけ</h3>
<p>GNU Awkはソケットが使えるので、カレントディレクトリをDocumentRootとするWebサーバを、ワンライナーで書いてみました。</p>
<pre class="brush: bash;">
awk 'BEGIN{s=&quot;/inet/tcp/80/0/0&quot;;&quot;pwd&quot; |&amp; getline;r=$0;while((s |&amp; getline) &gt;; 0){gsub(/[\r\n]/,&quot;&quot;);if($0 ~ /^\s*$/){c=&quot;cat &quot; r path;printf &quot;HTTP/1.0 200 OK\r\n\r\n&quot; |&amp; s;while((c |&amp; getline) &gt; 0){print |&amp; s}close(c);close(s)}else if($0 ~ /HTTP/){print;path=$2}}}'
</pre>
<p>きちんと改行をいれるとこんな感じになります。</p>
<pre class="brush: bash;">
awk '
BEGIN {
  s = &quot;/inet/tcp/80/0/0&quot;
  &quot;pwd&quot; |&amp; getline
  r = $0

  while ((s |&amp; getline) &gt; 0) {
    gsub(/[\r\n]/, &quot;&quot;)

    if ($0 ~ /^\s*$/) {
      c = &quot;cat &quot; r path
      printf &quot;HTTP/1.0 200 OK\r\n\r\n&quot; |&amp; s

      while ((c |&amp; getline) &gt; 0) {
        print |&amp; s
      }

      close(c)
      close(s)
    } else if ($0 ~ /HTTP/){
      print
      path = $2
    }
  }
}'
</pre>
<p>AWKを使ったことがなくても、わかりやすいコードではないでしょうか？</p>
<p>GNU Awkのネットワーク機能はとても面白いです。AWKを始めた人には、<a href="http://www.gnu.org/software/gawk/manual/gawkinet/gawkinet.html">ネットワーク機能のマニュアル</a>を一読することをお薦めします。</p>
カテゴリー:エンジニア日記  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/537/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/537/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=537&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/10/23/awk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>
	</item>
		<item>
		<title>クックパッドとHadoop</title>
		<link>http://techlife.cookpad.com/2009/09/16/cookpad-hadoop-introduction/</link>
		<comments>http://techlife.cookpad.com/2009/09/16/cookpad-hadoop-introduction/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 01:06:40 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[エンジニア日記]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=482</guid>
		<description><![CDATA[はじめまして。今年の5月に入社した勝間@さがすチームです。
入社してからは、なかなか大変なことも多いですが、最近はお酒好きが集まって月曜から飲み合う 「勝間会」なるものも発足して、仕事面でも仕事以外の面でも密度の高い毎日を過ごしています！
さて、僕は「さがす」チーム所属ということで、普段はレシピを「さがす」ユーザの満足度を上げるために、 クックパッドの検索まわりについて、いろいろな開発を行っています。 一方で、ユーザの「さがす欲求」について深く知るために、大規模なデータ解析を行い、欲求の分析を行う機会も増えてきました。
ところが、クックパッドのログは膨大な数があるので、一口のデータ解析と言っても通常のバッチ処理だと間に合わないため、 分散処理環境の必要性が高まってきました。 そこで、まずは手軽に試せる分散処理の王道ということで、最近ではHadoopを使ったデータ解析環境を整備しています。
そんな中、ちょうどtech lunchで発表の順番が僕に回ってきたので、いい機会なので 「そもそもHadoopって何？」ということや「Map &#38; Reduceを行っているとき、各プロセスは何をしているの？」な話をデモを含めながら発表してみました。 今回は、そのときの内容の資料と質疑応答の内容を共有したいと思います。
発表資料はこのようなものを利用しました。

その後は、このような質疑応答が行われました。
HDFSのNameNodeがボトルネックにはなりえないのか？
NameNodeは障害が起こると、HDFSのクラスタ全体が利用不能になるので、SPOFという観点で考えると、構成上どうしてもボトルネックになり得ます。
ただし、NameNodeが扱うメタデータを保護できれば、NameNodeに障害が起きても復旧できるため、次のような方法が提唱されています。

 メタデータについては、RAIDを組んで多重にディスクに書き込む。
または、NFSマウントされた領域にメタデータを書き込む。
SecondaryNameNodeはNameNodeのメタデータのバックアップを定期的にとっているため、NameNodeとSecondaryNameNodeを物理的に別ノードに分けて運用する。

また、NagiosやGangliaでモニタリングを行うことも可能で、ここから障害を検知することも可能です。
Hadoop MapReduceの処理コードはmasterにだけ置いておけば配布されるのか？
処理コードはMap&#38;Reduce実行時にmasterからslaveに配布することができます。もちろんあらかじめrsyncなどで配布しておく方法も取ることが出来ます。
HDFSの安定性は？
レプリケーションの数を増やすことで安定稼働されます。 バックアップ失敗を想定して、レプリケーション数は3以上が推奨されています。また、HDFSに対してファイルシステムチェックを行うことも可能です。
Hadoop MapReduceとHDFSを分けた方がリソースを効率的に使えるのでは？
そういう発想もありかと思いますが、Hadoop開発陣の方針として、基本的には標準的な設定の使用を推奨しているようです。
標準的な設定は、YahooやFacebookなど大規模に利用されているケースをベースにして設定されたものなので、これに習うのが結果的に一番安定して動作するのでしょう。
Taskを割り振るのに優先度が付けられるのか？
複数Jobを与えるときに、優先度を付けることができます。
UU測定のサンプルコードで、複数プロセス存在するはずのReduceがハッシュマップのようなオブジェクトをどうして持てるの？
ハッシュマップのようなキーごとに処理を行うオブジェクトを持つためには、Reducerはキーごとに同じノードが処理を行っている必要があります。このとき、Mapの出力を同じキーごとに同じグループに属するように分割できれば、Reduceは分割可能となります。
ここでの、「Mapの出力を、ソートし、Reduceに渡す」フェーズは「Shuffle」、「Reduceへの入力をキーに基づいてグループ化してまとめる」フェーズを「Sort」フェーズと呼びます。 HadoopではShuffleやSortは完全に隠蔽されているので開発者がこれらのコードを書くケースはありません。
つまり、今回のようなMapの出力がkeyごとに分割されている場合は、Shuffle, SortによってMapの出力を分割、グループ化してReduceが処理できるようになるのでうまく扱うことができます。
HDFSを画像サーバなどに利用できるのか？
HDFSからのレスポンスは特に速いわけではなく、転送速度がボトルネックになるので、画像サーバには向いていません。HDFSは、データの行き来がそれほど起こらない、ログデータのようなものの保存が最も適していると思います。 画像サーバを分散ストレージで検討する場合は、他のプロダクトを利用したほうがよさそうです。
HadoopはHDFSに特化してるのか？
Hadoopを利用する場合は、必ずしもHDFSしか使えないわけではないです。他にもAmazon S3, CloudStoreなんかの選択肢があります。実際は、HDFSが一番ポピュラーで標準的に利用されているので、今回はこれを試してみました。
Hiveたのしそうですね
試してみましたが、なかなかたのしいです。 RDBと親和性高く、Joinなんかもできるのは魅力的なので、導入を検討しています。
クックパッドではHadoopはどのように使われるの？
直近では、様々な条件下でのログ解析や、バックエンドのDB更新などに利用される予定です。
まとめ
クックパッドにおいてデータ解析の需要が高まってきたことで、Hadoopへの取り組みをまとめてみました。今後、本格導入していく際にはまた改めてエントリを上げたいと思います。
また、このような分散環境におけるデータ解析についてご興味ある方を、クックパッドでは募集しています！

[技術部] Webシステムエンジニア
[技術部] サーバシステムエンジニア

カテゴリー:エンジニア日記       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=482&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>はじめまして。今年の5月に入社した勝間@さがすチームです。</p>
<p>入社してからは、なかなか大変なことも多いですが、最近はお酒好きが集まって月曜から飲み合う 「勝間会」なるものも発足して、仕事面でも仕事以外の面でも密度の高い毎日を過ごしています！</p>
<p>さて、僕は「さがす」チーム所属ということで、普段はレシピを「さがす」ユーザの満足度を上げるために、 クックパッドの検索まわりについて、いろいろな開発を行っています。 一方で、ユーザの「さがす欲求」について深く知るために、大規模なデータ解析を行い、欲求の分析を行う機会も増えてきました。</p>
<p>ところが、クックパッドのログは膨大な数があるので、一口のデータ解析と言っても通常のバッチ処理だと間に合わないため、 分散処理環境の必要性が高まってきました。 そこで、まずは手軽に試せる分散処理の王道ということで、最近ではHadoopを使ったデータ解析環境を整備しています。</p>
<p>そんな中、ちょうどtech lunchで発表の順番が僕に回ってきたので、いい機会なので 「そもそもHadoopって何？」ということや「Map &amp; Reduceを行っているとき、各プロセスは何をしているの？」な話をデモを含めながら発表してみました。 今回は、そのときの内容の資料と質疑応答の内容を共有したいと思います。</p>
<p>発表資料はこのようなものを利用しました。</p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=1992982&#038;doc=techlife-2009-09-11-090913193034-phpapp01' width='480' height='394'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=1992982&#038;doc=techlife-2009-09-11-090913193034-phpapp01' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object></p>
<p>その後は、このような質疑応答が行われました。</p>
<h3>HDFSのNameNodeがボトルネックにはなりえないのか？</h3>
<p>NameNodeは障害が起こると、HDFSのクラスタ全体が利用不能になるので、SPOFという観点で考えると、構成上どうしてもボトルネックになり得ます。<br />
ただし、NameNodeが扱うメタデータを保護できれば、NameNodeに障害が起きても復旧できるため、次のような方法が提唱されています。</p>
<ul style="list-style-type:disc;">
<li> メタデータについては、RAIDを組んで多重にディスクに書き込む。</li>
<li>または、NFSマウントされた領域にメタデータを書き込む。</li>
<li>SecondaryNameNodeはNameNodeのメタデータのバックアップを定期的にとっているため、NameNodeとSecondaryNameNodeを物理的に別ノードに分けて運用する。</li>
</ul>
<p>また、NagiosやGangliaでモニタリングを行うことも可能で、ここから障害を検知することも可能です。</p>
<h3>Hadoop MapReduceの処理コードはmasterにだけ置いておけば配布されるのか？</h3>
<p>処理コードはMap&amp;Reduce実行時にmasterからslaveに配布することができます。もちろんあらかじめrsyncなどで配布しておく方法も取ることが出来ます。</p>
<h3>HDFSの安定性は？</h3>
<p>レプリケーションの数を増やすことで安定稼働されます。 バックアップ失敗を想定して、レプリケーション数は3以上が推奨されています。また、HDFSに対してファイルシステムチェックを行うことも可能です。</p>
<h3>Hadoop MapReduceとHDFSを分けた方がリソースを効率的に使えるのでは？</h3>
<p>そういう発想もありかと思いますが、Hadoop開発陣の方針として、基本的には標準的な設定の使用を推奨しているようです。<br />
標準的な設定は、YahooやFacebookなど大規模に利用されているケースをベースにして設定されたものなので、これに習うのが結果的に一番安定して動作するのでしょう。</p>
<h3>Taskを割り振るのに優先度が付けられるのか？</h3>
<p>複数Jobを与えるときに、優先度を付けることができます。</p>
<h3>UU測定のサンプルコードで、複数プロセス存在するはずのReduceがハッシュマップのようなオブジェクトをどうして持てるの？</h3>
<p>ハッシュマップのようなキーごとに処理を行うオブジェクトを持つためには、Reducerはキーごとに同じノードが処理を行っている必要があります。このとき、Mapの出力を同じキーごとに同じグループに属するように分割できれば、Reduceは分割可能となります。</p>
<p>ここでの、「Mapの出力を、ソートし、Reduceに渡す」フェーズは「Shuffle」、「Reduceへの入力をキーに基づいてグループ化してまとめる」フェーズを「Sort」フェーズと呼びます。 HadoopではShuffleやSortは完全に隠蔽されているので開発者がこれらのコードを書くケースはありません。</p>
<p>つまり、今回のようなMapの出力がkeyごとに分割されている場合は、Shuffle, SortによってMapの出力を分割、グループ化してReduceが処理できるようになるのでうまく扱うことができます。</p>
<h3>HDFSを画像サーバなどに利用できるのか？</h3>
<p>HDFSからのレスポンスは特に速いわけではなく、転送速度がボトルネックになるので、画像サーバには向いていません。HDFSは、データの行き来がそれほど起こらない、ログデータのようなものの保存が最も適していると思います。 画像サーバを分散ストレージで検討する場合は、他のプロダクトを利用したほうがよさそうです。</p>
<h3>HadoopはHDFSに特化してるのか？</h3>
<p>Hadoopを利用する場合は、必ずしもHDFSしか使えないわけではないです。他にもAmazon S3, CloudStoreなんかの選択肢があります。実際は、HDFSが一番ポピュラーで標準的に利用されているので、今回はこれを試してみました。</p>
<h3>Hiveたのしそうですね</h3>
<p>試してみましたが、なかなかたのしいです。 RDBと親和性高く、Joinなんかもできるのは魅力的なので、導入を検討しています。</p>
<h3>クックパッドではHadoopはどのように使われるの？</h3>
<p>直近では、様々な条件下でのログ解析や、バックエンドのDB更新などに利用される予定です。</p>
<h3>まとめ</h3>
<p>クックパッドにおいてデータ解析の需要が高まってきたことで、Hadoopへの取り組みをまとめてみました。今後、本格導入していく際にはまた改めてエントリを上げたいと思います。</p>
<p>また、このような分散環境におけるデータ解析についてご興味ある方を、クックパッドでは募集しています！</p>
<ul style="list-style-type:disc;">
<li><a href="http://info.cookpad.com/web_engineer">[技術部] Webシステムエンジニア</a></li>
<li><a href="http://info.cookpad.com/network_engineer">[技術部] サーバシステムエンジニア</a></li>
</ul>
カテゴリー:エンジニア日記  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/482/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/482/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=482&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/09/16/cookpad-hadoop-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>
	</item>
		<item>
		<title>クックパッドのバッチシステム</title>
		<link>http://techlife.cookpad.com/2009/08/18/batch_on_cookpad/</link>
		<comments>http://techlife.cookpad.com/2009/08/18/batch_on_cookpad/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 08:46:19 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[エンジニア日記]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=435</guid>
		<description><![CDATA[こんにちはみなさん、とんかつってうまいですし目黒のとんきは哲学ですよね、8/1付けで商品部エンジニアになったnegipoです。すてきな上司とかわいい同僚に囲まれてとても幸せです！
さて、今回はクックパッドのバックエンドで動いているバッチシステムの紹介スライドを共有します。

大事なことは全部かいてあるので読んで下さい。
けっこう大胆な修正が入っていますが、なんとか趣旨をよみとってもらえるとうれしいです。
という訳で、クックパッドでは2週間に1度みんなでお昼ごはんを食べながら一人のエンジニアが何かをしゃべる、&#8221;tech lunch&#8221;というものを開始しました。技術部はもちろん、商品部や編集部のディレクターなど多岐にわたる人たちがクックパッドがどうやって動いているか、将来どうなっていくのかという話にふむふむと頷いています。
今後このtech lunchで共有された技術的な内容は、順次この開発者ブログに掲載していく予定です。皆様のお役に立つ情報がどんどん集まればよいなと思います。
今後ともクックパッド開発者ブログをよろしくお願いします。
カテゴリー:エンジニア日記       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=435&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>こんにちはみなさん、とんかつってうまいですし目黒のとんきは哲学ですよね、8/1付けで商品部エンジニアになったnegipoです。すてきな上司とかわいい同僚に囲まれてとても幸せです！</p>
<p>さて、今回はクックパッドのバックエンドで動いているバッチシステムの紹介スライドを共有します。<br />
<object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=1875470&#038;doc=090527-090818033920-phpapp01' width='480' height='394'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=1875470&#038;doc=090527-090818033920-phpapp01' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object><br />
大事なことは全部かいてあるので読んで下さい。<br />
けっこう大胆な修正が入っていますが、なんとか趣旨をよみとってもらえるとうれしいです。</p>
<p>という訳で、クックパッドでは2週間に1度みんなでお昼ごはんを食べながら一人のエンジニアが何かをしゃべる、&#8221;tech lunch&#8221;というものを開始しました。技術部はもちろん、商品部や編集部のディレクターなど多岐にわたる人たちがクックパッドがどうやって動いているか、将来どうなっていくのかという話にふむふむと頷いています。<br />
今後このtech lunchで共有された技術的な内容は、順次この開発者ブログに掲載していく予定です。皆様のお役に立つ情報がどんどん集まればよいなと思います。<br />
今後ともクックパッド開発者ブログをよろしくお願いします。</p>
カテゴリー:エンジニア日記  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/435/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=435&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/08/18/batch_on_cookpad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>
	</item>
		<item>
		<title>Art of the Ruby Proxy for Scale, Performance, and Monitoring (RailsConf2009レポート)</title>
		<link>http://techlife.cookpad.com/2009/05/10/ruby-proxy/</link>
		<comments>http://techlife.cookpad.com/2009/05/10/ruby-proxy/#comments</comments>
		<pubDate>Sun, 10 May 2009 09:22:53 +0000</pubDate>
		<dc:creator>cookpadtech</dc:creator>
				<category><![CDATA[RailsConf2009]]></category>

		<guid isPermaLink="false">http://techlife.cookpad.com/?p=390</guid>
		<description><![CDATA[こんにちは、高田悟史です。クラウドとかスケールとかそういうインフラよりのセッションを選んで参加しています。
今回は、Ilya Grigorik氏によるセッションArt of the Ruby Proxy for Scale, Performance, and Monitoringのレポートです。
スライドは下記のアドレスで参照できます。
http://www.slideshare.net/igrigorik/ruby-proxies-for-scale-performance-and-monitoring-gogaruco-igvitacom-1396734
本セッションは、プロキシラブという同氏によるプロキシのすすめともいうべき発表でした。静的ページのキャッシュという本来の機能だけではなく、ロードバランサーとして使うということはありますが、もう少し踏み込んだ使い方をしてみようというお話です。
例えば、一つのリクエストをproductionとstagingの両方にプロキシして(もちろん返すのはproductionのレスポンスだけ)、stagingのベンチマークをしたりだとか、ログを採集してリアルタイムに監視したり、あるいはデータそのものをダイナミックに書き換えたり、などになります。採集したログを元に、パフォーマンステストを行うためにautoperfというツールも紹介されていました。
そして、ポイントは、このようなことが、同氏作のEM-Proxyというライブラリを使うことで簡単に実装可能だということでした。このライブラリはRuby製なので、やはりパフォーマンスが気になるところですが、EventMachineを使ってイベント駆動になっているので、ほとんど影響はないとのことでした。
同氏のブログエントリRuby Proxies for Scale and Monitoringも参考にして下さい。
プロキシをミドルウェアとして機能を持たせるというのはおもしろいし、それを慣れ親しんだRubyで実装できるというのはかなり魅力的だと思います。ただ、やっぱりパフォーマンスに関しては実際に試してみないと気になります。プロキシに持たせる機能のアイデアとパフォーマンス等のデメリット(メンテナンスコストが上がるなど)の天秤だとは思いますが、今後は、発生した問題の解決策として「プロキシサーバーに実装してしまおう」という選択肢が増えたのは良いですね。
カテゴリー:RailsConf2009       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=390&subd=cookpadtech&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<br /><p>こんにちは、高田悟史です。クラウドとかスケールとかそういうインフラよりのセッションを選んで参加しています。</p>
<p>今回は、Ilya Grigorik氏によるセッション<a href="http://en.oreilly.com/rails2009/public/schedule/detail/7967">Art of the Ruby Proxy for Scale, Performance, and Monitoring</a>のレポートです。</p>
<p>スライドは下記のアドレスで参照できます。<br />
<a href="http://www.slideshare.net/igrigorik/ruby-proxies-for-scale-performance-and-monitoring-gogaruco-igvitacom-1396734">http://www.slideshare.net/igrigorik/ruby-proxies-for-scale-<br />performance-and-monitoring-gogaruco-igvitacom-1396734</a></p>
<p>本セッションは、プロキシラブという同氏によるプロキシのすすめともいうべき発表でした。静的ページのキャッシュという本来の機能だけではなく、ロードバランサーとして使うということはありますが、もう少し踏み込んだ使い方をしてみようというお話です。</p>
<p>例えば、一つのリクエストをproductionとstagingの両方にプロキシして(もちろん返すのはproductionのレスポンスだけ)、stagingのベンチマークをしたりだとか、ログを採集してリアルタイムに監視したり、あるいはデータそのものをダイナミックに書き換えたり、などになります。採集したログを元に、パフォーマンステストを行うために<a href="http://github.com/igrigorik/autoperf">autoperf</a>というツールも紹介されていました。</p>
<p>そして、ポイントは、このようなことが、同氏作の<a href="http://github.com/igrigorik/em-proxy">EM-Proxy</a>というライブラリを使うことで簡単に実装可能だということでした。このライブラリはRuby製なので、やはりパフォーマンスが気になるところですが、<a href="http://rubyeventmachine.com/">EventMachine</a>を使ってイベント駆動になっているので、ほとんど影響はないとのことでした。</p>
<p>同氏のブログエントリ<a href="http://www.igvita.com/2009/04/20/ruby-proxies-for-scale-and-monitoring/">Ruby Proxies for Scale and Monitoring</a>も参考にして下さい。</p>
<p>プロキシをミドルウェアとして機能を持たせるというのはおもしろいし、それを慣れ親しんだRubyで実装できるというのはかなり魅力的だと思います。ただ、やっぱりパフォーマンスに関しては実際に試してみないと気になります。プロキシに持たせる機能のアイデアとパフォーマンス等のデメリット(メンテナンスコストが上がるなど)の天秤だとは思いますが、今後は、発生した問題の解決策として「プロキシサーバーに実装してしまおう」という選択肢が増えたのは良いですね。</p>
カテゴリー:RailsConf2009  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookpadtech.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookpadtech.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookpadtech.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookpadtech.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookpadtech.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookpadtech.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookpadtech.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookpadtech.wordpress.com/390/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookpadtech.wordpress.com/390/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookpadtech.wordpress.com/390/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techlife.cookpad.com&blog=4985499&post=390&subd=cookpadtech&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://techlife.cookpad.com/2009/05/10/ruby-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">cookpadtech</media:title>
		</media:content>
	</item>
	</channel>
</rss>