クックパッドの裏側お見せしますを見てきた
秋葉原UDXで開催されていたWebディベロッパの祭典@東京に行ってきました。
毎回、会場がどんなところか楽しみなのですが、今回のセミナーがあったB会場は通路に無理やり作りました
みたいな場所にあったので、びっくり。。。。
とりあえず、聞いてきた話をメモしておきます。
今回の話とは違いますが、カカクコム&クックパッド共催・勉強会の際の資料がslideshareで公開されていますでの、
見ると雰囲気が伝わるかもしれません。
クックパッドとは
- 「毎日の料理を楽しみにすることで心からの笑顔を増やす」を目標
- 1998年にオープン
- 2008/7にRuby on Railsでリニューアル
- おいしいものができたとき「レシピをのせる」
- 料理レシピを作って整理
- みんなに公開
- おいしいものを食べたいとき「レシピを探す」
- 47万品のレシピから今日食べたいものを探す
- 作った写真をレシピの作者さんに報告することも
サイト規模
547万人を支えるサーバ/ネットワーク
- 3層構造(ロードバランサー、アプリケーション、データベース)
- ロードバランサー 8台 (以下サーバ数は仮想サーバの台数)
- Apache 2.2.3 + mod_proxy_balancer2.2.3
- アプリケーションサーバ 52台
- Ruby on Rails 2.0 mongrel 1.1.5 / mongrel_cluster 1.0.5
- データベース等 18台
- 使用しているツール等
- デプロイ: capistrano
- mongrelの再起動: god
- メモリの使用量が増えてきたmongrelを自動適に再起動
- 監視: Nagios
- モニタリング: munin
- パフォーマンス: FiveRuns TuneUp
- 遅いクエリや各所に掛かった時間等を表示してくれる。超優秀らしい
パフォーマンスについて
- キャッシュ
- クエリチューニング
- FiveRuns TuneUpを活用
- MySQLのスロークエリログ
- DBとメモリ
- アクセス数よりもデータ量がパフォーマンスを低下させる
- OSのキャッシュにデータファイルが乗り切るかが重要
- リニューアル直後にOSのキャッシュに乗り切らないデータ量があり、パフォーマンスが出なかった
Railsでの開発ノウハウ
- プログラマは全員Macを使用
- Emacs + rails.elで開発
- バージョン管理はSubversionと trac
- Shinjikoでコードレビュー
- DBのmaster、slaveの切り替えにacts_as_readonlyableを使用
- レシピ等の全文検索にTritonnを使用
- MySQLを拡張しているので、テーブルをジョインできる
- 2インデックス(1つのテーブルに対して、2つのインデックスを使用可)
- インデックスを貼ったテーブルのファイルをそのままコピーできる(作成時間が減少+更新ロック対策?)
- 一部のユーザは自分専用のURLを持っている
- routes.rbですべてのコントローラ名を検索し一致しない場合に専用のコントローラに渡している(最初の1回だけ実行される)
- 全ページプレビュー機能
- すべてのページで、任意の日時を指定してプレビューできる
- Time.nowを上書きで実装
- アクセス制限あり
クックパッドのものづくり
- 作るものを決める
- Bestなことに集中する
- Betterなこと、やった方がいいことはやらない
- やりたい(情熱を持って取り組める)、できる(世界で一番になれる)、やべるき(儲かること)、この3つを満たすことのみをやる
- ユーザの欲求に基づいたゴール設計
- EOGS(Emotion Oriented Goal Setting)
- そのサービスに関わるキャストを立てる
- キャスト毎の疑いようのない欲求を理解する
- 疑いようのない欲求、何をすれば手に入るか、How to do?、成功のイメージ、指針
- EOGS(Emotion Oriented Goal Setting)
- 計画する
- 設計、開発、質を高めるの3つ工程に分け、それぞれに同じ時間を掛ける
- 3週間後にサービスインする場合は、1週間で開発が終わるような設計にする(不必要なものは削り、Bestに)
- 設計、開発、質を高めるの3つ工程に分け、それぞれに同じ時間を掛ける
- クックパッドもの作り3原則
- 設計する
- 開発する
- 質を高める
- ユーザテスト
- バグの発見よりもユーザに狙った価値を提供できているか
- ユーザにゴールを伝えて行動してもらう
- 質問などには答えない、質問が出るような遷移、インターフェースは失敗
- 顔マーケティング
- ウリを伝える「顔」
- ライバルに勝てる「ウリ」
- ウリが実感できる「効き」
- ユーザテスト
感想とか
クックパッドのもの作りの姿勢は非常に良いですね。学ぶべきところが沢山あります。
アジャイル云々言い出すと、エンジニアの自己満足に結びつくケースもあったりするのですが、
きっちりとユーザに対して正面を向いて、ユーザにとっての「価値」を追求している。見事です。
このような技術的な話ではなく、サービスを作る上での心構えや姿勢などは、エンジニアの方だけではなく
企画職の方にも聞いて頂きたい内容だと思います。(特に私の会社では!!)
今回のセミナーでは、これ以外にもいくつか聞いてきたのですがこれを書いていたら長くなったので、割愛いたします。。。
気力があれば、書くかもしれません。
その他
今回から対勉強会用汎用決戦兵器としてpomeraを導入しました。
普通にノートにメモを取るより早くていいですね。単4電池2本で20時間持つので、バッテリーの心配も少ない。
今回のB会場では、テーブルが無かったのですが、それでも打ちにくいとはあんまり思いませんでした。
キーが打ちやすい云々は人の好みによるところが大きいのですが、雑食な私には無問題。慣れの問題です。
会場の照明が落とされたときには、バックライトがないのでオワタ\(^o^)/と思いましたが、
後ろからちょっとだけ漏れている照明の明かりをうまく拾ってなんとか凌ぎました。
普通にノートPCでメモ取っている人はそこそこ居ましたが、pomeraを使っている人は見かけませんでした。
一部で話題にはなったけど、まだまだ普及しているとは言えないということでしょうか。