<?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>Shin x blog</title>
	<atom:link href="http://www.1x1.jp/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.1x1.jp/blog</link>
	<description>PHPでWEB+DBシステムの開発をやっています。</description>
	<lastBuildDate>Fri, 13 Apr 2012 08:11:17 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CakePHP における Mass Assignment 脆弱性対策</title>
		<link>http://www.1x1.jp/blog/2012/03/mass_assignment_vulnerability_cakephp.html</link>
		<comments>http://www.1x1.jp/blog/2012/03/mass_assignment_vulnerability_cakephp.html#comments</comments>
		<pubDate>Sun, 11 Mar 2012 21:00:16 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3892</guid>
		<description><![CDATA[この記事の所要時間： 約 6分8秒 Rails 界隈で話題の Mass Assignment 脆弱性を CakePHP で防ぐ方法です。 Github に Mass Assignment 脆弱性が発見されて、Rails 界隈で話題になっています。この問題自体は目新しいものではなく、Rails 自体の問題というより、Rails アプリケーションの作り方の問題ということで、以前から作る側が注意を払う必要がありました。 この Mass Assignment 脆弱性は、Rails を手本に発展してきた CakePHP アプリケーションでも同様の問題が発生する可能性があります。知っている人には常識なのですが、まだ知らない人もいるかと思うので、CakePHPにおける対策方法を書いてみます。下記コードはCakePHP2系を想定していますが、考え方はCakePHP1系でも同じです。 Mass Assignment 脆弱性 CakePHP における Mass Assignment 脆弱性は、フォーム（多くはFormHelperで作成）からPOSTで送信された値をモデルに渡す時に発生します。 例えば、以下のようなフォームの場合、一見するとnameだけが送信されるように見えます。このフォームをブラウザで表示して入力内容を送信すれば、もちろんnameだけが送信されます。しかし、フォームというかHTTPリクエストは自在に改変できるので、nameの他にemailでもpasswordでも何でも送ることができます。 app/View/User/edit.ctp &#60;?php echo $this-&#62;Form-&#62;create('User'); ?&#62; &#60;?php echo $this-&#62;Form-&#62;input('name'); ?&#62; &#60;?php echo $this-&#62;Form-&#62;end('submit'); ?&#62; コントローラで見ると、edit()メソッド内で、$this-&#62;request-&#62;dataの値をそのままUser#save()に渡しています。サンプルコードなどではよくある書き方ですが、$this-&#62;request-&#62;dataに本来想定していないパラメータが含まれていても（上記フォームで言うところのname以外）、usersテーブルにカラムが存在すれば、送信された内容がそのままデータベースに保存されてしまいます。 app/Controller/UserController.php &#60;?php App::uses('AppController', 'Contoller'); classs UserController extends [...]]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">6</span>分<span style="color:#f00">8</span>秒</span>
				</div>
				<p>Rails 界隈で話題の Mass Assignment 脆弱性を CakePHP で防ぐ方法です。</p>
				<p><img src="https://img.skitch.com/20120311-e8gxrisy93k58678ndy2147fix.png" alt="cakephp_logo" /></p>
				<p><a href="http://blog.sorah.jp/2012/03/05/mass-assignment-vulnerability-in-github" target="_blank">Github に Mass Assignment 脆弱性が発見されて、Rails 界隈で話題になっています。</a>この問題自体は目新しいものではなく、Rails 自体の問題というより、Rails アプリケーションの作り方の問題ということで、以前から作る側が注意を払う必要がありました。</p>
				<p>この Mass Assignment 脆弱性は、Rails を手本に発展してきた CakePHP アプリケーションでも同様の問題が発生する可能性があります。知っている人には常識なのですが、まだ知らない人もいるかと思うので、CakePHPにおける対策方法を書いてみます。下記コードはCakePHP2系を想定していますが、考え方はCakePHP1系でも同じです。</p>
				<h2 id="massassignment">Mass Assignment 脆弱性</h2>
				<p>CakePHP における Mass Assignment 脆弱性は、フォーム（多くはFormHelperで作成）からPOSTで送信された値をモデルに渡す時に発生します。</p>
				<p>例えば、以下のようなフォームの場合、一見するとnameだけが送信されるように見えます。このフォームをブラウザで表示して入力内容を送信すれば、もちろんnameだけが送信されます。しかし、フォームというかHTTPリクエストは自在に改変できるので、nameの他にemailでもpasswordでも何でも送ることができます。</p>
				<p><em>app/View/User/edit.ctp</em></p>
				<pre><code>&lt;?php echo $this-&gt;Form-&gt;create('User'); ?&gt;
&lt;?php echo $this-&gt;Form-&gt;input('name'); ?&gt;
&lt;?php echo $this-&gt;Form-&gt;end('submit'); ?&gt;
</code></pre>
				<p>コントローラで見ると、edit()メソッド内で、$this-&gt;request-&gt;dataの値をそのままUser#save()に渡しています。サンプルコードなどではよくある書き方ですが、$this-&gt;request-&gt;dataに本来想定していないパラメータが含まれていても（上記フォームで言うところのname以外）、usersテーブルにカラムが存在すれば、送信された内容がそのままデータベースに保存されてしまいます。</p>
				<p><em>app/Controller/UserController.php</em></p>
				<pre><code>&lt;?php
App::uses('AppController', 'Contoller');

classs UserController extends AppController {
  public $uses = array('User');

  public function edit() {
    if (!empty($this-&gt;request-&gt;data['User'])) {
      $this-&gt;User-&gt;save($this-&gt;request-&gt;data);
    }
  }
}
</code></pre>
				<p>これを悪用すると、本来入力フォームでは変更して欲しくないカラム（例えば管理者フラグや権限、もしかするとポイント数など）を外部から操作することが可能となります。</p>
				<p>さらにModel#save()では、与えられた引数にプライマリーキー（多くはid）が含まれていると、その値にマッチするレコードをupdateしてしまいます。つまり新規追加フォームのつもりが、任意のレコードを変更されてしまう可能性があります。</p>
				<p>この問題、実は意識しておかないと結構影響が大きいです。</p>
				<h2 id="securitycomponent">対策1. SecurityComponent を使う</h2>
				<p>対策として、SecurityComponent を使う方法があります。SecurityComponentをコントローラの$componentsに記載しておけば、自動的にフォーム改ざんチェックが有効となるので、フォームを改ざんして任意のパラメータを送信してもエラーとなり、アクションメソッドが実行されません。</p>
				<h2 id="save">対策2. save()に渡す値を設定する</h2>
				<p>対策1でも対策にはなるのですが、本質的な問題は$this-&gt;request-&gt;dataに意図しないパラメータを含まれているのにそのまま処理してしまうことです。そこで、処理対象のパラメータのみを抽出して、save()には抽出したパラメータを渡すようにします。</p>
				<p>下記がサンプルです。$dataに処理対象のパラメータだけをセットして、save()には$dataを渡しています。これにより意図しないパラメータが送られてきても、save()に渡されることはありません。</p>
				<pre><code>  public function edit() {
    if (!empty($this-&gt;request-&gt;data['User'])) {
      $data = array(
        'name' =&gt; Set::extract($this-&gt;request-&gt;data, 'User.name'),
      );
      $this-&gt;User-&gt;save($data);
    }
  }
</code></pre>
				<h2 id="save">不十分な対策 save()の第三引数に更新対象カラムを渡す</h2>
				<p>save()の第三引数に処理対象カラムを指定することで、意図しないカラムへの更新を防ぐという方法があります。</p>
				<p>下記のようにsave()の第三引数にarray(&#8216;name&#8217;)を指定して、nameのみを更新対象とします。この方法なら更新されるカラムはnameに限定することができます。しかし、$this-&gt;request-&gt;data[&#8216;User&#8217;]にidが含まれていると、そのidに該当するレコードが更新されるという問題が残ります。つまり更新カラムはnameのみですが、その対象レコードは任意に指定されてしまいます。</p>
				<pre><code>  public function edit() {
    if (!empty($this-&gt;request-&gt;data['User'])) {
      $this-&gt;User-&gt;save($this-&gt;request-&gt;data, true, array('name'));
    }
  }
</code></pre>
				<h2 id="">便利機能には注意を</h2>
				<p>$this-&gt;request-&gt;dataをそのままModel#save()に渡して処理する。この方法は簡単だし、スマートに見えます。しかし、上で見てきたように意識しておかないと意外な落とし穴にはまります。</p>
				<p>このあたりは手を抜かずにきっちりと処理対象パラメータのみを抽出してsave()に渡すという方法が問題も起こりづらいし、挙動も把握しやすいと思います。意識していなかった人はご注意を。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2012/03/mass_assignment_vulnerability_cakephp.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHPカンファレンス関西2012を開催します</title>
		<link>http://www.1x1.jp/blog/2012/03/php_conference_kansai_2012.html</link>
		<comments>http://www.1x1.jp/blog/2012/03/php_conference_kansai_2012.html#comments</comments>
		<pubDate>Fri, 02 Mar 2012 02:00:05 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[event]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3884</guid>
		<description><![CDATA[この記事の所要時間： 約 4分33秒 PHPカンファレンス関西2012を5/12に開催しますよ！ すでにご存知の方も多いかと思いますが、昨年盛り上がったPHPカンファレンス関西をまたまた開催します。 イベントの概要と現在募集している内容をご紹介します。 PHPカンファレンス関西2012 今年はゴールデンウィーク明けの5/12（土）に開催します。会場は昨年と同じく大阪産業創造館（産創館）です。 カンファレンス公式サイトを公開しています。今後、参加者申込やセッション発表などイベントに関する情報を公開していきますので、こちらも見てみて下さい。 PHPカンファレンス関西2012 ・名称 PHPカンファレンス関西 ・開催日時 2012年5月12日（土）10:30-16:40（10:00開場） ・開催場所 大阪産業創造館 4Fイベントホール 6F会議室(A・B) http://www.sansokan.jp/ ・テーマ 「好きやねんPHP！」 ・参加費用 無料 ・定員（予定） 250名 PHPカンファレンス関西2012の特徴を３つ。 1. テーマは「好きやねんPHP！」 今回のテーマは「好きやねんPHP！」です。 このイベントが何のイベントなのか、という原点に立ち返って、とにかくPHPが好き！という思いを全面に出していきます。 2. 会場が2会場、マルチトラックに 会場は、昨年開催した「イベントホール」に加えて、「6F会議室」の2会場となります。 会場が増えたということで、マルチトラックが可能となり、セッション数も大幅に増えます！ マルチトラックの利点はセッション数の増加だけではありません。大事ななのは参加するセッションを選択できる、ということです。同じ時間に開催される2セッションのうち、参加したいなあと思う方を自由に選ぶことができます。 どちらも聞きたい！ということになりそうですが、「選べる」というのは嬉しいですね。 3. セッションを公募に そしてそして最後にここにつながります。 今年は LT だけではなく、本セッションについても公募を行います。 もちろん昨年同様、どなたかにセッションをお願いすることも考えていますが、公募による本セッションを行います。 発表内容はPHPに関するものなら何でも ok です。エンジニア向けだけではなく、デザイナー向け、オペレータ向け、初心者向け、なんでも来いです。 今回のテーマもマルチトラックにしたのも、全てこのセッション公募を実現するためです。ぜひバラエティに富んだセッションを開催したいと思うので、皆さんからの応募をお待ちしています！ 募集しています！ 現在、PHPカンファレンス関西2012では、以下の内容を募集しています。 セッション発表者募集 上記でも書きましたが、セッションで発表して頂ける方を募集しています。 まさにこれが今回のイベントの肝です。ここ関西で開催されるカンファレンスで発表してみましょう！ 発表に興味はあるけど、勇気が出ないという方には、この言葉をオススメします。 「君の当たり前に僕らは感嘆させられるんだ」 勉強会を楽しむなら発表しよう！ [...]]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">4</span>分<span style="color:#f00">33</span>秒</span>
				</div>
				<p>PHPカンファレンス関西2012を5/12に開催しますよ！</p>
				<p><a href="http://conference.kphpug.jp/2012/"><img src="https://img.skitch.com/20120302-ndi6mwn2hrbifn3mx6qpdit4pq.preview.jpg" alt="logo2012" /></a></p>
				<p>すでにご存知の方も多いかと思いますが、昨年盛り上がったPHPカンファレンス関西をまたまた開催します。</p>
				<p>イベントの概要と現在募集している内容をご紹介します。</p>
				<h2 id="php2012">PHPカンファレンス関西2012</h2>
				<p>今年はゴールデンウィーク明けの5/12（土）に開催します。会場は昨年と同じく大阪産業創造館（産創館）です。</p>
				<p>カンファレンス公式サイトを公開しています。今後、参加者申込やセッション発表などイベントに関する情報を公開していきますので、こちらも見てみて下さい。</p>
				<p><a href="http://conference.kphpug.jp/2012/">PHPカンファレンス関西2012</a></p>
				<pre><code>・名称
  PHPカンファレンス関西

・開催日時
  2012年5月12日（土）10:30-16:40（10:00開場）

・開催場所
  大阪産業創造館 4Fイベントホール 6F会議室(A・B)

http://www.sansokan.jp/

・テーマ
  「好きやねんPHP！」

・参加費用
  無料

・定員（予定）
  250名
</code></pre>
				<p>PHPカンファレンス関西2012の特徴を３つ。</p>
				<h3 id="php">1. テーマは「好きやねんPHP！」</h3>
				<p>今回のテーマは「好きやねんPHP！」です。</p>
				<p>このイベントが何のイベントなのか、という原点に立ち返って、とにかくPHPが好き！という思いを全面に出していきます。</p>
				<h3 id="">2. 会場が2会場、マルチトラックに</h3>
				<p>会場は、昨年開催した「イベントホール」に加えて、「6F会議室」の2会場となります。</p>
				<p>会場が増えたということで、マルチトラックが可能となり、セッション数も大幅に増えます！</p>
				<p>マルチトラックの利点はセッション数の増加だけではありません。大事ななのは参加するセッションを選択できる、ということです。同じ時間に開催される2セッションのうち、参加したいなあと思う方を自由に選ぶことができます。</p>
				<p>どちらも聞きたい！ということになりそうですが、「選べる」というのは嬉しいですね。</p>
				<h3 id="">3. セッションを公募に</h3>
				<p>そしてそして最後にここにつながります。</p>
				<p>今年は LT だけではなく、本セッションについても公募を行います。</p>
				<p>もちろん昨年同様、どなたかにセッションをお願いすることも考えていますが、公募による本セッションを行います。</p>
				<p>発表内容はPHPに関するものなら何でも ok です。エンジニア向けだけではなく、デザイナー向け、オペレータ向け、初心者向け、なんでも来いです。</p>
				<p>今回のテーマもマルチトラックにしたのも、全てこのセッション公募を実現するためです。ぜひバラエティに富んだセッションを開催したいと思うので、皆さんからの応募をお待ちしています！</p>
				<h2 id="">募集しています！</h2>
				<p>現在、PHPカンファレンス関西2012では、以下の内容を募集しています。</p>
				<h3 id="">セッション発表者募集</h3>
				<p>上記でも書きましたが、セッションで発表して頂ける方を募集しています。</p>
				<p>まさにこれが今回のイベントの肝です。ここ関西で開催されるカンファレンスで発表してみましょう！</p>
				<p>発表に興味はあるけど、勇気が出ないという方には、この言葉をオススメします。</p>
				<pre><code>「君の当たり前に僕らは感嘆させられるんだ」
</code></pre>
				<p><a href="http://www.1x1.jp/blog/2009/05/event_lets_presentation.html">勉強会を楽しむなら発表しよう！</a></p>
				<p>セッション発表者募集に関する詳細は下記からどうぞ。</p>
				<p><a href="http://conference.kphpug.jp/2012/2012/02/%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E7%99%BA%E8%A1%A8%E8%80%85%E3%82%92%E5%8B%9F%E9%9B%86%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82/">セッション発表者を募集しています。 &#8211; PHPカンファレンス関西2012</a></p>
				<h3 id="">スポンサー募集</h3>
				<p>PHPカンファレンス関西2012に協賛頂けるスポンサー企業を募集しています。</p>
				<p>関西はもちろんのこと、関西外からもPHPユーザが数多く集まるイベントです。これまでこういったイベントへの協賛をされていない方も大歓迎ですので、お気軽にお問い合わせください。</p>
				<p>スポンサー募集に関する詳細は下記からどうぞ。</p>
				<p><a href="http://conference.kphpug.jp/2012/2012/03/%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B5%E3%83%BC%E3%81%AE%E5%8B%9F%E9%9B%86%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/">スポンサーの募集を開始しました &#8211; PHPカンファレンス関西2012</a></p>
				<h3 id="">スタッフ募集</h3>
				<p>イベント運営をお手伝いして頂けるスタッフを若干名募集しています。とくに今回は会場が増えたので当日にお手伝い頂ける方をお待ちしています。</p>
				<p>イベントは参加するだけでも楽しいですが、運営に関わるとまた違った視点でイベントを見ることができます。個人的にはスタッフをやっていて好きなのは、参加している人たちの笑顔ですね。とくに懇親会の最後に壇上から見ると、ほんとみんな良い表情をしてるんですね。そうした光景を見ると「あーほんとにイベントやって良かったなあ」を感じます。</p>
				<p>一緒に参加している人を笑顔にしてみませんか？</p>
				<p>スタッフ募集に関する詳細は下記からどうぞ。</p>
				<p><a href="http://conference.kphpug.jp/2012/2012/02/%E3%82%B9%E3%82%BF%E3%83%83%E3%83%95%E3%82%92%E5%8B%9F%E9%9B%86%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99/">スタッフを募集しています &#8211; PHPカンファレンス関西2012</a></p>
				<h2 id="">5/12は大阪産業創造館へ</h2>
				<p>5月開催ということで、まだ少し時間がありますが、まずは5/12の予定を確保してお待ち下さい。（遠方の方も今なら飛行機の早割も間に合いますよ:D）</p>
				<p>今後、準備が整い次第、参加者募集などを開始していきますので、公式 Twitter（<a href="http://twitter.com/phpcon_kansai">@phpcon_kansai</a>）、Facebook（<a href="https://www.facebook.com/pcon.kansai">pcon.kansai</a>）をフォローして下さいね。</p>
				<p>では、今年もPHPカンファレンス関西をよろしくお願いします。5/12は大阪産業創造館でお会いしましょう！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2012/03/php_conference_kansai_2012.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>blogに使える、わかりやく伝える３つの技術</title>
		<link>http://www.1x1.jp/blog/2012/02/writing_technique_3.html</link>
		<comments>http://www.1x1.jp/blog/2012/02/writing_technique_3.html#comments</comments>
		<pubDate>Mon, 27 Feb 2012 02:00:28 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3878</guid>
		<description><![CDATA[この記事の所要時間： 約 4分56秒 「わかりやすく&#60;伝える&#62;技術」からblogに使える３つのテクニックをご紹介。 テレビでお馴染みの池上彰さんの著作「わかりやすく〈伝える〉技術」を読みました。 タイトルどおり、とても読みやすく、分かりやすい内容になっています。読んでいると池上さんがテレビでお話されているかのように、すんなりと頭に入ってきます。 随所に&#60;伝える&#62;技術が盛り込まれているのですが、その中から、blogを書くのに使える技術を３つご紹介しましょう。 1. 伝えたいことをはじめに書く 最初の一文にこのエントリで伝えたいことの概要を簡潔に書きます。 こういったリードがあると、読み手はエントリ自体が何に関するものなのか、どういった方向に話が進むのかというのを理解することができます。この本で言うところの「地図を渡す」ということですね。 全体の流れとしては「概要 or 結論 -&#62; 記事 -&#62; 結論」となります。はじめに提示した結論が良い前フリとなり、記事本文を迷わずに読むことができて、最後は「なるほど」と腑に落ちます。（もちろん内容が伴わないといけないですが） 最初の一文が大事なのは、エントリが読みやすくなるだけではありません。 ソーシャルメディアでは、エントリの序文が掲載されることがあります。はてなブックマークでは、エントリの書き出しのあたりが掲載されます。Twitterでもblogエントリの序盤をtweetするbotがいます。はじめにエントリの内容を簡潔に書いておけば、より多くの人に見てもらえる可能性が広がります。 はてなブックマーク ねえ、ねえ、大変！ では分かりやすいリードを書くにはどうすれば良いでしょうか？ ユニークな方法が紹介されています。 相手に自分が体験したことを面白く伝えたい。自分の気持ちをわかってほしい。 そんたとき、まず、「ねえ、ねえ、大変」という言葉から始まる文章を考えましょう。 この言葉の後にエントリで伝えたいことを書けば、それが自然とリードになるという方法です。 例えば、「ちょー聞いてーや、この本めっちゃ面白いで！」というのがまず伝えたいことで、その後に「この本は池上彰さんが書いた本でな、分かりやすいわ−」というように伝えたいことの肉付けをしていきます。 これは友人や家族へ話す時は自然とやっていることですね。誰かに伝えるつもりで書いていけば、自然とリードをまとめることができます。 2. 文章を短く切る これは目から鱗というか、恥ずかしくなったというか、安心した技術です。 短い簡潔な文章を重ねるより、長く小難しそうな文章を書いたほうがなんだかかっこ良く思えて、ついつい一文を長めにしがちでした。これをこの本ではバッサリと一刀両断しています。 たとえば、三つの荷物（要素）を、相手（聴き手）のもとに届けるとします。三ついっぺんに運ぼうとすると、ヨタヨタしてしまい、なかなかたどりつけません。一回に一つだけにすれば、簡単に届けられます。それを三回繰り返せばよい。原稿も同じ事だろうと考えました。 考えてみると当たり前のことですね。伝えるために表現として文章を書いているのだから、伝わりやすい方法で書いた方が良いに決まっています。 引用した文章は、まさに短い文で構成した好例です。読んでみるとポンポンとリズム良く文章がやってきます。実にわかりやすい。 短く文章を切る効果は他にもあります。 一つの長い文にすると、文章の中身の要素同士が論理的につながっていなくても、まるでつながっているように思えてしまうのです。たとえば、「〜で、〜ということから、〜といえる」などと文をつなげていくと、論理的な文章に見えてしまうことがあります。 長い文章を書くと書いてる本人も気づかず「それっぽい」文章になってしまうため、論理的につながっていない文章を書いてしまうことがあります。読み手としては「それっぽく」は見えますが、意図がうまく伝わらないため、「結局何が言いたいんだろ？」という感想を持つかもしれません。 短い文にすると、このごまかしが効かないので、意図を明確に伝えることができます。 3. 三の魔術 日常的によく言われていることですが、なぜかこの３という数字はおさまりが良いです。 「大事な事は一つだけです」でもいいのですが、もういくつかあったほうがありがたい気がします。「二つあります」でも「え、二つでいいの？」という物足りない気分になります。それが「四つある」だと、今度は多い印象を受けてしまいます。 伝えたいことが５つあっても、優先順位を考えてとにかく３つに絞ります。これは３という数字が良いというだけでなく、制限をかけることで伝えるポイントをより明確にすることができます。 書き手としても、５や１０伝えることを考えるのではなく、たった３つに絞ればすれば良いので、書きやすくなるというメリットもありますね。 &#60;伝える&#62;人には必読の書 本書にはこのエントリで紹介した３つの技術に限らず多くの技術が紹介されています。 「図解する」「プレゼンテーション資料から話す内容を調整する」「パワーポイントにパワーポイントを使う」「具体例を示す」「接続詞の使い方」などなど参考になる技術がたくさん紹介されていますが、三の魔術に従い、あえて３つに絞りました:D 日々の暮らしでは、blogに限らず、ありとあらゆる場面で「伝える」という行為が行われています。 本当はこう言いたいのに、もっと上手く伝えたい、わかりやすく話したいという方にはオススメの一冊です。新書なので持ち運びにも便利なので、ぜひ手にとって読んでみて下さい。]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">4</span>分<span style="color:#f00">56</span>秒</span>
				</div>
				<p>「わかりやすく&lt;伝える&gt;技術」からblogに使える３つのテクニックをご紹介。</p>
				<p><a href="http://www.amazon.co.jp/gp/product/4062880032/ref=as_li_ss_il?ie=UTF8&#038;tag=shinxblog-22&#038;linkCode=as2&#038;camp=247&#038;creative=7399&#038;creativeASIN=4062880032"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=4062880032&#038;MarketPlace=JP&#038;ID=AsinImage&#038;WS=1&#038;tag=shinxblog-22&#038;ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=shinxblog-22&#038;l=as2&#038;o=9&#038;a=4062880032" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
				<p>テレビでお馴染みの池上彰さんの著作「<a href="http://www.amazon.co.jp/gp/product/4062880032/ref=as_li_ss_tl?ie=UTF8&#038;tag=shinxblog-22&#038;linkCode=as2&#038;camp=247&#038;creative=7399&#038;creativeASIN=4062880032">わかりやすく〈伝える〉技術</a>」を読みました。</p>
				<p>タイトルどおり、とても読みやすく、分かりやすい内容になっています。読んでいると池上さんがテレビでお話されているかのように、すんなりと頭に入ってきます。</p>
				<p>随所に&lt;伝える&gt;技術が盛り込まれているのですが、その中から、blogを書くのに使える技術を３つご紹介しましょう。</p>
				<h2 id="">1. 伝えたいことをはじめに書く</h2>
				<p>最初の一文にこのエントリで伝えたいことの概要を簡潔に書きます。</p>
				<p>こういったリードがあると、読み手はエントリ自体が何に関するものなのか、どういった方向に話が進むのかというのを理解することができます。この本で言うところの「地図を渡す」ということですね。</p>
				<p>全体の流れとしては「概要 or 結論 -&gt; 記事 -&gt; 結論」となります。はじめに提示した結論が良い前フリとなり、記事本文を迷わずに読むことができて、最後は「なるほど」と腑に落ちます。（もちろん内容が伴わないといけないですが）</p>
				<p>最初の一文が大事なのは、エントリが読みやすくなるだけではありません。</p>
				<p>ソーシャルメディアでは、エントリの序文が掲載されることがあります。はてなブックマークでは、エントリの書き出しのあたりが掲載されます。Twitterでもblogエントリの序盤をtweetするbotがいます。はじめにエントリの内容を簡潔に書いておけば、より多くの人に見てもらえる可能性が広がります。</p>
				<p><em>はてなブックマーク</em><br />
				<img src="https://img.skitch.com/20120220-emiqeckiph79bn2dup5b4i81ep.png" alt="306F3066306A30D630C330AF30DE30FC30AF - PHPUnit 30C630B930C830B130FC30B9306766F8304D63DB3048305F502430925FA95E303059308B - Shin x blog" /></p>
				<h3 id="">ねえ、ねえ、大変！</h3>
				<p>では分かりやすいリードを書くにはどうすれば良いでしょうか？</p>
				<p>ユニークな方法が紹介されています。</p>
				<blockquote>
				<p>相手に自分が体験したことを面白く伝えたい。自分の気持ちをわかってほしい。<br />
				そんたとき、まず、「ねえ、ねえ、大変」という言葉から始まる文章を考えましょう。</p>
				</blockquote>
				<p>この言葉の後にエントリで伝えたいことを書けば、それが自然とリードになるという方法です。</p>
				<p>例えば、「ちょー聞いてーや、この本めっちゃ面白いで！」というのがまず伝えたいことで、その後に「この本は池上彰さんが書いた本でな、分かりやすいわ−」というように伝えたいことの肉付けをしていきます。</p>
				<p>これは友人や家族へ話す時は自然とやっていることですね。誰かに伝えるつもりで書いていけば、自然とリードをまとめることができます。</p>
				<h2 id="">2. 文章を短く切る</h2>
				<p>これは目から鱗というか、恥ずかしくなったというか、安心した技術です。</p>
				<p>短い簡潔な文章を重ねるより、長く小難しそうな文章を書いたほうがなんだかかっこ良く思えて、ついつい一文を長めにしがちでした。これをこの本ではバッサリと一刀両断しています。</p>
				<blockquote>
				<p>たとえば、三つの荷物（要素）を、相手（聴き手）のもとに届けるとします。三ついっぺんに運ぼうとすると、ヨタヨタしてしまい、なかなかたどりつけません。一回に一つだけにすれば、簡単に届けられます。それを三回繰り返せばよい。原稿も同じ事だろうと考えました。</p>
				</blockquote>
				<p>考えてみると当たり前のことですね。伝えるために表現として文章を書いているのだから、伝わりやすい方法で書いた方が良いに決まっています。</p>
				<p>引用した文章は、まさに短い文で構成した好例です。読んでみるとポンポンとリズム良く文章がやってきます。実にわかりやすい。</p>
				<p>短く文章を切る効果は他にもあります。</p>
				<blockquote>
				<p>一つの長い文にすると、文章の中身の要素同士が論理的につながっていなくても、まるでつながっているように思えてしまうのです。たとえば、「〜で、〜ということから、〜といえる」などと文をつなげていくと、論理的な文章に見えてしまうことがあります。</p>
				</blockquote>
				<p>長い文章を書くと書いてる本人も気づかず「それっぽい」文章になってしまうため、論理的につながっていない文章を書いてしまうことがあります。読み手としては「それっぽく」は見えますが、意図がうまく伝わらないため、「結局何が言いたいんだろ？」という感想を持つかもしれません。</p>
				<p>短い文にすると、このごまかしが効かないので、意図を明確に伝えることができます。</p>
				<h2 id="">3. 三の魔術</h2>
				<p>日常的によく言われていることですが、なぜかこの３という数字はおさまりが良いです。</p>
				<blockquote>
				<p>「大事な事は一つだけです」でもいいのですが、もういくつかあったほうがありがたい気がします。「二つあります」でも「え、二つでいいの？」という物足りない気分になります。それが「四つある」だと、今度は多い印象を受けてしまいます。</p>
				</blockquote>
				<p>伝えたいことが５つあっても、優先順位を考えてとにかく３つに絞ります。これは３という数字が良いというだけでなく、制限をかけることで伝えるポイントをより明確にすることができます。</p>
				<p>書き手としても、５や１０伝えることを考えるのではなく、たった３つに絞ればすれば良いので、書きやすくなるというメリットもありますね。</p>
				<h2 id="">&lt;伝える&gt;人には必読の書</h2>
				<p>本書にはこのエントリで紹介した３つの技術に限らず多くの技術が紹介されています。</p>
				<p>「図解する」「プレゼンテーション資料から話す内容を調整する」「パワーポイントにパワーポイントを使う」「具体例を示す」「接続詞の使い方」などなど参考になる技術がたくさん紹介されていますが、三の魔術に従い、あえて３つに絞りました:D</p>
				<p>日々の暮らしでは、blogに限らず、ありとあらゆる場面で「伝える」という行為が行われています。</p>
				<p>本当はこう言いたいのに、もっと上手く伝えたい、わかりやすく話したいという方にはオススメの一冊です。新書なので持ち運びにも便利なので、ぜひ手にとって読んでみて下さい。</p>
				<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=shinxblog-22&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=ss_til&#038;asins=4062880032" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2012/02/writing_technique_3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPUnit テストケースで書き換えた値を復帰する</title>
		<link>http://www.1x1.jp/blog/2012/02/phpunit_backup_and_restore_values.html</link>
		<comments>http://www.1x1.jp/blog/2012/02/phpunit_backup_and_restore_values.html#comments</comments>
		<pubDate>Thu, 09 Feb 2012 02:00:20 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3858</guid>
		<description><![CDATA[この記事の所要時間： 約 3分36秒 PHPUnitのテストケースで書き換えた値の復帰について。 テストケースでテストを記述する際に、スーパーグローバルやクラス定数を書き換えることがあるのですが、これらの値を書き換えたまま、別のテストを実行すると書き換えられた状態でテストが実行されるので、それらの値に依存した処理があるとテストが通らないことがあります。 PHPUnitでは、そういったテストをまたがって影響を及ぼすであろう値の保存、復帰を自動で行なってくれる機能があります。 スーパーグローバル デフォルトでは、各テストメソッドを実行する前に、スーパーグローバル変数（$_ENV, $_POST, $_GET, $_COOKIE, $_SERVER, $_FILES, $_REQUEST）の値をが保存されており、テストメソッド終了後にそれらの値がスーパーグローバル変数へ復帰されます。 これらの処理はsetUp()/tearDown()の外側で行なわれており、setUp()の前に値の保存、tearDown()の後に復帰されるので、スーパーグローバル変数については値の保存と復帰を自分で書く必要はありません。 下のソースでは、テスト開始前にスーパーグローバルの内容を保持しておき、実際に値の復帰が行われているかを確認しています。 なお、以下のいずれかの方法で、この機能を無効にすることもできます。 phpunitコマンドで「&#8211;no-globals-backup」を指定 アノテーションで「@backupGlobals disabled」を指定 テストケースのインスタンス変数「$backupGlobals」にfalseを指定 また、インスタンス変数$backupGlobalsBlacklistに値の保存、復帰したくない変数名を連想配列で記述するとその変数だけ保存、復帰を避けることができます。 しかし、この機能を無効化するとテスト内で書き換えたスーパーグローバルの値が別のテストでも使用されてしまい、実行結果に影響を及ぼしてしまう可能性があるので、通常はデフォルトのまま有効にしておく方が良いでしょう。 クラス変数 PHP5.3以降の環境では、テスト実行時にユーザが定義しているクラスのクラス変数についてもスーパーグローバル変数と同様に値の保存、復帰を行うことができます。 ただし、デフォルトでは有効となっておらず、以下のいずれかの方法により有効となります。 phpunitコマンドで「&#8211;static-backup」を指定 アノテーションで「@backupStaticAttributes enabled」を指定 テストケースのインスタンス変数「$backupStaticAttributes」に true を指定 この機能を用いると、これまでテストが困難だと思われていたSingletonパターンのクラスについて別のテストケースの影響を受けることなくテストすることができます。 下のソースでは、Sigletonで実装したクラスのクラス変数（private）の値が復元されているかを確認しています。 この処理は GlobalStateクラス（PHPUnit/Util/GlobalState.php）の backupStaticAttributes メソッドで実行されます。値の保存、復帰には Reflection が使われており、protected/private な変数についても setAccessible(TRUE) を実行して値をアクセスしています。 Reflection を使って値を取得するには分かりやすいサンプルになっているので、興味がある方はソースを読んでみて下さい。 PHPUnitは奥深い PHPのxUnitツールとしてはデファクトスタンダードとなっているPHPUnitですが、実に多くの機能があり、まだまだ把握できていません。 全ての機能を使わずともテストは書けるのですが、今回のスーパーグローバルやクラス変数の保持、復元のように知っていればより勘弁にテストが書ける機能があります。 こういった機能を知って、より簡単に楽にテストが書けるようにしていきたいですね。PHPUnit勉強会でもやろうかな。]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">3</span>分<span style="color:#f00">36</span>秒</span>
				</div>
				<p>PHPUnitのテストケースで書き換えた値の復帰について。</p>
				<p><img src="https://img.skitch.com/20120208-cggxu8ks2s1cmrq31cujb3g692.png" alt="Terminal 2014 zsh 2014 ttys000 2014 120մ6 2014 23182" /></p>
				<p>テストケースでテストを記述する際に、スーパーグローバルやクラス定数を書き換えることがあるのですが、これらの値を書き換えたまま、別のテストを実行すると書き換えられた状態でテストが実行されるので、それらの値に依存した処理があるとテストが通らないことがあります。</p>
				<p>PHPUnitでは、そういったテストをまたがって影響を及ぼすであろう値の保存、復帰を自動で行なってくれる機能があります。</p>
				<h2>スーパーグローバル</h2>
				<p>デフォルトでは、各テストメソッドを実行する前に、スーパーグローバル変数（$_ENV, $_POST, $_GET, $_COOKIE, $_SERVER, $_FILES, $_REQUEST）の値をが保存されており、テストメソッド終了後にそれらの値がスーパーグローバル変数へ復帰されます。</p>
				<p>これらの処理はsetUp()/tearDown()の外側で行なわれており、setUp()の前に値の保存、tearDown()の後に復帰されるので、スーパーグローバル変数については値の保存と復帰を自分で書く必要はありません。</p>
				<p>下のソースでは、テスト開始前にスーパーグローバルの内容を保持しておき、実際に値の復帰が行われているかを確認しています。</p>
				<p><script src="https://gist.github.com/1720838.js?file=gistfile1.aw"></script></p>
				<p>なお、以下のいずれかの方法で、この機能を無効にすることもできます。</p>
				<ul>
				<li>phpunitコマンドで「&#8211;no-globals-backup」を指定</li>
				<li>アノテーションで「@backupGlobals disabled」を指定</li>
				<li>テストケースのインスタンス変数「$backupGlobals」にfalseを指定</li>
				</ul>
				<p>また、インスタンス変数$backupGlobalsBlacklistに値の保存、復帰したくない変数名を連想配列で記述するとその変数だけ保存、復帰を避けることができます。</p>
				<p>しかし、この機能を無効化するとテスト内で書き換えたスーパーグローバルの値が別のテストでも使用されてしまい、実行結果に影響を及ぼしてしまう可能性があるので、通常はデフォルトのまま有効にしておく方が良いでしょう。</p>
				<h2>クラス変数</h2>
				<p>PHP5.3以降の環境では、テスト実行時にユーザが定義しているクラスのクラス変数についてもスーパーグローバル変数と同様に値の保存、復帰を行うことができます。</p>
				<p>ただし、デフォルトでは有効となっておらず、以下のいずれかの方法により有効となります。</p>
				<ul>
				<li>phpunitコマンドで「&#8211;static-backup」を指定</li>
				<li>アノテーションで「@backupStaticAttributes enabled」を指定</li>
				<li>テストケースのインスタンス変数「$backupStaticAttributes」に true を指定</li>
				</ul>
				<p>この機能を用いると、これまでテストが困難だと思われていたSingletonパターンのクラスについて別のテストケースの影響を受けることなくテストすることができます。</p>
				<p>下のソースでは、Sigletonで実装したクラスのクラス変数（private）の値が復元されているかを確認しています。</p>
				<p><script src="https://gist.github.com/1720924.js?file=gistfile1.aw"></script></p>
				<p>この処理は GlobalStateクラス（PHPUnit/Util/GlobalState.php）の backupStaticAttributes メソッドで実行されます。値の保存、復帰には Reflection が使われており、protected/private な変数についても setAccessible(TRUE) を実行して値をアクセスしています。</p>
				<p>Reflection を使って値を取得するには分かりやすいサンプルになっているので、興味がある方はソースを読んでみて下さい。</p>
				<p><script src="https://gist.github.com/1766013.js?file=GlobalState.php"></script></p>
				<h2>PHPUnitは奥深い</h2>
				<p>PHPのxUnitツールとしてはデファクトスタンダードとなっているPHPUnitですが、実に多くの機能があり、まだまだ把握できていません。</p>
				<p>全ての機能を使わずともテストは書けるのですが、今回のスーパーグローバルやクラス変数の保持、復元のように知っていればより勘弁にテストが書ける機能があります。</p>
				<p>こういった機能を知って、より簡単に楽にテストが書けるようにしていきたいですね。PHPUnit勉強会でもやろうかな。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2012/02/phpunit_backup_and_restore_values.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>蕁麻疹のため禁酒してます</title>
		<link>http://www.1x1.jp/blog/2012/02/no_drink_by_itching.html</link>
		<comments>http://www.1x1.jp/blog/2012/02/no_drink_by_itching.html#comments</comments>
		<pubDate>Thu, 02 Feb 2012 05:28:04 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[雑記]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3851</guid>
		<description><![CDATA[この記事の所要時間： 約 3分15秒 蕁麻疹ができて痒みに苦しんでたという話。 昨年からのバタバタぶりが少し落ち着いてきた1月中旬、足に肌色の蕁麻疹が出てきました。はじめは少し痒いくらいだったのですが、日に日にひどくなり、ついにはとても強い痒みが来て、掻くと余計に痒みが強くなるというやっかいなものになりました。 実は、こうした蕁麻疹は2年前にも体験していて、その時は初夏だったので、汗なんかも関係あったのかなあと考えていたのですが、まさかこんな冬になるとは思いませんでした。 夜になると痒みが強くなり、起きている間はできるだけ掻かないように意識できるのですが、いざ寝てしまうと無意識のうちに掻いてしまい、それでさらに痒みが強くなって掻くという悪循環になってました。さらには強い痒みで何度も起きてしまい、掻いたことの罪悪感も相まって、ろくに寝れずに会社に行く日もありました。 前回の時は、はじめに行った病院との相性が悪くて、この辛い時期が長かったのですが、最終的には良い病院と出会い、2ヶ月程で治りました。 その点、今回はすぐに良い病院に行くことができ、1週間経ったあたりでかなり落ち着きました。今は発作的な痒みは無くなったので、心穏やかに眠れるようになりました:D いつかまたなるかもなので、対処法をメモしときます。（この対処法は自分がうまくいった方法で、人によっては効果が無い、もしくは逆効果の可能性もあります。治療する際は病院等で相談して下さい。） 1. 痒くなってきたら、冷やす 冷やせば、その瞬間は痒みがおさまります。 逆に温めると痒みが増します。夜寝ている間に痒みが来るのも、温かい毛布にくるまって寝ているのもあるでしょうね。。。 2. 早く病院に行く 発作的な痒みがくる状況になると、もう病院に行って薬をもらった方が良いです。放っておいてもひどくなる一方でした。 病院で出された薬は以下。 セレスターナ配合錠（飲み薬:朝夕食） アレロックOD錠（飲み薬:朝夕食） ステロイド剤（塗り薬） 3. 症状を緩和する市販薬 いくつか市販薬も試したのですが、一番効果的だったのはこの薬でした。 ジェルタイプの塗り薬でスーッとする成分が入っているので、痒みを冷ましてくれます。正直痒みを取る目的では病院でもらったステロイド剤より効果がありました。 【送料490円・税込5000円以上で送料無料】2/2 10時～ エントリー＆3ショップ購入で最大10倍!ア&#8230;価格：520円（税込、送料別） 4. 調子に乗ってお酒を飲まない 蕁麻疹の原因は医者曰く「アレルギー」だそうです。 原因をあれこれと考えてみたのですが、痒みがきた頃に特に変わったものは食べていないし、生活環境も特に変わったことはなく、これ、と思い当たるものはありませんでした。 強いて言えば、正月頃から毎日お酒を飲んでいたくらいですかね。家で飲むのもそうですが、新年会やイベントやらで外で飲む機会もあったので、元来アルコールが得意で無い自分にとってはオーバーペースだったのかもしれません。 お酒が直接の原因ではないかもしれないですが、アルコールで血流が良くなると痒みが増すので、良くはないです。 そういえば2年前の時も暑くなりはじめた頃で、毎日梅酒を飲んでいたから痒くなったと思い、その後禁酒していたのを後から思い出しました。。。 痒みを舐めたらダメ 経験がある方なら分かりますが、あの発作のような痒みはホントに辛いものです。さらに掻きむしってしまった後の激しい自己嫌悪、あれも苦しいですね。 お酒が原因かははっきりしてませんが、「それ以上飲んだら体壊すぞ」という体からのサインだと思うので、完治するまでは禁酒を、完治してもほどほどにしたいと思います。 というわけで、宴の席ではしばらくウーロン茶になりますので、ご承知おきをm(_ _)m]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">3</span>分<span style="color:#f00">15</span>秒</span>
				</div>
				<p>蕁麻疹ができて痒みに苦しんでたという話。</p>
				<p><a href="http://www.flickr.com/photos/91218927@N00/3630381745" target="_blank"><img src="http://farm4.staticflickr.com/3612/3630381745_3c331fd06a.jpg" /></a></p>
				<p>昨年からのバタバタぶりが少し落ち着いてきた1月中旬、足に肌色の蕁麻疹が出てきました。はじめは少し痒いくらいだったのですが、日に日にひどくなり、ついにはとても強い痒みが来て、掻くと余計に痒みが強くなるというやっかいなものになりました。</p>
				<p>実は、こうした蕁麻疹は2年前にも体験していて、その時は初夏だったので、汗なんかも関係あったのかなあと考えていたのですが、まさかこんな冬になるとは思いませんでした。</p>
				<p>夜になると痒みが強くなり、起きている間はできるだけ掻かないように意識できるのですが、いざ寝てしまうと無意識のうちに掻いてしまい、それでさらに痒みが強くなって掻くという悪循環になってました。さらには強い痒みで何度も起きてしまい、掻いたことの罪悪感も相まって、ろくに寝れずに会社に行く日もありました。</p>
				<p>前回の時は、はじめに行った病院との相性が悪くて、この辛い時期が長かったのですが、最終的には良い病院と出会い、2ヶ月程で治りました。</p>
				<p>その点、今回はすぐに良い病院に行くことができ、1週間経ったあたりでかなり落ち着きました。今は発作的な痒みは無くなったので、心穏やかに眠れるようになりました:D</p>
				<p>いつかまたなるかもなので、対処法をメモしときます。（この対処法は自分がうまくいった方法で、人によっては効果が無い、もしくは逆効果の可能性もあります。治療する際は病院等で相談して下さい。）</p>
				<h3>1. 痒くなってきたら、冷やす</h3>
				<p>冷やせば、その瞬間は痒みがおさまります。</p>
				<p>逆に温めると痒みが増します。夜寝ている間に痒みが来るのも、温かい毛布にくるまって寝ているのもあるでしょうね。。。</p>
				<h3>2. 早く病院に行く</h3>
				<p>発作的な痒みがくる状況になると、もう病院に行って薬をもらった方が良いです。放っておいてもひどくなる一方でした。</p>
				<p>病院で出された薬は以下。</p>
				<ul>
				<li>セレスターナ配合錠（飲み薬:朝夕食）</li>
				<li>アレロックOD錠（飲み薬:朝夕食）</li>
				<li>ステロイド剤（塗り薬）</li>
				</ul>
				<h3>3. 症状を緩和する市販薬</h3>
				<p>いくつか市販薬も試したのですが、一番効果的だったのはこの薬でした。</p>
				<p>ジェルタイプの塗り薬でスーッとする成分が入っているので、痒みを冷ましてくれます。正直痒みを取る目的では病院でもらったステロイド剤より効果がありました。</p>
				<p>
				<table border="0" cellpadding="0" cellspacing="0">
				<tr>
				<td valign="top">
				<div style="border:1px solid;margin:0px;padding:6px 0px;width:320px;text-align:center;float:left"><a href="http://hb.afl.rakuten.co.jp/hgc/0f212852.798519c6.0f212853.0d7edd09/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fmoris-dg%2f4987081018406%2f%3fscid%3daf_ich_link_tbl&#038;m=http%3a%2f%2fm.rakuten.co.jp%2fmoris-dg%2fi%2f10004221%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fmoris-dg%2fcabinet%2fiyakuhin%2fimg57547140.gif%3f_ex%3d300x300&#038;m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fmoris-dg%2fcabinet%2fiyakuhin%2fimg57547140.gif%3f_ex%3d80x80" alt="【送料490円・税込5000円以上で送料無料】2/2 10時～ エントリー＆3ショップ購入で最大10倍!ア..." border="0" style="margin:0px;padding:0px"></a>
				<p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px"><a href="http://hb.afl.rakuten.co.jp/hgc/0f212852.798519c6.0f212853.0d7edd09/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fmoris-dg%2f4987081018406%2f%3fscid%3daf_ich_link_tbl&#038;m=http%3a%2f%2fm.rakuten.co.jp%2fmoris-dg%2fi%2f10004221%2f" target="_blank">【送料490円・税込5000円以上で送料無料】2/2 10時～ エントリー＆3ショップ購入で最大10倍!ア&#8230;</a><br /><span style="">価格：520円（税込、送料別）</span></p>
				</div>
				</td>
				</tr>
				</table>
				<h3>4. 調子に乗ってお酒を飲まない</h3>
				<p>蕁麻疹の原因は医者曰く「アレルギー」だそうです。</p>
				<p>原因をあれこれと考えてみたのですが、痒みがきた頃に特に変わったものは食べていないし、生活環境も特に変わったことはなく、これ、と思い当たるものはありませんでした。</p>
				<p>強いて言えば、正月頃から毎日お酒を飲んでいたくらいですかね。家で飲むのもそうですが、新年会やイベントやらで外で飲む機会もあったので、元来アルコールが得意で無い自分にとってはオーバーペースだったのかもしれません。</p>
				<p>お酒が直接の原因ではないかもしれないですが、アルコールで血流が良くなると痒みが増すので、良くはないです。</p>
				<p>そういえば2年前の時も暑くなりはじめた頃で、毎日梅酒を飲んでいたから痒くなったと思い、その後禁酒していたのを後から思い出しました。。。</p>
				<h2>痒みを舐めたらダメ</h2>
				<p>経験がある方なら分かりますが、あの発作のような痒みはホントに辛いものです。さらに掻きむしってしまった後の激しい自己嫌悪、あれも苦しいですね。</p>
				<p>お酒が原因かははっきりしてませんが、「それ以上飲んだら体壊すぞ」という体からのサインだと思うので、完治するまでは禁酒を、完治してもほどほどにしたいと思います。</p>
				<p>というわけで、宴の席ではしばらくウーロン茶になりますので、ご承知おきをm(_ _)m</p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2012/02/no_drink_by_itching.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012年は変化の年</title>
		<link>http://www.1x1.jp/blog/2012/01/2011_summary_2012.html</link>
		<comments>http://www.1x1.jp/blog/2012/01/2011_summary_2012.html#comments</comments>
		<pubDate>Sun, 29 Jan 2012 10:50:06 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[雑記]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3824</guid>
		<description><![CDATA[この記事の所要時間： 約 3分20秒 気がつけば、もう1月が終わろうとしていますが、今年最初のエントリです。 昨年秋ごろから本業でバタバタとしていて、貧乏暇なしを体現するがごとく仕事に明け暮れていたら、気がついたら年が開けていました。 いちおうまだ1月なので、まずは昨年の振り返りを。 2011年 昨年も色々とあったのですが、イベント関連を振り返ると印象深かったのはやはりPHPカンファレンス関西を開催できたことです。 毎年、東京で行われているPHPカンファレンスのような大きなイベントを、地元関西でも開催したいという想いがずっとあったので、それが無事に実現できたことは大きな意味がありました。 このイベントを運営したスタッフが母体となって、Kansai PHP Users Group（kphpug）を立ち上げました。カンファレンスや勉強会といったPHPに関するイベントの開催を通じて、関西のPHPerが交流出来る場を作っていきたいと思います。 また、JAWS-UG大阪にスタッフとして関わるようになりました。あまりスタッフらしいことはしていませんが、これまで接することが無かった人たちと新たに交流できるようになりました。これも昨年の大きな変化でした。 2011年に参加したイベントを並べてみました。 こうして見ると、年初の「CakePHP勉強会」と「appengine ja night #13」以外は全て関西で開催されたものばかりです。関西が盛り上がるのは良いことですね。 第2回関西アンカンファレンス CakePHP新春勉強会 東京 appengine ja night #13 Japan AWS User Group (JAWS) &#8211; Osaka勉強会 第1回 PHPカンファレンス関西 Japan AWS User Group (JAWS-UG) &#8211; Osaka勉強会 第3回 第1回関西PHP勉強会 RxTstudy 第一回関西PHP初心者勉強会 PHP Masturi 2011 第2回 関西PHP勉強会 2012年は「変化」の年 2012年は「変化」の年です。 これは個人的にというだけでなく、会社としても、この「変化」というキーワードを今年の目標に置いています。 １×１を個人事業ではじめて12年目、法人化して7期目に入っています。さらにこのblogを書きはじめて6年、OSSのコミュニティ活動に関わって5年が経ちました。 [...]]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">3</span>分<span style="color:#f00">20</span>秒</span>
				</div>
				<p>気がつけば、もう1月が終わろうとしていますが、今年最初のエントリです。</p>
				<p><a href="http://www.flickr.com/photos/82201122@N00/2513217764" target="_blank"><img src="http://farm3.staticflickr.com/2241/2513217764_740fdd6afa.jpg" /></a></p>
				<p>昨年秋ごろから本業でバタバタとしていて、貧乏暇なしを体現するがごとく仕事に明け暮れていたら、気がついたら年が開けていました。</p>
				<p>いちおうまだ1月なので、まずは昨年の振り返りを。</p>
				<h2>2011年</h2>
				<p>昨年も色々とあったのですが、イベント関連を振り返ると印象深かったのはやはり<a href="http://phpcon.php.gr.jp/kansai/" target="_blank">PHPカンファレンス関西</a>を開催できたことです。</p>
				<p>毎年、東京で行われているPHPカンファレンスのような大きなイベントを、地元関西でも開催したいという想いがずっとあったので、それが無事に実現できたことは大きな意味がありました。</p>
				<p>このイベントを運営したスタッフが母体となって、<a href="http://www.kphpug.jp/" target="_blank">Kansai PHP Users Group（kphpug）</a>を立ち上げました。カンファレンスや勉強会といったPHPに関するイベントの開催を通じて、関西のPHPerが交流出来る場を作っていきたいと思います。</p>
				<p>また、JAWS-UG大阪にスタッフとして関わるようになりました。あまりスタッフらしいことはしていませんが、これまで接することが無かった人たちと新たに交流できるようになりました。これも昨年の大きな変化でした。</p>
				<p>2011年に参加したイベントを並べてみました。</p>
				<p>こうして見ると、年初の「CakePHP勉強会」と「appengine ja night #13」以外は全て関西で開催されたものばかりです。関西が盛り上がるのは良いことですね。</p>
				<ul>
				<li><a href="http://www.1x1.jp/blog/2011/01/event_kansai_unconference2_report.html" target="_blank">第2回関西アンカンファレンス</a></li>
				<li><a href="http://atnd.org/events/11810" target="_blank">CakePHP新春勉強会 東京</a></li>
				<li><a href="http://atnd.org/events/11626" target="_blank">appengine ja night #13</a></li>
				<li><a href="http://www.1x1.jp/blog/2011/02/event_jaws_osaka_1.html" target="_blank">Japan AWS User Group (JAWS) &#8211; Osaka勉強会 第1回</a></li>
				<li><a href="http://www.1x1.jp/blog/2011/04/phpcon_kansai.html" target="_blank">PHPカンファレンス関西</a></li>
				<li><a href="http://atnd.org/events/16499" target="_blank">Japan AWS User Group (JAWS-UG) &#8211; Osaka勉強会 第3回</a></li>
				<li><a href="http://www.1x1.jp/blog/2011/04/phpcon_kansai.html" target="_blank">第1回関西PHP勉強会</a></li>
				<li><a href="http://atnd.org/events/17268" target="_blank">RxTstudy</a></li>
				<li><a href="http://atnd.org/events/18761" target="_blank">第一回関西PHP初心者勉強会</a></li>
				<li><a href="http://www.1x1.jp/blog/2011/10/php_matsuri_2011_is_awesome.html" target="_blank">PHP Masturi 2011</a></li>
				<li><a href="http://www.1x1.jp/blog/2011/11/event_kansai_php_2_php53.html" target="_blank">第2回 関西PHP勉強会</a></li>
				</ul>
				<h2>2012年は「変化」の年</h2>
				<p>2012年は「変化」の年です。</p>
				<p>これは個人的にというだけでなく、会社としても、この「変化」というキーワードを今年の目標に置いています。</p>
				<p>１×１を個人事業ではじめて12年目、法人化して7期目に入っています。さらにこのblogを書きはじめて6年、OSSのコミュニティ活動に関わって5年が経ちました。</p>
				<p>これまで多くの方々とのご縁のおかげでなんとかやってこれました。本当にありがとうございます。</p>
				<p>現状維持だけを考えれば、ここ 1, 2 年は色々な面でこのままやっていけそうな感覚はあります。しかし 5年、10年というサイクルで見ると、このまま現状維持を目指していたのでは萎んでいくのが目に見えています。</p>
				<p>もちろん、これまでも精一杯取り組んではきたのですが、そろそろそのアプローチを見直す時期に来ているのかなと感じています。これは数年前から薄々は感じていたのですが、昨年あたりからその感覚が強くなってきていて、いよいよ行動に移す、移さないといけない時が来ています。</p>
				<p>実は昨年から少しづつ変化の兆しはありました。</p>
				<p>一つ例をあげると、kphpug では <a href="https://twitter.com/#!/BiMihoujyun" target="_blank">@BiMihoujyun</a>をはじめとする若いメンバーが中心となり「関西PHP初心者勉強会」というイベントを開催してくれるようになりました。これまでは自分や決まったメンバーが開催していたのですが、こうして若いメンバーが引っ張っていってくれるようになると、また違う盛り上がりをみせてきますね。</p>
				<p>仕事面でもこういった変化の兆しは少しづつ見えていて、より先へ進もうとしています。</p>
				<p>今年は、こういった変化の兆しを作る、そして実際に変化していく一年にしようと思います。</p>
				<p>今年が終わった時に「あー結局、何にも変わらなかったね」ということだけにはならないようにやっていきますので、2012年もよろしくお願いします！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2012/01/2011_summary_2012.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Advent Calendar jp 2011 まとめ</title>
		<link>http://www.1x1.jp/blog/2011/12/php_advent_calendar_jp_2011_summary.html</link>
		<comments>http://www.1x1.jp/blog/2011/12/php_advent_calendar_jp_2011_summary.html#comments</comments>
		<pubDate>Wed, 28 Dec 2011 02:00:13 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3803</guid>
		<description><![CDATA[この記事の所要時間： 約 4分53秒 PHPer の年末を彩る PHP Advent Calendar jp 2011 が今年も無事に終了しました。 今年は12/1から12/26まで、全26回に渡って全国の PHPer が PHP に関するエントリを投稿しました。今年は見事に登板日を超す人もいなくて、無事に完走できました。（焼肉奢りの人はいませんでした＞＜）参加された皆さんお疲れ様でした！ エントリ内容 今年もPHP言語についてやライブラリ、フレームワークなど多岐に渡る内容が投稿されました。昨年も様々な記事がありましたが、あえて違いをあげるなら PHP5.4 に関する記事が登場したことでしょうか。 PHP 関連では 5.4 や各フレームワークなど内容を絞った Advent Calendar も開催されていたので、PHP Advent Calendar jp については、普段 PHP を使っていて気になること、つまづいたところ、もっとこうした方が良いよ、といった Tips 的が多く、PHP を使う多くの方に参考になる記事が多かったと思います。 他にも、PHP自体のソース解説やフレームワーク論、プロセス制御、hiphop phpなど中級者〜上級者向けのコアな内容や、資格試験、イベント報告、そして退職報告に絡めたエントリなど、盛りだくさんではあるのですが、とてもバランスが取れたラインナップとなりました。 電子書籍化 今年は技術評論社さんのご協力により、Advent Calendar の記事を電子出版して頂ける予定です。せっかくこれだけの記事が集まったのですから、まとめて読めるのは嬉しいですね。 価格は無料で、2012/1 or 2 月頃に提供頂けるようです。みなさんお楽しみに:D PHP Advent Calendar jp 2011 エントリ 2011/12/01 cakephper Advent [...]]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">4</span>分<span style="color:#f00">53</span>秒</span>
				</div>
				<p>PHPer の年末を彩る <a href="http://atnd.org/events/22781" target="_blank">PHP Advent Calendar jp 2011</a> が今年も無事に終了しました。</p>
				<p><img src="http://www.1x1.jp/blog/wp-content/uploads/2010/12/advent_calendar.jpg" alt="" title="advent_calendar" width="500" height="325" class="alignnone size-full wp-image-2658" /></p>
				<p>今年は12/1から12/26まで、全26回に渡って全国の PHPer が PHP に関するエントリを投稿しました。今年は見事に登板日を超す人もいなくて、無事に完走できました。（焼肉奢りの人はいませんでした＞＜）参加された皆さんお疲れ様でした！</p>
				<h2>エントリ内容</h2>
				<p>今年もPHP言語についてやライブラリ、フレームワークなど多岐に渡る内容が投稿されました。昨年も様々な記事がありましたが、あえて違いをあげるなら PHP5.4 に関する記事が登場したことでしょうか。</p>
				<p>PHP 関連では 5.4 や各フレームワークなど内容を絞った Advent Calendar も開催されていたので、PHP Advent Calendar jp については、普段 PHP を使っていて気になること、つまづいたところ、もっとこうした方が良いよ、といった Tips 的が多く、PHP を使う多くの方に参考になる記事が多かったと思います。</p>
				<p>他にも、PHP自体のソース解説やフレームワーク論、プロセス制御、hiphop phpなど中級者〜上級者向けのコアな内容や、資格試験、イベント報告、そして退職報告に絡めたエントリなど、盛りだくさんではあるのですが、とてもバランスが取れたラインナップとなりました。</p>
				<h2>電子書籍化</h2>
				<p>今年は技術評論社さんのご協力により、Advent Calendar の記事を電子出版して頂ける予定です。せっかくこれだけの記事が集まったのですから、まとめて読めるのは嬉しいですね。</p>
				<p>価格は無料で、2012/1 or 2 月頃に提供頂けるようです。みなさんお楽しみに:D</p>
				<h2>PHP Advent Calendar jp 2011 エントリ</h2>
				</p>
				<table>
				<tr>
				<td>2011/12/01</td>
				<td><a href="http://twitter.com/cakephper" target="_blank">cakephper</a></td>
				<td><a href="http://d.hatena.ne.jp/cakephper/20111201/1322724754	" target="_blank"> Advent Calendar 1日目</a></td>
				</tr>
				<tr>
				<td>2011/12/02</td>
				<td><a href="http://twitter.com/shin1x1" target="_blank">shin1x1</a></td>
				<td><a href="http://www.1x1.jp/blog/2011/12/php_arry.html	" target="_blank">PHPerの悩みを解決する arry を作ってみた（PHP Advent Calendar jp 2011 Day 2）</a></td>
				</tr>
				<tr>
				<td>2011/12/03</td>
				<td><a href="http://twitter.com/tottokug" target="_blank">tottokug</a></td>
				<td><a href="http://d.hatena.ne.jp/tottokug/20111203/1322877439" target="_blank">phpcloudを使ってみた</a></td>
				</tr>
				<tr>
				<td>2011/12/04</td>
				<td><a href="http://twitter.com/shirokuro331" target="_blank">shirokuro331</a></td>
				<td><a href="http://www.shirokuro331.net/cobalt/?p=329" target="_blank">SimpleXMLでXML読み込んで縦スライドでツイート表示（PHP Advent Calendar jp 2011 4日目）</a></td>
				</tr>
				<tr>
				<td>2011/12/05</td>
				<td><a href="http://twitter.com/yohgaki" target="_blank">yohgaki</a></td>
				<td><a href="http://blog.ohgaki.net/fixing-php-session-adoption	" target="_blank">PHPのセッションアダプション脆弱性克服への道のり</a></td>
				</tr>
				<tr>
				<td>2011/12/06</td>
				<td><a href="http://twitter.com/asao_jp" target="_blank">asao_jp</a></td>
				<td><a href="http://wsjp.blogspot.com/2011/12/phplocalstoragephp-advent-jp-2011.html	" target="_blank">PHPからlocalStorageに書き込み・読み込み（PHP Advent JP 2011）</a></td>
				</tr>
				<tr>
				<td>2011/12/07</td>
				<td><a href="http://twitter.com/scriptwork" target="_blank">scriptwork</a></td>
				<td><a href="http://scriptworks.jp/blog/2011/12/how_to_avoid_pitfall_of_php_datetime/" target="_blank">DateTimeクラスの落とし穴と対策 : PHP Advent Calendar jp 2011 Day 7</a></td>
				</tr>
				<tr>
				<td>2011/12/08</td>
				<td><a href="http://twitter.com/koyhoge" target="_blank">koyhoge</a></td>
				<td><a href="http://d.hatena.ne.jp/koyhoge/20111208/processforker" target="_blank">子プロセス制御ふたたび : PHP Advent Calendar jp 2011 Day 8</a></td>
				</tr>
				<tr>
				<td>2011/12/09</td>
				<td><a href="http://twitter.com/takuya_1st" target="_blank">takuya_1st</a></td>
				<td><a href="http://d.hatena.ne.jp/takuya_1st/20111208/1323355549" target="_blank">includeとextractの組み合わせでテンプレート処理を作る。PHPのAdvent Calender #9</a></td>
				</tr>
				<tr>
				<td>2011/12/10</td>
				<td><a href="http://twitter.com/calpo22" target="_blank">calpo22</a></td>
				<td><a href="http://d.hatena.ne.jp/calpo/20111210/p1" target="_blank">PyrusでプロジェクトローカルなPEARライブラリインストール : PHP Advent Calendar jp 2011 Day 10</a></td>
				</tr>
				<tr>
				<td>2011/12/11</td>
				<td><a href="http://twitter.com/kokkekun" target="_blank">kokkekun</a></td>
				<td><a href="http://k-holy.sakura.ne.jp/wordpress/2011/12/11/user-error-handler/" target="_blank">エラーハンドラと例外ハンドラによるエラー処理 (PHP Advent Calendar jp 2011 Day 11)</a></td>
				</tr>
				<tr>
				<td>2011/12/12</td>
				<td><a href="http://twitter.com/kashioka" target="_blank">kashioka</a></td>
				<td><a href="http://kashioka.net/2011/12/12/php/" target="_blank">2.6公開間近！！Ethnaを5分でインストール</a></td>
				</tr>
				<tr>
				<td>2011/12/13</td>
				<td><a href="http://twitter.com/redsnow_" target="_blank">redsnow_</a></td>
				<td><a href="http://nob-log.info/2011/12/13/php-advent-calendar-jp-2011-day-13/	" target="_blank">	PHPを使ってFQLに入門してみる（PHP Advent Calendar jp 2011 Day 13）</a></td>
				</tr>
				<tr>
				<td>2011/12/14</td>
				<td><a href="http://twitter.com/msng" target="_blank">msng</a></td>
				<td><a href="http://www.msng.info/archives/2011/12/readable-php-codes.php" target="_blank">PHP のソースコードを読みやすくするための工夫あれこれ #phpadvent2011</a></td>
				</tr>
				<tr>
				<td>2011/12/15</td>
				<td><a href="http://twitter.com/bimihoujyun" target="_blank">bimihoujyun</a></td>
				<td><a href="http://bimi.jpn.com/?p=161" target="_blank">PHP5.4の新機能、「trait」を知る！(PHP Advent Calendar jp 2011Day15)</a></td>
				</tr>
				<tr>
				<td>2011/12/16</td>
				<td><a href="http://twitter.com/hajikami" target="_blank">hajikami</a></td>
				<td><a href="http://my-rest.icca.jp/blog/2011/12/769/" target="_blank">[PHP] == による文字列比較をしてはいけないことを理解する #phpadvent2011 16th</a></td>
				</tr>
				<tr>
				<td>2011/12/17</td>
				<td><a href="http://twitter.com/omoon" target="_blank">omoon</a></td>
				<td><a href="http://d.hatena.ne.jp/omoon/20111217/1324109105" target="_blank">isset() 関数にご用心！ ( #phpadvent2011 Day 17 )</a></td>
				</tr>
				<tr>
				<td>2011/12/18</td>
				<td><a href="http://twitter.com/DaiMotoh" target="_blank">DaiMotoh</a></td>
				<td><a href="http://d.hatena.ne.jp/liz5th/20111218" target="_blank">PHPでRESTful：PHP Advent Calendar #18</a></td>
				</tr>
				<tr>
				<td>2011/12/19</td>
				<td><a href="http://twitter.com/basuke" target="_blank">basuke</a></td>
				<td><a href="http://d.hatena.ne.jp/basuke/20111219" target="_blank">フレームワークで語るMVCの話 : PHP Advent Calendar #19</a></td>
				</tr>
				<tr>
				<td>2011/12/20</td>
				<td><a href="http://twitter.com/slumbers99" target="_blank">slumbers99</a></td>
				<td><a href="http://slumbers99.blogspot.com/2011/12/eclipse-xdebug-php-php-advent-calendar.html" target="_blank">Eclipse と Xdebug で PHP をステップ実行 PHP Advent Calendar jp 2011 #phpadvent2011</a></td>
				</tr>
				<tr>
				<td>2011/12/21</td>
				<td><a href="http://twitter.com/tsuyoshikawa" target="_blank">tsuyoshikawa</a></td>
				<td><a href="http://labs.gree.jp/blog/2011/12/4367/" target="_blank">“PHP Apocalypse”を開催しました！</a></td>
				</tr>
				<tr>
				<td>2011/12/22</td>
				<td><a href="http://twitter.com/aods1004" target="_blank">aods1004</a></td>
				<td><a href="http://d.hatena.ne.jp/aods1004/20111222" target="_blank">[資格試験][PHP] PHP5技術者認定初級試験を受けてきました PHP Advent Calendar jp 2011</a></td>
				</tr>
				<tr>
				<td>2011/12/23</td>
				<td><a href="http://twitter.com/bornknow108" target="_blank">bornknow108</a></td>
				<td><a href="http://born-clap.blogspot.com/2011/12/php-advent-calendar-23-phpipmessanger.html#more" target="_blank">PHPでIPMessanger</a></td>
				</tr>
				<tr>
				<td>2011/12/24</td>
				<td><a href="http://twitter.com/Hiraku" target="_blank">Hiraku</a></td>
				<td><a href="http://blog.tojiru.net/article/242359805.html	" target="_blank">PHPとgoto文 (PHP Advent Calendar 2011 24日目)</a></td>
				</tr>
				<tr>
				<td>2011/12/25</td>
				<td><a href="http://twitter.com/yoya" target="_blank">yoya</a></td>
				<td><a href="http://d.hatena.ne.jp/yoya/20111225/phpwin" target="_blank">Windows で PHP を build する</a></td>
				</tr>
				<tr>
				<td>2011/12/26</td>
				<td><a href="http://twitter.com/rti" target="_blank">rti</a></td>
				<td><a href="http://d.hatena.ne.jp/rti7743/20111225/1324817155" target="_blank">hiphop php でPHPからジェネレートされたC++コードを読んでみよう。</a></td>
				</tr>
				</table>
				<p>=</p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2011/12/php_advent_calendar_jp_2011_summary.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP5.4 ビルトインサーバで CakePHP を試食する（CakePHP Advent Calendar 2011 4日目）</title>
		<link>http://www.1x1.jp/blog/2011/12/cakephp_on_php54_builtin_web_server.html</link>
		<comments>http://www.1x1.jp/blog/2011/12/cakephp_on_php54_builtin_web_server.html#comments</comments>
		<pubDate>Sun, 04 Dec 2011 08:51:28 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3777</guid>
		<description><![CDATA[この記事の所要時間： 約 8分56秒 PHP5.4のビルトインサーバで CakePHP を動かしてみました。 CakePHP Advent Calendar 2011 の 4 日目です。 いよいよ PHP5.4 の正式リリースが近づいてきました。5.3 からのマイナーバージョンアップとはいえ、Trait や Short syntax for arrays、Array Dereferencing など興味深い機能が追加されています。 そんな新機能の中から注目のビルトインサーバを使って、CakePHP を動かしてみました。今回は CakePHP1系と2系の両方を試しています。 PHP5.4RC2をインストール まずは現時点での最新版 PHP5.4RC2 が動く環境を作ります。 手順は以前書いたエントリ「 現状のPHP環境はそのままで、PHP 5.4 を試す 」を参考にして下さい。 上記エントリではとりあえず 5.4 環境を作るという内容でしたが、実際にアプリケーションを動作させる場合は、./configure で利用するオプションを指定する必要があります。今回は下記のようにオプションを指定しました。 $ ./configure --with-mysql --with-pdo-mysql --enable-mbstring --with-pgsql=/opt/local/lib/postgresql90 ビルトインサーバを起動 ビルトインサーバは PHP5.4 で実装された新機能です。CLI 版 PHP のオプションとして実装されており、コマンドラインから Web サーバを起動して、その上で [...]]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">8</span>分<span style="color:#f00">56</span>秒</span>
				</div>
				<p>PHP5.4のビルトインサーバで CakePHP を動かしてみました。</p>
				<p><a href="http://www.flickr.com/photos/epsos/5934212048/lightbox/" target="_blank"><img src="http://farm7.staticflickr.com/6134/5934212048_e8ae32dd9a.jpg"></a></p>
				<p><a href="http://atnd.org/events/22721" target="_blank">CakePHP Advent Calendar 2011</a> の 4 日目です。</p>
				<p>いよいよ PHP5.4 の正式リリースが近づいてきました。5.3 からのマイナーバージョンアップとはいえ、Trait や  Short syntax for arrays、Array Dereferencing など興味深い機能が追加されています。</p>
				<p>そんな新機能の中から注目のビルトインサーバを使って、CakePHP を動かしてみました。今回は CakePHP1系と2系の両方を試しています。</p>
				<h2>PHP5.4RC2をインストール</h2>
				<p>まずは現時点での最新版 PHP5.4RC2 が動く環境を作ります。</p>
				<p>手順は以前書いたエントリ「<a href="http://www.1x1.jp/blog/2011/06/try_new_php_without_update_current_version.html" target="_blank"> 現状のPHP環境はそのままで、PHP 5.4 を試す </a>」を参考にして下さい。</p>
				<p>上記エントリではとりあえず 5.4 環境を作るという内容でしたが、実際にアプリケーションを動作させる場合は、./configure で利用するオプションを指定する必要があります。今回は下記のようにオプションを指定しました。</p>
				<pre>
$ ./configure --with-mysql --with-pdo-mysql --enable-mbstring --with-pgsql=/opt/local/lib/postgresql90
</pre>
				<h2>ビルトインサーバを起動</h2>
				<p>ビルトインサーバは PHP5.4 で実装された新機能です。CLI 版 PHP のオプションとして実装されており、コマンドラインから Web サーバを起動して、その上で PHP を実行することができます。これを使えば Apache のような Web サーバが無くても CakePHP を実行することができます。</p>
				<p>では先ほど構築した PHP5.4RC2 環境でビルトインサーバを起動してみましょう。</p>
				<p>CLI 版 PHP に「-S」を付けるとビルトインサーバが起動します。「-S」の後ろは HTTP リクエストを待ち受ける IP とポートを指定します。下記例では local:8111 で待ち受けます。なお、ここでは既存の PHP の ini ファイルを利用したいので、「-c」で php.ini のパスを指定しています。</p>
				<pre>
$ sapi/cli/php -S localhost:8111 -c /path/to/php.ini
PHP 5.4.0RC2 Development Server started at Sun Dec  4 15:38:15 2011
Listening on localhost:8111
Document root is /path/to/docroot
Press Ctrl-C to quit.
</pre>
				<p>起動したらブラウザで「http://localhost:8111/」にアクセスするとページが表示されます。</p>
				<p>Ctrl-C を押すと、ビルトインサーバが停止します。</p>
				<h3>-t で DocumentRoot を指定</h3>
				<p>デフォルトではコマンドを実行したカレントディレクトリが DocumentRoot になります。「-t」を付けると任意のディレクトリを DocumentRoot に変更できます。</p>
				<pre>
$ sapi/cli/php -S localhost:8111 -t /path/to/docroot
</pre>
				<h3>.htaccess は無効</h3>
				<p>.htaccess はビルトインサーバ上ではただの１ファイルにしかすぎず、mod_rewrite などの制御は働きません。</p>
				<p>しかし、ビルトインサーバではリクエストファイル名に「.」が含まれておらず、該当ファイルが存在しない場合は、index.php もしくは index.html を起動する仕様になっているようなので、CakePHP のように index.php からフレームワークが起動するアプリケーションでは問題無く実行することができます。</p>
				<h3>詳細はPHPマニュアルに</h3>
				<p>さすが PHP ということで、すでにビルトインサーバについては PHP にマニュアル解説があります。詳細はこちらをどうぞ。<br /><a href="http://php.net/manual/ja/features.commandline.webserver.php" target="_blank">PHP: ビルトインウェブサーバー &#8211; Manual</a></p>
				<h2>CakePHP2 を試す</h2>
				<p>では実際に CakePHP2 をビルトインサーバ上で動かしてみましょう。今回動かしたのは 2.0.4 です。</p>
				<p>手順は簡単で、CakePHP2 の app/webroot を DocumentRoot に指定して、ビルトインサーバを起動するだけです。</p>
				<pre>
$ sapi/cli/php -S localhost:8111 -c /path/to/php.ini -t /path/to/cakephp2/app/webroot
</pre>
				<p>ブラウザでアクセスすると見事におなじみの画面が表示されます。</p>
				<p><img src="https://img.skitch.com/20111204-phbytirn2kcc1kxh4hqsx8bbxc.png" alt="CakePHP: the rapid development php framework: Home" /></p>
				<p>本格的なアプリケーションは実行していませんが、ざっと見た感じでは、PHPソースを変更することなく、そのまま実行することができました。</p>
				<h2>CakePHP1 を試す</h2>
				<p>次は CakePHP1 をビルトインサーバ上で動かしてみます。今回動かしたのは 1.3.13 です。</p>
				<pre>
$ sapi/cli/php -S localhost:8111 -c /path/to/php.ini -t /path/to/cakephp1/app/webroot
</pre>
				<p>ブラウザでアクセスするといつもの画面が表示されますが、いくつかエラーが出ています。</p>
				<p><img src="https://img.skitch.com/20111204-ekirp3wwek43wypsqgjjrqi7jq.png" alt="CakePHP: the rapid development php framework: Home" /></p>
				<p>エラーメッセージは以下。</p>
				<pre>
Strict Standards: Redefining already defined constructor for class Object in /path/to/cakephp1/cake/libs/object.php on line 54

Strict Standards: Non-static method Configure::getInstance() should not be called statically in /path/to/cakephp1/cake/bootstrap.php on line 38

Strict Standards: Non-static method CakeLog::getInstance() should not be called statically, assuming $this from incompatible context in /path/to/cakephp1/cake/libs/cake_log.php on line 290
</pre>
				<h3>E_STRICTエラー</h3>
				<p>PHP5.4 からエラー出力レベル E_ALL に E_STRICT が含まれたため、E_STRICT に引っかかった箇所がエラーとして表示されてます。</p>
				<p>CakePHP ではフレームワーク自身が error_reporting() でエラー出力レベルを上書きしてしまうので、E_STRICT を除外するように変更する必要があります。（display_error=off でエラー表示を抑制する手もありますが、開発環境では表示しておいた方が便利です。）</p>
				<p>この問題についてはビルトインサーバ上でなくとも、PHP5.4環境では同じく発生します。</p>
				<p>修正箇所は github に commit してあるので、こちらをどうぞ。<br /><a href="https://github.com/shin1x1/cakephp/commit/9cbc30101c7d43221b88ea0d9fa66c2cfaa4f1d1" target="_blank">Commit 9cbc30101c7d43221b88ea0d9fa66c2cfaa4f1d1 to shin1x1/cakephp &#8211; GitHub</a></p>
				<h3>URLパス生成の問題</h3>
				<p>「http://localhost:8111/a」など存在しないコントローラにアクセスするとお馴染みのエラー画面となるのですが、CSS が効かずにテキストのみが表示されます。画面下の画像も表示されていません。</p>
				<p><img src="https://img.skitch.com/20111204-g7wnytsxnxuheirip8bq9pxuqd.png" alt="CakePHP: the rapid development php framework: Errors" border="1" /></p>
				<p>これはフレームワークのURL生成に問題が発生しているためで、HTMLのソースを見ると CSS のパスが「/index.php/css/cake.generic.css」のように頭に余計な内容が入っています。</p>
				<pre>
&lt;link rel="stylesheet" type="text/css" href="/index.php/css/cake.generic.css" /&gt;
</pre>
				<p>この対応として、app/webroot/index.php に以下の記述を追加します。</p>
				<pre>
+  if (php_sapi_name() == 'cli-server') {
+    $_SERVER['PHP_SELF'] = '/'.basename(__FILE__);
+  }
  if (!include(CORE_PATH . 'cake' . DS . 'bootstrap.php')) {
</pre>
				<p>これで「http://localhost:8111/a」でアクセスすると CSS が効いて、いつもの表示になります。</p>
				<p><img src="https://img.skitch.com/20111204-1wfxenkadj81h115x7jffsqdxn.png" alt="CakePHP: the rapid development php framework: Errors" /></p>
				<p>他にも FormHelper が生成する URL など各所で同じ現象が発生しますが、上記修正で対応ができます。</p>
				<h3>ユニットテストもちゃんと通りました</h3>
				<p>ちなみに CakePHP1 系で作ったとあるアプリケーションの alltest を通すとビルトインサーバ上でもちゃんとテストが通りました。これで 5.4 上でも動作することが分かりました:D</p>
				<p><img src="https://img.skitch.com/20111204-nd4n7a5kbs65myc48tdwt9p4k6.png" alt="CakePHP Test Suite v 1.2.0.0" /></p>
				<h2>ビルトインサーバで手軽に試す</h2>
				<p>ビルトインサーバの利点はなんといっても「手軽さ」です。</p>
				<p>新たに環境構築が必要な場面で、いちいち Apache に VirtualHost を追加したりせずともビルトインサーバを使えば、すぐに任意のディレクトを DocumentRoot にして Web サーバを起動することができます。</p>
				<p>ビルトインサーバは CLI 版 PHP ではデフォルトで組み込まれるので、拡張等無しで多くの環境で利用できるのが良いですね。</p>
				<p>ぜひ PHP5.4 ビルトインサーバでお手軽に CakePHP を試してみて下さい。</p>
				<p>明日の <a href="http://atnd.org/events/22721" target="_blank">CakePHP Advent Calendar 2011</a> 5 日目は、<a href="https://twitter.com/kashioka" target="_blank">@kashioka</a> さんです。お楽しみにー。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2011/12/cakephp_on_php54_builtin_web_server.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHPerの悩みを解決する arry を作ってみた（PHP Advent Calendar jp 2011 Day 2）</title>
		<link>http://www.1x1.jp/blog/2011/12/php_arry.html</link>
		<comments>http://www.1x1.jp/blog/2011/12/php_arry.html#comments</comments>
		<pubDate>Fri, 02 Dec 2011 02:00:05 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3742</guid>
		<description><![CDATA[この記事の所要時間： 約 3分59秒 PHP Advent Calendar jp 2011 2日目です。 はい、PHPer王子です。 前日の @cakephper さんになんだか妙な名前を付けられました が、今年も PHP Advent Calendar を実施することになりました。管理人がなぜか 2 日目という変わったスタートとなりましたが、なんとか12/25の最後日まで駆け抜けたいと思います。参加されたみなさんよろしくお願いします！ ちなみにまだ数日空きがあるので、いっちょ書いてみよーという方の参加お待ちしてます:D PHPerにおける連想配列の悩み 王子らしくPHPerの悩みを解決したい！ということで、連想配列にまつわるお悩みを。 普段PHPを書いていて何とも悩ましいのが、array関連の関数です。PHPerなら、もう何度となく聞いたことがあるであろう「引数に統一感が無い」というやつですね。 一例をあげると、コールバック関数を受け取る array_filter, array_map, array_reduce などの関数の場合、引数として受け取るのはどれも対象の連想配列とコールバック関数の２つです。普通に考えれば、どの関数でも同じ順序で引数を受け取れば良いように思うのですが、下記のように array_filter/array_walkは第1引数が array になっているのに対して、array_map は第1引数がコールバック関数となっています。 array array_filter ( array $input [, callback $callback ] ) array array_map ( callback $callback , array $arr1 [, array $... ] [...]]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">3</span>分<span style="color:#f00">59</span>秒</span>
				</div>
				<p><a href="http://atnd.org/events/22781" target="_blank">PHP Advent Calendar jp 2011</a> 2日目です。</p>
				<p><img src="http://farm2.staticflickr.com/1133/5099250630_bd952c6a78.jpg" alt="" /></p>
				<p>はい、<a href="">PHPer王子</a>です。</p>
				<p>前日の <a href="http://d.hatena.ne.jp/cakephper/20111201/1322724754" target="_blank">@cakephper さんになんだか妙な名前を付けられました</a> が、今年も <a href="http://atnd.org/events/22781" target="_blank">PHP Advent Calendar</a> を実施することになりました。管理人がなぜか 2 日目という変わったスタートとなりましたが、なんとか12/25の最後日まで駆け抜けたいと思います。参加されたみなさんよろしくお願いします！</p>
				<p>ちなみにまだ数日空きがあるので、いっちょ書いてみよーという方の参加お待ちしてます:D</p>
				<h2>PHPerにおける連想配列の悩み</h2>
				<p>王子らしくPHPerの悩みを解決したい！ということで、連想配列にまつわるお悩みを。</p>
				<p>普段PHPを書いていて何とも悩ましいのが、array関連の関数です。PHPerなら、もう何度となく聞いたことがあるであろう「引数に統一感が無い」というやつですね。</p>
				<p>一例をあげると、コールバック関数を受け取る array_filter, array_map, array_reduce などの関数の場合、引数として受け取るのはどれも対象の連想配列とコールバック関数の２つです。普通に考えれば、どの関数でも同じ順序で引数を受け取れば良いように思うのですが、下記のように array_filter/array_walkは第1引数が array になっているのに対して、array_map は第1引数がコールバック関数となっています。</p>
				<pre>
array array_filter ( array $input [, callback $callback ] )
array array_map ( callback $callback , array $arr1 [, array $... ] )
bool array_walk ( array &#038;$array , callback $funcname [, mixed $userdata ] )
</pre>
				<p>実際のコードで書くと違和感はさらにつのります。引数が違うという点もそうですが、array_mapの無名関数の後に連想配列を指定するのがなんとも気持ち悪いですね。</p>
				<p><script src="https://gist.github.com/1416476.js?file=gistfile1.aw"></script></p>
				<h2>arryなら！</h2>
				<p>ということでもっとシンプルに書けるように <a href="https://github.com/shin1x1/arry" target="_blank">arry</a> というライブラリを作ってみました。</p>
				<p>これを使うとこんなにすっきりと書けます。</p>
				<p><script src="https://gist.github.com/1416523.js?file=gistfile1.aw"></script></p>
				<h3>メソッドチェイン</h3>
				<p>各メソッドはインスタンスを返すので、メソッドチェインもできます。</p>
				<p><script src="https://gist.github.com/1416535.js?file=gistfile1.aw"></script></p>
				<p>実行すると以下のようになります。</p>
				<pre>
200
180
160
140
120
100
80
60
40
20
</pre>
				<h3>メソッドチェインを繋げていく</h3>
				<p>上手く繋げて行くと、array を追加して、各配列について計算した結果を追加して、ソートして、出力する、ということが一気に書けます。</p>
				<p><script src="https://gist.github.com/1416574.js?file=gistfile1.aw"></script></p>
				<p>実行すると悲しき今シーズンの結果が表示されます。</p>
				<pre>
1. Dragons    75 59 0.560
2. Swallows   70 59 0.543
3. Giants     71 62 0.534
4. Tigers     68 70 0.493
5. Carp       60 76 0.441
6. Baystars   47 86 0.353
</pre>
				<h3>キーがあるかどうか</h3>
				<p>PHPでハマりがちな isset() / array_key_exists() も exists() メソッドで指定したキーが連想配列に存在するか確認できます。</p>
				<p><script src="https://gist.github.com/1416748.js?file=gistfile1.aw"></script></p>
				<h3>PHP5.4なら</h3>
				<p>5.4ならarray()の代わりに[]が使えるので、さらにすっきりとなります。</p>
				<p><script src="https://gist.github.com/1416592.js?file=gistfile1.aw"></script></p>
				<p>実はこの arry という名前は、5.4 以降では array() を使わなくだろうから、この名前にしています。今は紛らわしいですが、5.4 が当たり前になったころにはこのライブラリ以外で array() と書くことはなくなるかもしれません:D</p>
				<p><a href="https://github.com/shin1x1/arry" title="arry" target="_blank">shin1x1/arry &#8211; GitHub</a></p>
				<h2>本当はSPLで</h2>
				<p>そんな arry ですが、array系関数の代わりとして使うにはまだまだ実装が足りません。</p>
				<p>実はこれを書いた理由は SPL でこういった実装が欲しかったからなんですね。ArrayObject もありますが、実装メソッドが少なく、完全に連想配列をメソッドで操作するというわけにはいきません。</p>
				<p>arry を膨らませていっても良いのですが、PHP 標準の SPL でこういったクラスが欲しいですね。</p>
				<p>さて PHP Advent Calendar jp 2011 3日目は、AWS の貴公子 <a href="http://twitter.com/tottokug" target="_blank">@tottokug</a> さんです。どんなネタが飛び出すか楽しみですね！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2011/12/php_arry.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>あらためてPHP5.3 – 第２回関西PHP勉強会</title>
		<link>http://www.1x1.jp/blog/2011/11/event_kansai_php_2_php53.html</link>
		<comments>http://www.1x1.jp/blog/2011/11/event_kansai_php_2_php53.html#comments</comments>
		<pubDate>Wed, 30 Nov 2011 14:55:44 +0000</pubDate>
		<dc:creator>shinbara</dc:creator>
				<category><![CDATA[event]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.1x1.jp/blog/?p=3731</guid>
		<description><![CDATA[この記事の所要時間： 約 1分41秒 11/24に大阪市内で第２回関西PHP勉強会を開催しました。 平日夜の開催ながら多くの方に集まって頂き、本当にありがとうございました。 今回は「あらためて5.3、こんにちは5.4」をテーマに、PHP5.3, 5.4に関するセッションが2つ、ライトニングトークが飛び入り含めて7つとなり、終了時間ギリギリまでめいいっぱいの内容となりました。 あらためてPHP5.3 「あらためてPHP5.3」ということで、PHP5.3ならではの機能について発表してきました。 登場からもう2年半経つPHP5.3ですが、環境としては使いつつも、5.3ならではの機能を使っている人はまだ少ないように感じます。そこで5.3の代表的な機能である「namespace」「クロージャ」「LSB」を取り上げました。 とは言うものの、実は「namespace」に関する内容がほとんどになっています。実は資料を作っている段階では namespace だけで発表時間（40分）を超過する内容になってしまってました。あれこれと削ったのですが、半分以上が namespace に関することになりましたね。（PSR-0 のこととか autoload のこととかも話そうと思ったました:D） namespace は一見すると地味な機能で、名前競合などを経験して実際に困った人でないとメリットが見えづらい機能です。ただ今後普及していくであろう5.3フレームワーク（Lithium, Symfony2, ZF2, FuelPHP等々）ではフレームワークに namespace が利用されているので、フレームワークを利用する側も使い方くらいは知っておく必要があります。 初歩的な部分や実際に使ってみたハマリどころなどもご紹介していますので、これから5.3の機能を触る方は参考にしてみてください。 あらためてPHP5.3 View more presentations from Masashi Shinbara]]></description>
			<content:encoded><![CDATA[				<div style="border-top:2px dotted #ccc;border-bottom:2px dotted #ccc;padding:0.2em 0;text-align:right;font-size:small;color:#444">
					この記事の所要時間： <span style="font-weight:bold">約 <span style="color:#f00">1</span>分<span style="color:#f00">41</span>秒</span>
				</div>
				<p>11/24に大阪市内で<a href="http://atnd.org/events/21691" target="_blank">第２回関西PHP勉強会</a>を開催しました。</p>
				<p><img src="https://img.skitch.com/20110724-kqth94uq5x6bfs867x7gmp6hf9.png" alt="kphpug" /></p>
				<p>平日夜の開催ながら多くの方に集まって頂き、本当にありがとうございました。</p>
				<p>今回は「あらためて5.3、こんにちは5.4」をテーマに、PHP5.3, 5.4に関するセッションが2つ、ライトニングトークが飛び入り含めて7つとなり、終了時間ギリギリまでめいいっぱいの内容となりました。</p>
				<h2>あらためてPHP5.3</h2>
				<p>「あらためてPHP5.3」ということで、PHP5.3ならではの機能について発表してきました。</p>
				<p>登場からもう2年半経つPHP5.3ですが、環境としては使いつつも、5.3ならではの機能を使っている人はまだ少ないように感じます。そこで5.3の代表的な機能である「namespace」「クロージャ」「LSB」を取り上げました。</p>
				<p>とは言うものの、実は「namespace」に関する内容がほとんどになっています。実は資料を作っている段階では namespace だけで発表時間（40分）を超過する内容になってしまってました。あれこれと削ったのですが、半分以上が namespace に関することになりましたね。（PSR-0 のこととか autoload のこととかも話そうと思ったました:D）</p>
				<p>namespace は一見すると地味な機能で、名前競合などを経験して実際に困った人でないとメリットが見えづらい機能です。ただ今後普及していくであろう5.3フレームワーク（Lithium, Symfony2, ZF2, FuelPHP等々）ではフレームワークに namespace が利用されているので、フレームワークを利用する側も使い方くらいは知っておく必要があります。</p>
				<p>初歩的な部分や実際に使ってみたハマリどころなどもご紹介していますので、これから5.3の機能を触る方は参考にしてみてください。</p>
				<div style="width:425px" id="__ss_10315273"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/shin1x1/php53-10315273" title="あらためてPHP5.3" target="_blank">あらためてPHP5.3</a></strong><br />
				<iframe src="http://www.slideshare.net/slideshow/embed_code/10315273" 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/shin1x1" target="_blank">Masashi Shinbara</a> </div>
				</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.1x1.jp/blog/2011/11/event_kansai_php_2_php53.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

