SlideShare a Scribd company logo
takemikamiʼs note ‒ http://takemikami.com/
GitHubの機能を活⽤した
GitHub Flowによる開発の進め⽅
Copyright (C) Takeshi Mikami. All rights reserved. 1
三上 威 - @takemikami
アーリース情報技術株式会社 代表取締役 社⻑
2019.6.12
takemikamiʼs note ‒ http://takemikami.com/
はじめに
•テーマ
GitHubの機能を活⽤した
GitHub Flowによる開発の進め⽅
•内容
• GitHub Flowの概要
• GitHub Flowによる開発の流れ
• GitHub FlowのためのGitHub機能の活⽤
Copyright (C) Takeshi Mikami. All rights reserved. 2
本資料で説明する内容の概要を⽰します
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowの概要
Copyright (C) Takeshi Mikami. All rights reserved. 3
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowとは
• 次のフローで運⽤
• masterブランチは常にデプロイ可能な状態であること
• 開発を始める時は、masterからブランチを切り、開発内容がわかるようにブラン
チ名をつける
• ローカルPCの作業は、同じブランチ名でサーバ(GitHub)にpushする
• 意⾒を求めたり、教えて欲しいことがある場合は、Pull Requestを使う
• 開発ブランチは、誰かにレビューを依頼して承認をもらったら、masterにマージ
できる
• masterにマージしたら、直ちにデプロイする
Copyright (C) Takeshi Mikami. All rights reserved. 4
GitHub Flowの概要
GitHub Flowを紹介します
「シンプルさ」に特徴がある
Gitによる開発ワークフローのモデル
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowのブランチモデル
• GitHub Flowのブランチモデルは以下のようになります
Copyright (C) Takeshi Mikami. All rights reserved. 5
GitHub Flowの概要
GitHub Flowのブランチモデルを⽰します
commit
branch
branch
commit
merge
merge
(rebase) merge
commit
master branch
descriptive branch
descriptive branch
開発を始める時は
masterからブランチを切る
masterにマージしたら
直ちにデプロイ
レビュー承認をもらったら
masterにマージできる
masterは常に
デプロイ可能な状態に
開発中はPullRequestを使って相談
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowによる開発の流れ
Copyright (C) Takeshi Mikami. All rights reserved. 6
takemikamiʼs note ‒ http://takemikami.com/
GitHub Flowによる開発の流れ
• GitHub Flowでは、次の流れで開発を⾏います
• 開発の着⼿
• ローカルPCでの実装作業
• GitHubへのpush
• Pull Requestの発⾏
• Pull Requestのステータス確認
• Reviewの依頼
• Reviewの実施・承認
• 不具合や指摘事項の対応
• Mergeの実施
• デプロイ
Copyright (C) Takeshi Mikami. All rights reserved. 7
GitHub Flowによる開発の流れ
GitHub Flowによる開発の流れを⽰します
takemikamiʼs note ‒ http://takemikami.com/
GitHub FlowとCI・レビュー・デプロイの関連
Copyright (C) Takeshi Mikami. All rights reserved. 8
GitHub Flowによる開発の流れ
GitHub FlowとCI・レビュー・デプロイの関連を図に⽰します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:開発の着⼿
Copyright (C) Takeshi Mikami. All rights reserved. 9
GitHub Flowによる開発の流れ
開発を着⼿する際に⾏う⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
開発着⼿時は、
masterブランチをGitHubからローカルPCに取り込み、
ブランチを切ります
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:開発の着⼿
• ローカルPCにrepositoryをcloneします
Copyright (C) Takeshi Mikami. All rights reserved. 10
GitHub Flowによる開発の流れ
開発を着⼿する際に⾏う⼿続きを説明します
$ git clone git@github.com:<organization>/<repository>.git
$ cd <repository>
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:開発の着⼿
• masterから開発作業⽤のブランチを切ります
• ローカルPCのブランチは以下のようになります
Copyright (C) Takeshi Mikami. All rights reserved. 11
GitHub Flowによる開発の流れ
開発を着⼿する際に⾏う⼿続きを説明します
$ git checkout -b fix-something
$ git branch
* fix-something
master
ブランチ名は、開発する内容を⽰す適当な名称にします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:ローカルPCでの実装作業
Copyright (C) Takeshi Mikami. All rights reserved. 12
GitHub Flowによる開発の流れ
ローカルPCでの実装作業を⾏う際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
ファイルを修正し
開発作業⽤のブランチにcommitします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:ローカルPCでの実装作業
• ローカルPC上でファイルを変更し、commitします
Copyright (C) Takeshi Mikami. All rights reserved. 13
GitHub Flowによる開発の流れ
ローカルPCでの実装作業を⾏う際の⼿続きを説明します
$ git commit <file> -m <comment>
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:GitHubへのpush
Copyright (C) Takeshi Mikami. All rights reserved. 14
GitHub Flowによる開発の流れ
GitHubへpushする際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
開発作業⽤のブランチを
GitHubにpushします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:GitHubへのpush
• ファイルの変更&commitを⾏ったら、変更をGitHubにpushします
Copyright (C) Takeshi Mikami. All rights reserved. 15
GitHub Flowによる開発の流れ
GitHubへpushする際の⼿続きを説明します
$ git push origin fix-something
GitHubにブランチが作成されます
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestの発⾏
Copyright (C) Takeshi Mikami. All rights reserved. 16
GitHub Flowによる開発の流れ
GitHubでPull Requestを作成する際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
GitHubでPull Requestを作成します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestの発⾏
Copyright (C) Takeshi Mikami. All rights reserved. 17
GitHub Flowによる開発の流れ
GitHubでPull Requestを作成する際の⼿続きを説明します
• GitHubのUIからPull Requestを作成します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestのステータス確認
Copyright (C) Takeshi Mikami. All rights reserved. 18
GitHub Flowによる開発の流れ
GitHubでPull Requestのステータスを確認する際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
Pull Requestの⽣成後、⾃動的に、
CIによるテスト・開発環境へのデプロイを
⾏うようにしておきます
必要に応じて
Pull Requestのコメント機能を使い、
開発に関する相談を⾏います
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestのステータス確認
• CIサービスとの連携で、Pull Requestからテスト結果を確認できます
• 全てのcheckがpassedになるまでコードの修正を⾏います
Copyright (C) Takeshi Mikami. All rights reserved. 19
GitHub Flowによる開発の流れ
GitHubでPull Requestのステータスを確認する際の⼿続きを説明します
※Deployment APIを利⽤するとデプロイの状況も確認できます
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Reviewの依頼
Copyright (C) Takeshi Mikami. All rights reserved. 20
GitHub Flowによる開発の流れ
GitHubでReviewを依頼する際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
⾃動テスト・セルフレビュー・動作確認が
完了したらReviewを依頼します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Reviewの依頼
• ⾃動テスト・セルフレビュー・動作確認が完了したら、
GitHubのUIからReviewを依頼します
Copyright (C) Takeshi Mikami. All rights reserved. 21
GitHub Flowによる開発の流れ
GitHubでReviewを依頼する際の⼿続きを説明します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Reviewの実施・承認
Copyright (C) Takeshi Mikami. All rights reserved. 22
GitHub Flowによる開発の流れ
GitHubでReviewを実施する際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
Reviewerは
コード差分・開発環境のモジュールを参照して
レビューを⾏います
問題なければApproveします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Reviewの実施・承認
• ReviewerはGitHubのUIから、コメントやApproveを⾏います
Copyright (C) Takeshi Mikami. All rights reserved. 23
GitHub Flowによる開発の流れ
GitHubでReviewを実施する際の⼿続きを説明します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:不具合や指摘事項の対応
• テストやレビューで検出した不具合や指摘事項は、
修正してcommit/pushを⾏います
→「ローカルPCでの実装作業」〜「GitHubへのpush」と同じ⼿続き
Copyright (C) Takeshi Mikami. All rights reserved. 24
GitHub Flowによる開発の流れ
不具合や指摘事項の対応する際の⼿続きを説明します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:不具合や指摘事項の対応
• masterブランチに変更があった場合は、以下のように追従します
• ローカルPCのmasterブランチを最新化します
• 開発作業⽤ブランチをmasterからrebaseします
• conflictが無ければ、GitHubにforce pushします
Copyright (C) Takeshi Mikami. All rights reserved. 25
GitHub Flowによる開発の流れ
不具合や指摘事項の対応する際の⼿続きを説明します
$ git checkout master
$ git pull
$ git checkout fix-something
$ git rebase master
$ git push origin fix-something -f
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:不具合や指摘事項の対応
• rebase時にconflictが発⽣した場合は、以下のように解消させます
• conflictが発⽣すると以下のように表⽰されます
• conflictしているファイルを修正した後、rebaseをcontinueします
Copyright (C) Takeshi Mikami. All rights reserved. 26
GitHub Flowによる開発の流れ
不具合や指摘事項の対応する際の⼿続きを説明します
$ git rebase master
※省略※
CONFLICT (content): Merge conflict in README.md
※省略※
$ git st
※省略※
both modified: README.md
※省略※
$ git add README.md
$ git rebase --continue
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Mergeの実施
Copyright (C) Takeshi Mikami. All rights reserved. 27
GitHub Flowによる開発の流れ
GitHubでmasterへのMergeを⾏う際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
テスト・レビューで問題が無くなったら
(=本番deploy可能な状態になったら)、
masterブランチにmergeします
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Mergeの実施
• GitHubのUIからMergeを⾏います
Copyright (C) Takeshi Mikami. All rights reserved. 28
GitHub Flowによる開発の流れ
GitHubでmasterへのMergeを⾏う際の⼿続きを説明します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:デプロイ
Copyright (C) Takeshi Mikami. All rights reserved. 29
GitHub Flowによる開発の流れ
デプロイを⾏う際の⼿続きを説明します
Developer GitHub Reviewer CI
development
environment
staging
environment
clone/pull (master branch)
branch
commit
push (descriptive branch)
clone
send status(OK/NG)
auto test
deploy
review request
check check
approve
merge deploy
pull request
masterブランチにmergeしたら、
⾃動でstaging環境にdeployします
takemikamiʼs note ‒ http://takemikami.com/
GitHub FlowのためのGitHub機能の活⽤
Copyright (C) Takeshi Mikami. All rights reserved. 30
takemikamiʼs note ‒ http://takemikami.com/
GitHub FlowのためのGitHub機能の活⽤
• GitHub Flowを効率よく運⽤するためのGitHub機能を紹介します
• Pull Request機能
→masterブランチへのmergeする前の承認ワークフローとして使⽤
• BranchのProtect機能
→ステータス正常&レビュー済みPull Request以外からの変更を禁⽌し、
masterブランチを常にデプロイ可能な状態に保つために使⽤
• CIとの連携機能
→Pull Requestの⽣成後のテスト実⾏を⾃動化するために使⽤
• CDとの連携機能
→開発環境・本番環境へのデプロイを⾃動化するために使⽤
Copyright (C) Takeshi Mikami. All rights reserved. 31
GitHub FlowのためのGitHub機能の活⽤
GitHub Flowを効率よく運⽤するためのGitHub機能を紹介します
takemikamiʼs note ‒ http://takemikami.com/
開発の流れ:Pull Requestのステータス確認
• CIサービスとの連携で、Pull Requestからテスト結果を確認できます
• 全てのcheckがpassedになるまでコードの修正を⾏います
Copyright (C) Takeshi Mikami. All rights reserved. 32
GitHub FlowのためのGitHub機能の活⽤
GitHubでPull Requestのステータスを確認する際の⼿続きを説明します
※Deployment APIを利⽤するとデプロイの状況も確認できます
CIとの連携機能によって、
テスト結果をステータスに反映
BranchのProtect機能によって、
ステータス正常&レビュー済みで無ければ、
Merge出来ないように制御
takemikamiʼs note ‒ http://takemikami.com/
BranchのProtect機能
• GitHub Flowでは
『masterブランチは常にデプロイ可能な状態であること』が必要
→ masterブランチに誤った修正が⼊らないようにしたい
• BranchのProtect機能で以下のような条件を設定
• レビューを必須にする
• codeownerを設定しておくと、指定レビューアのレビューを必須に出来る
• CIの成功を必須にする
• 「Require status checks to pass before merging」以下で対象とするCIを指定可能
• Pull Requestをマージできる⼈を制限する
Copyright (C) Takeshi Mikami. All rights reserved. 33
GitHub FlowのためのGitHub機能の活⽤
BranchのProtect機能で設定したい項⽬について⽰します

More Related Content

PDF
仮想化環境におけるパケットフォワーディング
PDF
CyberAgentのインフラについて メディア事業編 #catechchallenge
PDF
RedmineのFAQとアンチパターン集
PPTX
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
ODP
Guide To AGPL
PDF
webエンジニアのためのはじめてのredis
PPTX
本当は恐ろしい分散システムの話
PDF
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
仮想化環境におけるパケットフォワーディング
CyberAgentのインフラについて メディア事業編 #catechchallenge
RedmineのFAQとアンチパターン集
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
Guide To AGPL
webエンジニアのためのはじめてのredis
本当は恐ろしい分散システムの話
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)

What's hot (20)

PDF
Redmine にいろいろ埋め込んでみた
PDF
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
BigQueryの課金、節約しませんか
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
PDF
Dockerからcontainerdへの移行
PDF
Dockerイメージ管理の内部構造
PDF
DockerとPodmanの比較
PDF
RHEL7/CentOS7 NetworkManager徹底入門
PDF
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
PDF
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PPTX
BuildKitによる高速でセキュアなイメージビルド
PDF
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
PDF
Java仮想マシンの実装技術
PDF
PHP7の内部実装から学ぶ性能改善テクニック
PDF
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
PDF
Ansible 入門 #01 (初心者向け)
Redmine にいろいろ埋め込んでみた
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
コンテナ未経験新人が学ぶコンテナ技術入門
BigQueryの課金、節約しませんか
Java開発の強力な相棒として今すぐ使えるGroovy
Dockerからcontainerdへの移行
Dockerイメージ管理の内部構造
DockerとPodmanの比較
RHEL7/CentOS7 NetworkManager徹底入門
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Db2 v11.5.4 高可用性構成 & HADR 構成パターンご紹介
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
新入社員のための大規模ゲーム開発入門 サーバサイド編
BuildKitによる高速でセキュアなイメージビルド
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
Java仮想マシンの実装技術
PHP7の内部実装から学ぶ性能改善テクニック
ARM CPUにおけるSIMDを用いた高速計算入門
Ansible 入門 #01 (初心者向け)
Ad

Similar to GitHubの機能を活用したGitHub Flowによる開発の進め方 (20)

PDF
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
PDF
GitHub Actions で CI/CD
KEY
20120324 git training
PPTX
Gitを使った運用方法
PPTX
今さら聞けない人のためのGitLabの始め方 Ubuntu編
PDF
Shizudev git hub宿題
PDF
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
PDF
GitHub Copilotとともに次の開発体験へ
PPTX
Multibranch Pipeline with Docker 入門編
PPTX
Git & GitHub & kintone でウルトラハッピー!
PDF
GitHub最新情報キャッチアップ 2023年6月
PPTX
Github第8章
PPTX
Git/GitHub
PDF
Kubernetes Meetup Tokyo #23 kubebuilder-v2
PPTX
2025-04-22 Qlik Tips QTC パイプラインのGitHub連携
PDF
こわくないプルリク
PDF
RedmineとGitとスクラム
PDF
@s_ssk13さん向けGitHub入門
PDF
Metahub for github
PDF
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
GitHub Actions で CI/CD
20120324 git training
Gitを使った運用方法
今さら聞けない人のためのGitLabの始め方 Ubuntu編
Shizudev git hub宿題
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
GitHub Copilotとともに次の開発体験へ
Multibranch Pipeline with Docker 入門編
Git & GitHub & kintone でウルトラハッピー!
GitHub最新情報キャッチアップ 2023年6月
Github第8章
Git/GitHub
Kubernetes Meetup Tokyo #23 kubebuilder-v2
2025-04-22 Qlik Tips QTC パイプラインのGitHub連携
こわくないプルリク
RedmineとGitとスクラム
@s_ssk13さん向けGitHub入門
Metahub for github
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
Ad

More from Takeshi Mikami (20)

PDF
rdflintのvscode拡張の紹介とその実装方法
PDF
適切なクラスタ数を機械的に求める手法の紹介
PDF
OAuth 2.0による認可の流れ
PDF
MapReduceによるConnected Components(連結成分)の見つけ方
PDF
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
PDF
データサイエンスアイドル「小日向美穂」と考える「つながり」
PDF
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
PDF
HBase CompleteBulkLoadその仕組み&発生した問題
PDF
RDFチェックツール「rdflint」のご紹介
PDF
アーリース情報技術株式会社 会社案内 (2019/02/13)
PDF
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
PDF
SPARQL入門
PDF
センサーによるデータ計測と異常検知の基本
PDF
Webサイトのアクセスログによるユーザー属性推定
PDF
Google Cloud Dataflowによる データ変換処理入門
PDF
IoTでの機械学習活用イメージと強化学習のご紹介
PDF
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
PDF
SparkMLlibで始めるビッグデータを対象とした機械学習入門
PDF
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
PDF
レコメンドアルゴリズムの基本と周辺知識と実装方法
rdflintのvscode拡張の紹介とその実装方法
適切なクラスタ数を機械的に求める手法の紹介
OAuth 2.0による認可の流れ
MapReduceによるConnected Components(連結成分)の見つけ方
RDFチェックツール「rdflint」のご紹介 (LODチャレンジ2019受賞作品紹介 基盤技術部門優秀賞)
データサイエンスアイドル「小日向美穂」と考える「つながり」
RDFのチェックツール「rdflint」と コミュニティによるオープンデータの作成
HBase CompleteBulkLoadその仕組み&発生した問題
RDFチェックツール「rdflint」のご紹介
アーリース情報技術株式会社 会社案内 (2019/02/13)
Spark MLlib ML Pipelines の概要 及びpysparkからの扱い方
SPARQL入門
センサーによるデータ計測と異常検知の基本
Webサイトのアクセスログによるユーザー属性推定
Google Cloud Dataflowによる データ変換処理入門
IoTでの機械学習活用イメージと強化学習のご紹介
協調フィルタリング・アソシエーション分析によるレコメンド手法の紹介
SparkMLlibで始めるビッグデータを対象とした機械学習入門
Ims@sparqlではじめるr markdownとgitbookによるレポート生成
レコメンドアルゴリズムの基本と周辺知識と実装方法

GitHubの機能を活用したGitHub Flowによる開発の進め方

  • 1. takemikamiʼs note ‒ http://takemikami.com/ GitHubの機能を活⽤した GitHub Flowによる開発の進め⽅ Copyright (C) Takeshi Mikami. All rights reserved. 1 三上 威 - @takemikami アーリース情報技術株式会社 代表取締役 社⻑ 2019.6.12
  • 2. takemikamiʼs note ‒ http://takemikami.com/ はじめに •テーマ GitHubの機能を活⽤した GitHub Flowによる開発の進め⽅ •内容 • GitHub Flowの概要 • GitHub Flowによる開発の流れ • GitHub FlowのためのGitHub機能の活⽤ Copyright (C) Takeshi Mikami. All rights reserved. 2 本資料で説明する内容の概要を⽰します
  • 3. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowの概要 Copyright (C) Takeshi Mikami. All rights reserved. 3
  • 4. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowとは • 次のフローで運⽤ • masterブランチは常にデプロイ可能な状態であること • 開発を始める時は、masterからブランチを切り、開発内容がわかるようにブラン チ名をつける • ローカルPCの作業は、同じブランチ名でサーバ(GitHub)にpushする • 意⾒を求めたり、教えて欲しいことがある場合は、Pull Requestを使う • 開発ブランチは、誰かにレビューを依頼して承認をもらったら、masterにマージ できる • masterにマージしたら、直ちにデプロイする Copyright (C) Takeshi Mikami. All rights reserved. 4 GitHub Flowの概要 GitHub Flowを紹介します 「シンプルさ」に特徴がある Gitによる開発ワークフローのモデル
  • 5. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowのブランチモデル • GitHub Flowのブランチモデルは以下のようになります Copyright (C) Takeshi Mikami. All rights reserved. 5 GitHub Flowの概要 GitHub Flowのブランチモデルを⽰します commit branch branch commit merge merge (rebase) merge commit master branch descriptive branch descriptive branch 開発を始める時は masterからブランチを切る masterにマージしたら 直ちにデプロイ レビュー承認をもらったら masterにマージできる masterは常に デプロイ可能な状態に 開発中はPullRequestを使って相談
  • 6. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowによる開発の流れ Copyright (C) Takeshi Mikami. All rights reserved. 6
  • 7. takemikamiʼs note ‒ http://takemikami.com/ GitHub Flowによる開発の流れ • GitHub Flowでは、次の流れで開発を⾏います • 開発の着⼿ • ローカルPCでの実装作業 • GitHubへのpush • Pull Requestの発⾏ • Pull Requestのステータス確認 • Reviewの依頼 • Reviewの実施・承認 • 不具合や指摘事項の対応 • Mergeの実施 • デプロイ Copyright (C) Takeshi Mikami. All rights reserved. 7 GitHub Flowによる開発の流れ GitHub Flowによる開発の流れを⽰します
  • 8. takemikamiʼs note ‒ http://takemikami.com/ GitHub FlowとCI・レビュー・デプロイの関連 Copyright (C) Takeshi Mikami. All rights reserved. 8 GitHub Flowによる開発の流れ GitHub FlowとCI・レビュー・デプロイの関連を図に⽰します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request
  • 9. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:開発の着⼿ Copyright (C) Takeshi Mikami. All rights reserved. 9 GitHub Flowによる開発の流れ 開発を着⼿する際に⾏う⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request 開発着⼿時は、 masterブランチをGitHubからローカルPCに取り込み、 ブランチを切ります
  • 10. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:開発の着⼿ • ローカルPCにrepositoryをcloneします Copyright (C) Takeshi Mikami. All rights reserved. 10 GitHub Flowによる開発の流れ 開発を着⼿する際に⾏う⼿続きを説明します $ git clone git@github.com:<organization>/<repository>.git $ cd <repository>
  • 11. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:開発の着⼿ • masterから開発作業⽤のブランチを切ります • ローカルPCのブランチは以下のようになります Copyright (C) Takeshi Mikami. All rights reserved. 11 GitHub Flowによる開発の流れ 開発を着⼿する際に⾏う⼿続きを説明します $ git checkout -b fix-something $ git branch * fix-something master ブランチ名は、開発する内容を⽰す適当な名称にします
  • 12. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:ローカルPCでの実装作業 Copyright (C) Takeshi Mikami. All rights reserved. 12 GitHub Flowによる開発の流れ ローカルPCでの実装作業を⾏う際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request ファイルを修正し 開発作業⽤のブランチにcommitします
  • 13. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:ローカルPCでの実装作業 • ローカルPC上でファイルを変更し、commitします Copyright (C) Takeshi Mikami. All rights reserved. 13 GitHub Flowによる開発の流れ ローカルPCでの実装作業を⾏う際の⼿続きを説明します $ git commit <file> -m <comment>
  • 14. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:GitHubへのpush Copyright (C) Takeshi Mikami. All rights reserved. 14 GitHub Flowによる開発の流れ GitHubへpushする際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request 開発作業⽤のブランチを GitHubにpushします
  • 15. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:GitHubへのpush • ファイルの変更&commitを⾏ったら、変更をGitHubにpushします Copyright (C) Takeshi Mikami. All rights reserved. 15 GitHub Flowによる開発の流れ GitHubへpushする際の⼿続きを説明します $ git push origin fix-something GitHubにブランチが作成されます
  • 16. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestの発⾏ Copyright (C) Takeshi Mikami. All rights reserved. 16 GitHub Flowによる開発の流れ GitHubでPull Requestを作成する際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request GitHubでPull Requestを作成します
  • 17. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestの発⾏ Copyright (C) Takeshi Mikami. All rights reserved. 17 GitHub Flowによる開発の流れ GitHubでPull Requestを作成する際の⼿続きを説明します • GitHubのUIからPull Requestを作成します
  • 18. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestのステータス確認 Copyright (C) Takeshi Mikami. All rights reserved. 18 GitHub Flowによる開発の流れ GitHubでPull Requestのステータスを確認する際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request Pull Requestの⽣成後、⾃動的に、 CIによるテスト・開発環境へのデプロイを ⾏うようにしておきます 必要に応じて Pull Requestのコメント機能を使い、 開発に関する相談を⾏います
  • 19. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestのステータス確認 • CIサービスとの連携で、Pull Requestからテスト結果を確認できます • 全てのcheckがpassedになるまでコードの修正を⾏います Copyright (C) Takeshi Mikami. All rights reserved. 19 GitHub Flowによる開発の流れ GitHubでPull Requestのステータスを確認する際の⼿続きを説明します ※Deployment APIを利⽤するとデプロイの状況も確認できます
  • 20. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Reviewの依頼 Copyright (C) Takeshi Mikami. All rights reserved. 20 GitHub Flowによる開発の流れ GitHubでReviewを依頼する際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request ⾃動テスト・セルフレビュー・動作確認が 完了したらReviewを依頼します
  • 21. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Reviewの依頼 • ⾃動テスト・セルフレビュー・動作確認が完了したら、 GitHubのUIからReviewを依頼します Copyright (C) Takeshi Mikami. All rights reserved. 21 GitHub Flowによる開発の流れ GitHubでReviewを依頼する際の⼿続きを説明します
  • 22. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Reviewの実施・承認 Copyright (C) Takeshi Mikami. All rights reserved. 22 GitHub Flowによる開発の流れ GitHubでReviewを実施する際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request Reviewerは コード差分・開発環境のモジュールを参照して レビューを⾏います 問題なければApproveします
  • 23. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Reviewの実施・承認 • ReviewerはGitHubのUIから、コメントやApproveを⾏います Copyright (C) Takeshi Mikami. All rights reserved. 23 GitHub Flowによる開発の流れ GitHubでReviewを実施する際の⼿続きを説明します
  • 24. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:不具合や指摘事項の対応 • テストやレビューで検出した不具合や指摘事項は、 修正してcommit/pushを⾏います →「ローカルPCでの実装作業」〜「GitHubへのpush」と同じ⼿続き Copyright (C) Takeshi Mikami. All rights reserved. 24 GitHub Flowによる開発の流れ 不具合や指摘事項の対応する際の⼿続きを説明します
  • 25. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:不具合や指摘事項の対応 • masterブランチに変更があった場合は、以下のように追従します • ローカルPCのmasterブランチを最新化します • 開発作業⽤ブランチをmasterからrebaseします • conflictが無ければ、GitHubにforce pushします Copyright (C) Takeshi Mikami. All rights reserved. 25 GitHub Flowによる開発の流れ 不具合や指摘事項の対応する際の⼿続きを説明します $ git checkout master $ git pull $ git checkout fix-something $ git rebase master $ git push origin fix-something -f
  • 26. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:不具合や指摘事項の対応 • rebase時にconflictが発⽣した場合は、以下のように解消させます • conflictが発⽣すると以下のように表⽰されます • conflictしているファイルを修正した後、rebaseをcontinueします Copyright (C) Takeshi Mikami. All rights reserved. 26 GitHub Flowによる開発の流れ 不具合や指摘事項の対応する際の⼿続きを説明します $ git rebase master ※省略※ CONFLICT (content): Merge conflict in README.md ※省略※ $ git st ※省略※ both modified: README.md ※省略※ $ git add README.md $ git rebase --continue
  • 27. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Mergeの実施 Copyright (C) Takeshi Mikami. All rights reserved. 27 GitHub Flowによる開発の流れ GitHubでmasterへのMergeを⾏う際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request テスト・レビューで問題が無くなったら (=本番deploy可能な状態になったら)、 masterブランチにmergeします
  • 28. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Mergeの実施 • GitHubのUIからMergeを⾏います Copyright (C) Takeshi Mikami. All rights reserved. 28 GitHub Flowによる開発の流れ GitHubでmasterへのMergeを⾏う際の⼿続きを説明します
  • 29. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:デプロイ Copyright (C) Takeshi Mikami. All rights reserved. 29 GitHub Flowによる開発の流れ デプロイを⾏う際の⼿続きを説明します Developer GitHub Reviewer CI development environment staging environment clone/pull (master branch) branch commit push (descriptive branch) clone send status(OK/NG) auto test deploy review request check check approve merge deploy pull request masterブランチにmergeしたら、 ⾃動でstaging環境にdeployします
  • 30. takemikamiʼs note ‒ http://takemikami.com/ GitHub FlowのためのGitHub機能の活⽤ Copyright (C) Takeshi Mikami. All rights reserved. 30
  • 31. takemikamiʼs note ‒ http://takemikami.com/ GitHub FlowのためのGitHub機能の活⽤ • GitHub Flowを効率よく運⽤するためのGitHub機能を紹介します • Pull Request機能 →masterブランチへのmergeする前の承認ワークフローとして使⽤ • BranchのProtect機能 →ステータス正常&レビュー済みPull Request以外からの変更を禁⽌し、 masterブランチを常にデプロイ可能な状態に保つために使⽤ • CIとの連携機能 →Pull Requestの⽣成後のテスト実⾏を⾃動化するために使⽤ • CDとの連携機能 →開発環境・本番環境へのデプロイを⾃動化するために使⽤ Copyright (C) Takeshi Mikami. All rights reserved. 31 GitHub FlowのためのGitHub機能の活⽤ GitHub Flowを効率よく運⽤するためのGitHub機能を紹介します
  • 32. takemikamiʼs note ‒ http://takemikami.com/ 開発の流れ:Pull Requestのステータス確認 • CIサービスとの連携で、Pull Requestからテスト結果を確認できます • 全てのcheckがpassedになるまでコードの修正を⾏います Copyright (C) Takeshi Mikami. All rights reserved. 32 GitHub FlowのためのGitHub機能の活⽤ GitHubでPull Requestのステータスを確認する際の⼿続きを説明します ※Deployment APIを利⽤するとデプロイの状況も確認できます CIとの連携機能によって、 テスト結果をステータスに反映 BranchのProtect機能によって、 ステータス正常&レビュー済みで無ければ、 Merge出来ないように制御
  • 33. takemikamiʼs note ‒ http://takemikami.com/ BranchのProtect機能 • GitHub Flowでは 『masterブランチは常にデプロイ可能な状態であること』が必要 → masterブランチに誤った修正が⼊らないようにしたい • BranchのProtect機能で以下のような条件を設定 • レビューを必須にする • codeownerを設定しておくと、指定レビューアのレビューを必須に出来る • CIの成功を必須にする • 「Require status checks to pass before merging」以下で対象とするCIを指定可能 • Pull Requestをマージできる⼈を制限する Copyright (C) Takeshi Mikami. All rights reserved. 33 GitHub FlowのためのGitHub機能の活⽤ BranchのProtect機能で設定したい項⽬について⽰します