Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
俺コン Vol.1 / Day. 1
2017/10/02 (Mon)
前⽥隼輔
SWETグループ
DeNA Co., Ltd.
iOSにおけるコード...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
n前⽥隼輔
• @duck8823
• 所属
• DeNA SWETグループ テスト基盤チーム
⾃⼰紹介
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
Dangerを利⽤したレビュー(前)チェック
• GitHub Bot を簡単に作るツール
• PRを静的チェック
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
Dangerを利⽤したレビュー(前)チェック
https://www.slideshare.net/ShunsukeMaeda/dangerpull-...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
Dangerでチェックしているルール
• タイトルが WIP になっていないか
• 変更があったディレクトリに応じて CIジョブ が実⾏されているか
...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
リソースの変更 => 画⾯のキャプチャ
• リソースファイルの変更で
画像取得ジョブ
• 画像はジョブ実⾏時に
⾃動プッシュ
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
Dangerでチェックしているルール
• タイトルが WIP になっていないか
• 変更があったディレクトリに応じて CIジョブ が実⾏されているか
...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
どのコミットステータスをみるのか
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
とあるPull Request... (実際の画⾯とは異なります)
• プロダクトコードの変更 commit 1
• テストコードの変更 commit...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
• プロダクトコードの変更 commit 1
• テストコードの変更 commit 2
ビルドしてテストして
• レビューしてええで
• README...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
• プロダクトコードの変更 commit 1
• テストコードの変更 commit 2
レビューお願い
• レビューしてええで
• README更新 ...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
• プロダクトコードの変更 commit 1
• テストコードの変更 commit 2
レビューお願い
• レビューしてええで
• README更新 ...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
• プロダクトコードの変更 commit 1
• テストコードの変更 commit 2
レビューお願い
• レビューしてええで
• README更新 ...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
• プロダクトコードの変更 commit 1
• テストコードの変更 commit 2
レビューお願い
• レビューしてええで
• README更新 ...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
過去の成功からの差分を⾒る
• プロダクトコードの変更 commit 1
• テストコードの変更 commit 2
レビューお願い
• レビューしてえ...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
DangerfileでGitHub API
• github.api でOctokitインスタンス取得
• GitHub API v3に対応した Ru...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
Dangerプラグインを作成するときの注意
• Dangerプラグインの引数なしメソッドは
danger local または danger pr でコ...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
Dangerでチェックしているルール
• タイトルが WIP になっていないか
• 変更があったディレクトリに応じて CIジョブ が実⾏されているか
...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
ディレクトリ構造 ≠ プロジェクト構造
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
ディレクトリ構造 ≠ プロジェクト構造
• プロジェクト( .xcodeproj ) への追加( コミット )漏れ
• プロジェクトターゲットが複数デ...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
ディレクトリ構造 ≠ プロジェクト構造
• プロジェクト( .xcodeproj ) への追加( コミット )漏れ
• プロジェクトターゲットが複数デ...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
Dangerfileで プロジェクトのファイルを⾒る
• DangerfileではGemが使える
=> xcodeproj https://rubyg...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
Dangerでのチェック
• 指定ディレクトリ以下にファイルが追加・削除された際に .xcodeproj
も更新されているかどうか
• 変更が...
Copyright	©	DeNA Co.,Ltd.	All	Rights	Reserved.
まとめ
• 最新のコミットだけでなくPR全体で判断する
• ディレクトリではなくプロジェクト構造をみる
• Dangerfile は Ruby DSL...
Upcoming SlideShare
Loading in …5
×

iOSにおけるコードレビューを一歩先へ進める

1,505 views

Published on

iOSにおけるコードレビューについて、
Dangerを使って自動化できる部分は自動化した話。

Published in: Software
  • Be the first to comment

iOSにおけるコードレビューを一歩先へ進める

  1. 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. 俺コン Vol.1 / Day. 1 2017/10/02 (Mon) 前⽥隼輔 SWETグループ DeNA Co., Ltd. iOSにおけるコードレビュー を⼀歩先へ進める
  2. 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. n前⽥隼輔 • @duck8823 • 所属 • DeNA SWETグループ テスト基盤チーム ⾃⼰紹介
  3. 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerを利⽤したレビュー(前)チェック • GitHub Bot を簡単に作るツール • PRを静的チェック
  4. 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerを利⽤したレビュー(前)チェック https://www.slideshare.net/ShunsukeMaeda/dangerpull- request?qid=4757fbc8-16c0-4f07-ae16- 6f0eb90ec7b2&v=&b=&from_search=1 https://www.slideshare.net/ShunsukeMaeda/pull-request- 76210799?qid=2a587e94-f5f8-4b79-aebd- 0b32b4b6f028&v=&b=&from_search=1 • Dangerの紹介 • PR時のチェックルール の紹介 • GitHubを⽤いて画⾯ 差分を視覚化
  5. 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerでチェックしているルール • タイトルが WIP になっていないか • 変更があったディレクトリに応じて CIジョブ が実⾏されているか (コミットステータスのチェック) • プロダクトコードの変更 => ビルド / テスト • テストコードの変更 => テスト • リソースファイルの変更 => 画⾯のキャプチャ • チケットのURLが貼られているか
  6. 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. リソースの変更 => 画⾯のキャプチャ • リソースファイルの変更で 画像取得ジョブ • 画像はジョブ実⾏時に ⾃動プッシュ
  7. 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerでチェックしているルール • タイトルが WIP になっていないか • 変更があったディレクトリに応じて CIジョブ が実⾏されているか (コミットステータスのチェック) • プロダクトコードの変更 => ビルド / テスト • テストコードの変更 => テスト • リソースファイルの変更 => 画⾯のキャプチャ • チケットのURLが貼られているか さらに掘り下げる
  8. 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. どのコミットステータスをみるのか
  9. 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. とあるPull Request... (実際の画⾯とは異なります) • プロダクトコードの変更 commit 1 • テストコードの変更 commit 2 ビルドしてテストして • レビューしてええで • README更新 commit 3 • レビューお願い • ビルドとテストやってから⾔って
  10. 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. • プロダクトコードの変更 commit 1 • テストコードの変更 commit 2 ビルドしてテストして • レビューしてええで • README更新 commit 3 • レビューお願い • ビルドとテストやってから⾔って ビルド テスト とあるPull Request... (実際の画⾯とは異なります)
  11. 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. • プロダクトコードの変更 commit 1 • テストコードの変更 commit 2 レビューお願い • レビューしてええで • README更新 commit 3 • レビューお願い • ビルドとテストやってから⾔って ビルド テスト とあるPull Request... (実際の画⾯とは異なります)
  12. 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. • プロダクトコードの変更 commit 1 • テストコードの変更 commit 2 レビューお願い • レビューしてええで • README更新 commit 3 • レビューお願い • ビルドとテストやってから⾔って ビルド テスト とあるPull Request... (実際の画⾯とは異なります)
  13. 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. • プロダクトコードの変更 commit 1 • テストコードの変更 commit 2 レビューお願い • レビューしてええで • README更新 commit 3 • レビューお願い • ビルドとテストしてから⾔って ビルド テスト とあるPull Request... (実際の画⾯とは異なります)
  14. 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. • プロダクトコードの変更 commit 1 • テストコードの変更 commit 2 レビューお願い • レビューしてええで • README更新 commit 3 • レビューお願い • ビルドとテストしてから⾔って ビルド テスト 直前のコミットステータス しかみない 無駄にCIを回す とあるPull Request... (実際の画⾯とは異なります)
  15. 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. 過去の成功からの差分を⾒る • プロダクトコードの変更 commit 1 • テストコードの変更 commit 2 レビューお願い • レビューしてええで • README更新 commit 3 • レビューお願い • レビューしてええで ビルド テスト HEAD - 前回成功間 でソースに変更が あるかチェック
  16. 16. Copyright © DeNA Co.,Ltd. All Rights Reserved. DangerfileでGitHub API • github.api でOctokitインスタンス取得 • GitHub API v3に対応した Rubyクライアント • トークンでログイン済み • Auto Paginate は true になっている • ステータス取得メソッドなど • Octokit経由で Pull Request の操作も可能( やりすぎは注意 )
  17. 17. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerプラグインを作成するときの注意 • Dangerプラグインの引数なしメソッドは danger local または danger pr でコールされる • Pull Request をクローズ / オープンする 引数なしメソッドを作ると...
  18. 18. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerでチェックしているルール • タイトルが WIP になっていないか • 変更があったディレクトリに応じて CIジョブ が実⾏されているか (コミットステータスのチェック) • プロダクトコードの変更 => ビルド / テスト • テストコードの変更 => テスト • リソースファイルの変更 => 画⾯のキャプチャ • チケットのURLが貼られているか さらに掘り下げる
  19. 19. Copyright © DeNA Co.,Ltd. All Rights Reserved. ディレクトリ構造 ≠ プロジェクト構造
  20. 20. Copyright © DeNA Co.,Ltd. All Rights Reserved. ディレクトリ構造 ≠ プロジェクト構造 • プロジェクト( .xcodeproj ) への追加( コミット )漏れ • プロジェクトターゲットが複数ディレクトリにまたがる場合 判断しづらい
  21. 21. Copyright © DeNA Co.,Ltd. All Rights Reserved. ディレクトリ構造 ≠ プロジェクト構造 • プロジェクト( .xcodeproj ) への追加( コミット )漏れ • プロジェクトターゲットが複数ディレクトリにまたがる場合 判断しづらい プロジェクト構造から判断する
  22. 22. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerfileで プロジェクトのファイルを⾒る • DangerfileではGemが使える => xcodeproj https://rubygems.org/gems/xcodeproj • 特定のターゲットのファイル⼀覧を取得できる https://github.com/CocoaPods/Xcodeproj
  23. 23. Copyright © DeNA Co.,Ltd. All Rights Reserved. Dangerでのチェック • 指定ディレクトリ以下にファイルが追加・削除された際に .xcodeproj も更新されているかどうか • 変更があったディレクトリプロジェクトターゲットに応じて CIジョブ が実⾏されているか
  24. 24. Copyright © DeNA Co.,Ltd. All Rights Reserved. まとめ • 最新のコミットだけでなくPR全体で判断する • ディレクトリではなくプロジェクト構造をみる • Dangerfile は Ruby DSL • 便利なライブラリはどんどん使おう( Octokit / xcodeproj )

×