COOKPADセミナーに行ってきた
タイトル「524万人が利用する食のインフラ「クックパッド」のものづくり」
クックパッド CTO 橋本健太氏
KBMJの関連会社WebCareer主催のCOOKPADセミナーに行ってきた。
集まった参加者は150人以上、単一セミナーとしては大盛況。
クックパッドとは
- ミッション「毎日の料理を楽しみにすることで心からの笑顔を増やす」
- オープン:1998年
- 月間ユーザ数524万人 (Railsサイト 世界第6位)
- 20〜30代の女性中心
- 30代女性の4人に一人が使っている
- 月間2.8億PV(レシピサイト 世界一)
- 16=18時がピーク
- 1年間で1.6倍で会員数増加
524万人をささえるサーバ・ネットワーク
ソフトウェア構成
- Web:Apache2.2.3
- Ap:Rails2.0(もうすぐ2.1にする予定) + mongrel_cluster + mod_proxy_balancer
- DB:MySQL(tritonn)
- capistranoやgodを運用で使用。
パフォーマンス改善
キャッシュ、クエリチューニング、DB分割の三本柱
クエリチューニング
FiverRunsTuneUpを使用。
DB分割
初期構成(仮想サーバ上)
この構成では性能がでない。ヤバイ!
app 2G app 2G slaveDB 8G 検索DB 4G
↓
検索とslaveを統合することに
OSのキャッシュもあり、I/Oが大幅に改善
app 2G app 2G 検索+slaveDB 12G
Railsでの開発ノウハウ
開発環境
- 全員Mac
- Emacs+rails.el
- Subversion,Trac
- Shinjikoでコードレビュー
DBレプリケーション
- マスタとスレーブの切り替えにはact_as_readonlyableを使用
専用URL
- 一部のユーザは自分専用のURLを持つ(ex:http://cookpad.com/ken)
- routes.rbで調整→当てはまらない場合は専用コントローラに振り分ける
全ページのプレビュー機能
「○月○日○時〜○時の状態を見たい!」(TV連動)
→全てのページで任意の日付を指定してプレビュー
→Time.nowを置き換えて実現(※アクセス制限で一般ユーザには見られないようにしている)
COOKPADのものづくり
- つくるものを決める
- 計画
- 設計
- 開発
- 質を高める
つくるものを決める
○Bestなことに集中する
- Betterはやらない
- Bestなものを見つけるために→3つの輪○
- やりたい「情熱を持って取り組めること」
- できる「世界で一番になれること」
- やるべき「儲かること」
○ユーザの欲求にもdと付いたゴール設定
EOGS(EmotionOrientedGoalSetting)
- そのサービスに関わるキャストをたて
- キャストごとの疑いようのない欲求を洗い出し
- 全ての欲求を満たす解決方法を模索
- 個々の解決方法を満たす方法を模索
計画する
○スケジュール3分割の法則
「設計、開発、質を高める」全てに同じだけの時間をかける
→これを満たすために
- 1週間の開発で出来るように設計
- 不必要な機能は削り、Bestに集中する
- 設計にも1週間をかける
- 質を高める作業にも同様
○クックパッドものづくり3原則
(1)無言実行
- 公開前にサービスの説明をしない→リニューアルの日程を伝えなかった
- 言葉ではつたわらない→変なイメージや不安感を持たれる
- 公開前告知のメリットは無い
(2)無言語化
- 機能を言葉で説明しない→一瞬で理解できるインターフェースじゃないと使われない。最大2秒
- ヘルプやFAQを読ませるのはユーザの負担→そもそも、読まれない
(3)サービスには必ず値段をつける
- どんなサービスでもいくらの価値があるか値段をつけて考える
- 「無料だから大丈夫」というサービスは負ける→無料だというだけでは使われない→お金を払ってでも使いたいサービスが無料だと使われる
- Web以外のサービスやモノには必ず値段がついている
- クックパッドは当初は有料サイト
設計する
○サイトの設計の順番
- 広域から詳細へ
- 詳細から設計すると機能にとらわれてしまう
○設計に最低限必要なモノ
- 遷移:どんなに良くできたページでも遷移がおかしいとユーザが目的の行動
- ページ詳細:A4横、余白を左右に残す
- サイトマップ:※規模が大きい場合
エンジニア紹介
- 根岸氏→広告関連のアドエンジニア:細胞の可視化プログラミングを
- 須藤氏→ユーザ向けサービス担当→元プログラマ
- 高田氏→インフラ担当→AwardOnRailsでhightime.jpで受賞。元Javaプログラマ
- 山田氏→インフラ担当→コミュニティに多く参加。日本Linuxユーザ幹事...
- 森田氏→今週入社→キャッシュ周り実装
- 中村氏→スーパーインターン(現在修士)
COOKPADで働きたいエンジニアは是非来てください!
質疑応答
QAの両方を覚えているモノだけ。
Q.見てもらえない(PVがほとんど無い)ページってどのくらいあるの?
検索で偏らないようにはしている。結構まんべんなく見られてるよ!