SlideShare a Scribd company logo
1 of 52
Download to read offline
少人数チームにおける
プロジェクト管理の

ベスト プラクティス	
?!

Appirits 吉田啓紀
はじめに
とある

プロジェクトマネージャの

悩み
プログラムの
品質が不安・・・	

 
でも、
プログラムの
品質が不安・・・	

 テストフェーズまでは
触れないし・・・

 
でも、
プログラムの
品質が不安・・・	

 テストフェーズまでは
触れないし・・・

 
	
  小さなチームなのに
きれいなコードが
保てない・・・
でも、
プログラムの
品質が不安・・・	

 テストフェーズまでは
触れないし・・・

 
	
  小さなチームなのに
きれいなコードが
保てない・・・	

でも、わざわざ
コード規約まで
必要か・・・?!
ところが!
2つのことを
ヤルだけで・・・	

たった
コードの品質が
上がった!	

 
プログラムのバグも

コードの品質が
上がった!	

かなり少ない!	

 
プログラムのバグも

コードの品質が
上がった!	

かなり少ない!	

 
	
♪

メンバー間の

技術交換まで?!
2つのこと	

たった
1.  コードの強制自動テスト
2.  プログラマ同士の
コードレビュー
1.  コードの強制自動テスト
2.  プログラマ同士の
コードレビュー
意外とありがちな

テスト忘れが
無くなるので
効果絶大!
1.  コードの強制自動テスト
2.  プログラマ同士の
コードレビュー
プログラムのテストから

コードレベルの問題まで
プログラマ間で相互に指摘

⇒品質UP!
で、
どうやるの?
GitLab(GitHub)の

マージリクエスト

※1

(pull-request)を

使って

自動テスト&コードレビュー

	

※1 ・・・ 以降「マジリク」とも記述
えーと。。
実際どうやるの??
践!	
実

マジリク活用
開発フロー
登場ツール	
• Redmine: チケット管理ツール
• Git: バージョン管理ツール
• GitLab: Git管理ツール
⇒オーブンソースの場合はGitHubなどで代用可能

• Jenkins: CIツール
  (※GitLabとの連携用に jenkins-gitlab-merge-request-builder-plugin を利用)

⇒オープンソースの場合はTravis CIなどで代用可能
登場アイコン	
プロジェクト

プログラマA

プログラマB

マネージャ	

マージ
リクエスト	

チケット	
ブランチ	

手動処理	

自動処理	

自動テスト
時間の流れ	

Redmine

要件をチケット化	

新規	

プロジェクト
マネージャ	

Git
GitLab
Jenkins
時間の流れ	

Redmine

Aさんに
アサイン	

新規	

プログラマA

Git
GitLab
Jenkins
時間の流れ	

Redmine

開発開始!	

新規	

進行中	

Git
GitLab
Jenkins
時間の流れ	

Redmine

新規	

進行中	

進行中
(20%)

「<チケット番号>_<要件英訳>」
というブランチで開発
(ex. 123_add_hoge_feature)	

Git
GitLab
Jenkins
時間の流れ	

Redmine

新規	

進行中	

進行中
(20%)

進行中
(40%)

開発	

Git
GitLab
Jenkins
時間の流れ	

Redmine

新規	

進行中	

進行中
(20%)

進行中
(40%)

進行中
(80%)

開発	

Git
GitLab
Jenkins
時間の流れ	

Redmine

進行中
(80%)

キリのいいところで
git push

Git
GitLab
Jenkins
時間の流れ	

Redmine

進行中
(80%)

Git
masterブランチへの
マジリク作成	

GitLab

マージ
リクエスト	

Jenkins
時間の流れ	

Redmine

進行中
(80%)

!	

Git
GitLab

マージ
リクエスト	

マージ
リクエスト	
自動テスト&
結果通知	

Jenkins

テスト…
NG!
時間の流れ	

Redmine

進行中
(80%)

修正&push

Git
GitLab

マージ
リクエスト	

マージ
リクエスト	

Jenkins

テスト…
NG!
時間の流れ	

Redmine

進行中
(80%)

Git
GitLab

!	
マージ
リクエスト	

マージ
リクエスト	

マージ
リクエスト	

自動テスト&
結果通知	

Jenkins

テスト…
NG!	

テスト…
OK!
時間の流れ	

Redmine

チケットを
Bさんにアサイン	

進行中
(80%)

解決待ち
(100%)

Git
マジリクを
Bさんにアサイン	

GitLab

マージ
リクエスト	
プログラマB

Jenkins
時間の流れ	

Redmine

進行中
(80%)

解決待ち
(100%)

git pull <対象ブランチ>

Git
GitLab

マージ
リクエスト	

Jenkins
時間の流れ	

Redmine

進行中
(80%)

解決待ち
(100%)

手動テスト&
コードレビュー	

Git
GitLab

マージ
リクエスト	

Jenkins
時間の流れ	

Redmine

テスト失敗の
理由を添えて
Aさんにアサイン	

!	
進行中
(80%)

解決待ち
(100%)

フィード
バック	

NG

Git
GitLab

マージ
リクエスト	

Jenkins
時間の流れ	

Redmine

フィード
バック	

修正&push

Git
GitLab
Jenkins
時間の流れ	

Redmine

フィード
バック	

Git
GitLab

!	
マージ
リクエスト	

自動テスト&
結果通知	

Jenkins

テスト…
OK!
時間の流れ	

Redmine

修正した旨を添えて
Bさんにアサイン	

フィード
バック	

解決待ち	

Git
GitLab

マージ
リクエスト	

Jenkins

テスト…
OK!
時間の流れ	

Redmine

フィード
バック	

解決待ち	

git pull

Git
GitLab

マージ
リクエスト	

Jenkins

テスト…
OK!
時間の流れ	

Redmine

手動テスト&
コードレビュー	

Git

GitLab

Jenkins
時間の流れ	

Redmine
OK

Git
マージ実行!	

GitLab

マージ
リクエスト	

Jenkins
時間の流れ	

Redmine

マージした旨を添えて
プロマネにアサイン	

解決待ち	

プロジェクト
マネージャ	

Git
GitLab

マージ
リクエスト	

Jenkins
時間の流れ	

Redmine

起票者が
チケットを閉じる	
OK
解決待ち	

Git
GitLab

マージ
リクエスト	

終了	

Jenkins
時間の流れ	

Redmine

解決待ち	

終了	

Git
GitLab

おわり
マージ
リクエスト	

(誰かもっとわかりやすい図を作ってください・・・)	

Jenkins
こんな感じで
進めます。
このフローだと
•  (コード規約なしでも) 統一感あるコード
•  プログラムのバグ軽減
•  プログラマ間の技術交換
•  タスク進捗の透明化
などが実現できて便利です。
また、レビューに時間をかけるのは
ナンセンスだと思う方もいるかもしれません。

が、
はじめのうちに悪いコードを排除することで
後々泥沼にハマッて、より時間が浪費されるのを
避ける効果があったりします。
というわけで、

ぜひお試しください!

More Related Content

What's hot

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 

What's hot (20)

Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
 
Node-REDをIoTビジネスに適用するために苦労した3つの話
Node-REDをIoTビジネスに適用するために苦労した3つの話Node-REDをIoTビジネスに適用するために苦労した3つの話
Node-REDをIoTビジネスに適用するために苦労した3つの話
 
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたものFlutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
DI(依存性注入)について
DI(依存性注入)についてDI(依存性注入)について
DI(依存性注入)について
 
CNIふぉーびぎなーず
CNIふぉーびぎなーずCNIふぉーびぎなーず
CNIふぉーびぎなーず
 
Guide To AGPL
Guide To AGPLGuide To AGPL
Guide To AGPL
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 

Viewers also liked

GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
CROOZ, inc.
 
DevelopersSummit2014「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
DevelopersSummit2014「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatuDevelopersSummit2014「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
DevelopersSummit2014「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
Yoh Nakamura
 

Viewers also liked (10)

GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
 
Redmine + gitlab: merge base development
Redmine + gitlab: merge base developmentRedmine + gitlab: merge base development
Redmine + gitlab: merge base development
 
kintoneチームのKAIZEN文化
kintoneチームのKAIZEN文化kintoneチームのKAIZEN文化
kintoneチームのKAIZEN文化
 
スタートアップにおける技術チームの作り方
スタートアップにおける技術チームの作り方スタートアップにおける技術チームの作り方
スタートアップにおける技術チームの作り方
 
CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするために
 
DevelopersSummit2014「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
DevelopersSummit2014「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatuDevelopersSummit2014「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
DevelopersSummit2014「成功と失敗の狭間に横たわる2つのマネジメント」_yohhatu
 
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?
 
デザイナーとエンジニアの良い関係
デザイナーとエンジニアの良い関係デザイナーとエンジニアの良い関係
デザイナーとエンジニアの良い関係
 
チームワーク、努力、勝利 / スタートアップのチームワークとコミュニケーション
チームワーク、努力、勝利 / スタートアップのチームワークとコミュニケーションチームワーク、努力、勝利 / スタートアップのチームワークとコミュニケーション
チームワーク、努力、勝利 / スタートアップのチームワークとコミュニケーション
 
個人のタスク管理からチケット駆動開発の特徴を考える
個人のタスク管理からチケット駆動開発の特徴を考える個人のタスク管理からチケット駆動開発の特徴を考える
個人のタスク管理からチケット駆動開発の特徴を考える
 

Similar to 少人数チームにおけるプロジェクト管理のベストプラクティス

ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
 
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
Tatsuya Ishikawa
 
20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove
Takao Oyobe
 

Similar to 少人数チームにおけるプロジェクト管理のベストプラクティス (20)

【XDev 2011】 B-4 明日を支えるITに求められる開発アジリティ~ 継続的フィードバックで見る最新開発環境の全貌
【XDev 2011】 B-4 明日を支えるITに求められる開発アジリティ~ 継続的フィードバックで見る最新開発環境の全貌【XDev 2011】 B-4 明日を支えるITに求められる開発アジリティ~ 継続的フィードバックで見る最新開発環境の全貌
【XDev 2011】 B-4 明日を支えるITに求められる開発アジリティ~ 継続的フィードバックで見る最新開発環境の全貌
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
 
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
 
テストを書こう!!
テストを書こう!!テストを書こう!!
テストを書こう!!
 
JJUG CCC 2014 fall 「私がTDD出来ないのはどう考えてもお前らが悪い!」~エンタープライズJava開発でのTDD適用の勘所~
JJUG CCC 2014 fall  「私がTDD出来ないのはどう考えてもお前らが悪い!」~エンタープライズJava開発でのTDD適用の勘所~JJUG CCC 2014 fall  「私がTDD出来ないのはどう考えてもお前らが悪い!」~エンタープライズJava開発でのTDD適用の勘所~
JJUG CCC 2014 fall 「私がTDD出来ないのはどう考えてもお前らが悪い!」~エンタープライズJava開発でのTDD適用の勘所~
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
 
事業開発の全体像
事業開発の全体像事業開発の全体像
事業開発の全体像
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
 
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
 
IT新市場開拓プロジェクトにおけるアジャイル開発 part2
IT新市場開拓プロジェクトにおけるアジャイル開発 part2IT新市場開拓プロジェクトにおけるアジャイル開発 part2
IT新市場開拓プロジェクトにおけるアジャイル開発 part2
 
シナリオレビューという手法の提案
シナリオレビューという手法の提案シナリオレビューという手法の提案
シナリオレビューという手法の提案
 
SOE-Loc
SOE-LocSOE-Loc
SOE-Loc
 
SOE-LOC
SOE-LOCSOE-LOC
SOE-LOC
 
Localization in SOE
Localization in SOELocalization in SOE
Localization in SOE
 
DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
DeNAの品質を支えるQAの取り組み 〜標準化から実践まで〜
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
 

少人数チームにおけるプロジェクト管理のベストプラクティス