クックパッド株式会社

クックパッド株式会社

日本の食卓を支える料理レシピサービスをRubyで開発

クックパッド株式会社(以下クックパッド)の提供するレシピサイトCOOKPADは掲載レシピ数120万品以上、月間ユニークユーザー1,500万人以上、月間PV5億の超巨大サイトである。20~30代女性の1/2以上が利用していると言われ、まさに「日本の食卓を支えている」といっても過言ではない。「料理」というほとんどすべての人間が関わる領域に特化したサービスであり、現在利用していないが今後ユーザーになるであろう潜在的な顧客は多い。おもな収益源は広告販売と有料会員であるが、有料会員機能の一つが「人気順レシピ検索」であるなど、レシピサイトならではのユニークな点を売りにしている。2012年6月には有名シェフによるレシピ販売機能「レシピストア」をリリースし、その実験的なビジネスモデルが注目されている。

COOKPADはRuby on Railsで構築されており、世界でも指折りのRails製巨大Webサイトである。「Ruby on Railsは遅いのでは?」という質問が出るたびにその反証として挙げられるサイトの1つでもある。クックパッド開発者ブログでは積極的に情報を開示しており、技術系セミナーではエンジニアが講演を行うことも多い。Ruby on Railsによるサイト運営のノウハウを最も多く持つ会社であり、iPhoneアプリなどでの言語環境に制約があるものをのぞいてほとんどのアプリケーションをRubyで開発するRubyのヘビーユーザーである。しかし、Rubyを採用するようになったのは2008年からのことだ。

COOKPADの前身であるサービスは1998年に開始されたが、2008年全面リニューアルまではAdobe社のColdFusionを使っていた。Ruby on Railsを採択したきっかけはモックアップ作成までの速度である。その開発効率の高さに驚いたクックパッドはRuby on Railsでのリニューアルを選ぶことにした。まだ日本国内でのRuby on RailsによるWebサイト構築事例は少なかったものの、COOKPADのリニューアルは無事成功、その後は多くの人に使われるサイトへと成長した。どの開発言語を採用するかでビジネスの成否が決まるわけではないが、「Ruby採用もその一因だったのではないか」とエンジニア統括マネージャーの井原正博氏は振り返る。

Ruby、そしてオープンソース文化との関わり

Ruby on Railsを採用する前から開発力を軽視していたわけではなかったが、Ruby採用後からその成果が目に見える形になっていった。クックパッドではRubyをはじめとして多くのオープンソースソフトウェアが採用されており、そのほとんどはエンジニアからの提言で決まっている。クックパッドには、そうした提言を快く受け入れ、実際によければ採用するという社風がある。また、使用しているアプリケーションのバグを業務中に発見した場合に、そのパッチをオープンソースソフトウェアに送り返すということも日常的に行われており、Ruby on Railsで採用されたパッチも数件あるという。RubyGemsやGithubといった、Ruby開発者が好んで使うコードの共有プラットフォームもさかんに利用されている。

クックパッドのエンジニアであり、Rubyコミッターでもある村田賢太氏はこうしたオープンソースソフトウェアとの深い関わりについて「必要だからそうなっています」と語る。実現したい機能を持つオープンソースソフトウェアがあればそれを採用し、業務上必要なバグ修正やコード改善があれば行うというサイクルを繰り返している結果なのだ。その成果の一つが2011年にオープンソースソフトウェアとしてリリースしたプロトタイピングツールchankoである。本番環境においてプロトタイプを限定的に公開するためのツールであるchankoは、まさにCOOKPADという巨大サービスを運営するにあたって必要とされる機能だった。Rubyを中心としたオープンソースを利用し、その成果をフィードバックするという文化を社内に持つことがクックパッドの技術力の土台となっている。

小さなチームでスピーディな開発

クックパッドでは40名強のエンジニアを少数名からなるチームに編成している。各チームそれぞれが自立して新機能や新サービスを作成・提案し、クックパッドのさらなる改善を目指している。実際に動作するモックアップをまず作成し、前述したようなプロトタイピングツールでその成果を検証した上で、さらなる機能の改善を目指していくのだ。

こうした小さなチームを編成し、その成果物を共有することができるのは、Rubyの言語設計のポリシーとして提唱されていた「驚き最小の原則」によるところが大きい。RubyはRubyの常識を持つ人が予測した通りの挙動をすることを目指して設計されている。このため、Ruby開発者は「こうすればこうなるだろう」という常識に当てはめてコードを書くようになる。その結果、同じ常識を持つ他のRuby開発者にとっても理解しやすいコードになり、保守性が高くなる。チームをまたいで成果物を共有する場合でも学習コストは低く、チームを再編成する際のスイッチングコストも低く見積もることができる。開発単位を小さくわけてスピーディな機能改善を進めるために、Rubyの持つ言語特性が一役買っているのである。

また、少数チームによる開発ではサービスの提案段階からエンジニアが参加する。サービスの提案に技術的な検証がセットとなることで、無駄のないサービスの開発が可能になるのだ。2012年6月に発表されたレシピストアは、プロのシェフや料理人がレシピを低価格で販売するという新しいサービスであるが、このサービスも前述したような少人数体制で開発されたという。購入したレシピはお気に入りに保存することなどができ、これまでのレシピと同じように検索対象とすることもできる。たとえ新しいサービスを提供したとしても、既存のユーザーにとって利便性の落ちるものであれば、お金を払った分だけ満足度が下がってしまう。既存のシステムから破綻なく新機能を盛り込むことができる点こそ、エンジニアがサービスの企画段階から関わっている少人数チーム体制の最大のメリットと言えるだろう。

高度な技術が支えるユーザー本位のサービス

nginxとUnicornで高負荷に耐えるサーバを構築し、Ruby on RailsとRspecでテスト駆動開発を行い、Capistranoやchankoによって安全に本番環境への展開を行う。新機能は一部のユーザーに対して提供され、その反応が良かった時だけ全体リリースされる。クックパッドが採用している技術は現在最先端と言われる技術のカタログのようにも見える。だが、これはあくまでユーザーのことを考えた結果なのだ。ユーザーは遅くてよく落ちるWebサイトを好まないし、バグに遭遇したいとも思っていない。不便な機能が増えて画面遷移がわかり辛くなることも好まない。クックパッドが採用した技術のカタログは「ユーザーが何を求めているか」を追求した結果と言えるだろう。

クックパッドのエンジニア村田氏は「クックパッドらしい技術というのは特にない」と前置きしつつ、「強いて挙げるならば、エンジニアが昼食を自分で料理するくらいです」と語る。クックパッドの受付近くにはキッチンがあり、そこでは社員が自らの食事を調理する。「毎日の料理を楽しみに」を掲げるクックパッドならではの光景だ。村田氏は「Rubyは楽しく書けるからいい」と繰り返し言う。COOKPADを訪れたユーザーがおいしい料理を作って笑顔になれるように、クックパッドのエンジニアたちは楽しくコードを書いてよりよいユーザー体験を提供すべきだと考えている。そのためにはRubyのようにシンプルで再利用しやすい言語でコードを書く必要がある。開発コストはサービスの価格に反映されるため、安価で質の高い機能を提供するには、フルスクラッチですべての機能を作らない方がよい。結果的にオープンソースソフトウェアを積極的に利用することになるため、その環境が維持されるよう積極的にフィードバックを行うことが自社の利益にもなる。このように、「ユーザーを笑顔にする」という目標に向けた選択の結果が、Rubyをはじめとするオープンソースソフトウェアの採用に繋がっているのだ。

エンジニア統括マネージャーの井原氏は「Rubyコミッターをしているエンジニアこそ採用したい」と考えている。「Rubyのソースコードを改善するための人材として採用することも検討している」とさえ言う。クックパッドにおける主要開発言語であるRubyについて深い理解を持ち、そのコミュニティに還元できる人材であれば、結果的にRubyユーザーであるクックパッドにもメリットをもたらすからだ。

クックパッドはRubyを採用することによって、オープンソースソフトウェアの文化を技術資本に取り込んだ。オープンソースソフトウェアを使いこなす生産性の高い技術者チームは、最小単位に分割された問題を次々と解決していくことによってユーザー体験を向上させ続けている。

参考写真

●COOKPAD TOPページ

●クックパッドのオフィス風景。小さなチームで開発が行われる。

●Rubyコミッターでもある村田賢太氏はRubyの魅力について熱く語ってくれた。

村田賢太氏

※本事例に記載の内容は2012年6月取材日時点のものであり、現在変更されている可能性があります。