WinFormsで2人開発を体験する(Gitチーム開発入門)
Gitチーム開発シリーズ:なぜGitを使うのか|WinFormsで2人開発を体験する(今ここ)|[目次へ]
プログラミング学習では、最初は一人でコードを書くことが多いです。 しかし実際の開発現場では、複数人でプログラムを作るのが普通です。
そのため授業でも
- Git
- チーム開発
- 役割分担
を体験してもらうことがあります。
今回は WinFormsアプリを2人で開発する方法を紹介します。
チーム開発の基本
チーム開発では、次の3つが重要になります。
①役割分担:誰がどこを作るか決める
②履歴管理:変更を記録する
③統合:別々に作ったコードをまとめる
このために使うツールが Git です。
今回作るアプリ
シンプルな例として 電話帳アプリ を作ります。
機能
- 名前一覧表示
- 名前クリック
- 電話番号表示
データは 名前,電話番号 形式のファイルから読み込みます。
前提:電話帳アプリの作り方を知っているとスムーズです。一人で作る手順は「WinFormsで作る電話帳アプリ(Listで管理する版)」を参照してください。(※ブログ公開時はリンク先を実際のURLに差し替えてください)
準備(事前に1人でやる作業)
2人で開発を始める前に、Aさんが次の準備を行います。
① プロジェクト作成とGit初期化
- Visual Studio で Windows Forms アプリ のプロジェクトを作成(例:PhoneBook)※ .NET Framework を想定。.NET 6/7/8 の場合は後述の data.txt パスを調整
- プロジェクトフォルダを GitHub Desktop にドラッグ
- 「Create a repository here」でリポジトリを作成
- ダイアログで 「Git ignore」を「Visual Studio」に設定(
bin、obj、.vsを除外)
- ダイアログで 「Git ignore」を「Visual Studio」に設定(
- 「Publish repository」で GitHub に公開
② Bさんを Collaborator に追加
- GitHub のリポジトリページを開く
- 「Settings」→「Collaborators」→「Add people」
- Bさんの GitHub ユーザー名を入力して招待
③ Bさんが参加する
- Bさんは招待メールのリンクからリポジトリにアクセス
- GitHub Desktop で「File」→「Clone repository」→ 該当リポジトリを選択
- 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)を配置
| コントロール | 名前 |
|---|---|
| ListBox | nameList |
| TextBox または Label | phoneNumber |
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にphoneBook、ReadFromFile()、コンストラクタの処理、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つを意識します。
- 役割分担
- Gitで履歴管理
- 統合
この経験は 一人で作る学習とは違う視点 を与えてくれます。
そして多くの学習者が 「プログラムはチームで作るもの」 ということを実感します。



ディスカッション
コメント一覧
まだ、コメントがありません