Ruby on Rails セミナー(クックパッド)へ行ってきたメモ
what
Ruby on Rails セミナー(クックパッド)へ行ってきた。スライドのタイトルは、【524万人が利用する食のインフラ「クックパッド」のものづくり】
そこでのメモ。
※スライドの移動が少し早くてメモが追いつかなかった部分があります。
クックパッド概要
サーバネットワーク
パフォーマンス
キャッシュ
クエリチューニング
スロークエリログ
デバックツール
- FiveRuns TuneUp
DB分割
- アクセス数よりもデータ量がパフォーマンスを低下させる
DBレプリケーション
- acts_as_readonlyable
- データ更新後のセレクトはマスタから行う
専用URL
- 一部のユーザーは自分専用のURLを持ってる(http://kookpad.com/kem)
- routes.rb
- 全てのコントローラ名を検索
- 一致しない倍に専用コントローラに渡す
- routes.rb
全ページプレビュー機能
- すべてのページで、任意の日付を指定して、プレビューできる。
- Time.now を上書き
「クックパッドのものづくり」
1. つくるものを決める
重要なことは2つ。
- Bestなことをみつける3つの輪
- ユーザの欲求に基づいたゴール設定
Bestなことに集中する。Betterなこと、やったほうがよいことはやらない。
Bestなことをみつける3つの輪
- やりたい(例:情熱を持って取り組める?)
- できる(例:世界で一番になれる。得意か?)
- やるべき(例:儲かること)
3つをすべて実現することをやる。
ユーザの欲求に基づいたゴール設定
- eogs(emotion oriented goal setting)
- そのサービスにかかわるキャストを立てる
- キャスト毎の疑いようのない欲求を理解する
- シートがクックパッド内にある
- 欲求はかなり研究してやっている。
- 欲求
- なにをやれば
- How to do
- 成功イメージ
2. 計画する
- スケジュールの3分割の法則
- 設計
- 開発
- 質を高める
例:3週間
設計、開発、質を高める(それぞれ1週間j:同じくらい重要)
1週間で開発できるように設計する
不必要なものは削り、Bestに集中する。
- クックパッドものづくり3分割
- 無
限言実行- 例:公開前に、サービスやリニューアル日について説明しない(メリットがない)
- サービスは言葉で説明できない(ユーザがしなくてよいような不安感がでる場合がある)
- 無
-
- 無言語化
- 機能を言葉で説明しない。
- 一瞬で理解できるインターフェースじゃないと、使われない。
- 最大2秒。2秒で理解できなかったらユーザは使わない。
- 言葉で説明するのも無理。
- ヘルプやFAQを見せるのはユーザに負担
- そもそも読まれない
- 無言語化
-
- サービスには値段をつける
- どんなサービスでもいくらかの価値があるか値段をつけて考える
- 「無料だから大丈夫」という考えでは負ける
- これは3000円だしても使うなどをちゃんと考える。
- 無料だという理由では使わない
- お金を払ってでも使いたいサービスが無料だと使われる
- ウェブ以外のサービスやものは価値に対して値段がついている。
- クックパッドは当初有料サイト(月500円)
- サービスには値段をつける
3. 設計する(2つ)
「包括的なドキュメントよりも動くソフトウエアを重視する」
これは、ドキュメントがないほうがいいという概念とはまったっく違う
- 設計に最低限必要なもの(3つ)
- 繊維(ページ繊維がおかしいとユーザがたどり着けない)
- ページ詳細(紙。最低限のページ詳細)
- DB構造
- (大きくなれば、サイトマップも)
4. 開発する
- 開発の3原則
- Railに乗る
-
- リファクタリングし続けるコードを書く
明日の自分は他人。コードが読みにくくなる。
早いRailsのバージョンアップへの対応が困難。
Railを外れそうになったらRailsの機能でできないか探す、代替がないか探す。
リファクタリングしつづけられる状態を意識する。=> テスト駆動により可能になる。現在クックパッドではここが課題。
リファクタリングを意識しないと2年が限界
-
- DRY
- 同じことを2度しない
- railsの基本概念
- YAGN(いずれ必要にならない)に注意
- DRY
5. 質を高める
- ユーザテスト
- バグ発見も重要
- ユーザにゴールを伝えて行動してもらう(実際にユーザにやってもらう)
質問などには答えない
質問が出るインターフェースは失敗
ユーザに何を考えているのか操作してもらう
-
- 「かうき」の法則
ウリを伝える「顔」
ライバルに勝てる「ウリ」
売りが実感できる「効き」
感想
ユーザが欲しいものをいかにして提供するかというところを、すごく考えている。ユーザへ提供する機能への質に妥協がない。
使っているツールも参考になる物が多く、試してみたいものがたくさんあった。解説が少し早口でスライドがどんどん進むので、メモが追いつかなかった部分があるのが少し気になった・・・。
「お金を払ってでも使いたいサービスが無料だと使われる」というのは意識していきたい。
「最大2秒。2秒で理解できなかったらユーザは使わない。」こちらも意識したい項目だった。日々の忙しさに謀殺され、どんどん機能は追加するのは良いが、これが本当にユーザが欲しい物なのか、というのをちゃんと検討しないとだめかもと思った。
「設計、開発、質を高める(同じくらい重要)」ここの意識も僕は低いので改めたい。とくに設計と質を高めるの部分。
僕も設計は開発しながらやるもの見たいな意識があったけど、「詳細を作り始めると、それがほんとにユーザが欲しい物なのか」という部分を見失いがちになる。ちゃんと設計段階でユーザの疑いようのない欲求を理解する必要があると思った。
開発体制については、再構築したいなー。