Home > PHP

PHP Archive

WordPress.comのHTTPヘッダを見ると

この記事の所要時間: 144

PHPカンファレンスに来ています。

Automattic,Inc.のマクラケン直子さんの発表を聞きつつ、そういえばWordPress.comってnginx使ってたなと思って、Live HTTP headersでレスポンスヘッダを見てみました。

返ってきたのが以下。

HTTP/1.x 200 OK
Server: nginx
Date: Fri, 04 Sep 2009 04:41:08 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Last-Modified: Fri, 04 Sep 2009 04:40:40 +0000
Cache-Control: max-age=2, must-revalidate
Vary: Cookie, Accept-Encoding
X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.
X-Pingback: http://wordpress.com/xmlrpc.php
Link: <http://wp.me/1>; rel=shortlink
X-nananana: Batcache
Content-Encoding: gzip

ああやっぱりnginxね。と下を見ると気になるヘッダが。

X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.

雇って貰えますかね:-D

他のサイトでもこういう面白ヘッダあるのかな。

PHPカンファレンスで発表してきます

この記事の所要時間: 041

いよいよ週末に開催されるPHPカンファレンスにて発表してきます。

PHP カンファレンス 2009

今回は10周年ということで、9/4,5の2日開催なのですが、発表するのは2日目の9/5になります。

タイトルは「PHPを見える化する」です。資料はまだ絶賛作成中で、ちょい焦ってきてます。。。

発表は14:00からメイン会場(!)にて行う予定です。

しかも前はFacebookのBrian Shireさん、後ろはCakePHPの安藤さんという何ともすごい順番で、正直この並びでこの発表は大丈夫なんだろうかとドキドキしています:-D

まあ、せっかく頂いた機会ですし、栄えある10周年のPHPカンファレンスですので、はりきって発表したいと思います。

当日お会いする方々よろしくお願いします!

シンプルなTwitter検索「findTwitter」を作りました&ソース公開

この記事の所要時間: 326

AutoPagerize対応したシンプルなTwitter検索「findTwitter」を作りました。

findTwitter

Twitterのつぶやきを検索

機能はシンプルです。テキストボックスに検索したいキーワードを入力して、「検索する」ボタンをクリックするとキーワードに合致したつぶやきを表示します。

「shin1x1」で検索

find_twitter_screen

検索パターンとしては以下のような組み合わせが可能です。

  • 単語で検索。(ex. [CakePHP])
  • スペースで単語を連結してAND検索。(ex. [PHP カンファレンス])
  • 「OR」で単語を連結してOR検索。(ex. [shin1x1 OR msng])

仕組み

TwitterAPIを叩いているだけ

仕組みはごくごく単純でTwitterの検索APIを叩いてるだけです。

検索結果はAPIの挙動に依存しているので、検索漏れや古いつぶやきが検索対象にならないなど現象があります。

CakePHP

CakePHP1.2.4を利用しています。上記のようにAPIを叩いてるだけなのでDBは使っていません。

レンタルサーバで動作

ごく普通のレンタルサーバに置いているだけです。

ソースを公開

このサービスの本質はこちらです。

findTwitterのソースコードはgithubにて公開しています。

動作環境は、PHP5以上でCakePHPが動けば問題無いと思います。ライセンスはCakePHPに習ってMITライセンスにするので、ご自由にご利用下さい。

githubは分からない方にはZIPアーカイブも用意しています。下のリンクからもダウンロードして下さい。

CakePHPで動くサンプルを

CakePHPはフレームワークとしては多くの導入事例があるのですが、CakePHPを利用したオープンソースシステムが公開されている例は実はあまりありません。

最近では、私も(いちおう)参加しているPHP版Redmine「candycane」があるですが、これはRedmineという開発のプロが実務で利用しているシステムの移植ということで、これからCakePHPを使いたい人が参考するには大きいかな、という印象があります。

そこで全体は小さいものの、一つのシステムとして稼働するサンプルとしてfindTwitterを作りました。

WebサービスAPIを使ったシステムということで、手軽にサービスを作ってみたい人にはサンプルとして参考になるかと思います。

フレームワークを除いたソースは少しだけなので、特に難しいところは無いと思うのですが、いずれblogで解説を書くなり、発表するなりしたいと思います。findTwitterをベースにWebサービスを作る勉強会なんかも良いですね:-D

フレームワークだけで

こういった主旨なのでCakePHPの機能だけで作りました。

普段は自社で蓄えているプラグインやライブラリを活用しているのですが、今回は素のCakePHPだけで作っています。まあ、findTwitterは仕様も単純ですし、もともとCakeは機能が揃っているので特に困りませんでした。

また、どこでも動くようにということでfind-twitter.inはレンタルサーバ(チカッパ!)に設置しています。

レンタルサーバに設置するだけで動くCakePHPの良さを再認識しました:-D

楽しさを

Webサービスを作るのは大変なこともありますが、本当に楽しいものです。特にTwitterがある今ではユーザさんからリアルに反応を貰うことができます(もちろん非難もありますが><)。自分が作ったサービスで誰かがわくわくしているかもと思うと、ニヤニヤが止まりません:-D

findTwitterをきっかけに新たなWebサービスが生まれて、その楽しさを皆で享受できれば嬉しいです。

Twitter フォローokな人を探す「follow ok」を作りました

この記事の所要時間: 31

Twitterでフォローokな人を探すサービスを作りました。

follow-ok

誰をフォローすれば?

ある時、ふとTwitterでフォローする人を増やしたいなと思い立ちました。そこでふと湧いた疑問が2点。

1. フォローする人をどうやって探す?
まず誰をフォローしようかと。フォローする人リストはあちこちのサイトにあるので、そこからフォローするのが早いです。(ちなみにPHPな人ならこんなリストがあります。)
ただこういったリストに入っている人は有名人な分野が偏っていたりで、多様な人をフォローしたいというニーズには合いません。また有名人系はそもそもフォローしてたりするので、さらに増やすとなると他で探す必要があります。
フォローするためにユーザ一覧が欲しいな
2. この人フォローしてもok?
何とかフォローしたい人は見つけたとして、いざフォローしようとした際、フォロー/フォロワーが20人以下のユーザだと何となく気が引けませんか?
もちろんTwitterではprotectedな人以外はフォロー自由なので、特に気にする必要は無いのですが、フォローする人のフォロー/フォロワーが少ないと「身内だけで楽しんでいるのかな?」といらぬ気を遣って、何だかフォローするのをためらってしまいます。
フォローしてもokなことを表明してくれるとフォローしやすいな

follow ok

という流れで作ったのが 「follow ok」 です。

「follow ok」では、二つの機能があります。

1. ユーザを探す

フォローしたいユーザを探します。このサービスではユーザが自ら登録を行っているので、安心してフォローすることができます。

1-1. キーワードを入力して検索

follow_ok_textbox

登録ユーザは自分のキーワード(タグ)を登録してるので、キーワードを指定することにより、該当するユーザを検索することができます。

1-2. キーワード(タグ)をクリックして検索

follow_ok_user

ユーザ表示の下部にはそのユーザが登録したキーワード(タグ)が表示されています。これをクリックすると同じキーワードを登録しているユーザが表示されます。

2. 自分を登録する

自分自身もフォローokなら「follow ok」に登録しましょう!

登録はTwitterから「@follow_ok」につぶやくだけでokです。

follow_ok_twit

つぶやいて数分経つと 「follow ok」 に表示されます。

キーワード(タグ)を登録する

つぶやく時はキーワード(タグ)を指定しましょう。登録したいキーワードを[]で囲んで下さい。上の画面例なら[cakephp][iphone][大阪]の4つがキーワードとして登録されます。

@follow_ok」につぶやけば何度でもキーワードを登録することができます。キーワードは毎回上書きされるので、最後につぶやいたものが登録されます。

下のアイコンをクリックするとそのまま@follow_okにつぶやけますよ:-D

follow_ok_register

follow okからのフォローも

Twitterでリリースをつぶやいて、100人超の方に登録頂けました(ありがとうございます!)。Twitterだと反応が直ぐに貰えるので、とても嬉しいです。中には「follow okからフォローしてもらえたよ」と言って頂ける方もいらっしゃいました。

今後も何か気になることがあれば「@shin1x1」までつぶやいて下さいm(_ _)m

フォローする相手を探す方も、フォロワーを募りたい方も、活用して頂ければ嬉しいです。

よろしくお願いします!

CakePHP Cafe LiveTalkが無事に終了しました。

この記事の所要時間: 144

ジュンク堂池袋本店さんにて行われた「CakePHP Cafe LiveTalk」が無事に終了しました。

cakephp_cafe_live_talk

当日は花火大会があり、またPHPな人はガンダムBBQ、と色々とバッティングしていたのですが、暑い中お集まり頂いた参加者の皆さんには感謝感謝です。ありがとうございました。

トークセッションが始まるまでは、いつも勉強会とは勝手が違うので妙な感じがしましたが、前で話し出すと、岸田さんの絶妙な司会のおかげで、それほど緊張もせずにわりと素な感じで話すことができました。

自身の反省点としては、今回のように複数人で前で話すという機会がこれまで無かったので、話題に上手く絡んでいくのが結構難しいな、と感じました。

ようは、

話したい内容があってムズムズしてくる。

人の話を遮るのもアレだし、これが終わったら話そうかな。

あ、話題終わっちゃった。

という感じです:-D

もし動画が公開されたら、マイクを口まで持っていったもののタイミングを逸してモゴモゴしている様が多分写ってます。。。

考えてみると勉強会での発表だって一人でやらないといけないルールは無いので、複数人で発表するのも全然アリですね。これは今後試してみたいです。

一つ裏話を言うと、実はコアな人が多いだろうと思って、CakePHP2/Cake3について簡単にまとめた資料を用意していたのですが、時間も押し気味でしたので、お蔵入りとなりました。

# まあ、これは気が向けばblogにでも挙げます;-D

当日は、新幹線移動して、15:00頃からCakePHPカンファレンスの話とか喫茶店でして、トークライブして、という流れだったので、懇親会では梅酒一杯で体力が尽きていました。。。

最後に、今回のような機会を作って頂いた、ジュンク堂池袋本店さん、マイコミさん、ありがとうございました。

そして何より参加して頂いた皆さん本当にありがとうございました。

勉強会もわりとこういったゆるい雰囲気でやっていますので、お気軽にご参加下さい:-D

CakePHPのトークイベントは明日開催ですよ

この記事の所要時間: 19

さて待ちに待ったCakePHPのトークイベント「CakePHP Cafe LiveTalk」が明日(7/25)に開催されます。

「CakePHP Cafe LiveTalk」

安藤祐介×岸田健一郎×新原雅司

  • 会場:ジュンク堂書店 池袋本店(TEL:03-5956-6111) 4F喫茶にて。
  • 日時:7/25(土)19:00~
  • 入場料:1,000円(ドリンクつき)
  • 受付:1階 案内カウンターにて。電話予約承ります。

CakePHP1.2ガイドブック出版記念のイベントですが、本の話だけでなく、CakeFestの話や日頃開発している上での印象など色々なネタを仕込んでいます:-D

また先のCakeFestで発表されたCakePHP2/Cake3を少し触ってみたので、速報的にお話できればと思っています。CakePHPの今後の展望を知る上でも興味深い内容となっています。

また、書店でのトークイベントということで日頃勉強会に参加できない方も気軽に参加頂けますよ。

まだ若干、席があるようなので、お時間が取れる方は是非ご参加下さいませ!

お申込はジュンク堂池袋本店さんの受付カウンターもしくはTEL(03-5956-6111)でお願いします。

では明日「CakePHP Cafe LiveTalk」でお会いしましょう。

CakePHP core.phpの設定をbootstrap.phpに書く

この記事の所要時間: 136

CakePHPでDebug Levelなどの設定を変更する際は、core.phpを修正するのが一般的です。インストール直後にSecurity.saltを変更するのはお馴染みですね。

そんなcore.phpですが、実はこの設定はbootstrap.phpに記述してもokです。例えば以下のようにDebug Levelをbootstrap.phpに記述するとDEBUG=0として動作します。

[app/config/bootstrap.php]

Configure::write('debug', 0);

coreはそのままで、差分をbootstrapに

この方法で何が嬉しいかと言うと、デフォルトの設定をcore.phpに残したまま、変更すべきものだけをbootstrap.phpに書くということができるという点です。

変更したものがはっきり分かりますし、元の設定がどうだったかをすぐに確認することができます。

[app/config/bootstrap.php]

// デフォルトから変更する値だけ記述
Configure::write('debug', 2);
Configure::write('Session.cookie', 'sid');
Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9');

設定書くならbootstrapで

最近は、core.phpからの変更点のほか、アプリケーションで利用する定数なんかもbootstrap.phpにガシガシ書いていっているので、設定を見る、触るなら、まずここという方針が固まってきました。

bootstrap.phpは意外と使っていない人も多いようなので、活用して見て下さい。

7/25にCakePHP Cafe LiveTalkを行います。

この記事の所要時間: 118

CakePHP1.2ガイドブック刊行記念イベントとしてトークイベントを行います。

「CakePHP Cafe LiveTalk」

安藤祐介×岸田健一郎×新原雅司

  • 会場:ジュンク堂書店 池袋本店(TEL:03-5956-6111) 4F喫茶にて。
  • 日時:7/25(土)19:00~
  • 入場料:1,000円(ドリンクつき)
  • 受付:1階 案内カウンターにて。電話予約承ります。

安藤さん岸田さん、新原の3人で、CakeFestやら、CakePHP本やら、CakePHPやらについてお話する予定です。

CakeFest開催後のイベントとなるので、現地に行かれる安藤さんのお話はフレッシュでとても楽しみです。もちろん岸田さんも私も負けじとCakePHP話を繰り広げるつもりですよ。

普段の勉強会とはまた違った雰囲気のイベントとなるので、日頃聞けないような話が飛び出すかも:-D

参加される方はジュンク堂池袋本店1F案内カウンターにてお申し込み下さい。また遠方の方などお申し込みに行けない方はTELにて予約できるそうですので、ご確認下さいませ。

[2009/06/16] まだ受け付け開始していないようです(id:cakephperさん情報ありがとうございました!)。受付開始後にご案内しますので、お待ち下さい。

[2009/06/19] 受け付けを開始しました。ふるってご参加下さい:-D

イベント後は有志による懇親会なども企画しているので、夏の夜にみなさんで盛り上がりましょう!

CakePHP1.2ガイドブックが出ます

この記事の所要時間: 10

一部でお待たせしていましたCakePHPガイドブックの1.2版が今月下旬に発刊されます。

表紙が青になっているのがポイントですね:-D

この本では、単に1.2対応としただけでなく、章によっては全面書き直しや新機能の加筆といった作業を行ったので、ガイドブックからは50P増になりました。

1.2では多くの機能が盛り込まれており、この1冊で全てを網羅することは難しいのですが、ガイドブックにあった「導入」「実践」「応用」の流れはそのままに、必要な情報を取捨選択して1冊にまとめました。

CakePHP初心者の方から中級・上級の方まで参考になる本となりましたので、是非手に取って頂ければ嬉しいです。

前作のCakePHPガイドブックは私自身初めての書籍ということで思い入れの強い本でした。その続編である本書を書く際はこの1年半を振り返る意味でも有意義なものでした。

一緒に執筆した堂園さん、安藤さんには、、、、、、、、

と、言った話をするトークイベントを7/25に池袋ジュンク堂さんにて行います。こちらも楽しいイベントになりそうなので、ご参加下さいませ-。

イベントについてはこちらで。

CakePHP 目で見るフックメソッド

この記事の所要時間: 146

第2回CakePHP関西勉強会でやったデモをこちらでも。

CakePHPには色々なフックメソッドがあるのですが、それらがどのタイミングで呼ばれるかを一覧できるようにデモを行いました。懇親会やアンケートでも良かったよ、と意見を頂いたので、簡単に画面のキャプチャを並べます。

1. Controllerのフックメソッド

Controllerのフックメソッドを並べています。index()はアクションメソッドなので、ここで表示されているフックメソッドは3つです。

ソース

<?php
class DemoController extends AppController {
  public $uses = array();

  public function index() {
  }
}
?>

フックメソッドの並び

2. Componentのフックメソッド

Controllerの$componentsを設定して、ControllerとComponentのフックメソッドを表示しています。赤色になっているのがComponentです。ControllerとComponentのフックメソッドが絡み合って実行されているのが分かりますね。

ソース

<?php
class DemoController extends AppController {
  public $uses = array();
  public $components = array('Demo'); //<---追加

  public function index() {
  }
}
?>

フックメソッドの並び

2-1. Componentを複数定義

Controllerの$componentsでComponentを複数設定すると各々のフックメソッドが順に実行されます。また実行される順は$componentsで記述した順序となります。

ソース

<?php
class DemoController extends AppController {
  public $uses = array();
  public $components = array('Hoge','Demo'); //<---追加

  public function index() {
  }
}
?>

フックメソッドの並び

3. Helperのフックメソッド

さらにControllerの$helpersを設定して、ControllerとComponentとHelperのフックメソッドを表示しています。Helperのフックメソッドは青色です。Helperはビューで利用されるので、後半に集中しています。

ソース

<?php
class DemoController extends AppController {
  public $uses = array();
  public $components = array('Demo');
  public $helpers = array('Demo'); //<---追加

  public function index() {
  }
}
?>

フックメソッドの並び

まとめ

個々のメソッドは知っていても、あらめたてこうして俯瞰して見るとなかなか面白いです。全体の流れが見通せるので、どこに何を書くべきか迷ったときは参考にしてみて下さい。

ホーム > PHP

検索
フィード
メタ情報

Return to page top