WinFormsで2人開発を体験する(Gitチーム開発入門)

広告

Gitチーム開発シリーズ:なぜGitを使うのか|WinFormsで2人開発を体験する(今ここ)|[目次へ]


プログラミング学習では、最初は一人でコードを書くことが多いです。 しかし実際の開発現場では、複数人でプログラムを作るのが普通です。

そのため授業でも

  • Git
  • チーム開発
  • 役割分担

を体験してもらうことがあります。

今回は WinFormsアプリを2人で開発する方法を紹介します。


チーム開発の基本

チーム開発では、次の3つが重要になります。

①役割分担:誰がどこを作るか決める

②履歴管理:変更を記録する

③統合:別々に作ったコードをまとめる

このために使うツールが Git です。


今回作るアプリ

シンプルな例として 電話帳アプリ を作ります。

機能

  • 名前一覧表示
  • 名前クリック
  • 電話番号表示

データは 名前,電話番号 形式のファイルから読み込みます。

前提:電話帳アプリの作り方を知っているとスムーズです。一人で作る手順は「WinFormsで作る電話帳アプリ(Listで管理する版)」を参照してください。(※ブログ公開時はリンク先を実際のURLに差し替えてください)


準備(事前に1人でやる作業)

2人で開発を始める前に、Aさんが次の準備を行います。

① プロジェクト作成とGit初期化

  1. Visual Studio で Windows Forms アプリ のプロジェクトを作成(例:PhoneBook)※ .NET Framework を想定。.NET 6/7/8 の場合は後述の data.txt パスを調整
  2. プロジェクトフォルダを GitHub Desktop にドラッグ
  3. 「Create a repository here」でリポジトリを作成
    • ダイアログで 「Git ignore」を「Visual Studio」に設定binobj.vs を除外)
  4. 「Publish repository」で GitHub に公開

② Bさんを Collaborator に追加

  1. GitHub のリポジトリページを開く
  2. 「Settings」→「Collaborators」→「Add people」
  3. Bさんの GitHub ユーザー名を入力して招待

③ Bさんが参加する

  1. Bさんは招待メールのリンクからリポジトリにアクセス
  2. GitHub Desktop で「File」→「Clone repository」→ 該当リポジトリを選択
  3. Clone したフォルダを Visual Studio で開く

これで2人とも同じプロジェクトを編集できる状態になります。


作業の順番(タイムライン)

同時に同じファイルを編集しないことが重要です。次の順番で進めます。


① Aさん:PhoneData と data.txt を作成

やること

  • PhoneData.cs を追加し、クラスを定義する
  • data.txt をプロジェクトフォルダに追加し、名前,電話番号 形式でサンプルデータを書く(④で @"..\..\data.txt"から読み込む)

PhoneData.cs

class PhoneData
{
    public string Name { get; set; }
    public string PhoneNumber { get; set; }
}

data.txt

田中,090-1111-1111
佐藤,090-2222-2222
鈴木,090-3333-3333

※1行目に「名前,電話番号」などのヘッダ行は入れない。空行も入れない。

Commit:「PhoneDataクラスとdata.txt追加」→ Push


② Bさん:Pull → フォームにコントロールを配置

作業前Pull で Aさんの変更を取得

やること

  • Form1 に ListBox(名前:nameList)を配置
  • Form1 に TextBox または Label(名前:phoneNumber)を配置
コントロール名前
ListBoxnameList
TextBox または LabelphoneNumber

Commit:「ListBoxとphoneNumberを配置」→ Push


③ Bさん:ListBox のクリックイベントを追加

やること

  • nameList をダブルクリックして、イベントの空メソッドを作成する
  • Visual Studio では nameList_SelectedIndexChanged という名前で自動作成される
private void nameList_SelectedIndexChanged(object sender, EventArgs e)
{
    // 中身は Aさんが後で書く
}

Commit:「ListBoxのクリックイベント追加」→ Push


④ Aさん:Pull → ファイル読み込みと表示処理を追加

作業前Pull で Bさんの変更を取得

やること

  • Form1.cs に phoneBookReadFromFile()、コンストラクタの処理、nameList_SelectedIndexChanged の中身を書く
  • data.txt はプロジェクトフォルダに置く(@"..\..\data.txt" で参照)

@"..\..\data.txt" は .NET Framework の bin\Debug\ を前提にしています。.NET 5/6/7 などでパスが合わない場合は、実行フォルダの階層に合わせて @"..\..\..\data.txt" のように調整してください。

Form1.cs の完成コード

List<PhoneData> phoneBook;

public Form1()
{
    InitializeComponent();
    phoneBook = new List<PhoneData>();
    ReadFromFile();
    foreach (PhoneData data in phoneBook)
    {
        nameList.Items.Add(data.Name);
    }
}

private void ReadFromFile()
{
    using (System.IO.StreamReader file =
           new System.IO.StreamReader(@"..\..\data.txt"))
    {
        while (!file.EndOfStream)
        {
            string line = file.ReadLine();
            string[] data = line.Split(',');
            PhoneData phone = new PhoneData();
            phone.Name = data[0];
            phone.PhoneNumber = data[1];
            phoneBook.Add(phone);
        }
    }
}

private void nameList_SelectedIndexChanged(object sender, EventArgs e)
{
    string name = nameList.Text;
    foreach (PhoneData data in phoneBook)
    {
        if (data.Name == name)
        {
            phoneNumber.Text = data.PhoneNumber;
            break;
        }
    }
}

Commit:「ファイル読み込みと検索処理追加」→ Push


⑤ 完成・動作確認

Bさんが Pull して、アプリを実行。名前をクリックすると電話番号が表示されれば完成です。


Gitの役割

Gitは 変更履歴を管理するツール です。

例えば

  • 誰が変更したか
  • いつ変更したか
  • 前の状態に戻す

などができます。

また 複数人で同じプロジェクトを編集する ことも可能になります。


2人開発の役割分担

WinFormsの場合、役割分担が重要です。

なぜなら フォームは同時編集すると壊れることがある からです。

そのため次のように分けます。


Aさん(ロジック担当)

担当

  • クラス作成
  • List管理
  • 検索処理
  • ファイル読み込み

class PhoneData
{
    public string Name { get; set; }
    public string PhoneNumber { get; set; }
}

Bさん(画面担当)

担当

  • ListBox
  • TextBox
  • ボタン
  • クリックイベント
  • 画面レイアウト

Gitでの作業の流れ

基本ルールは次の通りです。

作業前Pull — 他の人の変更を取得します。

作業後Commit → Push — 変更を保存します。


Commitの書き方

Commitメッセージは簡潔に書きます。

  • PhoneDataクラス追加
  • 検索処理追加
  • ListBox表示処理追加

小さくCommitする

1つの変更ごとにCommitするのが基本です。

悪い例:全部作った

良い例

  • PhoneDataクラス追加
  • ファイル読み込み処理追加
  • 検索処理追加

チーム開発で起きやすい問題

初めてのチーム開発では、次の問題がよく起きます。


Pull忘れ

Pullをせずに作業すると 古いコードを編集してしまう ことがあります。

そのため 作業前はPull を習慣にします。


同じファイル編集

2人が同じファイルを編集すると 競合(コンフリクト) が起きます。

対策

  • 担当を分ける
  • 同時編集しない

フォーム破壊

WinFormsでは Form1.Designer.cs が自動生成されます。

このファイルを複数人が編集すると フォームが壊れることがあります

そのため フォーム編集は1人にする のが安全です。


チーム開発の価値

チーム開発を経験すると、次のことが分かります。

  • 他人のコードを読む力
  • 役割分担
  • コード統合
  • バージョン管理

これは 実際の開発現場で必須のスキル です。


授業でよく伝えること

チーム開発の授業では、次のことを伝えています。

今日の目的はプログラムを作ることではありません

チームで開発する体験をすることです

完成度よりも

  • 役割分担
  • コミュニケーション
  • Git操作

の体験が重要です。


まとめ

WinFormsのチーム開発では、次の3つを意識します。

  1. 役割分担
  2. Gitで履歴管理
  3. 統合

この経験は 一人で作る学習とは違う視点 を与えてくれます。

そして多くの学習者が 「プログラムはチームで作るもの」 ということを実感します。

訪問数 4 回, 今日の訪問数 4回

広告