すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

チーム作業でFizzBuzzアプリを作成しよう

この記事で出来るようになること

ぴっかちゃん

今回はチームで集まってアプリケーションを作るよ!

誰がどの機能を担当するか相談して作業を進めよう!

ぴかわかさん

作業内容

pikawaka_classのチーム名ディレクトリ配下にあるfizzbuzz.rbで1人ずつ作業を行い、pull requestを作成してチームのメンバーにレビューをしてもらいます。レビューが完了したらmergeを実行します。

ディレクトリ構成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
├── pikawaka_class
│   ├── admin # teamディレクトリ名
│   │   ├── sample # ハンズオンの作業ディレクトリ名
│   │   │   ├── miyajimasan.rb # メンバーごとの個人作業のファイル
│   │   │   ├── tanifujisan.rb
│   │   │   ├── team-member-introduction.rb # チーム作業のファイル
│ │ │ ├── fizzbuzz.rb # fizzbuzzアプリを作成するファイル
│ ├── hip_hopper │ │ ├── sample │ │ │ ├── chishakisan.rb │ │ │ ├── kosemurasan.rb │ │ │ ├── mitsuhashisan.rb │ │ │ ├── murakamisan.rb │ │ │ ├── team-member-introduction.rb
│ │ │ ├── fizzbuzz.rb # fizzbuzzアプリを作成するファイル
│ ├── q_and_a │ │ ├── sample │ │ │ ├── kobayashisan.rb │ │ │ ├── onitsukasan.rb │ │ │ ├── ooharasan.rb │ │ │ ├── yumurasan.rb │ │ │ ├── team-member-introduction.rb
│ │ │ ├── fizzbuzz.rb # fizzbuzzアプリを作成するファイル
│ ├── sapphire │ │ ├── sample │ │ │ ├── shigenosan.rb │ │ │ ├── sugadasan.rb │ │ │ ├── tamurasan.rb │ │ │ ├── yamaguchisan.rb │ │ │ ├── yasuosan.rb │ │ │ ├── team-member-introduction.rb
│ │ │ ├── fizzbuzz.rb # fizzbuzzアプリを作成するファイル

仕様を確認しよう

FizzBuzz とは「1 ~ 100」までの数字を画面に表示し、以下の表に当てはまる場合のみ文字列を表示させるアプリケーションです。

3の倍数 5の倍数 15の倍数
fizz buzz fizzbuzz

実行結果は、以下のようになります。

応用問題1の期待結果動画

役割分担しよう

FizzBuzzアプリの機能は、以下の4つに分かれます。

  1. 1 ~ 100までの表示(ブランチ名: team名_number
  2. 3の倍数は「fizz」と表示(ブランチ名: team名_fizz
  3. 5の倍数は「buzz」と表示(ブランチ名: team名_buzz
  4. 15の倍数は「fizzbuzz」と表示(ブランチ名: team名_fizzbuzz

チームで話し合って四つの機能の役割分担をしましょう!
(チームメンバーが3人の場合は、1名のみ二つの機能を担当して下さい。)

機能は①から順番に作成し、④まで作成するとFizzBuzzアプリケーションは完成になります。

各機能の実行結果をしよう

1 ~ 100までの表示(ブランチ名: team名_number

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ ruby fizzbuzz.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
省略...

3の倍数は「fizz」と表示(ブランチ名: team名_fizz

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ ruby fizzbuzz.rb

1
2
fizz
4
5
fizz
7
8
fizz
10
11
fizz
13
14
fizz
省略...

5の倍数は「buzz」と表示(ブランチ名: team名_buzz

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ ruby fizzbuzz.rb

1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizz
省略...

15の倍数は「fizzbuzz」と表示(ブランチ名: team名_fizzbuzz

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ ruby fizzbuzz.rb

1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
省略...

各機能の実行結果は確認できたね!それでは、手順を確認しよう!

ぴかわかさん

手順の確認

手順
  1. 作業用のブランチを作成する
  2. fizzbuzz.rbに担当機能を作成する
  3. 動作確認をする
  4. addを実行してインデックスに登録する
  5. commitを実行してローカルリポジトリに記録する
  6. pushを実行してリモートリポジトリにアップロードする
  7. GitHubでpull requestを作成する
  8. チームのメンバーからLGTMをもらおう
  9. GitHub上でmergeをしよう
  10. 次の担当者に交代・pullで最新の変更履歴を取り込む

それでは、作業用のブランチから作成していきましょう。1人ずつ作業を行ってください。他の人が作業している時は、アドバイスをして助け合いながらチームで進めてみてください!

1.作業用のブランチを作成する

作業ブランチを作成する

カレントディレクトリをpikawaka_classにして、以下のようにgit checkoutコマンドを実行してください。

ターミナル | ブランチを作成する
1
git checkout -b 担当機能ブランチ名
ターミナル | 運営チームがbuzz機能を作成する場合
1
git checkout -b admin_buzz

これでmasterブランチから新しく作業用のブランチを作成することができました。

2.fizzbuzz.rbに担当機能を作成する

次に 担当機能を fizzbuzz.rb に記述して下さい。

3.動作確認をする

担当機能を作成できれば、ruby fizzbuzz.rb を実行し動作確認をしましょう。動作確認については、こちらの実行結果から確認して下さい。

4.addでインデックスに登録する

動作確認が完了すれば、変更ファイルをインデックスに登録しましょう。
git addコマンドで変更したファイルをインデックスに登録します。今回は fizzbuzz.rb を変更したので、fizzbuzz.rb をインデックスに登録しましょう。

ターミナル
1
git add fizzbuzz.rb

5.commitを実行してローカルリポジトリに記録する

インデックスに登録された内容をローカルリポジトリに記録するには、git commitコマンドを使用します。

オプションの-mで、コミット内容のメッセージを入れます。これによって、このコミットが何を変更したものなのか分かりやすくなります。

ターミナル | メッセージを入れてコミットする
1
git commit -m 'コミット内容'
ターミナル(pikawaka_class/所属するチーム名/sample/) | 運営チームがfizz機能を作成した場合
1
git commit -m 'admin_fizz create'
ターミナルでgit commitを実行して、ローカルリポジトリに記録させよう
ターミナル(pikawaka_class/所属するチーム名/sample/)
1
git commit -m '担当機能名'

6.pushを実行してリモートリポジトリにアップロードする

ローカルリポジトリに記録された変更履歴をリモートリポジトリに反映させる為にgit pushコマンドを使います。

ターミナル(pikawaka_class/所属するチーム名/sample/) 運営チームがfizz機能を作成した場合
1
git push origin admin_fizz
ターミナルでgit pushを実行して、リモートリポジトリにアップロードしよう
ターミナル(pikawaka_class/所属するチーム名/sample/) 運営チームがfizz機能を作成した場合
1
git push origin 担当機能ブランチ名

上記のコマンドを実行すると、以下のようにリモートリポジトリとして使用するGitHub上にローカルで作業していたブランチが作成されます。

pushした場合の画像

GitHub上に作業用ブランチが作成されたかを確認しよう

それでは、ローカルの作業ブランチがGitHubで作成されたかを確認するためにpikawaka_classのGitHubページに飛んで下さい。

7.GitHubでpull requestを作成する

Pull Requestは、GitHubが提供する機能です。ローカルリポジトリのソースコードの変更・更新をわかりやすく表示し、他の開発者に通知します。

自身が開発した追加機能や改修などを他の開発者に確認してもらうことで、バグが起こりにくい開発プロセスになります。このような目的で、ソースコードを検査・修正する事を「コードレビュー」と言います。

compare & pull request をクリックしてみましょう。

compare pullrequestの画像

すると、以下のようにpull requestの作成画面が表示されます。何も変更せずにcompare pull requestボタンをクリックしましょう。

pull requestの作成画像

実行すると、以下のようにpull requestが作成されます。
ページの右上にあるFile Changedをクリックしてください。
今回変更した差分が表示されます。

pull request作成画面

変更差分を確認してみよう。

今回作成した機能の変更が表示されます。

差分の画像

8.チームのメンバーからLGTMをもらおう

担当者以外のメンバーが作業を行いましょう!

作業者以外の担当者は、Review changesを押してLGTMとコメントしましょう。コメントしたら、CommentからApproveに変更し、Submit reviewをクリックしましょう。

9.GitHub上でmergeをしよう

担当者がGitHub上で作業用ブランチをメインブランチにmergeしよう

担当者は、チームメンバー全てのLGTMのコメントを確認できたら、「Merge pull request」をクリックして下さい。

merge pull requestの画像

続けてconfirm merge をクリックすると、masterブランチにmergeされます。

ぴっかちゃん

ここからは、次の担当者の方に交代して作業を行ってください!

10.次の担当者に交代・pullで最新の変更履歴を取り込む

次の担当者は、リモートリポジトリから最新の変更履歴を取り込もう

次の担当者はターミナルでカレントディレクトリをpikawaka_classにして、以下のコマンドを実行してください。

ターミナル | masterブランチに移動(既にmasterブランチにいる場合は不要)
1
git checkout master
ターミナル | ローカルリポジトリに最新の変更履歴を取り込む
1
git pull origin master

最初の手順「1.作業用のブランチを作成する」に戻り、順番に進めてください。