phpでもモダンでスケーラブルな開発を...
TRANSCRIPT
LIVESENSE IN
C.
PHPでも モダンで スケーラブルな 開発を
2013.11.09 DevLOVE甲子園
LIVESENSE IN
C.
PHPでも モダンで スケーラブルな 開発を
PHP全然下火だねぶっちゃけRailsでしょ~だってレガシーコードだよね?
なんか人生無駄にしてね?
圧倒的
/** * self_introduction.js * * それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。 * たとえプロジェクトがきわめて過酷な状況であろうと、 * かつてなく手ごわい期日であろうと、成果をあげる力量を備え、 * しかも品格と平静さを失うことがないのだ。 * * Jonathan Rasumusson『アジャイルサムライ』より */ var profile = { "name": "島川悠太", ! "birthday": "1982年5月7日", ! "hometown": "千葉県市川市", ! "location": "千葉県市川市", ! "twitter": "@banana_umai", ! "motto": "Keep It Simple, Stupid!", ! "message": “hello world", ! "works": [ { "duration": "2005年から2008年", "company": "独立行政法人食品総合研究所", "role": "助手" }, { "duration": "2008年から2013年", "company": "株式会社ぐるなび", "role": "システム開発" } ], "favorite_musicians": [ "渋さ知らズオーケストラ", "七尾旅人", "Zazen Boys", "Giovanni Mirabassi" ], ! "favorite_beer_brewery": [ "ベアードブルーイング", "ヤッホーブルーイング", "木内酒造" ], ! "hobby": null }; !
var me = { “name”: “島川悠太”,
“twitter”: “@banana_umai”,
“belogns_to”: “株式会社リブセンス”
!
}
現場の話
Livesense Inc.
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
メンバー数の増加と スケーラビリティ
LIVESENSE IN
C.
PHPでも モダンで スケーラブルな 開発を
スケーラブルって?
スケーラビリティ
リソースの量に比例して全体のスループットが向上するシステムはスケーラブルな(scalable)システムまたはスケーラビリティのあるシステムと呼ばれる。
メンバーを投入することで生じるコミュニケーションコストを上回って、どれだけ開発ベロシティを向上させることが出来るだろうか?
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の導入
チーム
小さいバッチ 小さいチーム
プランナーと プログラマがタッグになって 同じビジネス目標にコミット
氏曰く
スクラムからリーンへ
最後に
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句のサポート
LIVESENSE IN
C.
PHPでも モダンで スケーラブルな 開発を
LIVESENSE IN
C.
PHPエンジニア 絶賛募集中
LIVESENSE IN
C.
Rubyエンジニアも 絶賛募集中
ご静聴 ありがとうございました