Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

クックパッドのRailsリニューアル

10,976 views

Published on

カカクコム&クックパッド共催・勉強会

Published in: Technology, Design
  • Be the first to comment

クックパッドのRailsリニューアル

  1. 1. クックパッド株式会社 最高技術責任者 橋本健太 [email_address]
  2. 2. <ul><li>クックパッドとは? </li></ul><ul><li>Rails リニューアルの経緯 </li></ul><ul><li>なぜ Rails ? </li></ul><ul><li>開発ノウハウ </li></ul><ul><li>Rails で何が変わったか? </li></ul>
  3. 3. <ul><li>毎日の料理を楽しみにすることで心からの笑顔を増やす </li></ul>
  4. 4. <ul><li>http://cookpad.com </li></ul><ul><li>1998 年オープン </li></ul><ul><li>「毎日の料理を楽しみにすることで心からの笑顔を増やす」ことのみを追求する </li></ul><ul><ul><li>世界で一番!生活の役に立つサイト作り </li></ul></ul>
  5. 5. <ul><li>おいしいものができたとき - 「レシピをのせる」 </li></ul><ul><ul><li>料理レシピを作って整理 </li></ul></ul><ul><ul><li>みんなに公開 </li></ul></ul><ul><li>おいしいものが食べたいとき - 「レシピをさがす」 </li></ul><ul><ul><li>公開されている 42 万品のレシピから今日食べたい物を決める </li></ul></ul><ul><ul><li>作った写真をレシピ作者に送ることも </li></ul></ul>
  6. 6. <ul><li>月間ユーザ数 483 万人 </li></ul><ul><li>月間ページビュー 2.8 億PV </li></ul><ul><li>ユーザ数で世界 8 位 ( rails100 ) </li></ul><ul><li>ページビューでは世界 2 位の Rails サイト( alexa ) </li></ul>
  7. 7. <ul><li>クックパッドとは? </li></ul><ul><li>Rails リニューアルの経緯 </li></ul><ul><li>なぜ Rails ? </li></ul><ul><li>開発ノウハウ </li></ul><ul><li>Rails で何が変わったか? </li></ul>
  8. 8. <ul><li>2005 年に一度挑戦 </li></ul><ul><li>2007 年に社内ツール、広告配信ツール、データ提供サービス「たべみる」を、 Rails で構築 </li></ul><ul><li>2007 年 11 月にリニューアル開発開始 </li></ul><ul><ul><li>2007 年に「食べログ」さんの Rails リニューアル成功を聞き相談 </li></ul></ul><ul><li>2008 年 6 月 3 日「モバれぴ」リニューアル </li></ul><ul><li>2008 年 7 月 12 日完全リニューアル </li></ul><ul><ul><li>3 度の切り戻しを経て </li></ul></ul><ul><ul><li>Rails 化 </li></ul></ul><ul><ul><li>サイトリニューアル </li></ul></ul><ul><ul><li>データスキーマ変更 </li></ul></ul><ul><ul><li>インフラをすべて入れ替え </li></ul></ul>
  9. 9. <ul><li>クックパッドとは? </li></ul><ul><li>Rails リニューアルの経緯 </li></ul><ul><li>なぜ Rails ? </li></ul><ul><li>開発ノウハウ </li></ul><ul><li>Rails で何が変わったか? </li></ul>
  10. 10. <ul><li>ユーザに「より高い価値を提供」「し続ける」ため </li></ul><ul><ul><li>より高い価値 </li></ul></ul><ul><ul><ul><li>アジャイルな開発 </li></ul></ul></ul><ul><ul><li>提供し続ける </li></ul></ul><ul><ul><ul><li>コードの寿命 </li></ul></ul></ul>
  11. 11. <ul><li>機能より価値 </li></ul><ul><ul><li>仕様への準拠よりもユーザの満足度を重視する手法 </li></ul></ul><ul><ul><ul><li>変化するフィードバックに素早く対応することで価値を高める </li></ul></ul></ul><ul><li>Rails は、アジャイル開発のためのフレームワーク </li></ul>
  12. 12. <ul><li>2006 年リニューアル時のコードは、機能追加などにより、混沌状態に </li></ul><ul><li>リファクタリングし続けられる状態を保つことが大事 </li></ul><ul><ul><li>MVCフレームワーク </li></ul></ul><ul><ul><li>DRY原則 </li></ul></ul><ul><ul><li>テスト完備 </li></ul></ul>
  13. 13. <ul><li>クックパッドとは? </li></ul><ul><li>Rails リニューアルの経緯 </li></ul><ul><li>なぜ Rails ? </li></ul><ul><li>開発ノウハウ </li></ul><ul><li>Rails で何が変わったか? </li></ul>
  14. 14. <ul><li>開発の原則 </li></ul><ul><li>開発基盤 </li></ul><ul><li>DBのレプリケーション </li></ul><ul><li>レシピ検索 </li></ul><ul><li>キャッシュへの対処 </li></ul><ul><li>ユーザ専用URL </li></ul><ul><li>プレビュー機能 </li></ul><ul><li>アクセスログ </li></ul>
  15. 15. <ul><li>2つの原則 </li></ul><ul><ul><li>Rail にのる </li></ul></ul><ul><ul><ul><li>なるべく、 Rails に用意されている機能で解決する </li></ul></ul></ul><ul><ul><li>リファクタリングし続けられる状態を保つ </li></ul></ul><ul><ul><ul><li>DRY違反をしない </li></ul></ul></ul><ul><ul><ul><li>テストを書く </li></ul></ul></ul><ul><ul><ul><li>成長の速度を維持するため </li></ul></ul></ul>
  16. 16. <ul><li>プログラマは、全員 Mac を使用 </li></ul><ul><li>Emacs </li></ul><ul><ul><li>rails.el </li></ul></ul><ul><li>Subversion と trac </li></ul><ul><li>Shinjiko </li></ul><ul><ul><li>Mondorian クローンのコードレビューシステム </li></ul></ul>
  17. 17. <ul><li>マスターとスレーブの切り替えには acts_as_readonlyable を使用 </li></ul><ul><li>データ更新後の SELECT は、マスターから </li></ul>
  18. 18. <ul><li>Tritton を使用(未来検索ブラジル) </li></ul><ul><ul><li>MySQLを拡張しているので、テーブルをジョインできる </li></ul></ul><ul><ul><li>2インデックス </li></ul></ul><ul><ul><li>インデックスを貼ったテーブルのファイルをそのまま各スレーブDBにコピー </li></ul></ul>
  19. 19. <ul><li>ページキャッシュをしようとした場合の問題 </li></ul><ul><ul><li>ログイン情報による動的な変化 </li></ul></ul><ul><ul><ul><li>「○○さんようこそ」 </li></ul></ul></ul><ul><ul><li>アクセスログ </li></ul></ul><ul><ul><li>広告配信 </li></ul></ul><ul><li>この3つについて、 Ajax の1リクエストで処理 </li></ul>
  20. 20. <ul><li>一部のユーザは自分専用の URL を持つ </li></ul><ul><ul><li>http://cookpad.com/kem </li></ul></ul><ul><li>routes.rb </li></ul><ul><ul><li>全てのコントローラ名を検索 </li></ul></ul><ul><ul><li>一致しない場合に専用のコントローラに渡している。 </li></ul></ul>
  21. 21. <ul><li>「○月○日○時~○時のみ公開」などの場合 </li></ul><ul><li>すべてのページで、任意の日付を指定して、プレビューできる。 </li></ul><ul><li>Time.now を上書き </li></ul><ul><ul><li>http://cookpad.com/?current_time=2008-11-01 </li></ul></ul><ul><ul><li>アクセス制限あり </li></ul></ul>
  22. 22. <ul><li>MySQL を使用 </li></ul><ul><li>controller, action を同時に書き込むことにより、後の集計を楽に </li></ul>
  23. 23. <ul><li>クックパッドとは? </li></ul><ul><li>Rails リニューアルの経緯 </li></ul><ul><li>なぜ Rails ? </li></ul><ul><li>開発ノウハウ </li></ul><ul><li>Rails で何が変わったか? </li></ul>
  24. 24. <ul><li>エンジニア5人で、リニューアル達成 </li></ul><ul><ul><li>PC向け </li></ul></ul><ul><ul><li>モバイル </li></ul></ul><ul><ul><li>社内システム </li></ul></ul><ul><ul><li>広告システム </li></ul></ul><ul><ul><li>データスキーマ変更とデータ移植 </li></ul></ul><ul><ul><li>インフラ </li></ul></ul>
  25. 25. <ul><li>保守性 </li></ul><ul><ul><li>保守するコードが減少 </li></ul></ul><ul><li>可読性 </li></ul><ul><ul><li>再利用しやすくなる </li></ul></ul><ul><li>拡張性 </li></ul>
  26. 26. <ul><li>楽しい </li></ul><ul><ul><li>Ruby 開発者たちのテーマは「愛」 </li></ul></ul><ul><ul><ul><li>楽しくプログラミングできるようにしようというこだわり </li></ul></ul></ul><ul><ul><li>使う人のことを考えたものづくり ⇒ おもてなしの心 </li></ul></ul><ul><ul><li>おもてなしの心をもったツールで、 </li></ul></ul><ul><ul><li>おもてなしの心をもったサービスを作れる </li></ul></ul><ul><ul><li>同じようにおもてなしの心を持ったOSSの開発者たちの資産も活用できる! </li></ul></ul>
  27. 28. <ul><li>これからもクックパッドは </li></ul><ul><li>「 毎日の料理を楽しみにすることで心からの笑顔を増やす 」 </li></ul><ul><li>ためのサービスを作り続けていきます </li></ul>
  28. 30. <ul><li>クックパッドでは </li></ul>
  29. 31. <ul><li>500万人の「料理を楽しく」してくれるプログラマ </li></ul>
  30. 32. <ul><li>10億超のPVと未来の技術を活用していくエンジニア </li></ul>
  31. 33. <ul><li>を、大募集しています! </li></ul>
  32. 34. <ul><li>ご静聴ありがとうございました </li></ul><ul><li>今後ともよろしくおねがいいたします </li></ul><ul><li>クックパッド開発者ブログ </li></ul><ul><li>http://techlife.cookpad.com </li></ul>

×