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

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

Embed Size (px)

Citation preview

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

LIVESENSE IN

C.

PHPでも モダンで スケーラブルな 開発を

2013.11.09 DevLOVE甲子園

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

LIVESENSE IN

C.

PHPでも モダンで スケーラブルな 開発を

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

PHP全然下火だねぶっちゃけRailsでしょ~だってレガシーコードだよね?

なんか人生無駄にしてね?

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

圧倒的

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

/** * 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”: “株式会社リブセンス”

!

}

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

現場の話

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

Livesense Inc.

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

Livesense Inc.

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

企業が人々を選ぶ時代を 人々が企業を選ぶ時代に

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

業界最大、クチコミ約225万件

A社

業界最大のクチコミ数で業界独走へ

ユーザーが多いサイトにクチコミが集まり、 クチコミが多いサイトにユーザーが集まる。

業界最大のクチコミ数で業界最大のユーザー数を目指す。

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

Environment

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

Linux, Apache MySQL, PHP

mroonga, memcached

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

Symfony1.3 (MVC Framework) Lime (Testing Framework)

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

Process

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

Planner * 3 Programmer * 3 Frontend Engineer * 1 Designer * 1

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

Iteration Meeting Daily Standup Weekly Retrospective

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

Pivotal Tracker でバックログ管理

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

Confluence でナレッジ/ドキュメント共有

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

Stashで コードレビュー

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

Jenkinsで 常時ビルド

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

デプロイツール ジョニー・デップロイ

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

Issues

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

メンバー数の増加と スケーラビリティ

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

LIVESENSE IN

C.

PHPでも モダンで スケーラブルな 開発を

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

スケーラブルって?

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

スケーラビリティ

リソースの量に比例して全体のスループットが向上するシステムはスケーラブルな(scalable)システムまたはスケーラビリティのあるシステムと呼ばれる。

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

メンバーを投入することで生じるコミュニケーションコストを上回って、どれだけ開発ベロシティを向上させることが出来るだろうか?

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

KAIZEN

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

技術的負債の棚卸と イテレーションサイクルへの組込み

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

1. スローテスト 2. ナレッジ共有 3. チーム

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

スローテストへの対応

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

CIサーバのハードウェアを高性能なものに変更する CIサーバを複数台で構成する CIサーバのディスクをSSDに変更する

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

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

http://www.ryuzee.com/contents/blog/4520

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

DI可能な設計 Mockフレームワーク利用

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

Symfony1.xの壁

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

ナレッジ共有

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

ドキュメントの改善

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

仕様書としてのテスト

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

Limeの壁

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

ちょっとした 工夫

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

Behatによる BDDの導入

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

チーム

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

小さいバッチ 小さいチーム

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

プランナーと プログラマがタッグになって 同じビジネス目標にコミット

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

氏曰く

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

スクラムからリーンへ

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

最後に

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

Facebook

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

http://news.mynavi.jp/news/2013/07/09/206/

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

RubyからPHPへ -エンジニアのための思考移行ガイド- by kuromatu

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

• 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句のサポート

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

LIVESENSE IN

C.

PHPでも モダンで スケーラブルな 開発を

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

LIVESENSE IN

C.

PHPエンジニア 絶賛募集中

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

LIVESENSE IN

C.

Rubyエンジニアも 絶賛募集中

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

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