クックパッド株式会社
執行役 最高技術責任者/CTO 橋本健太 氏
慶應義塾大学政策・メディア研究科修士課程修了。同博士課程在籍中に、研究員として細胞のコンピュータシミュレーションの研究を行う。2004年にクックパッド株式会社の前身である有限会社コインへ入社、ユーザー向け有料サービス立ち上げに従事。2006年にはサイト全体のリニューアルを成功させる。2008年7月クックパッドをRuby on Rails に全面リニューアル(当時Ruby on Rails製で日本最大、世界6位の大規模サイトに)。現職に至る。
クックパッドは、常に新しいテクノロジーを取り入れていますね。
確かに、Rubyを採用し、2008年に当時の大規模サイトでは珍しかったRailsを導入したことや、2011年にAWSに全面移行したことが話題になったので新しいテクノロジーを取り入れているイメージがあるかもしれませんが、それなりに慎重派ではあるつもりです(笑)。 実は、Railsについては、2005年の段階で試してみたこともあります。ただ、当時はまだRailsはベータ版でしたから、「ドキュメントがなさすぎて、結構つらいな」というのと「ユーザー100万人規模のサイトを、ベータ版で運用してよいのか」ということで、正式導入には踏み切らず、ColdFusionでそのままやったという経緯があります。
それでも2008年にRailsでリニューアルをしたのは、クックパッドはとにかくユーザーの声に最短で応えることを重視していたからです。Railsを導入して、開発の生産性を徹底的に高めなければ、他のサイトに負けてしまうという危機感があったからです。もちろん新しい技術にはリスクが付きものですが、「Railsを導入するリスクは確かにある。
ただし、導入しないことのリスクよりはるかにマシだ」という社内の議論を経て前に進めました。 AWSへの移行は、「サービスや開発チームをフレキシブルにしておかないと怖い」という発想です。何かの新サービスがユーザーに支持されて大きく成功したときに、「3カ月待ってもらえればサーバを用意できます」といったことではまずいだろう、と。
それに、クックパッドは毎日16時ごろにピークタイムが来ます。夕食の献立を決めるゴールデンタイムにアクセスが集中するわけです。そう考えると、AWSでフレキシブルにサーバを使うというのは極めて合理的な判断でした。一方、これまでとは違い、「サーバは、プログラミングできるものだ」というようにパラダイムが一変することでもあります。確かに大変でしたが、クックパッドのインフラエンジニアは、みんなプログラミングにも強かったこともあり、うまく導入できました。
クックパッドにとってテクノロジー(技術)とは何でしょうか。
技術は「手段」です。あくまでも人の役に立つための「方法」です。「技術のための技術」は、クックパッドでは重視されません。もともと私は、テクノロジーや技術という言葉にネガティブでした。「CTOをやってください」と言われたときも、「サービスの責任者ならいいですが、技術の責任者は、嫌です」という話をしたほどです(笑)。その時に、創業者である佐野から「技術って何なの?」と聞かれたので、私は、「技術は、プログラムとかデータベースとか、ケーブルをつなぐ..といったことです」と答えました。続いて佐野が「じゃ、サービスって何?」と聞くので、「サービスはユーザーに、どうやってに役に立とうかとか、インターネットはこういう構造だから、構造をこう変えればもっと楽しいことが起きるか、みたいなことだと思いますよ。」と答えたら、「それこそが、テクノロジーだよ!」と言われたのです。
「今、橋本さんがサービスだといったものこそが技術だから、そのリーダーをやって欲しいんだ」、と。そのときから、技術という言葉が、私にとって突然ポジティブな言葉になったのです。以来、ずっとその理解でクックパッドを作っています。 技術が「ユーザーに役立つための手段」だとすれば、エンジニアでなくても、使いこなさなくてはいけないものだと思います。クックパッドであれば、ユーザーをよく見て、どんなふうに生活しているかをよく観察して、その中からユーザーが困っていることを見つけ出すことからです。それをクックパッドの力で解決して「より良い生活にするためには何ができるの?」ということを必死に考え続けるということ自体も技術だと思っています。これは、プログラミング言語やインフラが変化しても一生使える、まさに「技術」ではないでしょうか。
今のお話をお聞きすると、一貫した「エンジニアリングポリシー」を感じます。クックパッドの開発プロセスに何か特徴的なものはありますでしょうか。
「ユーザーありき」という考え方に加えて、「スピード」だと思います。この二つは、実はつながっています。ユーザーへの責任感のようなものがベースとして強くあるからこそ、リリースしたものがうまく使われていなかったり、逆に、もっと料理が楽しくなるサービスをできそうだとわかったりしたら、「これは、やばい。すぐにやらなきゃ!」となるわけです。その「すぐ」の感覚がとにかく速いのだと思います。
しかも自分で手を動かして、すぐにやる。気づいたことに対して、手を動かして試すまでの速度を徹底的に重視しているのは、私たちの特徴だと思います。 クックパッドのサービスが立ち上がった頃は、まだアジャイルもメジャーではありませんでした。当時は、「どうも、ウォーターフォールではない開発の仕方が出てきているらしいぞ」といった段階です。でも、当時数少ないアジャイル関係の本を読んでいると、「確かに、そう、これだ。自分たちがやっているのは、まさにこういうことなんだ」といった感じで確信を深めていきました。
誤解を恐れずにいうと、サービス作りなんて、そもそもうまくいかないものなんです。プログラミングをして何かを作って、最初からうまくいくわけなんてない。なぜかというと、サービスはだいたい、「思い込み」から作られるからです。作り手は、すごい情熱をもって、自分たちが信じたものを作るわけですが、それとユーザーが求めているものが一致するなんてことは、ほとんどあり得ないといってもいい。
でも、「そこから、どうするか」こそが重要なのです。なるべく早く、ユーザーが触れるものを作り上げて、「何がいけないのか」「自分の情熱とユーザーニーズの、いったいどこがずれているのか」をテストすること、「実際に使ってもらって、それを観察するということを、どれだけ早く、何回できるか」、これこそが成功の鍵だと考えています。アジャイルにせよ、Rubyにせよ、Railsにせよ、AWSにせよ、クックパッドの技術のすべての根底には、この考え方があります。
クックパッドは、すっかり大きなサービスになりました。そのスピードは確保されているのでしょうか。
「クックパッドは、もう完成されたサービスですね」といったお話を頂くこともあるのですが、クックパッドはプラットホームであって、その力を最大限使って、「そこに集まっているユーザーさんたちの料理を、どうやってもっと楽しくするか」という意味でのものづくりは、毎日行っていくわけです。それはクックパッドに限らず、例えばTwitterやFacebookも大きなサービスですが、「1年間に何百回、何千回も変えています」といったプロダクトづくりをしているはずです。クックパッドもそれとあまり変わりません。
リリースの仕方は会社によって違うと思いますが、「2週間に一度、日を決めて公開しましょう」といったやり方が多いのではないでしょうか。「そうするとバグも出にくいですから」、といったように。私たちは、それでは遅すぎると考えています。クックパッドは、毎日いつでもリリースしていいことになっています。「リリースすべきものは、今すぐリリースして、その1時間で得られたものを元に、次の1時間で修正してまたリリースする」という仕事の進め方を大切にしています。
リリースのスピードと、クオリティをどう両立しているのですか。
リリースの間隔が短ければ短いほど、それを実現するためには、えらく大変な技術的課題が出てくることは確かです(笑)。2週間に一度のリリースと比較すると、「バグだらけになるんじゃないの?」という懸念もありますよね。そこに対しては、Googleなどと同様、「コードレビュー」を取り入れて、必ず誰か違うエンジニアがコードを見ることにしています。1時間後にリリースしたいのなら、その1時間で「誰か見てください」と言ってコードレビューをしてもらい、そこで意見をもらえばよいのです。
とはいえ、ユーザーにリリースするのは、「迷惑をかけるんじゃないか」という緊張感が常にあります。そこで、社員や、親しい人たちだけに限定してリリースすることもできるようにしています。これはテストサイトなどではなく、あくまでもcookpad.comの本番サイトでやっています。コードレビューや、対象を限定したリリースの繰り返しを通じて、クオリティも保てますし、エンジニアとしてもスキルも経験も確実に上がっていくのではないかと思います。あとは、シンプルであることがスピードを実現するために何よりも重要です。「オッカムの剃刀(*1)」のように、問題を解決するのなら一番シンプルな方法でやるべき、という考えは指針としてありますね。
*1 「ある事柄を説明するためには、必要以上に多くを仮定するべきでない」とする、哲学者オッカムの考え。
エンジニアにとってのやりがいをどのように感じますか。
やりがいとして非常に重要なのは、「ユーザーさんの生活に役立っている」という感覚です。やはり、料理というのは、本当に生活の真ん中にあるものですからね。ただ、直接的に役に立って、直接ありがとうと言われたいのであれば、私はおそらく料理人になっていたのだと思います。もともと、料理は好きですし。にもかかわらず、こうしてエンジニアとしてクックパッドを作っているのは、「ITの力を使うと、1対1ではなく、数千万人、数億人の生活に役立つことができる」という感覚を知ったからです。
これは、本当に何にも代えがたい面白さであり、やりがいですね。 しかも、テーマが料理です。エンジニアとして、「遊びの役に立ちたい」のか、「仕事の役に立ちたい」のか、その他の何かなのか。ものづくりをしている限り、それはあるわけです。それが私たちにとっては、「生活の役に立ちたい」ということであり、その根幹にある料理が対象だというわけです。「毎日の料理を楽しみにすることで、心からの笑顔を増やす」という理念に対して共感できるエンジニアの方であれば、そこに向けてものづくりをしていくやりがいをきっと感じられると思います。
「ユーザーとサービスと技術」が一本でつながっているがゆえのやりがいですね。
そうですね。目標設定についてもそうです。エンジニアとして「こういうものをインストールして、こういうものを使いこなしたいです」といった話になったときには、「それが、どうやってユーザーの役に立つの?」「ユーザーに与える価値は何だろう?」というところから目標を決め直します。例えば、「クリックしたら0.2秒以内に反応が返ってくる」というように、徹底的にユーザー側に沿った目標に置き換え、「そのために、どの技術を使うの?」といった設計の話につなげていきます。
ですから、徹頭徹尾、クックパッドは「ユーザーありき」です。それは、創業者の佐野も、現社長の穐田も、CTOである私も完全に一致しています。それは、理念的な意味や、道徳といった側面だけでなく、ビジネス的な意味からもそうだといえます。ユーザーに支持されなければ、結局会社も大きくならないわけですから。
クックパッドを今後どのようにしていきたいですか。
現在の2000万人のユーザーに、本当にベストを提供できているのかというと、全くそんなことはありません。まだまだできていないことがあります。インターネットというものと何が相性が良くて、どこをもっと変えることができるのかを考えると、できることはまだたくさんありそうです。 今のクックパッドは、「レシピを載せることができ、探すことができる」という基本構造で成り立っています。
それぞれをもっと良くするだけでも、膨大にやることがあります。さらに、例えば買い物だったり、作ったものを元に次は何を作ろうか決める流れであったり、「人と人とのつながりをどうやって料理に生かすか」ということについても広げることで、2000万人はもっと楽しく料理ができるのではないか、と思っています。
海外にも可能性を感じますか。
強く、感じています。海外のユーザー同士がおいしい体験を交換し合うというのもいいですし、日本のユーザーと海外のユーザーが、教えあったり、感動みたいなものを交換し合うというのは、まさにインターネットの技術が実現できることだと思います。しかも、日本は食については極めて恵まれている国だと思いますので、食についてうまくいっていないような国に対しても、クックパッドで得た成功体験で役に立てるのではないかと思っています。これはもちろん、相当難しいことだとわかってはいますが。
クックパッドのエンジニアチームでは、どのような人材を採用したいですか。
優秀な人であれば、どんな人でも大歓迎です(笑)。多様性が欲しいので、型に囚われた人でない方がいいかもしれません。 一方で、必須の条件としては、「技術の力を信じられること」ですかね。これは決して、プログラムだけの話ではなく、人と人との関係を作ったり、インターネットやデバイスの新しい世界がどうなっていくのかを設計するといった話も含めて、「技術で世の中をもっと良くしていける。クックパッドならできる」ということを信じられることは大切だと思います。
あとは、「自分でこれがやりたいです」という強い思いがあるほうが面白いでしょうね。クックパッドのエンジニアはみんな、やりたいことだらけなので(笑)、それを聞くだけになってしまうと、つらいかもしれません。 あとは、プログラミングは言語であり、使えば使うほど上達するものだと思っていますから、いっぱいコードを書いている人がいいですね。ただ、自己満足でコードを書いているのももったいないので、GitHubなんかを使って公開して、それをもとにコミュニケーションをとる、といったことを普通にやっている人などはいいなと思いますね。
プロダクトを自分で作って公開している、とか。研究的な位置づけでコードをたくさん書くのと、ユーザーが付いて、そこからのプレッシャーを感じて、どんどん改善しながらコードを書いていくというのでは成長が違うと思いますからね。あとはスピード感でしょうか。たとえば、「今はソーシャルゲームの世界でどんどんプロダクトを作っているが、もっと社会的意義や、やりがいを感じられるものに技術と時間を投じたい」、という人は大いに活躍できると思います。
最後に、読者の方にメッセージをお願いします。
エンジニアとして、「これがやりたいです。これで一番になりたいです。」というものを持っている人は大歓迎です。 エンジニアは、ユーザーの役に立つことと同じくらい、エンジニア同士、お互いの役にも立ちたいという欲求があると感じます。エンジニアチームみんなの開発速度が上がるようなものづくりに対しても、意識をもったエンジニアが多いです。これは、非常に良い環境ではないかと思います。
働きやすいですし、成果も出しやすいですし、お互いの技術力も上がりやすいですしね。 そして、高めた技術や成果を、社内でも社外でもどんどん発表してもらえればと思います。「もっといい方法があるよ」とか、「そんなんじゃ、駄目だよ」とか、「それは、ここがいいね!」といったことを。それはこれからのエンジニアにとって、とても意味のあることだと思うのです。 エンジニアとして、クックパッドに興味を持ってくださった方はぜひ、アクションを起こしてもらえればと思います。楽しみにしています。