Your SlideShare is downloading. ×
0
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
クックパッドの開発プロセス
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

97

Published on

クックパッドの開発プロセスについて、"プログラミングが好きな学生のためのGitHub勉強会2015" で発表した内容です

クックパッドの開発プロセスについて、"プログラミングが好きな学生のためのGitHub勉強会2015" で発表した内容です

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
97
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. クックパッドの
 開発プロセス クックパッド株式会社 トレンド調査ラボ 井上 寛之 プログラミングが好きな学生のための
 GitHub 勉強会 2015 ざっくり
  • 2. 井上 寛之 • クックパッド株式会社 • トレンド調査ラボ エンジニア • 2014年 新卒入社(2年目) • 明日の食が見えるビッグデータ「たべみる」の開発 • 興味のある技術 • 関係データベース、データエンジニアリング • セマンティック・ウェブ inohiro
  • 3. レシピ数 200 万品以上 月間利用者数 のべ 5,000 万人以上 プレミアム会員数 160 万人超 デプロイ 10+/day
  • 4. 話すこと • クックパッドにおける基本的な開発プロセス • クックパッドにおけるプルリベースの開発 • プルリ後に起こる開発者支援 • 良いプルリとは? • インターンシップのお知らせ
  • 5. クックパッドにおける
 基本的な開発プロセス
  • 6. Engineer Reviewers CI (Auto Test, Build) Pull Request Code Review Trigger Deploy Merge LGTM !!
  • 7. クックパッドでのGitHubの使われ方 • イシュー(Issues) • 画面UIに関するディスカッション • 一部お問い合わせ管理 • マイルストーン管理(主にアプリ) • プルリ(Pull Requests) • 開発に関するほとんどがプルリベース エンジニアだけでなく
 デザイナやディレクター サポートスタッフも
  • 8. クックパッドにおける
 プルリベースの開発
  • 9. 基本的に全部プルリ • クックパッドの開発でプルリされているもの • アプリケーションの開発(もちろん) • サーバーの設定 • データベーススキーマ • 開発者ブログの記事
  • 10. GitHub Flow に似た何か • master ブランチ • topic/feature ブランチ
  • 11. データベーススキーマをプルリ • 追加・変更するテーブル定義をプルリ • カラム名、型、デフォル値などをレビュー
  • 12. ブログ記事をプルリ • チームごとにリポジトリを作り、そこへプルリ • 誰かが決めたルールではなく、自然発生的に(文化) http://techlife.cookpad.com
  • 13. プルリ後に起こる 開発者支援
  • 14. プルリ後に起こる開発者支援 • 継続的インテグレーション(CI) • プルリごとにテスト・ビルド・配信(アプリ) • RRRSpec • Dokumi(毒味) • その他の取り組み • チェックリスト • 自動でアサイン
  • 15. 継続的インテグレーション(CI) • ソフトウェアの品質保持などのために
 ビルド・テストなどを継続的に実行すること • 失敗するテスト(バグ)や重たい処理に早く気づく • 代表的なソフトウェア・サービス • Jenkins • Travis-CI • Circle-CI • wercker
  • 16. Omukins Projects
  • 17. プルリごとにCIを回す • プルリを作ると、コミット毎にCIが走る
  • 18. RRRSpec - 速くて・安くて・安定したCI • 背景: クックパッドのテスト項目が極めて多い • 単一マシン: 数時間 • 単一マシン(分散実行): 30 40分 • 解決: テストを分散して複数台のマシンで実行する • 実行時間時間: 6 10分 • 安くて高速なクラウドインスタンスを使う https://github.com/cookpad/rrrspec 19,000+ テスト項目
  • 19. Dokumi(毒味) • CIのひとつ • 現在はiOSアプリのプルリに対して • 以下を自動でやってGitHubにコメントする • 静的解析(XcodeのAnalyze機能) • 自動テスト • プルリに追加する必要の無いファイルを指摘 • プルリにマイルストーンが設定されていない場合に指摘
  • 20. テストが失敗したことをコメントで通知 静的解析の結果(警告やエラー)をコメントで通知
  • 21. チェックリスト • モバイルアプリに対するプルリで
  プルリ後にやるべきことを自動的に列挙 • 例えば • デザイナチェック受けましたか?(UIが変わる時) • 実機チェックしましたか? • 仕組み • GitHub Hook API + Sinatra • プルリされたらチェックリストをコメントする
  • 22. 実機でチェックするべき
 デバイス/OSの組み合わせ ユーザーの状態が変わっても問題ない? 例)リストの要素が0個でも問題ない?
  • 23. 自動でアサイン • プルリされたら担当者が自動的にアサインされる • 仕事の属人化を防ぐ • とりあえずの担当者が決まる あれこれしてほしいです
  • 24. 良いプルリとは?
  • 25. Pull Request パターン • 社内Wikiにまとめられた、お手本プルリ集 • その中からいくつか選んだ • Before/After のスクリーンショットを貼る • 中間レビュー用に [WIP] としてプルリする • ! 注意するべきところを指差し確認する • 効果的なレビューコメント
  • 26. Before/After の
 スクリーンショットを貼る
  • 27. ディスカッション用に [WIP] としてプルリする • WIP: Work In Progress • 新機能などの実装における、設計レビュー • コードを書き始めてから変更するのは大変 • インタフェース(メソッド名)、設計など • 考えている方向性を相談する
  • 28. 特に注意するべきところを
 指差し確認する !
  • 29. 効果的なレビューコメント • [MUST] … • 必ず直すべき、良くないコードに • [SHOULD] … • こうするべきでは?と言ったコメント • [IMO] … (In My Opinion) • 私ならこうします・こう思います。意見など • [nits] … (nitpick) • typo やインデントミスなど、細かい指摘に
  • 30. まとめ • GitHubおよびプルリベースの開発 • クックパッドの開発プロセスにおいて、
  無くてはならない存在 • アプリケーションのコード以外もプルリしています • プルリの後にある様々な開発者支援 • 良いプルリとは? • 相手のことを考えた、説明的なプルリ
  • 31. 期間:8/18-9/9(17日間) 前半7日間 Webサービス インフラ開発講義・課題 後半10日間 実践型講習
  • 32. 応募締め切り 28日(日) 23:59 クックパッド インターンシップ 検索 来週!!!詳しくはWebで!
  • 33. あわせて読みたい(資料) • なぜクックパッドは開発しやすいのか • 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/

×