SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Git Flowを運用するために
NaITE #23
2017/7/16
自己紹介
• 名前
– 角田 俊(ツノダ シュン)
• 仕事
– ソフトウェア開発
• SNS
– Twitter(@imtnd)
– Facebook
• 活動
– NaITE(長崎IT技術社会)実行委員
– WACATE実行委員
今日の内容
• Git Flowを運用するときに気をつけること
–テスト計画とブランチの定義について
–適切なFeature分割について
Git Flowとは?
• Gitのブランチモデルの一つ
• Vincent Driessen氏の
A successful Git branching modelから
http://nvie.com/posts/a-successful-git-branching-model/
• 作成するブランチ
– Feature(複数)
– Develop
– Release
– Hotfixes
– Master (元々あるやつ)
Git Flowとは?
• ブランチモデルは他にもある
• もっと詳しく知りたい人は以下の資料参照
https://speakerdeck.com/nihonbuson/knack-of-git-management
Git Flowのメリット
• 機能の独立したリポジトリが作成できる
– 機能の独立性が明確になる
• 機能をリリースする、しないの判断が後から選択可能
• 開発とテスト、テスト工程による明確なブランチ分割
• アジャイル開発や、イテレーション開発に向いている
アジャイルやイテレーション開発
(例)
開発
テスト
開発 テスト
• ざっくりとした開発イメージ
テスト計画はプロジェクト毎に異なる
• JSTQB定義のテストレベル
– コンポーネントテスト
– 統合テスト
– システムテスト
– 受け入れテスト
• テストレベルの名前もプロジェクトによって異なるが、
大体こんな感じだと思う
http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf
Git Flowとテストの関連付け(例)
• それぞれのfeatureブランチで
コンポーネントテストを実施
• developブランチでfeatureを
取り入れ、結合テスト
• releaseブランチでシステムテ
ストを実施
実際の現場で適応するには
• 実際の現場はテストレベルが4段階とは限らない
– 例
– コンポーネントテスト
– 自分達での統合テスト
– 既存システムとの統合テスト
– 第三者による統合テスト
– システムテスト
– 他会社のシステムを含めたシステムテスト
– 受け入れテスト
• Git Flow運用の前には自分達のテストレベル、テストフェーズに
あったブランチを定義する必要がある
– ブランチ数
– ブランチ名(役割)
Git Flow運用時の失敗談
失敗
feature1 feature2 develop
time
今回は2週間で、feature1と
feature2を開発しよう。
失敗
feature1 feature2 develop
time
失敗
feature1 feature2 develop
time
失敗
feature1 feature2 develop
time
やっぱり、今回の統合テスト
にfeature1は入れないで。
失敗
feature1 feature2 develop
time
失敗
feature1 feature2 develop
time
feature2はfeature1がないと
統合テストが実施出来ません。
Git FlowでのFeature分割
• Git Flowを効率良く運用するには適切なFeature分割が必要
• Featureは、独立した検証可能な単位の最小構成である必要
がある
– featureに依存性がないようにする
– featureがテストフェーズで検証可能な単位である必要がある
– featureに複数機能が入っていると、機能を入れる、入れないという
判断ができないため最小構成が望ましい
まとめ
• Git Flowを運用する前にはブランチの定義が必要
– ブランチ数
– ブランチの定義(役割の定義)
• Git Flowを効率良く運用するには、適切なFeature分割が必
要
– 独立した検証可能な単位の最小構成である必要がある
適切な運用フローを考えましょう

Weitere ähnliche Inhalte

Was ist angesagt?

Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント土岐 孝平
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 Hiroshi Ito
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いota42y
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48Preferred Networks
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてMakoto Haruyama
 

Was ist angesagt? (20)

Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
 

Ähnlich wie Git Flowを運用するために

一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話Tier_IV
 
Git勉強会資料
Git勉強会資料Git勉強会資料
Git勉強会資料Kenji Takei
 
20160128 jjug Nightセミナー_Git実践入門
20160128 jjug Nightセミナー_Git実践入門20160128 jjug Nightセミナー_Git実践入門
20160128 jjug Nightセミナー_Git実践入門Mizuki Ugajin
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきたHiromu Shioya
 
【社内輪読会】Github実践入門2章
【社内輪読会】Github実践入門2章【社内輪読会】Github実践入門2章
【社内輪読会】Github実践入門2章Akira Torii
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 Hiro Yoshioka
 
ユニキャストにおけるGitの運用方針 v0.9
ユニキャストにおけるGitの運用方針 v0.9ユニキャストにおけるGitの運用方針 v0.9
ユニキャストにおけるGitの運用方針 v0.9Unicast Inc.
 
Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Makoto Kawano
 
git flowを使った開発フロー
git flowを使った開発フローgit flowを使った開発フロー
git flowを使った開発フローshigetoshi komatsu
 
Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Shinya Nakajima
 
Introduction git
Introduction gitIntroduction git
Introduction gitMisa Kondo
 
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南Kouji Matsui
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgitTadahiro Ishisaka
 
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナーHajime Ogushi
 
GHE導入から社内普及までの軌跡 - エバンジェリストとしての取り組みについて -
GHE導入から社内普及までの軌跡 - エバンジェリストとしての取り組みについて -GHE導入から社内普及までの軌跡 - エバンジェリストとしての取り組みについて -
GHE導入から社内普及までの軌跡 - エバンジェリストとしての取り組みについて -ShionITO1
 

Ähnlich wie Git Flowを運用するために (20)

一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
Git @ NNCT programming workshop
Git @ NNCT programming workshopGit @ NNCT programming workshop
Git @ NNCT programming workshop
 
トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話トランクベース開発を活用して爆速に開発した話
トランクベース開発を活用して爆速に開発した話
 
Git勉強会資料
Git勉強会資料Git勉強会資料
Git勉強会資料
 
Github of project
Github of projectGithub of project
Github of project
 
20160128 jjug Nightセミナー_Git実践入門
20160128 jjug Nightセミナー_Git実践入門20160128 jjug Nightセミナー_Git実践入門
20160128 jjug Nightセミナー_Git実践入門
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきた
 
【社内輪読会】Github実践入門2章
【社内輪読会】Github実践入門2章【社内輪読会】Github実践入門2章
【社内輪読会】Github実践入門2章
 
VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011 VCS - Version Control System at Security and Programming camp 2011
VCS - Version Control System at Security and Programming camp 2011
 
ユニキャストにおけるGitの運用方針 v0.9
ユニキャストにおけるGitの運用方針 v0.9ユニキャストにおけるGitの運用方針 v0.9
ユニキャストにおけるGitの運用方針 v0.9
 
Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)Python for Data Analysis第1回勉強会(+git入門)
Python for Data Analysis第1回勉強会(+git入門)
 
git flowを使った開発フロー
git flowを使った開発フローgit flowを使った開発フロー
git flowを使った開発フロー
 
Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)
 
Git地図
Git地図Git地図
Git地図
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南SourceTreeで始めよう! Gitへの乗り換え指南
SourceTreeで始めよう! Gitへの乗り換え指南
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
01.app
01.app01.app
01.app
 
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
 
GHE導入から社内普及までの軌跡 - エバンジェリストとしての取り組みについて -
GHE導入から社内普及までの軌跡 - エバンジェリストとしての取り組みについて -GHE導入から社内普及までの軌跡 - エバンジェリストとしての取り組みについて -
GHE導入から社内普及までの軌跡 - エバンジェリストとしての取り組みについて -
 

Git Flowを運用するために