SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
はじめての
Pull Request
株式会社エクストーン 豊田陽一
今日のお話
▰ Pull Request時に気を付けることにつ
いて話します!
▰ コミットの単位
▰ コミットコメント
▰ Pull Requestに書くこと
▰ レビュー依頼前に
Pull Request
▰ GitHubの主たる機能
▰ ブランチのマージを依頼
▰ クローンしたプロジェクトから本家への反映依頼を出す
用途で使われるので 、Pull Requestと呼ばれる
▰ GitLabではMerge Requestという名前で同等の機能
が提供されている
Pull Request (2)
▰ 目的
▰ 自分の開発したコードをプロジェクトに反映させ
るための手段
▰ コードレビューを行うことで、必ずプロジェクトに反映さ
れる前に人の目が入る
▰ 機能単位でPull Requestを作ることによって、機能と
コードの差分が明確になる
コードレビュー
▰ 他人のコードの問題点を指摘する
▰ よりよい設計がある
▰ 考慮すべき点が抜けている
▰ etc.
▰ 必ずしも不具合がないことを担保するものでは
ない
▰ LGTM! (Looks good to me!)
コードレビュー (2)
▰ 問題点
▰ レビュアーの時間がかかる
▰ 力関係がレビュアー<レビュイーの場合
▰ 自分よりできる人のコードについて正しく指摘できる自
信がない…
レビュイーが心がけること
Pull Requestの単位
▰ 複数の課題を解決しない
▰ 〇〇の機能を追加して、ついでに依存ライブラリ
のバージョンを上げた等
▰ 依存ライブラリのバージョン更新だけ別の Pull
Requestを作るべき
▰ レビュアーは「そのコードが何のために追加され
たのか」を知らない
Commitの単位
▰ コミットコメントで説明できる単位でコミッ
トを分割する
▰ Commitが大きいとコンフリクト時の対応が大変
になる
▰ レビュアーがコミット単位でコードの差分を読め
るようになる
Commitの単位 (2)
▰ Conventional Commitの活用
▰ コミットコメントの前に接頭語をつける
▰ fix: 不具合の修正
▰ feat: 機能の追加
▰ BREAKING CHANGE: 非互換性をもたらすような重大
な変更
▰ 接頭語に悩む場合、適切な単位でCommitが作
られていない可能性が高い
Commitの単位 (3)
▰ 後から修正できるので開発中は気軽に
Commitしてもよい
▰ git rebase -i
▰ 個々のコミットをインタラクティブに修正・結合等が行え
る
Pull Request本文
▰ What(何を)とHow(どのように)を明確
に仕様
▰ Whatに関しては関連Issueと紐づける
▰ #123とか書けば勝手にリンクされる
▰ この問題に対してどのように対処したかを説明
する
▰ 複数の選択肢から実現方法を選んだ場合は、その理
由等も書く
▰ 説明できないコードを書いてはいけない
Pull Request本文 (2)
▰ WIP (Work in Progress)の活用
▰ 作業中のブランチでもPull Request作ってかま
わない
▰ 自分のコードに対して意見を募る
▰ Pull Requestが作られないと、他の人のコードが読み
づらい
レビュー依頼前に
▰ レビュアーはデバッガではない
▰ 動くコードをレビューに上げよう
▰ テストが一通りパスしている
▰ 動作確認を行っている
▰ 行った動作確認の方法も Pull Requestに記述す
るといい
▰
レビュー依頼前に (2)
▰ レビュアーは静的解析ツールではない
▰ コーディング規約に従ったコードを作ろう
▰ インデント幅が違う、変数名が大文字で始まっている、
改行がない、等の規約をレビュアーに突っ込ませない
▰ 静的解析ツールを使おう
▰ jslint, rubocop, etc.
レビュアーが心がけること
時間をあまり使わない
▰ コードとにらめっこしても分からないこと
は素直に書いた人に話を聞く
▰ それが出来ない環境の人が相手の場合、修正
依頼でPull Requestの説明を求める
些細なことに突っ込まない
▰ 突っ込みをしなければいけないわけで
はない
▰ 本質的なことからレビューするように心がけよう
▰ コーディング規約等の問題なら、環境から整備
しよう
▰ どうでもいい突っ込みを入れて仕事した気にな
らない
人間性重要
▰ 必要以上に強い言葉を使わない
▰ レビュイーを委縮させない
▰ 相手の能力・選択を尊重する
▰ 修正をしてもらいたい場合は、ちゃんとレビュ
イーに納得してもらうこと
レビュアーが質問してもいい
▰ 分からないことは素直に聞こう
▰ 内容の共有が出来るだけでも価値がある
▰ 「直さなきゃいけない」というプレッシャーに悩ま
される必要はない
まとめ
▰ Pull Requestの心がけ
▰ Pull Requestの単位に気を付ける
▰ Commitの単位に気を付ける
▰ ちゃんと説明する
▰ レビュアーは必要以上に時間を使わない
▰ 人間性大事

Contenu connexe

Similaire à はじめてのPull Request

今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithub
lion-man
 
Git hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうかGit hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうか
Kakigi Katuyuki
 
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011PHPカンファレンス関西 2011
PHPカンファレンス関西 2011
Takako Miyagawa
 

Similaire à はじめてのPull Request (20)

今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
チャットボットの定義と設計
チャットボットの定義と設計チャットボットの定義と設計
チャットボットの定義と設計
 
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウCircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
 
今日から始めるGithub
今日から始めるGithub今日から始めるGithub
今日から始めるGithub
 
プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話プログラミング支援AI GitHub Copilot すごいの話
プログラミング支援AI GitHub Copilot すごいの話
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
 
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
 
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE NotifyについてLINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
 
Wantedlyのテスト事情
Wantedlyのテスト事情Wantedlyのテスト事情
Wantedlyのテスト事情
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
 
Git hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうかGit hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうか
 
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
 
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
 
Github of project
Github of projectGithub of project
Github of project
 
Wcosaka2012concrete5
Wcosaka2012concrete5Wcosaka2012concrete5
Wcosaka2012concrete5
 
PHPカンファレンス関西 2011
PHPカンファレンス関西 2011PHPカンファレンス関西 2011
PHPカンファレンス関西 2011
 
Line Creators Studio Android With Kotlin
Line Creators Studio Android With KotlinLine Creators Studio Android With Kotlin
Line Creators Studio Android With Kotlin
 

Plus de Yoichi Toyota

Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーンForkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Yoichi Toyota
 

Plus de Yoichi Toyota (20)

超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
 
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押しジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
 
ライブラリを作る思考回路
ライブラリを作る思考回路ライブラリを作る思考回路
ライブラリを作る思考回路
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
 
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことオブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
 
Ruby is comming ractor編
Ruby is comming ractor編Ruby is comming ractor編
Ruby is comming ractor編
 
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねんarray.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞ
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話
 
足し算をつくろう
足し算をつくろう足し算をつくろう
足し算をつくろう
 
React Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうReact Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
 
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのかActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
 
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
 
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
 
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
 
Docker in production
Docker in productionDocker in production
Docker in production
 
How to fight against “full scratch disease”
How to fight against  “full scratch disease”How to fight against  “full scratch disease”
How to fight against “full scratch disease”
 
Amazon lexを触ってみた
Amazon lexを触ってみたAmazon lexを触ってみた
Amazon lexを触ってみた
 
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーンForkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
 

はじめてのPull Request