http://cedec.cesa.or.jp/2016/session/PRD/11836.html
何故クックパッドのサービス開発の進化は止まらないのか庄司 嘉織∠
View Slide
庄司嘉織yoshiori2001組み込み系プログラマ2002Borland Conference Tokyoで発表2003 SI へ転職
2007Java-jaコミュニティ立ち上げ2009ドワンゴへ転職Web+DB PRESSで特集1 執筆2011ニコニコ静画(電子書籍)リリース2012 クックパッド へ転職
2014Developers Summitで発表(ベストスピーカー)Developers Summit 関西で基調講演2016CEDECで発表イマココ∠
クックパッドについて2,450,000cooking recipes61,090,000monthly unique visitors1,850,000PS user
世界のクックパッド
13languages55countries
世界一
世界一巨大なモノリシック Rails サイトでもある(かも知れない)https://speakerdeck.com/a_matsuda/the-recipe-for-the-worlds-largest-rails-monolith
rake stats>
なぜ Ǹ Ruby なのかスクリプト言語としては早い方Ȑ 多分 Java や ASP にするとサーバ台数半分くらいに出来る
コンピュータ資源を使い切りたいȐ素早く価値を届けたいサーバコストを安くしたい何を優先するか
素早く価値を届けたいコレは資源の有効活用やサーバコスト削減の努力を怠っているわけではありません。素早く価値を届けることを最優先事項とし、それを最大限活かせる形でコスト削減などを日々努力しています。
開発テストデプロイ
開発の基本的な流れ開発用ブランチを切る追加修正をしコミット∠∠
開発環境には本番のデータが常にレプリされている http://techlife.cookpad.com/entry/2014/10/03/110806
ダミーデータやテストデータではサービスの価値はわからないデータが大量なときに遅くなるなども発見
Pull Request を作成しレビューしてもらうリリースブランチにマージCI でチェック∠
レビュー対象リリース対象となるブランチにマージされるコードはすべてコードレビューされる必要がある。ただし、簡単な文言修正や緊急度の高いものはテストが通ればマージして良い。レビュー時必ず返信がほしい、もしくは修正してもらいたいものは [MUST] をつける。逆に今は修正しなくていいが次に弄るときは気にしておいてほしいことのような気軽なものには[nits][IMO]などをつけるレビュー相手他のチームとの連携や、専門分野外なので識者にレビューしてもらいたいときはその人達にも mention すること。ȑマージLGTM を貰ったら自身でマージする。また [MUST] が付いていない修正箇所はレビュー相手に再度確認を求める義務はなく自身の裁量で修正、マージして良い。
機械的にチェックできるのもは機械にチェックさせる
iOS, Android はdokumi 使ってチェックcookpad/dokumi
DeployGate などへの自動アップロードにも対応cookpad/dokumi実機ですぐチェックできるデザイナやディレクタも
もちろん Pull Request 毎に CI も通す
Pull Request を作成しレビューしてもらうリリースブランチにマージCI でチェック∠∠
2,000+20,000+FILESEXAMPLES̓MINITS cookpad/rrrspec分散テスト実行システム
本番デプロイCI が通ると Staging に自動的にデプロイされるので動作確認∠∠
sorah/mamiya150+hosts13sec高速デプロイシステムȐȐȐȐȐȐȐȐ
デプロイは開発者自身で行う業務時間中のみデプロイ出来るデプロイはチャットでボットに言うだけロールバックもボットに言うだけ
90+ 毎週約 90 個のPull Request が取り込まれている*クックパッド本体のみの数字です
30+ 課金や認証、ユーザーサービスなど30 以上のアプリケーションが動いている
10+ 毎日 10 回以上デプロイされている*クックパッド本体のみの数字です
「デプロイしたら終わり」ではない
スタッフだけ、特定のユーザーにだけ開発中の機能を簡単に公開できるcookpad/chanko安全に簡単に
ユーザーさんがご意見、ご感想を書くためのフォームをサービスの奥に隠すのではなくすぐに書ける場所に置くフォームへの投稿は専用のチャンネルなどに流すのではなく、常に眼に入るようにサービス担当者が普段から使っているチャンネルに流す
素早く価値を届けたい
2 年半前、発表した時はdokumi も rrrspec もmamiya も無かったしチャットでデプロイも出来なかった
進化する文化
情報共有Blog と Wiki の機能を持った社内ツールがある。Wiki だけでなく Blog があるのでストックスべき情報とフロー情報を分けて書ける。それが別のサービスとしてあるのではなく、同じ所にあるため全員それを見れば良いし誰でも自分の意見を発信できる
全社的に1Password が導入された
意見交換提案は最近は github/issues で行われる。議論として追いやすく、後から経緯を見ることもできる。チャットで話し始めたあとに issue に移行する場合もある
社長も創業者もアカウント持ってるし使っている
雑ɔhttp://techlife.cookpad.com/entry/2015/03/25/202709決して低品質な仕事をしたり、誰かに迷惑をかけたりすることを指しているわけではありません。日頃から発言のハードルが低く、気軽に意見できることが重要なのです。
zatsu リポジトリに雑に issue を立てていく
昼飯や飲みに行った時の貸し借りも
行動するユーザーのため、会社のために正しいと思ったら自分の意志で行動出来る。怒る人は居ないし、助言してくれたり助けてくれる。賛同したら一緒に動いてくれる。Ŏ
Tech ブログ英語版作ったぜ!と言ったらいろいろな人が書き出している
社外のエンジニアにも貢献することOSS 活動、執筆や講演などの社外への貢献も評価の軸の1つです。そういったことが許されているとかのレベルではなく会社がそれを望んでいます。
今日ご紹介した以外にも多数
オープンである
平等であるŎɔ
–Grace Hopper http://en.wikiquote.org/wiki/Grace_Hopper“It's easier to ask forgiveness than it is to getpermission.”