Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

【デブサミ2014】13-B-7 レポート
「何故クックパッドのサービス開発は日々進化しているのか」

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/03/26 14:00

 日本最大の料理レシピサイト『クックパッド』。レシピやサービスの充実ぶりが有名ですが、ITやインフラ環境の側面においても、同社が取り組んでいる技術や手法が注目され続けています。今回のDevelopers Summit 2014では、日々更新を重ねつつも安定したサービスを運用し、技術トレンドが変化していく中で、どのようにしてサービス開発手法を進化させていくのか。その辺りのポイントについて、現在クックパッド社のサービス研究開発部およびHappy Author部の部長を務め、またコミュニティ『java-ja』の代表としても知られる庄司 嘉織氏が語りました。

クックパッド 庄司嘉織氏
クックパッド 庄司嘉織氏

 冒頭、庄司氏は「クックパッドの印象としては、レシピのサービスが一番強いと思いますが、これ以外のサービス、新規事業にも力を入れています」とした上で「cookpad.comに関する話をします」と切り出してセッションを始めました。

 まず、Ruby 2.0/Rails 3.2による環境構成を説明し、「このボリューム、正直狂っているんじゃないかな。数か月間でこれだけ増えてるんです。……あの、ここ笑うところですよ?」と独特の語り口でセッションを進めていきます。

サービスの成長と安定性を両立させる3チーム制

 しかし、上図のような成長ペースにもかかわらず、デプロイは1日10回ペースを維持している。一体どうやって、これほどの安定リリースを実現しているのでしょうか? 庄司氏はこの点について、エンジニアで構成されている『サービス開発部』『インフラ部』『技術部』の存在を挙げました。

 サービス開発部隊がサービス開発に集中する。この理想を現実にするために、足回りがおろそかになりがちなサービス開発においてテスト基盤やデプロイ基盤を作成する『技術部』では、CI10分以内の終了を部の目標として定めました。これはどんなにサービス開発側がテストを増やしていたとしても守っているとのこと。

 『サービス開発部』の紹介では、"Chanko"というフレームワークの説明を行い、その素晴らしさを説きました。フレームワーク自体の特徴(特定ユーザーの時だけ文字列を書き換えて表示することができ、エラーの場合はデフォルト挙動を見せることができる、という拡張機能について解説)もさることながら、作業時のやり取りや作業体制にも庄司氏は非常に感動したと言います。「GitHubで頻繁に行われるPull Requestやマージ」「金曜日のデプロイ禁止」「マージは基本的に本人が行う」「DBスキーマの変更もPull Requestベース」「設計自体もissue機能を用いる(設計中の議論が一目瞭然となるのが良い)など。そしてさらに感動したのが、『デザイナーもGitHubを使っていた』点。庄司氏の作業しているブランチにPull Requestしてきたり、イメージの共有もPull Requestで送ってきたりと、「デザイナーがここまでやってくれるなんて!」と思ったのだそうです。

 デプロイのリリース間隔に関しては先述のとおりですが、ロールバックやデプロイロックも手元から行えるようになっていると庄司氏は解説。デプロイロックでは通常サーバ側をロックしますが、その体制を解くことで権威的にならないような工夫もしているそうです。これはインフラ部部長の成田一生氏による取り組みで、この点はとても大事なんです、と強調していました。

 また、ユーザーサポートにもGithubを用いているとのこと。HipChatに通知が入り、エンジニアも観測可能な状態で作業が進むので、サポート状況も進捗確認が可能です。「サポートの人ってエンジニアに投げたあと、不安になるものなんです。無視放置されているんじゃないかと。それがこれらを見れることで安心できるんです」とその有用性を説明しました。ちなみに庄司氏自らが、サポートもGitHubを使おうと提案し、浸透するようにしたと言います。「正しいと思ったら行動できる、自分で文化を作れてしまうという点が重要です」とクックパッド内の体制の特徴についてコメントしました。

各自が正しいと思うことを積極的に推し進める文化

 インフラ界隈のみならず、昨今至る所で耳にする『DevOps』というキーワード。クックパッド社内では、この言葉に対して意識することはないそうです。「元々やっていたことに後から名前が付いた。そんな感覚です」と庄司氏はその違和感について語りました。

 『社員一人一人にユーザーがいる』クックパッドでは、幸せにするためのユーザーを間違えないようにしよう、という考えが根底にあるのだそうです。サービスを使ってくれる人、幸せにするユーザーは立ち位置によってそれぞれ異なりますが、その点についての意識を忘れずに、幸せにするために常に正しいことを積極的に推し進めていく。それによって良いサイクルを回すことができ、クックパッドの文化の醸成に繋がると言います。例えば「このシステム、◯◯に使いこなせるかな?というのは逆に失礼。便利だから使ってみてよ!と勧めていく方が良い」と庄司氏は一例を挙げました。

 文化を作るために留意している点として、「情報共有」「なるべくルールを作らない」「それが正しいと思ったら行動する」などのポイントを挙げつつ、庄司氏は「お前ら取りあえず、バット振れよ。正しいと思ってやっていることなら怒られない」と背中を押してくれるコメント。また庄司氏自身も、この体制に関しては「信頼ベースで動いているけれども、この体制大きくなったら破綻するんじゃないか?」と不安視していた部分もあったそうです。しかしこの点について社長と語り合う機会があり、「破綻するのかな? ユーザーさんも居るし、信頼もあるし、破綻はしないんじゃないかなぁ……」と社長が話しているのを聞き「あ、これは大丈夫だな」と感じたそうです。

 「クックパッドは安定して速度を出している。文化さえ共有してしまえば、信頼して実行していけば問題ないのではないか」とまとめ、セッションを締めました。

発表資料



  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • しんや(シンヤ)

    2010年末~2013年前半位までの期間で興味のある勉強会に頻繁に参加。参加してきた勉強会のレポートブログとTogetterをひたすらまとめ続け、まとめ職人(自称/他称含む)として暫く過ごしておりました。色々な縁あってDevelopers Summit 2013では『公募レポーター』も務めました。...

バックナンバー

連載:【デブサミ2014】セッションレポート

もっと読む

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5