34
クックパッドの 開発プロセス クックパッド株式会社 トレンド調査ラボ 井上 寛之 プログラミングが好きな学生のための GitHub 勉強会 2015 ざっくり

クックパッドの開発プロセス

Embed Size (px)

Citation preview

クックパッドの開発プロセス

クックパッド株式会社 トレンド調査ラボ 井上 寛之

プログラミングが好きな学生のためのGitHub 勉強会 2015

ざっくり

井上 寛之• クックパッド株式会社 • トレンド調査ラボ エンジニア • 2014年 新卒入社(2年目) • 明日の食が見えるビッグデータサービス 「たべみる」の開発

• 興味のある技術 • 関係データベース、データエンジニアリング • セマンティック・ウェブ

inohiro

レシピ数 200 万品以上 月間利用者数 のべ 5,000 万人以上 プレミアム会員数 160 万人超 デプロイ 10+/day

話すこと• クックパッドにおける基本的な開発プロセス • クックパッドにおけるプルリベースの開発 • プルリ後に起こる開発者支援 • 良いプルリとは? • インターンシップのお知らせ

クックパッドにおける基本的な開発プロセス

Engineer Reviewers

CI (Auto Test, Build)

Pull Request Code Review

Trigger

Deploy

Merge

LGTM !!

クックパッドでのGitHubの使われ方• イシュー(Issues) • 画面UIに関するディスカッション • 一部お問い合わせ管理 • マイルストーン管理(主にアプリ)

• プルリ(Pull Requests) • 開発に関するほとんどがプルリベース

エンジニアだけでなくデザイナやディレクターサポートスタッフも

クックパッドにおけるプルリベースの開発

基本的に全部プルリ• クックパッドの開発でプルリされているもの • アプリケーションの開発(もちろん) • サーバーの設定 • データベーススキーマ • 開発者ブログの記事

GitHub Flow に似た何か• master ブランチ • topic/feature ブランチ

データベーススキーマをプルリ• 追加・変更するテーブル定義をプルリ • カラム名、型、デフォル値などをレビュー

ブログ記事をプルリ• チームごとにリポジトリを作り、そこへプルリ • 誰かが決めたルールではなく、自然発生的に(文化)

http://techlife.cookpad.com

プルリ後に起こる 開発者支援

プルリ後に起こる開発者支援• 継続的インテグレーション(CI) • プルリごとにテスト・ビルド・配信(アプリ) • RRRSpec • Dokumi(毒味)

• その他の取り組み • チェックリスト • 自動でアサイン

継続的インテグレーション(CI)• ソフトウェアの品質保持などのためにビルド・テストなどを継続的に実行すること • 失敗するテスト(バグ)や重たい処理に早く気づく

• 代表的なソフトウェア・サービス • Jenkins • Travis-CI • Circle-CI • wercker

Omukins

Projects

プルリごとにCIを回す

• プルリを作ると、コミット毎にCIが走る

RRRSpec - 速くて・安くて・安定したCI

• 背景: クックパッドのテスト項目が極めて多い • 単一マシン: 数時間 • 単一マシン(分散実行): 30~40分

• 解決: テストを分散して複数台のマシンで実行する • 実行時間時間: 6~10分 • 安くて高速なクラウドインスタンスを使う

https://github.com/cookpad/rrrspec

19,000+ テスト項目

Dokumi(毒味)• CIのひとつ • 現在はiOSアプリのプルリに対して

• 以下を自動でやってGitHubにコメントする • 静的解析(XcodeのAnalyze機能) • 自動テスト • プルリに追加する必要の無いファイルを指摘 • プルリにマイルストーンが設定されていない場合に指摘

テストが失敗したことをコメントで通知

静的解析の結果(警告やエラー)をコメントで通知

チェックリスト• モバイルアプリに対するプルリで プルリ後にやるべきことを自動的に列挙

• 例えば • デザイナチェック受けましたか?(UIが変わる時) • 実機チェックしましたか?

• 仕組み • GitHub Hook API + Sinatra • “プルリされたらチェックリストをコメントする”

実機でチェックするべきデバイス/OSの組み合わせ

ユーザーの状態が変わっても問題ない?

例)リストの要素が0個でも問題ない?

自動でアサイン• プルリされたら担当者が自動的にアサインされる • 仕事の属人化を防ぐ • とりあえずの担当者が決まる

あれこれしてほしいです

良いプルリとは?

Pull Request パターン• 社内Wikiにまとめられた、お手本プルリ集 • その中からいくつか選んだ • Before/After のスクリーンショットを貼る • 中間レビュー用に [WIP] としてプルリする

• ! 注意するべきところを指差し確認する

• 効果的なレビューコメント

Before/After のスクリーンショットを貼る

ディスカッション用に [WIP] としてプルリする

• WIP: Work In Progress • 新機能などの実装における、設計レビュー • コードを書き始めてから変更するのは大変 • インタフェース(メソッド名)、設計など • 考えている方向性を相談する

特に注意するべきところを指差し確認する !

効果的なレビューコメント• “[MUST] …” • 必ず直すべき、良くないコードに

• “[SHOULD] …” • こうするべきでは?と言ったコメント

• “[IMO] …” (In My Opinion) • 私ならこうします・こう思います。意見など

• “[nits] …” (nitpick) • typo やインデントミスなど、細かい指摘に

まとめ• GitHubおよびプルリベースの開発 • クックパッドの開発プロセスにおいて、 無くてはならない存在

• アプリケーションのコード以外もプルリしています • プルリの後にある様々な開発者支援

• 良いプルリとは? • 相手のことを考えた、説明的なプルリ

期間:8/18-9/9(17日間)

前半7日間

Webサービス

インフラ開発講義・課題

後半10日間

実践型講習

応募締め切り 28日(日) 23:59

クックパッド インターンシップ 検索

来週!!!詳しくはWebで!

あわせて読みたい(資料)• “なぜクックパッドは開発しやすいのか”

• https://speakerdeck.com/mirakui/developer-productivity-in-cookpad

• “Dokumi (日本語)” • http://techlife.cookpad.com/entry/2015/06/04/dokumi-ja

• “改善をより効果的に回すためのレビューへの取り組み” • http://www.slideshare.net/KazuMatsu/jasst-tohoku-2015matsuo

• “コードレビューに費やす時間を短くする” • http://techlife.cookpad.com/entry/2015/03/30/174713

• “クックパッド開発者ブログ” • http://techlife.cookpad.com/