SlideShare a Scribd company logo
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DangerでPull Request
レビューの指摘事項
を減らす
AKIBA.swift スーパー勉強会
April 17, 2017
前田隼輔
SWETグループ
DeNA Co., Ltd.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 前田隼輔
⁃ 所属
• DeNA システム本部 SWETグループ テスト基盤チーム
⁃ 経歴
• 3月に DeNA SWETグループ に Join
• それまでは SIer でWebアプリ開発
⁃ 普段の業務
• CI/CD環境整備、ツールの検証
• バージョンアップ自動検証システムの開発
2
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Pull Requestでこんなことありませんか?
3
ソースコード
いじってるけど
ビルドは通った?
masterブランチ
にはマージしないで
ください
対応するチケットの
URLを載せてください
ロジックや設計以外での指摘事項が多すぎる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
そこで
4
http://danger.systems/
https://github.com/danger/danger
Copyright © DeNA Co.,Ltd. All Rights Reserved.
5
🚫 Stop saying “you forgot to …”
in code review
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話しすること
 Dangerとは
 Dangerでできること
 SWET テスト基盤チームでの事例
6
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話しすること
 Dangerとは
 Dangerでできること
 SWET テスト基盤チームでの事例
7
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerとは
 Pull Request時の確認事項を自動化できるツール
 Dangerfile を作成し、その中で自由にチェックできる
 チェック結果はホスティングサービスに通知し、
Pull Request内の commit status に反映できる
 GitやGitホスティングサービスから情報を取得している
8
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerとは
 Pull Request時の確認事項を自動化できるツール
 Dangerfile を作成し、その中で自由にチェックできる
 チェック結果はホスティングサービスに通知し、
Pull Request内の commit status に反映できる
 GitやGitホスティングサービスから情報を取得している
9
Pull Requestの確認を自動化
するための基盤の提供
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerとは
10
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話しすること
 Dangerとは
 Dangerでできること
 SWET テスト基盤チームでの事例
11
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerでできること
 Dangerfile では Ruby構文 が使える
 ホスティングサービスへの通知のためのDSL
⁃ message / warn / fail / markdown
 git や github といった変数に情報が含まれている
 github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる
12
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerでできること
 Dangerfile では Ruby構文 が使える
 ホスティングサービスへの通知のためのDSL
⁃ message / warn / fail / markdown
 git や github といった変数に情報が含まれている
 github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる
13
Ruby と GitHub API
の知識があれば(なくてもググれば)
なんでもできる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerでできること
 Dangerfile では Ruby構文 が使える
 ホスティングサービスへの通知のためのDSL
⁃ message / warn / fail / markdown
 git や github といった変数に情報が含まれている
 github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる
14
目的を見失わないように
🚫 Stop saying “you forgot to …”
in code review
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話しすること
 Dangerとは
 Dangerでできること
 SWET テスト基盤チームでの事例
15
Copyright © DeNA Co.,Ltd. All Rights Reserved.
利用しているツールの組み合わせ
 Gitホスティングサービス
⁃ GitHub Enterprise
 CI / CDツール
⁃ Jenkins
⁃ + GitHub Pull Request Builder
 ビルドマネージャ
⁃ fastlane 🚀
16
Copyright © DeNA Co.,Ltd. All Rights Reserved.
GitHub Pull Request Builder + fastlane
 GitHub Pull Request Builder
⁃ PRのコメント(Phrase)でビルドを開始できる
 fastlane 🚀
⁃ モバイルアプリに便利なビルドマネージャ
lane名によって処理を振り分けることができる
17
${ghgrpCommentBody}
にPhraseが入る
Copyright © DeNA Co.,Ltd. All Rights Reserved.
GitHub Pull Request Builder + fastlane
 GitHub Pull Request Builder
⁃ commit status に phrase (= lane名) を指定
18
Contextを
Phraseにする
Copyright © DeNA Co.,Ltd. All Rights Reserved.
fastlaneには danger アクションが用意されている
bundle exec fastlane する場合は必ず
use_bundle_exec: false にしましょう
19
> fastlane actions danger
Copyright © DeNA Co.,Ltd. All Rights Reserved.
review レーンで Danger を実行
20
Copyright © DeNA Co.,Ltd. All Rights Reserved.
チームで用いているPull Requestルール
21
 .storyboard または .xibに変更があった場合、
画像が貼り付けられていること
 ソースディレクトリ に変更があった場合、
ビルド と シミュレータによるテスト が実行されていること
 テストディレクトリ に変更があった場合、
シミュレータによるテスト が実行されていること
 ビルド および テスト が実行されていた場合、
最新の結果が 成功 していること
 Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目
があり、テンプレートから変更されていること
 TODO のチェックが埋まっていること
 ビルド と テスト はラベルによってスキップ可能
 全てOK だった場合に In Review のラベルを追加
Copyright © DeNA Co.,Ltd. All Rights Reserved.
コード化
 .storyboard または .xibに変更があった場合、
PR本文中に画像が貼り付けられていること
 テストディレクトリ以下に変更があった場合、
シミュレータによるテスト が実行されていること
 ビルド および テスト が実行されていた場合、
最新の結果が 成功 していること
Copyright © DeNA Co.,Ltd. All Rights Reserved.
共通なものはプラグイン化
23
 Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目
があり、テンプレートから変更されていること
 TODO のチェックが埋まっていること
 プラグインの作成も簡単
> danger plugins create プラグイン名
で作られたプロジェクト(danger-プラグイン名)の
lib/プラグイン名/plugin.rb
を編集
 作成したプラグインの利用
Gemfileに追加するだけ
PR本文の形式は
プラグインでまとめて検証
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ラベルを自動的に貼る
24
 全てOK だった場合に In Review のラベルを追加
ラベルがある場合は安心してレビューできる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
最後に
25
 Danger を使って PRの形式や最低限の条件 をチェックを 自動化
 プロジェクトに Dangerfile を用意して
Pull Request レビュー(前)指摘事項を減らしましょう

More Related Content

PDF
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
PDF
イミュータブルデータモデルの極意
PPTX
世界一わかりやすいClean Architecture
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
PDF
シリコンバレーの「何が」凄いのか
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
PDF
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
PPTX
Spanner移行について本気出して考えてみた
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
イミュータブルデータモデルの極意
世界一わかりやすいClean Architecture
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
シリコンバレーの「何が」凄いのか
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
Spanner移行について本気出して考えてみた

What's hot (20)

PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
PPTX
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
PDF
クソコード動画「Managerクラス」解説
PDF
日本語テストメソッドについて
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
PDF
ドキュメントを作りたくなってしまう魔法のツールSphinx
PDF
開発速度が速い #とは(LayerX社内資料)
PPTX
Azure API Management 俺的マニュアル
PDF
Eclipseデバッガを活用するための31のtips
PDF
Machine learning CI/CD with OSS
PDF
意見が出ない振り返りからチームを自己組織化に近づけたふりかえり改善事例 #agilejapan
PDF
Webアプリを並行開発する際のマイグレーション戦略
PDF
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
PPTX
Dockerからcontainerdへの移行
PDF
リーン開発の本質 公開用
PDF
リクルートのWebサービスを支える「RAFTEL」
PDF
Y Combinator に学ぶスタートアップ強化プログラム (3 か月間でスタートアップを成長させる Accelerator Program の仕組み )
PPTX
サーバーレスで ガチ本番運用までやってるお話し
PDF
TLS, HTTP/2演習
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
クソコード動画「Managerクラス」解説
日本語テストメソッドについて
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ドキュメントを作りたくなってしまう魔法のツールSphinx
開発速度が速い #とは(LayerX社内資料)
Azure API Management 俺的マニュアル
Eclipseデバッガを活用するための31のtips
Machine learning CI/CD with OSS
意見が出ない振り返りからチームを自己組織化に近づけたふりかえり改善事例 #agilejapan
Webアプリを並行開発する際のマイグレーション戦略
競プロは社会の役に立たない+ベンチャー企業の話 (NPCA夏合宿OB講演).pdf
Dockerからcontainerdへの移行
リーン開発の本質 公開用
リクルートのWebサービスを支える「RAFTEL」
Y Combinator に学ぶスタートアップ強化プログラム (3 か月間でスタートアップを成長させる Accelerator Program の仕組み )
サーバーレスで ガチ本番運用までやってるお話し
TLS, HTTP/2演習
Ad

Similar to Dangerでpull requestレビューの指摘事項を減らす (20)

PPTX
Rails on GKEで運用するWebアプリケーションの紹介
PDF
iOSにおけるコードレビューを一歩先へ進める
PPTX
技術選択とアーキテクトの役割
PDF
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
PDF
2014-04-22 Ques #4 Automation Testing of Mobage Platform
PPTX
fastlane x iOSアプリのCI
PDF
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
PDF
ゼロからのプログラミングRails講座 Codeanywhere版
PPTX
Pull request時の画面差分取得の自動化
PDF
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
PPTX
DeNAが取り組む Software Engineer in Test
PDF
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
PDF
Automation with SoftLayer and Zabbix
PPTX
devsami kansai 2012 #c2
PPTX
技術選択とアーキテクトの役割 (要約版)
PPTX
バージョンアップの対応を軽減するためのサービスの構築
PDF
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
PPTX
iOSアプリにおけるリリースフローとCI環境
PDF
Rancherを活用して開発効率を上げる
PDF
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
Rails on GKEで運用するWebアプリケーションの紹介
iOSにおけるコードレビューを一歩先へ進める
技術選択とアーキテクトの役割
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
2014-04-22 Ques #4 Automation Testing of Mobage Platform
fastlane x iOSアプリのCI
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
ゼロからのプログラミングRails講座 Codeanywhere版
Pull request時の画面差分取得の自動化
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
DeNAが取り組む Software Engineer in Test
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
Automation with SoftLayer and Zabbix
devsami kansai 2012 #c2
技術選択とアーキテクトの役割 (要約版)
バージョンアップの対応を軽減するためのサービスの構築
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
iOSアプリにおけるリリースフローとCI環境
Rancherを活用して開発効率を上げる
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
Ad

Dangerでpull requestレビューの指摘事項を減らす

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. DangerでPull Request レビューの指摘事項 を減らす AKIBA.swift スーパー勉強会 April 17, 2017 前田隼輔 SWETグループ DeNA Co., Ltd.
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自己紹介  前田隼輔 ⁃ 所属 • DeNA システム本部 SWETグループ テスト基盤チーム ⁃ 経歴 • 3月に DeNA SWETグループ に Join • それまでは SIer でWebアプリ開発 ⁃ 普段の業務 • CI/CD環境整備、ツールの検証 • バージョンアップ自動検証システムの開発 2
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. Pull Requestでこんなことありませんか? 3 ソースコード いじってるけど ビルドは通った? masterブランチ にはマージしないで ください 対応するチケットの URLを載せてください ロジックや設計以外での指摘事項が多すぎる
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. そこで 4 http://danger.systems/ https://github.com/danger/danger
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. 5 🚫 Stop saying “you forgot to …” in code review
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話しすること  Dangerとは  Dangerでできること  SWET テスト基盤チームでの事例 6
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話しすること  Dangerとは  Dangerでできること  SWET テスト基盤チームでの事例 7
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerとは  Pull Request時の確認事項を自動化できるツール  Dangerfile を作成し、その中で自由にチェックできる  チェック結果はホスティングサービスに通知し、 Pull Request内の commit status に反映できる  GitやGitホスティングサービスから情報を取得している 8
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerとは  Pull Request時の確認事項を自動化できるツール  Dangerfile を作成し、その中で自由にチェックできる  チェック結果はホスティングサービスに通知し、 Pull Request内の commit status に反映できる  GitやGitホスティングサービスから情報を取得している 9 Pull Requestの確認を自動化 するための基盤の提供
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerとは 10
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話しすること  Dangerとは  Dangerでできること  SWET テスト基盤チームでの事例 11
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerでできること  Dangerfile では Ruby構文 が使える  ホスティングサービスへの通知のためのDSL ⁃ message / warn / fail / markdown  git や github といった変数に情報が含まれている  github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる 12
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerでできること  Dangerfile では Ruby構文 が使える  ホスティングサービスへの通知のためのDSL ⁃ message / warn / fail / markdown  git や github といった変数に情報が含まれている  github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる 13 Ruby と GitHub API の知識があれば(なくてもググれば) なんでもできる
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerでできること  Dangerfile では Ruby構文 が使える  ホスティングサービスへの通知のためのDSL ⁃ message / warn / fail / markdown  git や github といった変数に情報が含まれている  github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる 14 目的を見失わないように 🚫 Stop saying “you forgot to …” in code review
  • 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話しすること  Dangerとは  Dangerでできること  SWET テスト基盤チームでの事例 15
  • 16. Copyright © DeNA Co.,Ltd. All Rights Reserved. 利用しているツールの組み合わせ  Gitホスティングサービス ⁃ GitHub Enterprise  CI / CDツール ⁃ Jenkins ⁃ + GitHub Pull Request Builder  ビルドマネージャ ⁃ fastlane 🚀 16
  • 17. Copyright © DeNA Co.,Ltd. All Rights Reserved. GitHub Pull Request Builder + fastlane  GitHub Pull Request Builder ⁃ PRのコメント(Phrase)でビルドを開始できる  fastlane 🚀 ⁃ モバイルアプリに便利なビルドマネージャ lane名によって処理を振り分けることができる 17 ${ghgrpCommentBody} にPhraseが入る
  • 18. Copyright © DeNA Co.,Ltd. All Rights Reserved. GitHub Pull Request Builder + fastlane  GitHub Pull Request Builder ⁃ commit status に phrase (= lane名) を指定 18 Contextを Phraseにする
  • 19. Copyright © DeNA Co.,Ltd. All Rights Reserved. fastlaneには danger アクションが用意されている bundle exec fastlane する場合は必ず use_bundle_exec: false にしましょう 19 > fastlane actions danger
  • 20. Copyright © DeNA Co.,Ltd. All Rights Reserved. review レーンで Danger を実行 20
  • 21. Copyright © DeNA Co.,Ltd. All Rights Reserved. チームで用いているPull Requestルール 21  .storyboard または .xibに変更があった場合、 画像が貼り付けられていること  ソースディレクトリ に変更があった場合、 ビルド と シミュレータによるテスト が実行されていること  テストディレクトリ に変更があった場合、 シミュレータによるテスト が実行されていること  ビルド および テスト が実行されていた場合、 最新の結果が 成功 していること  Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目 があり、テンプレートから変更されていること  TODO のチェックが埋まっていること  ビルド と テスト はラベルによってスキップ可能  全てOK だった場合に In Review のラベルを追加
  • 22. Copyright © DeNA Co.,Ltd. All Rights Reserved. コード化  .storyboard または .xibに変更があった場合、 PR本文中に画像が貼り付けられていること  テストディレクトリ以下に変更があった場合、 シミュレータによるテスト が実行されていること  ビルド および テスト が実行されていた場合、 最新の結果が 成功 していること
  • 23. Copyright © DeNA Co.,Ltd. All Rights Reserved. 共通なものはプラグイン化 23  Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目 があり、テンプレートから変更されていること  TODO のチェックが埋まっていること  プラグインの作成も簡単 > danger plugins create プラグイン名 で作られたプロジェクト(danger-プラグイン名)の lib/プラグイン名/plugin.rb を編集  作成したプラグインの利用 Gemfileに追加するだけ PR本文の形式は プラグインでまとめて検証
  • 24. Copyright © DeNA Co.,Ltd. All Rights Reserved. ラベルを自動的に貼る 24  全てOK だった場合に In Review のラベルを追加 ラベルがある場合は安心してレビューできる
  • 25. Copyright © DeNA Co.,Ltd. All Rights Reserved. 最後に 25  Danger を使って PRの形式や最低限の条件 をチェックを 自動化  プロジェクトに Dangerfile を用意して Pull Request レビュー(前)指摘事項を減らしましょう