SlideShare a Scribd company logo
PHPでも
モダンで
スケーラブルな
開発を

E
IV
L

SE
EN

C.
IN

S

2013.11.09
DevLOVE甲子園
PHPでも
モダンで
スケーラブルな
開発を

E
IV
L

S

SE
EN

C.
IN
PHP全然下火だね
ぶっちゃけRailsでしょ∼

だってレガシーコードだよね?

なんか人生無駄にしてね?
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
圧倒的
var me = {

/**
* self_introduction.js
*
* それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。
* たとえプロジェクトがきわめて過酷な状況であろうと、
* かつてなく手ごわい期日であろうと、成果をあげる力量を備え、
* しかも品格と平静さを失うことがないのだ。
*
*
Jonathan Rasumusson『アジャイルサムライ』より
*/
var profile = {
"name": "島川悠太",

!
!
!
!
!
!
!

"birthday": "1982年5月7日",
"hometown": "千葉県市川市",
"location": "千葉県市川市",

name : 島川悠太 ,

"twitter": "@banana_umai",
"motto": "Keep It Simple, Stupid!",
"message": hello world",

twitter : @banana_umai ,
belogns_to : 株式会社リブセンス
!

}

"works": [
{
"duration": "2005年から2008年",
"company": "独立行政法人食品総合研究所",
"role": "助手"
},
{
"duration": "2008年から2013年",
"company": "株式会社ぐるなび",
"role": "システム開発"
}
],
"favorite_musicians": [
"渋さ知らズオーケストラ",
"七尾旅人",
"Zazen Boys",
"Giovanni Mirabassi"
],

!

"favorite_beer_brewery": [
"ベアードブルーイング",
"ヤッホーブルーイング",
"木内酒造"
],

!

"hobby": null
};

!
現場の話
Livesense Inc.
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
Livesense Inc.
企業が人々を選ぶ時代を
人々が企業を選ぶ時代に
業界最大、クチコミ約225万件
業界最大のクチコミ数で業界独走へ
A社

ユーザーが多いサイトにクチコミが集まり、
クチコミが多いサイトにユーザーが集まる。
業界最大のクチコミ数で業界最大のユーザー数を目指す。
Environment
Linux, Apache
MySQL, PHP
mroonga,
memcached
Symfony1.3
(MVC Framework)

Lime
(Testing Framework)
Process
Planner * 3
Programmer * 3
Frontend Engineer * 1
Designer * 1
Iteration Meeting
Daily Standup
Weekly Retrospective
Pivotal Tracker
でバックログ管理
Confluence
でナレッジ/ドキュメント共有
Stashで
コードレビュー
Jenkinsで
常時ビルド
デプロイツール
ジョニー・デップロイ
Issues
メンバー数の増加と
スケーラビリティ
PHPでも
モダンで
スケーラブルな
開発を

E
IV
L

S

SE
EN

C.
IN
スケーラブルって?
スケーラビリティ

リソースの量に比例して全体のスループッ
トが向上するシステムはスケーラブルな
(scalable)システムまたはスケーラ
ビリティのあるシステムと呼ばれる。
メンバーを投入することで生
じるコミュニケーションコス
トを上回って、どれだけ開発
ベロシティを向上させること
が出来るだろうか?
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
KAIZEN
技術的負債の棚卸と
イテレーションサイクルへの組込み
1. スローテスト
2. ナレッジ共有
3. チーム
スローテストへの対応
CIサーバのハードウェアを高性能なものに変更する
CIサーバを複数台で構成する
CIサーバのディスクをSSDに変更する

テストで利用するデータベースをインメモリDBにする
テストスイートを分割する

データベースを利用する箇所をモックに変える
外部システムとの連携テストの箇所をモックに変える
テストで利用するデータベースを最小データに保つ
SeleniumやWatir等のブラウザを通したテストだらけにしない
テストの独立性を高める。他のテストに依存させない
テストを同一マシン上でも並列で動作するようにする
テストケースのsetUpメソッドを効率化する

http://www.ryuzee.com/contents/blog/4520
DI可能な設計
Mockフレームワーク利用
Symfony1.xの壁
ナレッジ共有
ドキュメントの改善
仕様書としてのテスト
Limeの壁
ちょっとした
工夫
Behatによる
BDDの導入
チーム
小さいバッチ
小さいチーム
プランナーと
プログラマがタッグになって
同じビジネス目標にコミット
氏曰く
スクラムからリーンへ
最後に
Facebook
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
http://news.mynavi.jp/news/2013/07/09/206/
RubyからPHPへ -エンジニアのための思考移行ガイド- by kuromatu
• PHP5.3.x
◦ 無名関数
◦ クロージャ
◦ 名前空間をサポート
• PHP5.4.x
◦ traitをサポート
◦ 無名関数で$thisが使えるように
◦ arrayリテラル
▪ ['a', 'b', 'c'] === array('a', 'b', 'c')
◦ インスタンス生成文から直接プロパティアクセス
▪ (new Some())->hoge();
◦ newキーワードでメソッド書けるようになったを
• PHP5.5.x
◦ generator
◦ finally句のサポート
PHPでも
モダンで
スケーラブルな
開発を

E
IV
L

S

SE
EN

C.
IN
PHPエンジニア
絶賛募集中
E
IV
L

S

SE
EN

C.
IN
Rubyエンジニアも
絶賛募集中
E
IV
L

S

SE
EN

C.
IN
ご静聴
ありがとうございました

More Related Content

PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料