<?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>candycane development blog</title> <atom:link href="http://blog.candycane.jp/feed" rel="self" type="application/rss+xml" /><link>http://blog.candycane.jp</link> <description></description> <lastBuildDate>Wed, 16 May 2012 11:35:01 +0000</lastBuildDate> <language>ja</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <item><title>PHP版Redmine CandyCaneにコンプガチャを実装しました</title><link>http://blog.candycane.jp/archives/1438</link> <comments>http://blog.candycane.jp/archives/1438#comments</comments> <pubDate>Wed, 16 May 2012 11:15:29 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[CakePHP2]]></category> <category><![CDATA[candycane]]></category> <category><![CDATA[スライド]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1438</guid> <description><![CDATA[PHPカンファレンス関西のLTで発表したネタです。スペインやロシアからも開発者が参加するようになりさらに開発の活発さが増しているCandyCaneですが、今回はコンプガチャ機能を実装してみました。 前日の飲み会中の会話からネタとして発想し、そこから無限もやしを摘みながら4時間程度で実装したプラグインです。 現在は無制限にガチャを回せていますが、チケットを閉じる度に回せるとかペイパルで送金したらさらに回せるみたいなソリューションとして育てていける訳ないですね、、、はい。 また移行作業ではインストーラーについてもCake2で動くように改造しています。こちらも見た目で変化がわかるようにシロクマのキャラクターを背景に追加しました。やっぱり可愛いほうがヤル気が出ますからね。 発表につかったスライドは下記になります。新しいインストーラーとコンプガチャを試してみたい方はダウンロードページからα版をどうぞ。 CakePHP版Redmine CandyCane]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/05/octo.png"><img src="http://blog.candycane.jp/wp-content/uploads/2012/05/octo-600x400.png" alt="" title="octo" width="600" height="400" class="aligncenter size-medium wp-image-1439" /></a></p><p>PHPカンファレンス関西のLTで発表したネタです。<a href="https://github.com/yandod/candycane/commits/migrate-cake2" target="_blank">スペインやロシアからも開発者が参加するようになり</a>さらに開発の活発さが増しているCandyCaneですが、今回はコンプガチャ機能を実装してみました。</p><p><span style="text-align:center; display: block;"><a href="http://blog.candycane.jp/archives/1438"><img src="http://img.youtube.com/vi/sKv3rhhtdkg/2.jpg" alt="" /></a></span></p><p>前日の飲み会中の会話からネタとして発想し、そこから<a href="http://www.flickr.com/photos/omoon/6812719272/" target="_blank">無限もやし</a>を摘みながら4時間程度で実装したプラグインです。<br /> 現在は無制限にガチャを回せていますが、<strong><span style="color:red">チケットを閉じる度に回せる</span></strong>とか<strong><span style="color:red">ペイパルで送金したらさらに回せる</span></strong>みたいなソリューションとして育てていける訳ないですね、、、はい。</p><p>また移行作業ではインストーラーについてもCake2で動くように改造しています。こちらも見た目で変化がわかるようにシロクマのキャラクターを背景に追加しました。やっぱり可愛いほうがヤル気が出ますからね。</p><p><span style="text-align:center; display: block;"><a href="http://blog.candycane.jp/archives/1438"><img src="http://img.youtube.com/vi/0j2q7xYdiYU/2.jpg" alt="" /></a></span></p><p>発表につかったスライドは下記になります。新しいインストーラーとコンプガチャを試してみたい方は<a href="https://github.com/yandod/candycane/downloads" target="_blank">ダウンロードページ</a>からα版をどうぞ。</p><p><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/yandod/cakephpredmine-candycane" title="CakePHP版Redmine CandyCane" target="_blank">CakePHP版Redmine CandyCane</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12954263" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1438/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>「40分濃縮 PHP classの教室」をPHPカンファレンス関西2012で開催しました</title><link>http://blog.candycane.jp/archives/1429</link> <comments>http://blog.candycane.jp/archives/1429#comments</comments> <pubDate>Wed, 16 May 2012 10:45:17 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[スライド]]></category> <category><![CDATA[動画]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1429</guid> <description><![CDATA[40分濃縮 PHP classの教室 すでにブックマークなどでご覧になった方もいるかと思いますが、表題の講演をPHPカンファレンス関西で行って来ました。サブ会場での講演でしたが40人以上の人にお越し頂けたので弾丸でしたが大阪にいってよかったと思います。既に動画などは上がっている内容であっても、参加者のニーズがあるのであれば再演するというのはいいことなのではと思いました。 なお今回のセッションの動画もすでに公開されています。 Video streaming by Ustream 今回は時間の関係で内容を大幅に削っています。継承やstaticにほとんど触れないオブジェクト指向というのもさみしい気もしますが、まずは関数ベースのコードを理解できる人がクラスを使ったコードを追うことができるのが目標でしょうか。今後もこのような中級者向けのセッションとしてPHPUnitやPHPの環境構築、セッションの取り扱いと拡張といった内容を実施していくつもりです。 お越しいただいた方々、素晴らしいカンファレンスを企画して実施していただいたスタッフの皆さんありがとうございました。 LTで発表したPHP版Redmine CandyCaneにコンプガチャを実装しましたはこちら]]></description> <content:encoded><![CDATA[<p><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/yandod/40-php-class" title="40分濃縮 PHP classの教室" target="_blank">40分濃縮 PHP classの教室</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12905975" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p><p>すでにブックマークなどでご覧になった方もいるかと思いますが、表題の講演をPHPカンファレンス関西で行って来ました。サブ会場での講演でしたが40人以上の人にお越し頂けたので弾丸でしたが大阪にいってよかったと思います。既に動画などは上がっている内容であっても、参加者のニーズがあるのであれば再演するというのはいいことなのではと思いました。</p><p>なお今回のセッションの動画もすでに公開されています。<br /> <iframe width="480" height="296" src="http://www.ustream.tv/embed/recorded/22525056" scrolling="no" frameborder="0" style="border: 0px none transparent;"> </iframe><br /> <br /><a href="http://www.ustream.tv/" style="padding: 2px 0px 4px; width: 400px; background: #ffffff; display: block; color: #000000; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;" target="_blank">Video streaming by Ustream</a></p><p>今回は時間の関係で内容を大幅に削っています。継承やstaticにほとんど触れないオブジェクト指向というのもさみしい気もしますが、まずは関数ベースのコードを理解できる人がクラスを使ったコードを追うことができるのが目標でしょうか。今後もこのような中級者向けのセッションとしてPHPUnitやPHPの環境構築、セッションの取り扱いと拡張といった内容を実施していくつもりです。</p><p>お越しいただいた方々、素晴らしいカンファレンスを企画して実施していただいたスタッフの皆さんありがとうございました。</p><p>LTで発表した<a href="http://blog.candycane.jp/archives/1438" title="PHP版Redmine CandyCaneにコンプガチャを実装しました" target="_blank">PHP版Redmine CandyCaneにコンプガチャを実装しましたはこちら</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1429/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>PHPカンファレンス北海道でCakePHP2ワークショップを開催しました</title><link>http://blog.candycane.jp/archives/1423</link> <comments>http://blog.candycane.jp/archives/1423#comments</comments> <pubDate>Tue, 08 May 2012 02:34:29 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[スライド]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1423</guid> <description><![CDATA[少し前になりますが、PHPカンファレンス北海道にてCakePHP2のワークショップを開催させて頂きました。かなり直前で無理にお願いしてワークショップの開催をお願いしたにも関わらず、快諾して頂いたnazoさんには頭が上がりません。本当にありがとうございました。 当日の資料は下記のスライドです。今回は動画などはありませんので、参加者の方で復習したい方は下北沢で開催された同ワークショップの動画を見ていただくのが良いかと思います。 3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012 View more presentations from yandod PHPカンファレンスは最近は関西、北海道でも開催されるようになり広がっていますね。今週末も関西で開催されますのでセッションをやり参加します。]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/05/FxCam_1334967412548.jpg"><img src="http://blog.candycane.jp/wp-content/uploads/2012/05/FxCam_1334967412548-600x400.jpg" alt="" title="FxCam_1334967412548" width="600" height="400" class="aligncenter size-medium wp-image-1424" /></a></p><p>少し前になりますが、<a href="http://phpcon.php.gr.jp/hokkaido/2012/" target="_blank">PHPカンファレンス北海道</a>にてCakePHP2のワークショップを開催させて頂きました。かなり直前で無理にお願いしてワークショップの開催をお願いしたにも関わらず、快諾して頂いたnazoさんには頭が上がりません。本当にありがとうございました。</p><p>当日の資料は下記のスライドです。今回は動画などはありませんので、参加者の方で復習したい方は<a href="http://blog.candycane.jp/archives/1200" title="初心者向け 8時間耐久CakePHP2勉強会を開催しました" target="_blank">下北沢で開催された同ワークショップの動画</a>を見ていただくのが良いかと思います。</p><p><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/yandod/3cakephp21-in-php2012" title="3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012" target="_blank">3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12839909" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br /> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/yandod" target="_blank">yandod</a></p><p>PHPカンファレンスは最近は関西、北海道でも開催されるようになり広がっていますね。今週末も関西で開催されますのでセッションをやり参加します。</p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1423/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Webデベロッパハッカソン #1開催報告</title><link>http://blog.candycane.jp/archives/1408</link> <comments>http://blog.candycane.jp/archives/1408#comments</comments> <pubDate>Mon, 30 Apr 2012 08:20:22 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[ハッカソン]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1408</guid> <description><![CDATA[PoRTAL Shibuyaはものすごく作業がしやすかったです。表題のとおりハッカソンを開催して参加してきました。今回はお題などを設定しようとも思ったのですが、現在執筆中の書籍の作業があまりにも溜まってしまった事もありとりあえず2,3人で作業できたらいいかなと思い、ノンジャンルな感じでatndにイベントを立ててみました。しかし蓋を開けてみると総勢13人参加のにぎやかなハッカソンになりました。 最初に自己紹介タイムで作業内容を発表した後はタスクボードに予定を貼りだしてひたすら作業です。他の人がタスクを完了させているのを見ると自分もポストイットをDoneの位置に動かしたいのでがんばろうという気が起きてきます。各人の奮闘もあり翌朝にはかなりの数のタスクがDoneの位置に移動していました。 そしてハッカソンといえばやはりピザ！。かなりストイックなガチハッカソンでしたが、会場のPoRTALは椅子も座りやすくキッチンなどがあるので気分転換もしやすくてとても快適でした。全体の解散を午前中にすると体力的な負担も小さくなりそうなので、すこし改善を加えつつまた開催したいねーと参加者一同意気投合したさわやかな朝になりました。参加された皆さんはお疲れ様でした！ PoRTAL Shibuyaの作業環境を体験してみたい方や宿題が溜まってしまっている方、開発仲間が欲しい方はぜひ次回ご参加ください。作業テーマは縛りはないのできっとなんでも大丈夫です。（今回もPHP、Python、MySQL、書籍執筆、PS VITA用アプリ開発、Webサイトコーディングなどバラバラでした）また超生産性の高いPoRTALの様子が気になる方はFacebookのページをウォッチすると良いと思います！]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/04/467632_3829813905791_1291158088_3684933_1581016305_o.jpg"><img src="http://blog.candycane.jp/wp-content/uploads/2012/04/467632_3829813905791_1291158088_3684933_1581016305_o-600x399.jpg" alt="" title="467632_3829813905791_1291158088_3684933_1581016305_o" width="600" height="399" class="aligncenter size-medium wp-image-1409" /></a></p><p>PoRTAL Shibuyaはものすごく作業がしやすかったです。表題のとおりハッカソンを開催して参加してきました。今回はお題などを設定しようとも思ったのですが、現在執筆中の書籍の作業があまりにも溜まってしまった事もありとりあえず2,3人で作業できたらいいかなと思い、ノンジャンルな感じで<a href="http://atnd.org/events/28214" target="_blank">atndにイベントを立ててみました</a>。しかし蓋を開けてみると総勢13人参加のにぎやかなハッカソンになりました。</p><p><a href="http://blog.candycane.jp/wp-content/uploads/2012/04/466016_3833939328924_1291158088_3686477_477017418_o.jpg"><img src="http://blog.candycane.jp/wp-content/uploads/2012/04/466016_3833939328924_1291158088_3686477_477017418_o-600x399.jpg" alt="" title="466016_3833939328924_1291158088_3686477_477017418_o" width="600" height="399" class="aligncenter size-medium wp-image-1411" /></a></p><p>最初に自己紹介タイムで作業内容を発表した後はタスクボードに予定を貼りだしてひたすら作業です。他の人がタスクを完了させているのを見ると自分もポストイットをDoneの位置に動かしたいのでがんばろうという気が起きてきます。各人の奮闘もあり翌朝にはかなりの数のタスクがDoneの位置に移動していました。</p><p><a href="http://blog.candycane.jp/wp-content/uploads/2012/04/154585_347491201972666_100001353686587_882454_136700427_n.jpeg"><img src="http://blog.candycane.jp/wp-content/uploads/2012/04/154585_347491201972666_100001353686587_882454_136700427_n-448x600.jpg" alt="" title="154585_347491201972666_100001353686587_882454_136700427_n" width="448" height="600" class="aligncenter size-medium wp-image-1412" /></a></p><p>そしてハッカソンといえばやはりピザ！。かなりストイックなガチハッカソンでしたが、<a href="http://www.hituji.jp/portal/" target="_blank">会場のPoRTAL</a>は椅子も座りやすくキッチンなどがあるので気分転換もしやすくてとても快適でした。全体の解散を午前中にすると体力的な負担も小さくなりそうなので、すこし改善を加えつつまた開催したいねーと参加者一同意気投合したさわやかな朝になりました。参加された皆さんはお疲れ様でした！</p><p>PoRTAL Shibuyaの作業環境を体験してみたい方や宿題が溜まってしまっている方、開発仲間が欲しい方はぜひ次回ご参加ください。作業テーマは縛りはないのできっとなんでも大丈夫です。（今回もPHP、Python、MySQL、書籍執筆、PS VITA用アプリ開発、Webサイトコーディングなどバラバラでした）また超生産性の高い<a href="https://www.facebook.com/PortalShibuya" target="_blank">PoRTALの様子</a>が気になる方はFacebookのページをウォッチすると良いと思います！</p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1408/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>PHPが動くPaaSのベンチマーク(heroku phpfog orchestra)</title><link>http://blog.candycane.jp/archives/1390</link> <comments>http://blog.candycane.jp/archives/1390#comments</comments> <pubDate>Tue, 17 Apr 2012 05:50:29 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[heroku]]></category> <category><![CDATA[PHP]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1390</guid> <description><![CDATA[PHPが動くPaaSの中でも知名度の高いheroku phpfog orchestraのそれぞれ実際のところどの程度のパフォーマンスが出るのか気になったので調べてみました。]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/04/2.png"><img src="http://blog.candycane.jp/wp-content/uploads/2012/04/2.png" alt="" title="---_2" width="590" height="371" class="aligncenter size-full wp-image-1392" /></a></p><p>PHPが動くPaaSの中でも知名度の高いheroku phpfog orchestraのそれぞれ実際のところどの程度のパフォーマンスが出るのか気になったので調べてみました。結論から言うとどのプラットフォームもAmazon EC2内のネットワークがボトルネックになっており<strong>パフォーマンスの差はほとんどありませんでした</strong>。</p><p>テストは下記の簡単なスクリプトに対してabで並列数１でリクエストを投げるという形で行いました。下記のグラフは１秒間あたりに処理したリクエスト数です。</p><div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">getdate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>結果が頭打ちになってしまっている原因はおそらくネットワークです。今回のテストは日本から行なっているので海を越えて東海岸のEC2に到達するまでの部分がボトルネックになっていると思われます。３プラットフォームに対してtracerouteを取ってみましたがどれもAmazonのネットワークに入った後に追跡ができなくなっています。どのプラットフォームも連続的に接続を行うと接続がリセットされてしまう現象が起こるのですが、<strong>とくにphpfogはその頻度が高くテスト自体が難しい状況でした。</strong></p><div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">traceroute to argon-stack-1879049447.us-east-1.elb.amazonaws.com (107.20.154.48), 64 hops max, 72 byte packets
 1  1.1.1.1 (#######)  2.618 ms  0.738 ms  0.699 ms
 2  hoge.nttpc.ne.jp (######)  2.966 ms  3.323 ms  3.011 ms
 3  210.153.249.209 (210.153.249.209)  3.511 ms  3.650 ms  3.476 ms
 4  210.153.249.161 (210.153.249.161)  4.049 ms  5.707 ms  4.542 ms
 5  210.165.252.145 (210.165.252.145)  3.617 ms  4.084 ms  4.376 ms
 6  xg5-0-n-otemachi-core6.sphere.ad.jp (202.239.114.173)  3.881 ms  3.082 ms  3.075 ms
 7  xe-7-1-3.a20.tokyjp01.jp.ra.gin.ntt.net (203.105.72.161)  3.596 ms  3.251 ms  2.967 ms
 8  ae-6.r25.tokyjp01.jp.bb.gin.ntt.net (61.213.162.169)  2.919 ms
    ae-6.r24.tokyjp01.jp.bb.gin.ntt.net (61.213.162.161)  3.240 ms  3.238 ms
 9  ae-1.r20.tokyjp01.jp.bb.gin.ntt.net (129.250.2.20)  5.840 ms  9.010 ms
    ae-9.r20.tokyjp01.jp.bb.gin.ntt.net (129.250.2.92)  3.462 ms
10  as-1.r20.sttlwa01.us.bb.gin.ntt.net (129.250.4.189)  108.546 ms  101.626 ms  101.496 ms
11  ae-0.r21.sttlwa01.us.bb.gin.ntt.net (129.250.2.54)  96.991 ms  100.001 ms  100.137 ms
12  ae-5.r21.asbnva02.us.bb.gin.ntt.net (129.250.4.181)  175.298 ms  202.796 ms  167.169 ms
13  ae-2.r00.asbnva02.us.bb.gin.ntt.net (129.250.3.114)  163.586 ms
    ae-2.r04.asbnva02.us.bb.gin.ntt.net (129.250.4.207)  169.794 ms  173.062 ms
14  ae-1.amazon.asbnva02.us.bb.gin.ntt.net (168.143.191.26)  164.108 ms  168.722 ms
    ae-2.amazon.asbnva02.us.bb.gin.ntt.net (168.143.228.38)  184.965 ms
15  205.251.245.1 (205.251.245.1)  184.698 ms
    72.21.220.45 (72.21.220.45)  179.675 ms  169.800 ms
16  72.21.222.149 (72.21.222.149)  169.540 ms  170.406 ms
    205.251.245.47 (205.251.245.47)  175.874 ms
17  216.182.224.203 (216.182.224.203)  164.258 ms  176.473 ms  167.645 ms
18  * * *</pre></div></div><p>参考までにさくらのレンタルサーバー（スタンダード）とロリポップも一緒に同じテストをしてみると圧倒的なパフォーマンスを見せたのはロリポップでした。<strong style="color:Red">特にロリポップは秒間20リクエスト以上、並列数を増やしていくと80リクエストを処理する事もあり想像以上のパフォーマンスでした。</strong></p><p><a href="http://blog.candycane.jp/wp-content/uploads/2012/04/1.png"><img src="http://blog.candycane.jp/wp-content/uploads/2012/04/1.png" alt="" title="---_1" width="600" height="371" class="aligncenter size-full wp-image-1393" /></a></p><p>パフォーマンスが高い時もある一方で不調時の落ち込みも大きく、結果のばらつきでいえばさくらインターネットの方が安定した数値が出ています。</p><p>東海岸のAmazon以外で稼働するPaaSがあれば良いのですが、現状ではパフォーマンス面でPaaSには差がつかない状況です。一方で無料で作れるアプリの数やツールの充実度、拡張などではherokuが群を抜いています。パフォーマンスをさらに引き出すようなノウハウをご存知の方がいたら是非教えて下さい。</p><p>ベンチマークの結果は下記に公開しておきます。<br /> <a href="https://docs.google.com/spreadsheet/ccc?key=0AtzgmVoGQP6zdEZFeEJ2Zm1BUm1NYVN0aGFhMVB4bGc#gid=0">PaaS bench</a></p><p>追記<br /> サンフランシスコに出張中の元同僚に同じコマンドを投げてもらったところ、2倍近く性能が向上していました。</p><div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">Concurrency Level: 1
Time taken for tests: 6.670 seconds
Complete requests: 30
Failed requests: 0
Write errors: 0
Total transferred: 9780 bytes
HTML transferred: 4140 bytes
Requests per second: 4.50 [#/sec] (mean)
Time per request: 222.325 [ms] (mean)
Time per request: 222.325 [ms] (mean, across all concurrent requests)
Transfer rate: 1.43 [Kbytes/sec] received
&nbsp;
Connection Times (ms)
&nbsp;
&nbsp;
&nbsp;
min mean[+/-sd] median max
Connect: 180 215 23.6 210 267
Processing: 1 8 5.6 5 24
Waiting: 1 7 5.5 5 23
Total: 186 222 25.0 217 274
&nbsp;
Percentage of the requests served within a certain time (ms)
50% 217
66% 228
75% 240
80% 251
90% 261
95% 270
98% 274
99% 274
100% 274 (longest request)</pre></div></div>]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1390/feed</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>HerokuでPHPをmbstring付きで動かす&amp;パフォーマンス比較</title><link>http://blog.candycane.jp/archives/1375</link> <comments>http://blog.candycane.jp/archives/1375#comments</comments> <pubDate>Wed, 11 Apr 2012 04:53:36 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[heroku]]></category> <category><![CDATA[PHP]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1375</guid> <description><![CDATA[PHPだってHerokuで動くんです。mbstringだって動くしパフォーマンスもphpfogより良好。]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/04/mbstring.png"><img src="http://blog.candycane.jp/wp-content/uploads/2012/04/mbstring-600x286.png" alt="" title="mbstring" width="600" height="286" class="aligncenter size-medium wp-image-1376" /></a></p><p>そろそろgithubと並んで使った事が無いなら危機感を感じるレベルなPaaSですが、PHPの場合は何を使っていますか？PHP FogやOrchestra.ioといったPHPに最適化されたプラットフォームもありますが、PaaSの王道とも言えるHerokuでもPHPは非公式にサポートされています。</p><p>しかもこれが非公式サポートであるにも関わらず、facebookの開発者コンソールからクリックだけでデプロイできるので密かにメジャーなプラットフォームになっているという不思議な状況です。Ruby界隈では常識かと思われるHerokuがPHP界隈で流行っていない原因に<strong>「mbstringがサポートされていない」</strong>というのがあります。しかし今回ちょっとやってみたら<strong style="color:red">mbstringをHeroku上にセットアップする事が出来ました。</strong></p><p>ひとまずコチラが実際の環境です。<br /> <a href="http://strong-warrior-2383.herokuapp.com/" target="_blank">phpinfo() on Heroku</a></p><h3>mbstringをherokuで動かした方法</h3><p>参考にしたのは下記に紹介されていたmongo.soをセットアップする方法です。同じ方法で作成した拡張を読みこまさせてみたら動きました。<code>heroku run bash</code>を使えばどんな拡張でもビルドできそうですね。</p><p><a href="http://stackoverflow.com/questions/8656247/php-multibyte-string-on-heroku">linux &#8211; PHP Multibyte String on Heroku &#8211; Stack Overflow</a></p><p>作成したPHP拡張モジュールをgithubに公開しています。この拡張をアプリのリポジトリにいれた上で、プロジェクトフォルダ内のphp.iniから読み込ませれば動作しているようです。具体的な例はこのサンプルアプリのリポジトリをご覧ください。</p><p><a href="https://github.com/yandod/phpinfo-heroku">yandod/phpinfo-heroku</a></p><p>やっている事はHeroku上でビルドしたmbstring.soをプロジェクト内に配置して、php.iniを下記のように記載してこれもプロジェクト内に配置します。</p><div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">extension=/app/www/mbstring.so</pre></div></div><p>拡張モジュールについては今後はここに集まるかもしれませんね。使いたい拡張があった人はビルドした後にプルリクエストを送るとよさそうですね。</p><h3>Herokuってパフォーマンスどうなの？</h3><p>PHPに最適化されているその他の環境ではなくHerokuを使う利点はやはりプラットフォームが大きい事による安定性やパフォーマンスだと思われます。下北沢オープンソースカフェのマスター河村さんが計測してみた所によると、herokuはpagodaboxやphpfogよりもパフォーマンスが良かったようです。</p><p><object width="400" height="250" ><param name="allowfullscreen" value="true" /><param name="movie" value="http://www.facebook.com/v/3015738917866" /><embed src="http://www.facebook.com/v/3015738917866" type="application/x-shockwave-flash" allowfullscreen="true" width="400" height="250"></embed></object></p><h3>PHPerもHerokuを始めよう</h3><p>というわけでまだherokuデビューをしていないPHPerはherokuをやってみるといいと思います。アカウントを取得したらやることはそんなに多くありません。</p><ul><li>Heroku Toolbeltのインストール</li><li>heroku create &#8211;stack cedar</li><li>git push heroku master</li></ul><p>本当に簡単なので是非試してみてくださいー。</p><p>参考：<br /> <a href="http://d.hatena.ne.jp/Kenji_s/20120228/1330418302">heroku で PHP を使う &#8211; A Day in Serenity @ Kenji</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1375/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>「PHP classの教室」を開催しました。(スライド＆動画あり)</title><link>http://blog.candycane.jp/archives/1361</link> <comments>http://blog.candycane.jp/archives/1361#comments</comments> <pubDate>Thu, 22 Mar 2012 02:22:59 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[スライド]]></category> <category><![CDATA[動画]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1361</guid> <description><![CDATA[下北沢オープンソースカフェでPHPのオブジェクト指向入門講座を開催しました。 公開したスライドにかなりブックマークをした貰ったので既に資料をご覧になった方もいるかもしれません。 現場での参加者は4名でWordPressのテーマ作成などはしているけれど、classが出てくるとコードが追えなくなるという話を以前、プリンス西川さんが言っていたのでそれに応える形で話をしました。 実際のところfunctionとグローバル変数の組み合わせでも頑張れば何でも作れるわけですが、肥大化する引数やグローバルな変数や関数の乱立は他のプラグインの導入の際のリスクになりえます。そこから脱する為に必要な文法の知識を取り扱っていました。 また何度かにわけてやると集まるのが大変なので8時間耐久フォーマットで一気に実施しています。（今回は6時間くらいで終われました） PHPでオブジェクト指向というと下岡さんの書かれた本などもありますね。 書籍「PHPによるデザインパターン入門」の原稿テキストを公開します &#8211; Do You PHP はてな 今回の資料はfunctionベースの開発をしている人がclassの文法を学ぶ事が目的なのでデザインパターンや設計の話は一切していません。サンプルコード程度のものであればクラスにせずとも頑張ればメンテナンスもできるでしょう。 とはいえ複雑な関数を分割したり、グローバル以外の使いやすいスコープを得る為にクラスにしてメンバ変数を使うという方法はやはり知らないよりは知っている方がいい知識なのではと思います。 PHP classの教室 View more presentations from yandod スライドの他にオープンソースカフェの河村さんのおかげでUstreamの動画が6時間分ほどあります。質問をしたり、スライドにはないコードをデモしたりもしているのでスライドを見て気になった所を動画で見なおしたりと学習に役立ててもらえればと思います。 次の展開としてはさらに初級レベルに行くか、がっつりユニットテストをするかと行った所を予定はしています。まぁ要望次第ですね。 動画 Ustream.tv: ユーザー cognitom: 8時間耐久「クラスのクラス」 &#8211; 1/5, 2012/3/21(水) by Yusuke Ando. その他 Ustream.tv: ユーザー cognitom: 8時間耐久「クラスのクラス」- 2/5, 2012/3/21(水) by Yusuke Ando. その他 Ustream.tv: ユーザー cognitom: 8時間耐久「クラスのクラス」 &#8211; 3/5, 下北沢オープンソースCafe. その他 Ustream.tv: ユーザー [...]]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/03/2x.jpg"><img src="http://blog.candycane.jp/wp-content/uploads/2012/03/2x-600x450.jpg" alt="" title="2x" width="600" height="450" class="aligncenter size-medium wp-image-1363" /></a></p><p><a href="http://www.osscafe.net/" target="_blank">下北沢オープンソースカフェ</a>でPHPのオブジェクト指向入門講座を開催しました。<br /> <a href="http://www.slideshare.net/yandod/php-class" target="_blank">公開したスライド</a>にかなりブックマークをした貰ったので既に資料をご覧になった方もいるかもしれません。<br /> 現場での参加者は4名でWordPressのテーマ作成などはしているけれど、classが出てくるとコードが追えなくなるという話を以前、<a href="https://twitter.com/#!/shinichiN" target="_blank">プリンス西川</a>さんが言っていたのでそれに応える形で話をしました。<br /> 実際のところfunctionとグローバル変数の組み合わせでも頑張れば何でも作れるわけですが、肥大化する引数やグローバルな変数や関数の乱立は他のプラグインの導入の際のリスクになりえます。そこから脱する為に必要な文法の知識を取り扱っていました。</p><p>また何度かにわけてやると集まるのが大変なので8時間耐久フォーマットで一気に実施しています。（今回は6時間くらいで終われました）</p><p>PHPでオブジェクト指向というと下岡さんの書かれた本などもありますね。<br /> <a href="http://d.hatena.ne.jp/shimooka/20100301/1267436385">書籍「PHPによるデザインパターン入門」の原稿テキストを公開します &#8211; Do You PHP はてな</a></p><p>今回の資料はfunctionベースの開発をしている人がclassの文法を学ぶ事が目的なのでデザインパターンや設計の話は一切していません。サンプルコード程度のものであればクラスにせずとも頑張ればメンテナンスもできるでしょう。<br /> とはいえ複雑な関数を分割したり、グローバル以外の使いやすいスコープを得る為にクラスにしてメンバ変数を使うという方法はやはり知らないよりは知っている方がいい知識なのではと思います。</p><div style="width:425px" id="__ss_12091131"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/yandod/php-class" title="PHP classの教室" target="_blank">PHP classの教室</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12091131" 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/yandod" target="_blank">yandod</a></div></p></div><p>スライドの他にオープンソースカフェの河村さんのおかげでUstreamの動画が6時間分ほどあります。質問をしたり、スライドにはないコードをデモしたりもしているのでスライドを見て気になった所を動画で見なおしたりと学習に役立ててもらえればと思います。</p><p>次の展開としてはさらに初級レベルに行くか、がっつりユニットテストをするかと行った所を予定はしています。まぁ要望次第ですね。</p><h3>動画</h3><p><a href="http://www.ustream.tv/recorded/21256905">Ustream.tv: ユーザー cognitom: 8時間耐久「クラスのクラス」 &#8211; 1/5, 2012/3/21(水) by Yusuke Ando. その他</a><br /> <a href="http://www.ustream.tv/recorded/21253084">Ustream.tv: ユーザー cognitom: 8時間耐久「クラスのクラス」- 2/5, 2012/3/21(水) by Yusuke Ando. その他</a><br /> <a href="http://www.ustream.tv/recorded/21254139">Ustream.tv: ユーザー cognitom: 8時間耐久「クラスのクラス」 &#8211; 3/5, 下北沢オープンソースCafe. その他</a><br /> <a href="http://www.ustream.tv/recorded/21254817">Ustream.tv: ユーザー cognitom: 8時間耐久「クラスのクラス」 &#8211; 4/5, 下北沢オープンソースCafe. その他</a><br /> <a href="http://www.ustream.tv/recorded/21255084">Ustream.tv: ユーザー cognitom: 8時間耐久「クラスのクラス」5/5, 2012/3/21(水) by Yusuke Ando. その他</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1361/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>CakePHP2.1.0 &#8220;安定版&#8221;がリリースされました</title><link>http://blog.candycane.jp/archives/1345</link> <comments>http://blog.candycane.jp/archives/1345#comments</comments> <pubDate>Mon, 05 Mar 2012 02:14:43 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[CakePHP]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1345</guid> <description><![CDATA[CakePHP2.1.0が日本時間の3/5にリリースされました。熱心なCake職人の方にとっては規定の事実でしたが、まだそんなに齧ってないという人向けに今回のリリースのトピックを簡単にまとめます。]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/03/cake2.1.png.png"><img class="aligncenter size-full wp-image-1346" title="cake2.1.png" src="http://blog.candycane.jp/wp-content/uploads/2012/03/cake2.1.png.png" alt="" width="638" height="230" /></a></p><p>CakePHP2.1.0が日本時間の3/5にリリースされました。熱心なCake職人の方にとっては規定の事実でしたが、まだそんなに齧ってないという人向けに今回のリリースのトピックを簡単にまとめます。</p><h2>ウェブサイトがリニューアルされた</h2><p><a href="http://blog.candycane.jp/wp-content/uploads/2012/03/cake2.1w.png"><img class="aligncenter size-medium wp-image-1347" title="cake2.1w" src="http://blog.candycane.jp/wp-content/uploads/2012/03/cake2.1w-600x443.png" alt="" width="600" height="443" /></a></p><p>長い間利用されてきたサイトのデザインがリニューアルされて2｡0仕様に。それに伴ってマニュアルのページもスタイルが変更されています。またサイトのキャッチコピーも<strong>「CakePHPはウェブアプリケーションを素早くシンプルに少ないコードで作れます」</strong>というコピーに変わりました。</p><h2>プラグインの検索ができるようになった</h2><p><a href="http://blog.candycane.jp/wp-content/uploads/2012/03/plugin.png"><img class="aligncenter size-medium wp-image-1350" title="plugin" src="http://blog.candycane.jp/wp-content/uploads/2012/03/plugin-600x420.png" alt="" width="600" height="420" /></a></p><p>さまざまな<a href="http://plugins.cakephp.org/" target="_blank">プラグインの情報を登録して検索できるサービス</a>が開始されました。もともとはCake Packagesというサイトでしたが作者の方がコアチームに参加して統合された形のようです。</p><h2>PHP5.2.8以降に対応</h2><p>PHPのバグに対応して必須の環境が5.2.8になりました。もちろん5.3系や5.4系でも動作します。最新のPHPの機能への実装はいずれ行わますが、CakePHP2.0の時点でnamespaceなどを見越した設計をしているので移行はスムーズに進むのではと思います。</p><h2>PEARチャンネル経由のインストールができるようになった</h2><p><a href="http://blog.candycane.jp/wp-content/uploads/2012/03/pear.png"><img src="http://blog.candycane.jp/wp-content/uploads/2012/03/pear-600x455.png" alt="" title="pear" width="600" height="455" class="aligncenter size-medium wp-image-1354" /></a><br /> なぜか<a href="http://pear.cakephp.org/" target="_blank">PEARからのインストール</a>を今更サポート</p><h2>既存の機能のリファクタリング</h2><p>既存の機能の応用的な部分の整理が進んでいます。通常のアプリケーション開発に関する部分は代わっていませんが、思い当たる機能を使っている場合は念のため確認です。</p><ul><li>Content Type Views<br /> JSONやXMLのビューを簡単に返せるように。</li><li>Extending views<br /> Viewの継承を利用した画面レイアウトをサポート</li><li>Plugin.view<br /> プラグイン内のビューをプラグイン名.ビュー名で指定できるように。</li><li>エラーの改善<br /> debug()関数の表示がより読みやすく。</li><li>汎用イベントシステム<br /> コールバックやディスパッチの処理がイベントエンジンで置き換えられ拡張が容易に。</li><li>テスト<br /> データソースからのフィクスチャの生成が可能に。新しいテストシェルはテスト対象のファイル名を指定すればよい。</p><div class="wp_syntax"><div class="code"><pre class="cmd" style="font-family:monospace;">Console/cake test app/Model/Post.php
Console/cake test app/Controller/PostsController.php</pre></div></div></li><li>コールバック優先度<br /> コールバックの優先度を設定するパラメータが追加。</li><li>ThemeViewの廃止<br /> 普通のViewで同じ事ができるように</li><li>HTTPキャッシュの改善</li><li>コアヘルパーのいくつかがライブラリに移行<br /> TextHelperやNumberHelperがどこでも使えるように。</li><li>Deep saving<br /> 関連データをどこまで保存するかを指定するパラメータが追加。</li><li>新しいACLエンジン<br /> ACLの設定をデータベースではなくファイルで行う仕組みが追加</li><li>HtmlHelper::media()<p>HTML5のタグが生成できるように</li></ul><p>CakePHPはコアの開発チームが何度か入れ替わっていますが、安定して開発が続いていますね。開発チームを離れた人でもイベントには参加していたりコミュニティの安定感がやはり特徴です。反面、最新の機能のサポートは遅いですが、使い勝手を維持しながら着実なリファクタリングが続いています。<br /> これまで使っていた人もこれから使う人にとっても安心度の高いフレームワークなのではないでしょうか。</p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1345/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>次回のCodeReview.cafeは3/6に開催します</title><link>http://blog.candycane.jp/archives/1341</link> <comments>http://blog.candycane.jp/archives/1341#comments</comments> <pubDate>Wed, 22 Feb 2012 13:56:20 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[コードレビュー]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1341</guid> <description><![CDATA[誰でも参加できるコードレビュー、CodeReview.cafeの第2回は3/6に開催します。 参加希望の方はfacebookをご覧ください。 CodeReview.cafe #1]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/02/422935_2755703097133_1394372839_32181569_673533765_n.jpg"><img src="http://blog.candycane.jp/wp-content/uploads/2012/02/422935_2755703097133_1394372839_32181569_673533765_n.jpg" alt="" title="422935_2755703097133_1394372839_32181569_673533765_n" width="533" height="179" class="aligncenter size-full wp-image-1342" /></a></p><p>誰でも参加できるコードレビュー、CodeReview.cafeの第2回は3/6に開催します。<br /> 参加希望の方はfacebookをご覧ください。</p><p><a href="http://www.facebook.com/events/379139788765400/">CodeReview.cafe #1</a></p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1341/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>誰でも参加できるコードレビュー CodeReview.cafe #0を開催しました。</title><link>http://blog.candycane.jp/archives/1325</link> <comments>http://blog.candycane.jp/archives/1325#comments</comments> <pubDate>Tue, 21 Feb 2012 08:33:21 +0000</pubDate> <dc:creator>yandod</dc:creator> <category><![CDATA[ブログ]]></category> <category><![CDATA[イベント]]></category> <category><![CDATA[コードレビュー]]></category><guid isPermaLink="false">http://blog.candycane.jp/?p=1325</guid> <description><![CDATA[チーム開発をしていると何らかの形でのコードレビューの機会は多くあると思います。一方で個人で作業をするフリーランサーなどの場合はレビューの機会を持つことが出来ないのではないかと考え、コワーキングスペースに集まっている人でコードレビューをやってみるという集まりを下北沢オープンソースカフェで開催しました。 今回は5人のレビュイーが各自のコードやサイトを説明し、それに対して参加者がアドバイスをしたり意見を言うというような形式で行いました。 レビューの対象になったのは・・・ @yando のCandyCaneのバグ修正 @nakachon のWordPressのプラグインのコード @shinichiN のころぐのコード @yasulab のポートフォリオサイトのデザイン(Skypeでリモート参加) @cognitom のJavaScriptテンプレートエンジン、YinYang どのレビューでもいろいろな気づきやアドバイスがあり、実際にコードのリファクタリングをしてみたりというような成果がありました。 Keep: 良かったこと 異なったレベルからのフィードバックが得られる その時に集まった参加者によりますが、本人がまだ知らない観点からの改善案や関数を教えてもらえるというのがうまくいっていました。WordPressのテーマやプラグインからプログラミングに入った場合、グローバルな関数を多用したりインデントがおかしかったりというような点について長期的な改善案がその場でコーディングされたりしていたのは特にうまくいった例だと思います。またデザインなどについてのレビューもやはり色々な人に見せると類似したサイトを教えてもらえたり、ちょっとした画像サイズの乱れなどが指摘されたりしていました。 レビューを受ける側がアウトプットを出す 「○○についての勉強会」というフォーマットは教える側がコンテンツを用意しなければいけないですが、レビューという体裁の場合はフィードバックをもらう側がコンテンツを用意するので労力の負担がスケールしやすいように感じました。またレビューの日時が決まっていると、そこにあわせてアウトプットを用意しなければならないという作業の動機づけになるという感想もありました。 レビューの機会が無い人がレビューを体験できた 今回の参加者はほとんどがチームでのコードレビューをしたことが無いという方々でした。理由は人それぞれだとは思いますが、レビューを受ける機会を得る事ができるというのは大きな成果だったと思います。 Problem: 悪かったこと 共有できるレビューの指針が無い 通常、コードレビューをチームで行う場合はコードがチームの方針に適合しているかどうかをチェックすると思いますが、ランダムな個人が集まっているのでそういった観点からのチェックポイントが持ちにくいというのは工夫が必要そうです。一般的なコーディングスタンダードなどを考慮したり、簡単な記述揺れなどはそれでもチェックはできそうです。 成果物をうまく見せる方法の模索 今回はモニターに自分のPCをつなぐ方法や、オンラインでのコード共有、githubでの差分表示などでコードの解説を行いました。各自の作業環境がバラバラなので成果物をうまく見せる方法については工夫が必要そうです。 レビュー時間のコントロール こみいった内容になってくるとどうしてもレビュー時間が長くなってきます。会社などではなく、カフェで気ままにやっているので構わないといえば構わないですが効率的にレビューを行う為の工夫はいずれ必要になってきそうです。 Try: 次やってみること レビュイー向けのチェックリスト レビューを受ける人がコードを見せる方法や説明のポイント、コーディングスタンダードの有無などについて事前にチェックする項目はあったほうがよさそうなので次回の開催の際にはフォーマット化しようと思います。 時間配分 今回は時計もあまり見ていなかったので、時間の計測などを試してみます。 と、いうわけでとりあえずやってみたわけですが大失敗というわけでも無かったので2週間後くらいにまた開催してみようと思います。参加者の皆さん、おつかれさまでした。またコードレビューに興味がある方は参加をお待ちしております。]]></description> <content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2012/02/404483_3342670244883_1212518784_3471309_246599135_n.jpg"><img class="aligncenter size-medium wp-image-1326" title="404483_3342670244883_1212518784_3471309_246599135_n" src="http://blog.candycane.jp/wp-content/uploads/2012/02/404483_3342670244883_1212518784_3471309_246599135_n-600x400.jpg" alt="" width="600" height="400" /></a></p><p>チーム開発をしていると何らかの形でのコードレビューの機会は多くあると思います。一方で個人で作業をするフリーランサーなどの場合はレビューの機会を持つことが出来ないのではないかと考え、コワーキングスペースに集まっている人でコードレビューをやってみるという集まりを<a href="http://www.osscafe.net/" target="_blank">下北沢オープンソースカフェ</a>で開催しました。</p><p>今回は5人のレビュイーが各自のコードやサイトを説明し、それに対して参加者がアドバイスをしたり意見を言うというような形式で行いました。</p><p>レビューの対象になったのは・・・</p><ul><li>@yando のCandyCaneのバグ修正</li><li><a href="https://twitter.com/#!/nakachon" target="_blank">@nakachon</a> のWordPressのプラグインのコード</li><li><a href="https://twitter.com/#!/shinichiN" target="_blank">@shinichiN</a> の<a href="http://colog.jp/" target="_blank">ころぐ</a>のコード</li><li><a href="https://twitter.com/#!/yasulab" target="_blank">@yasulab</a> のポートフォリオサイトのデザイン(Skypeでリモート参加)</li><li><a href="https://twitter.com/#!/cognitom" target="_blank">@cognitom</a> のJavaScriptテンプレートエンジン、<a href="http://osscafe.github.com/yinyang/japanese/" target="_blank">YinYang</a></li></ul><p>どのレビューでもいろいろな気づきやアドバイスがあり、実際にコードのリファクタリングをしてみたりというような成果がありました。</p><h3>Keep: 良かったこと</h3><p><strong>異なったレベルからのフィードバックが得られる</strong><br /> その時に集まった参加者によりますが、本人がまだ知らない観点からの改善案や関数を教えてもらえるというのがうまくいっていました。WordPressのテーマやプラグインからプログラミングに入った場合、グローバルな関数を多用したりインデントがおかしかったりというような点について長期的な改善案がその場でコーディングされたりしていたのは特にうまくいった例だと思います。またデザインなどについてのレビューもやはり色々な人に見せると類似したサイトを教えてもらえたり、ちょっとした画像サイズの乱れなどが指摘されたりしていました。</p><p><strong>レビューを受ける側がアウトプットを出す</strong><br /> 「○○についての勉強会」というフォーマットは教える側がコンテンツを用意しなければいけないですが、レビューという体裁の場合はフィードバックをもらう側がコンテンツを用意するので労力の負担がスケールしやすいように感じました。またレビューの日時が決まっていると、そこにあわせてアウトプットを用意しなければならないという作業の動機づけになるという感想もありました。</p><p><strong>レビューの機会が無い人がレビューを体験できた</strong><br /> 今回の参加者はほとんどがチームでのコードレビューをしたことが無いという方々でした。理由は人それぞれだとは思いますが、レビューを受ける機会を得る事ができるというのは大きな成果だったと思います。</p><h3>Problem: 悪かったこと</h3><p><strong>共有できるレビューの指針が無い</strong><br /> 通常、コードレビューをチームで行う場合はコードがチームの方針に適合しているかどうかをチェックすると思いますが、ランダムな個人が集まっているのでそういった観点からのチェックポイントが持ちにくいというのは工夫が必要そうです。一般的なコーディングスタンダードなどを考慮したり、簡単な記述揺れなどはそれでもチェックはできそうです。</p><p><strong>成果物をうまく見せる方法の模索</strong><br /> 今回はモニターに自分のPCをつなぐ方法や、オンラインでのコード共有、githubでの差分表示などでコードの解説を行いました。各自の作業環境がバラバラなので成果物をうまく見せる方法については工夫が必要そうです。</p><p><strong>レビュー時間のコントロール</strong><br /> こみいった内容になってくるとどうしてもレビュー時間が長くなってきます。会社などではなく、カフェで気ままにやっているので構わないといえば構わないですが効率的にレビューを行う為の工夫はいずれ必要になってきそうです。</p><h3>Try: 次やってみること</h3><p><strong>レビュイー向けのチェックリスト</strong><br /> レビューを受ける人がコードを見せる方法や説明のポイント、コーディングスタンダードの有無などについて事前にチェックする項目はあったほうがよさそうなので次回の開催の際にはフォーマット化しようと思います。</p><p><strong>時間配分</strong><br /> 今回は時計もあまり見ていなかったので、時間の計測などを試してみます。</p><p>と、いうわけでとりあえずやってみたわけですが大失敗というわけでも無かったので2週間後くらいにまた開催してみようと思います。参加者の皆さん、おつかれさまでした。またコードレビューに興味がある方は参加をお待ちしております。</p> ]]></content:encoded> <wfw:commentRss>http://blog.candycane.jp/archives/1325/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 12/15 queries in 0.042 seconds using disk: basic

Served from: blog.candycane.jp @ 2012-05-20 19:45:31 -->
