1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めてのGit利用ハンズオン(ペア実習版)

1
Posted at

概要

  • 対象者: GitHubアカウントは持っているが、実際の利用は初めての人
  • 所要時間: 2.5時間
  • 目標: GitHubを使ったチーム開発の基本ワークフローを習得する

事前準備

必要なツール

  • GitHubアカウント(既存)✅
  • Git(最新版)※ 要インストール
  • GitHub Desktop(推奨)※ 要インストール
  • VSCode(エディタ)※ 要インストール

GitHubの基本画面に慣れる(10分)

Step1: GitHubにログインして画面確認

  1. https://github.com にアクセス
  2. 既存アカウントでログイン
  3. 画面構成の確認:
    • 上部ナビゲーション:検索バー、+ボタン、プロフィール
    • 左サイドバー:Recent Repositories、Teams
    • 中央:Discover repositories、Recent activity

Step2: プロフィールページの確認

  1. 右上のプロフィール画像をクリック → 「Your profile」
  2. 現在の状態を確認:
    • プロフィール写真(デフォルトのままでもOK)
    • Bio(自己紹介)は空欄
    • Repositories:0個または少数
    • Contribution graph:ほぼ空白

Step3: GitHubの主要機能を知る

  • Repository(リポジトリ): プロジェクトのコード保管場所
  • Issue: バグ報告や機能要望の管理
  • Pull Request: コード変更の提案・レビュー
  • Fork: 他人のプロジェクトをコピー
  • Star: お気に入り登録

役割分担

  • PersonA: リポジトリオーナー(プロジェクトリーダー役)
  • PersonB: コラボレーター(チームメンバー役)

事前確認事項

  1. 両者のGitHubユーザー名を互いに確認・メモ
  2. お互いのプロフィールページを見る
  3. 「Follow」し合う(任意)

Phase1: 初回環境構築(25分)

全員共通: 必要ツールのインストール

Git本体のインストール(5分)

  1. https://git-scm.com/ にアクセス
  2. 「Download for Windows/Mac」をクリック
  3. ダウンロード後、インストール実行
  4. 設定は全てデフォルトでOK(「Next」を連打)

GitHub Desktopのインストール(5分)

  1. https://desktop.github.com/ にアクセス
  2. 「Download for Windows/Mac」をクリック
  3. インストール後、起動
  4. 「Sign in to GitHub.com」でログイン
  5. 名前・メールアドレスを設定(GitHubアカウントと同じに)

VSCodeのインストール(5分)※未導入の場合

  1. https://code.visualstudio.com/ にアクセス
  2. ダウンロード・インストール
  3. 起動後、拡張機能「Git Graph」をインストール(推奨)

PersonA の作業: 初回リポジトリ作成(10分)

Step1: GitHubで初めてのリポジトリ作成

  1. GitHubにログイン
  2. 左上の「Create repository」または右上の「+」→「New repository」
  3. 詳細設定:
    Repository name: my-first-team-project
    Description: GitHub初回利用のチーム開発練習プロジェクト
    Public ☑️(学習用なので公開)
    Add a README file ☑️
    Add .gitignore: Java を選択
    Choose a license: MIT License
    
  4. 「Create repository」をクリック

Step2: リポジトリの基本設定

  1. 作成直後の画面で「Settings」タブをクリック
  2. 左メニューで各項目を確認:
    • 「General」: リポジトリの基本情報
    • 「Collaborators and teams」: メンバー管理
    • 「Branches」: ブランチ保護設定
  3. 今は設定変更せず、場所だけ確認

Step3: コラボレーターの招待

  1. 「Settings」→「Collaborators and teams」
  2. 「Add people」ボタンをクリック
  3. PersonBのGitHubユーザー名を入力
  4. 権限レベル: 「Write」を選択(コード変更権限)
  5. 「Add [username] to this repository」

PersonB の作業: 招待承認とリポジトリ確認(5分)

Step1: 招待の確認・承認

  1. GitHubの**右上ベルアイコン(通知)**をクリック
  2. PersonAからの招待通知を確認
  3. 「Accept invitation」をクリック
  4. 権限確認: リポジトリページで「Settings」タブが見えることを確認

Step2: リポジトリの確認

  1. リポジトリページを開く
  2. ファイル構成を確認:
    • README.md(プロジェクト説明)
    • .gitignore(Javaの除外ファイル設定)
    • LICENSE(MITライセンス)
  3. 「Code」ボタンの横の**緑色の数字(コミット数)**をクリック
  4. コミット履歴を確認(現在は1つだけ「Initial commit」)

Phase2: ローカル環境でのGit操作開始(20分)

両者共通: リポジトリをローカルにクローン

GitHub Desktopを使ったクローン(10分)

  1. GitHub Desktopを開く
  2. 「File」→「Clone repository」
  3. 「GitHub.com」タブで my-first-team-project を選択
  4. Local pathを確認・変更:
    • Windows: C:\Users\[ユーザー名]\Documents\GitHub\
    • Mac: /Users/[ユーザー名]/Documents/GitHub/
  5. 「Clone」をクリック
  6. 成功確認: フォルダが作成され、ファイルが存在することを確認

VSCodeでプロジェクトを開く(5分)

  1. VSCodeを開く
  2. 「File」→「Open Folder」
  3. クローンした my-first-team-project フォルダを選択
  4. 左のファイルエクスプローラーで確認:
    my-first-team-project/
    ├── README.md
    ├── .gitignore
    └── LICENSE
    

VSCodeでGit状態を確認(5分)

  1. Ctrl+Shift+G(Macは Cmd+Shift+G)でソース管理を開く
  2. 現在の状態を確認:
    • ブランチ: main
    • 変更: なし
    • 同期状態: 最新
  3. 下部ステータスバーでブランチ名「main」を確認

Phase3: 初回のファイル作成とコミット(30分)

PersonA の作業: プロジェクト構造作成

Step1: README.mdの更新(10分)

  1. VSCodeで README.md を開く
  2. 内容を以下に書き換え:
# My First Team Project 🚀

GitHubを使ったチーム開発の練習プロジェクトです。

## チームメンバー
- **PersonA**: [@PersonAのユーザー名](https://github.com/PersonAのユーザー名) - プロジェクトリーダー
- **PersonB**: [@PersonBのユーザー名](https://github.com/PersonBのユーザー名) - 開発メンバー

## プロジェクト目標
- [x] GitHubリポジトリの作成
- [x] チームメンバーの招待
- [ ] Java電卓アプリの開発
- [ ] ブランチを使った協働開発
- [ ] プルリクエストでのコードレビュー

## 開発予定機能
- [ ] 足し算(PersonA担当)
- [ ] 引き算(PersonB担当)
- [ ] 掛け算(PersonA担当)
- [ ] 割り算(PersonB担当)

## 学習する技術
- Git & GitHub
- Java
- チーム開発ワークフロー
- コードレビュー

## 実行方法
```bash
# 後で追加予定

開発ルール

  1. 新機能は必ずブランチを作成
  2. プルリクエストで変更を提案
  3. レビュー承認後にマージ
  4. こまめなコミットを心がける

最終更新: [今日の日付]


#### Step2: Javaプロジェクト構造の作成(10分)
**フォルダ構造を作成:**

my-first-team-project/
├── README.md
├── .gitignore
├── LICENSE
├── src/
│ └── main/
│ └── java/
│ └── Calculator.java
└── docs/
└── development-log.md


**VSCodeで実行:**
1. 左のエクスプローラーで右クリック→「New Folder」
2. `src` フォルダ作成
3. `src` 内に `main` フォルダ作成
4. `main` 内に `java` フォルダ作成
5. `docs` フォルダを作成

#### Step3: 初回Javaファイル作成(10分)
**Calculator.java** を作成:

```java
/**
 * チーム開発で作る電卓アプリ
 * GitHub初回利用者向けハンズオン用
 * 
 * @author PersonA, PersonB
 * @version 1.0
 */
public class Calculator {
    
    /**
     * アプリケーションのメインメソッド
     * @param args コマンドライン引数
     */
    public static void main(String[] args) {
        System.out.println("=== GitHub チーム開発 電卓アプリ ===");
        System.out.println("開発開始!");
        
        // TODO: PersonAが足し算機能を実装予定
        // TODO: PersonBが引き算機能を実装予定
        
        System.out.println("=== 開発完了まで頑張ろう! ===");
    }
    
    // 今後、計算メソッドをここに追加していく予定
}

development-log.md を作成:

# 開発ログ

## 2025年9月8日
- プロジェクト開始
- PersonA: プロジェクト構造作成
- PersonB: (次回作業予定)

## 学習メモ
- GitHubでのリポジトリ作成方法を学習
- README.mdの書き方を習得
- Javaプロジェクトの基本構造を理解

## 次回の予定
- PersonA: 足し算機能の実装
- PersonB: 引き算機能の実装

PersonA: 初回コミット・プッシュ(GitHub Desktop使用)

Step1: GitHub Desktopで変更確認(5分)

  1. GitHub Desktopを開く
  2. 左側「Changes」タブで変更ファイルを確認:
    • ✅ README.md(modified)
    • ✅ src/main/java/Calculator.java(new file)
    • ✅ docs/development-log.md(new file)
  3. 各ファイルをクリックして変更内容を確認
  4. 緑色の「+」が新規追加、黄色の「M」が修正を示す

Step2: 初回コミット(5分)

  1. 左下のコミット欄に入力:
    • Summary: feat: プロジェクト初期構造を作成
    • Description:
      - README.mdを詳細に更新
      - Javaプロジェクト構造を作成
      - Calculator.javaの基本フレームワークを実装
      - 開発ログファイルを追加
      
      次回: 足し算機能の実装を予定
      
  2. 「Commit to main」ボタンをクリック

Step3: GitHubへプッシュ(5分)

  1. 「Push origin」ボタンをクリック
  2. 処理完了まで待機
  3. GitHub上で確認:
    • ブラウザでリポジトリページを更新
    • ファイルが追加されていることを確認
    • README.mdの更新内容が表示されることを確認

Phase4: ブランチを使った並行開発(40分)

PersonB の作業: 初回プル(同期)とブランチ作成

Step1: 最新状態への同期(5分)

  1. GitHub Desktopを開く
  2. 「Fetch origin」をクリック(リモートの変更をチェック)
  3. 「Pull origin」をクリック(変更をローカルに反映)
  4. VSCodeで確認: PersonAが作成したファイルが表示されることを確認

Step2: 初回ブランチ作成体験(10分)

  1. GitHub Desktopで「Current branch」(現在は main)をクリック
  2. 「New branch」を選択
  3. ブランチ名を入力: PersonB-subtract-feature
    • 命名規則: 担当者名-機能名-feature
  4. 「Create branch」をクリック
  5. 重要: 画面左上で現在のブランチが変わったことを確認

Step3: ブランチの概念理解(5分)

ブランチとは?

  • main: メインの開発ライン(リリース用)
  • feature branch: 新機能開発用の枝分かれ
  • 並行作業: PersonAとPersonBが異なるブランチで同時開発可能

VSCodeでの確認:

  1. 下部ステータスバーでブランチ名を確認
  2. Git Graph拡張機能でブランチの分岐を視覚化

Step4: 引き算機能の実装(20分)

Calculator.javaを編集:

/**
 * チーム開発で作る電卓アプリ
 * GitHub初回利用者向けハンズオン用
 * 
 * @author PersonA, PersonB
 * @version 1.0
 */
public class Calculator {
    
    /**
     * 足し算を行う
     * @param a 数値1
     * @param b 数値2
     * @return 計算結果
     */
    public static double add(double a, double b) {
        return a + b;
    }
    
    /**
     * 引き算を行う
     * PersonB が実装
     * @param a 数値1(被減数)
     * @param b 数値2(減数)
     * @return 計算結果
     */
    public static double subtract(double a, double b) {
        return a - b;
    }
    
    /**
     * アプリケーションのメインメソッド
     * @param args コマンドライン引数
     */
    public static void main(String[] args) {
        System.out.println("=== GitHub チーム開発 電卓アプリ ===");
        System.out.println("開発開始!");
        
        // PersonA: 足し算機能(予定)
        System.out.println("5 + 3 = " + add(5, 3));
        
        // PersonB: 引き算機能(実装完了)
        System.out.println("10 - 4 = " + subtract(10, 4));
        
        System.out.println("=== PersonBの引き算機能完了! ===");
    }
}

development-log.mdに追記:

# 開発ログ

## 2025年9月8日
- プロジェクト開始
- PersonA: プロジェクト構造作成
- PersonB: 引き算機能実装

### PersonBの作業詳細
- ブランチ `PersonB-subtract-feature` を作成
- subtract メソッドを実装
- mainメソッドに引き算のテストコードを追加
- JavaDocコメントを記述

## 学習メモ
- GitHubでのリポジトリ作成方法を学習
- README.mdの書き方を習得
- Javaプロジェクトの基本構造を理解
- **ブランチの作成・切り替え方法を習得**
- **並行開発の概念を理解**

## 次回の予定
- PersonA: 足し算機能の実装
- PersonB: プルリクエスト作成

PersonA の作業: 同時並行開発(別ブランチ)

Step1: PersonAも別ブランチで作業(10分)

  1. GitHub Desktopで最新の main ブランチに戻る
  2. 最新状態に更新(Fetch & Pull)
  3. 新しいブランチ作成: PersonA-add-feature
  4. 足し算機能を強化

Calculator.javaを編集(PersonAバージョン):

// PersonAが追加: より詳細な足し算機能

/**
 * 足し算を行う(拡張版)
 * PersonA が実装
 * @param a 数値1
 * @param b 数値2
 * @return 計算結果
 */
public static double add(double a, double b) {
    // 入力値検証を追加
    if (Double.isInfinite(a) || Double.isInfinite(b)) {
        throw new IllegalArgumentException("無限大は計算できません");
    }
    return a + b;
}

/**
 * 複数の数値の足し算
 * PersonA が追加実装
 * @param numbers 可変長引数の数値
 * @return 合計値
 */
public static double addMultiple(double... numbers) {
    double sum = 0;
    for (double num : numbers) {
        sum += num;
    }
    return sum;
}

これで2つのブランチで同時に異なる開発が進行中の状態


Phase5: プルリクエスト(PR)の作成とレビュー(35分)

PersonB: 初回プルリクエスト作成

Step1: コミット・プッシュ(10分)

  1. GitHub Desktopで変更を確認
  2. コミットメッセージ入力:
    • Summary: feat: 引き算機能を実装
    • Description:
      PersonBによる引き算機能の実装
      
      変更内容:
      - subtract メソッドを新規作成
      - mainメソッドに引き算のテスト追加
      - JavaDocコメントを記述
      - 開発ログを更新
      
      テスト結果: 10 - 4 = 6.0 で正常動作確認済み
      
  3. 「Commit to PersonB-subtract-feature」をクリック
  4. 「Publish branch」をクリック(初回プッシュ)

Step2: GitHub上でプルリクエスト作成(15分)

  1. GitHubのリポジトリページを開く
  2. 画面上部に表示される「Compare & pull request」をクリック
    • 表示されない場合:「Pull requests」タブ → 「New pull request」
  3. プルリクエストの詳細入力:
## タイトル
feat: 引き算機能を実装 (PersonB)

## 概要
引き算機能を実装しました。初回のプルリクエスト作成です!

## 変更内容
- [x] `subtract` メソッドの実装
- [x] JavaDocコメントの追加
- [x] mainメソッドでのテスト実装
- [x] 開発ログの更新

## テスト結果
```bash
10 - 4 = 6.0

正常に動作することを確認しました ✅

レビューのお願い

以下の点をチェックしていただけますか?

  • メソッドの実装が正しいか
  • JavaDocコメントが適切か
  • 変数名・メソッド名が分かりやすいか
  • エラーハンドリングは必要か

スクリーンショット

(実行結果があれば貼り付け)

関連資料

  • 開発ログ: docs/development-log.md

初回PR作成で緊張していますが、レビューお願いします!🙏


4. **右側の設定**:
   - **Reviewers**: PersonA を選択
   - **Assignees**: PersonB(自分)を選択
   - **Labels**: 何も設定しなくてOK

5. **「Create pull request」をクリック**

#### Step3: プルリクエストの理解(10分)
**プルリクエストとは?**
- コード変更の**提案**
- チームメンバーに**レビューを依頼**
- **マージ前の品質チェック**
- **議論・改善のための場所**

**画面の見方:**
- **Conversation**: 議論・コメント
- **Commits**: このPRに含まれるコミット一覧
- **Files changed**: 実際の変更内容
- **Checks**: 自動テスト結果(今回は無し)

### PersonA: コードレビューの実施

#### Step1: プルリクエストの確認(10分)
1. **GitHubでPersonBのプルリクエストを開く**
2. **「Files changed」タブをクリック**
3. **変更内容を行ごとに確認**:
   - 緑色の行: 追加
   - 赤色の行: 削除
   - 白色の行: 変更なし

#### Step2: 行レベルでのコメント追加(10分)
1. **変更された行にマウスを合わせる**
2. **「+」ボタンが表示されるのでクリック**
3. **建設的なコメントを追加**:

**良い例のコメント:**

👍 引き算の実装が正確ですね!
JavaDocコメントも丁寧に書かれていて分かりやすいです。

💡 Suggestion: 将来的には、ゼロ除算のような特殊ケースも
考慮すると良いかもしれません(今回は必須ではありません)


🎉 初回のプルリクエスト、素晴らしい内容です!
テストコードも含まれていて、動作確認もバッチリですね。

この調子で次の機能開発も進めましょう!


#### Step3: 総合レビューと承認(5分)
1. **「Review changes」ボタンをクリック**
2. **レビューコメント入力**:

PersonBさん、初回のプルリクエストお疲れ様でした!🎉

良い点

  • 引き算の実装が正確
  • JavaDocコメントが丁寧
  • テストコードも含まれている
  • 開発ログの更新も忘れずに実施

全体評価

初回にしては非常に高品質なコードです。
チーム開発の進め方も完璧に理解されていますね!

LGTM! (Looks Good To Me)
マージして問題ありません 👍


3. **「Approve」を選択**
4. **「Submit review」をクリック**

#### Step4: マージの実行(5分)
1. **「Merge pull request」をクリック**
2. **マージタイプを選択**:
   - **「Create a merge commit」(推奨)**: 履歴を保持
3. **「Confirm merge」をクリック**
4. **「Delete branch」をクリック**(不要になったブランチを削除)

**🎉 初回プルリクエスト完了!**

---

## Phase6: 同期とコンフリクト体験(20分)

### 両者共通: 最新状態への同期

#### PersonB: マージ後の同期(5分)
1. **GitHub Desktopでmainブランチに戻る**
2. **「Fetch origin」→「Pull origin」**
3. **自分の変更がmainブランチに反映されていることを確認**
4. **ローカルのブランチ削除**: 「Current branch」→ ブランチ右クリック → 「Delete」

#### PersonA: 同期とコンフリクトの準備(5分)
1. **現在の作業ブランチでコミット・プッシュ**
2. **プルリクエスト作成**
3. **意図的にコンフリクトが発生する状況を作る**

### コンフリクト解決の体験(10分)

#### シナリオ: 同じファイルの同じ箇所を編集
**PersonAとPersonBが偶然同じ場所を編集してコンフリクトが発生**

1. **コンフリクト発生の確認**
2. **GitHub上またはローカルでの解決方法**
3. **解決後のマージ**

**コンフリクト解決の学習ポイント:**
- コンフリクトは「悪いこと」ではない
- チーム開発では頻繁に発生する
- 適切な解決方法を知っていれば問題なし

---

## Phase7: 学習の振り返りと次のステップ(20分)

### 完成物の確認(10分)

#### 最終的な成果物
1. **GitHubリポジトリ**: チーム開発の履歴が残っている
2. **動作するJavaアプリ**: 足し算・引き算機能
3. **プルリクエスト履歴**: レビューのやり取り
4. **ブランチ戦略**: 機能別開発の実践

#### 学習できたGitHub機能
- [x] **リポジトリ作成・設定**
- [x] **コラボレーター招待・権限管理**
- [x] **ローカルクローン・同期**
- [x] **ブランチ作成・切り替え**
- [x] **コミット・プッシュ**
- [x] **プルリクエスト作成・レビュー**
- [x] **マージ・ブランチ削除**
- [x] **コンフリクト解決**

### 実際の副業開発での活用方法(10分)

#### GitHubを副業で活用するメリット
1. **ポートフォリオ**: 実際のコード品質をアピール
2. **協働証明**: チーム開発経験の具体的な証拠
3. **継続学習**: コミット履歴で学習姿勢をアピール
4. **案件管理**: クライアントとの協働プラットフォーム

#### 次に学ぶべきこと
1. **GitHub Actions** (自動テスト・デプロイ)
2. **Issue管理** (バグ・機能要望の追跡)
3. **GitHub Pages** (デモサイト公開)
4. **オープンソース貢献** (技術力向上)

#### 副業案件での実践パターン
- **クライアントワーク**: Private リポジトリでの協働
- **自主制作**: Public リポジトリでのポートフォリオ構築
- **技術
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?