Symfony な人たちが「A Year With Symfony – Writing healthy, reusable code」という本を話題にしていたので、
Facebook 上で「楽しそうな本だ」と申し上げたところ、
@ganchiku が、「え、買ったよ」的な反応をしてくれました
せっかくなので買ってみた。(目次を見ずに)

以下、ふんわりこんな感じですよというお話。

I. The journey from request to response
– リクエストからレスポンスへの冒険

Httpリクエストが送られてから、レスポンスを返すまで、どのような流れになっているかを
解説している章。
HttpKernalInterface についてと、どのようにして Controller につないだり
例外をハンドリングするかを知ることができる。

II. Patterns of dependency injection
– Dependency Injection パターン

Service、Parameter の定義の仕方について解説している章

III. Project structure
– プロジェクトの構成

プロジェクトを形作る、それぞれの要素について説明する章
Controller, Form, Domain定義、Event などなど。

IV. Configuration conventions
– 設定のルール

設定ファイルと、メタデータのマッピングについてなど。

V. Security
– セキュリティ

Symfony のセキュリティについてなど。
Session の設定、コントローラーのACL、入力バリデーション、出力エスケーピング

VI. Being a Symfony developer
– Symfony開発者になる

「Symfony 開発者」が心がけることなど。
再利用可能なコードはどうあるべきか。

こんにちは

本日は、PHPMatsuri2013 で作った compsoer-proxy.jp
について、説明したいと思います。

http://composer-proxy.jp

解説Slide

Github
https://github.com/kawahara/composer-proxy

composer-proxy.jp は、リクエストされたパッケージ情報 (*.json) を
キャッシュしていく、プロキシサーバです。
見ての通り、アプリは大変シンプルなものになります。

サーバの中では、1時間に1回、利用頻度の高そうなもの
(Symfony Standard, Silex, Behat 周り) を、定期的にキャッシュするようにしています。
したがって、上記のプロジェクトに関しては、そこそこ快適にファイルの取得が
できる。はずです。

とは言え、まだ課題はあります。遅い原因のもう一つが、パッケージそのものの取得です。
satis では、パッケージを
キャッシュする機能があるため更に高速に動きます。(Github から zip ファイルを先に取得しローカルに配置)

そこで、この機能を composer-proxy にも実装する予定でおります。
さくらのクラウドのストレージをいっぱい使いそうな機能ですが、なんとかなるはずw
問題は、パッケージ情報ファイルのハッシュ値が変わってしまうため、そこを変換して
なんとかする機能が必要そうです。

また、ダウンロード数の通知や、検索機能などは実装しておりません。
めんどくさかったからです。

個人的には、ダウンロード通知なんかは、別に多少遅れてもいいので、
React で Queue System をつくって対処するつもりです。

そして、こちらの作品は、皆様のご支持をいただきまして、PHPMatsuri2013の
LT大会で3位に入賞出来ました。ありがとうございます!!
あとで「景品のネオジオXで遊ぶ」という記事を書く予定です!

Posted in PHP.

こんにちは。PHPMatsuri2013 in Sapporo を忘れないうちに、振り返ってみます。

1. ゲスト講演 Mitchell Hashimoto さんの “Vagrant – Living in the Future”

Vagrant の紹介でした。Vagrant については、日本でも急速に広がりつつ有り、
弊社でも「つかっているよ」 なんていう噂を所々で聞きます。
そんな、Vagrant は、現在 EC2 や Azure でも up コマンド一つで
VMを立てることができるようだ。これは、まだまだ修行不足で知らなかった。

2. ゲスト公演 Graham Weldon さんの “High availability PHP and building scalable PHP systems”

前半は、HA について。後半は、楽天社内の PaaS システム (もちろん、特にPHP部分について)
についてでした。弊社の話なので、社内の利用ユーザとして、復習がてらに聞いた感じでしたw
Nginx + PHP-FPM 構成そして、OpCache の利用などなど。

何人かが、Clustrix ってなんだっていうのを質問していたので、詳しく補足すると、
Clustrix は、スケールすることや、高速なことをウリにした、データベース製品で、MySQL のインターフェイスと互換性があります。
互換性があるというのは、お持ちの MySQL Driver さえあれば大体は同じように動いてくれるものです。仕組みはこんなん。

3. スポンサーセッションで気になったことメモ

  • CodeIQ ではトリッキーなコードより、読みやすく業務に使えるようなコードのほうが採用されるそうだ。そりゃそだーw でも、PHPMatsuri の問題ではお遊びでヤバイコードを書く人もちらほら
  • さくらのクラウドのAPIが便利そうだ。APIを叩きまくってもサーバが作られているっぽく動く(実際には作られていない) Sandbox モードが欲しいなぁと思った。

4. 闇

やばかった。とても、やばかった。

5. 大LT大会

毎年恒例となっている、大LT大会です。今年は53の発表が、それぞれ3分の持ち時間で
行われました。

連続王者となっている、PHPMatsuri強豪 Fusic を打ち破る物は現れるのか。
(開発部、一同やってくるなんかすごい福岡のすごい会社です。すごい。)

どれも素晴らしかったのですが、特に気になったもの (発表順)

  • Sacloud さわってみたお – Vagrant Sacloud を作ってみているよ!というお話。今回、さくらのクラウドで作品を作ったので、ぜひとも欲しい一品。
  • プログラミング言語バージョンチェッカー – これパクって php-nabe に突っ込みたい。コードどこ? 【追記】コメントでいただきました!
  • LT大会システムの中身のお話 – このLT大会システムは素晴らしいと思った。来年に向けてもっと改善されたり、他のLT大会でも使えるオープンなシステムだといいと思った。
    例えば、投票してなかったら、通知しまくったり、現在発表中・前回発表者の投票画面が WebSocket とかつかって自動的に変わって行ったり。
    (ソースコード公開するから、お前がやれよ!とか言われそうだ…)
    あと、発表の休憩時間の間に、ひとページあたりの数とかが変わったりとか、お疲れ様でしたとしか言い様がない。お疲れ様でした。【追記】すでソースコードは公開されているようです。https://twitter.com/cakephper/status/357157049353773057
  • この発表の99%は皆さまの優しさでできています。 – PHPmatsuri に新しい歴史が刻まれた瞬間だったと思う。僕はすごく感動した。感動したよ。そして優勝。そして Fusic。。またお前らか。
  • DebugKitiTunesPanelPlugin – 一言で言えば謎の技術。詳細をwktkして待つ。
  • Phagrant – PHP愛が素晴らしいとおもった。これぞ PHPmatsuri

6. 私の発表

あとで一個ブログ書く。待たれよ。

7. まとめ

私は結果として、3位に入賞しました!!
PHPMatsuri皆勤賞で、はじめて上位入賞ということで、嬉しく思います。

スタッフのレベルも上がっているためか、参加者が訓練されてきているためか、
発表会のレベルや、うまく流すのがすごくうまくなっている気がする。
とにかく、全般を通してスタッフの皆様に感謝です。

「お面」や「浴衣」も登場して「祭」っぽくなってきたので、次回はいっその事
出店と称して各スポンサーが遊びの屋台 (射的とか、型抜きとか = 当たるとサービスn円分とか)
を出してみたり、数々の闇プロジェクトの魂を沈めるための盆踊りなどをやってみるのもいいかもしれない。
(夜は太鼓の達人で遊ぶとか。)

Posted in PHP.