【UiPath】UiPathプロジェクトをGitHubで管理してみよう！（2）_issueを立ててブランチを切ってみよう

## はじめに

UiPathではGitHub(ギットハブ)を使用してプロジェクト管理を行うことができます。
初心者向けで簡単にまとまっている記事がなかったのでまとめてみました。

- [第1回 UiPathでGitHub管理を始める](https://qiita.com/FlatBone/items/696bfb89fd5ee2881526)
- **第2回 GitHubでissueを立てて、ブランチを切る←今ココ**
- 第3回 GitHubでmergeする

第1回ではGitHubのアカウントを作成し、リポジトリを立ててUiPathとつないだところまでやりました。

### この記事でわかる・できること

- GitHubでissueを立てる方法が分かる
- GitHubでブランチを作成する方法が分かる
- UiPathでブランチを切り替えて作業する方法が分かる


### この記事で触れないこと

- merge(次回やります)

### この記事の対象者

- UiPath Studio 開発者
- GitHubとか差分管理はなんとなく聞いたことあるけどよくわからない…な人
- UiPathのプロジェクト管理に苦しんでいる人


### 動作環境・使用するツールや言語

- Windows10
- UiPath Studio v2023.10
- GitHub

### 記事の流れ

- issueの説明
- ブランチの説明
- GitHubでissueを立てる
- GitHubでブランチを作成する
- UiPath Studioでブランチを切り替えて作業する

## issue(イシュー)とは

GitHubの概念の1つです。
issueとは作業を計画、議論、追跡できるように各リポジトリごとに作成できるものです。

簡単に言うと**やりたいこと、やらなければいけないこと**です。
次のブランチと紐付けることができます。

https://docs.github.com/ja/issues/tracking-your-work-with-issues/about-issues

## ブランチとは

Gitの重要な概念の1つです。
本番には影響を及ぼさずに別の管理状態に分岐し、好きに開発することが出来る機能です。
ある機能が完成できたと思ったらマージという機能で本番に合流させることができます。

https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E6%A9%9F%E8%83%BD-%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%81%A8%E3%81%AF#:~:text=%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%81%A8%E3%81%AF%E3%80%81%E9%96%8B%E7%99%BA%E3%81%AE,%E3%81%97%E3%81%BE%E3%81%86%E3%81%93%E3%81%A8%E3%81%8C%E3%82%88%E3%81%8F%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82

https://backlog.com/ja/git-tutorial/stepup/01/

## 想定している状況

第1回で開発したのはログを出力するロボットでした。
これを本番としてパブリッシュしているとします。

ここで、ユーザーからの依頼でメッセージボックスに変更することとしました。
そして、この機能変更はうまくいくか分からないとします。

…こんな時に**いきなりロボットを変更して上書き保存**するのは不安ですよね？
そして、UiPath Studioではデバッグの時点でプロジェクトは上書き保存されてしまいます。

さらに、ユーザーからの依頼と開発メモなんかを結び付けられたらもっと良いと思いませんか？

こんな時、GitHubでissueを立てることで開発メモやタスクを作成でき、
そこから**ブランチを作る(ブランチを切る)ことで思い切った開発**ができます。

それでは、やってみましょう！


## GitHubでの作業方法

### GitHubでissueを立てる

前回で立てたリポジトリのページを開いてください。
タブの中に```issue```があるのクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/6d480e31-ecc7-981d-9a37-972ab7074f60.png)

タイトルと中身を入力するように求められるので

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/c7924a1e-4846-1d69-05f4-b7c9e78c2e7d.png)

- Add a title ```ログをメッセージボックスに変更する```
- Add a description ```ユーザーに知らせる必要があるので変更する```

と入力しましょう。内容の方は「なぜ必要なのか」や「依頼の内容」などを分かりやすく記載すると良いでしょう。
（タイトルと説明は後から編集できるので安心してください）

入力できたら```Submit new issue```をクリックしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/535ad666-355b-02f8-ab74-8e6b91429c57.png)

新しいissueが立ちました！#1がこのissueの番号になります。この数字を覚えておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/346ccb5f-084f-d717-12a5-4d3c8205e3e0.png)




### GitHubでブランチを作成する
ここからは先ほど作成したissueを解決するためにブランチを作成していきます。
issueページの右側のDevelopmentの欄に、Create a branchがあるのでクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/f037b7b8-e347-f116-19bb-1be9953ceb03.png)

ブランチ作成画面が出ました。ブランチの名前を入力しましょう。
今回はログをメッセージボックスに変更するissueなのでブランチ名を
`feature-#1-change-from-log-to-msgbox`
としてみましょう。
- **feature**: 機能変更、追加
- **#1**: issue番号(これを付けるとGitHub上でissueと紐付けしてくれる)
- **change-from-log-to-msgbox**: ログをメッセージボックスに変更

入力できたら`Checkout locally`のまま`Create branch`を選択しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/5145bbd0-40cb-80e4-2e30-a703618dc7f6.png)



何かメッセージが出ますが×で閉じます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/d0da9355-f8e3-f96e-dd68-cde4cd2eda4e.png)

ブランチがissueと紐付いた形で作成できました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/1b20d5e8-93f3-df45-4247-d3a47c736181.png)


## UiPath Studioでの作業方法
ここからはUiPath Studioでの作業になります。
前回作成したGitHubリポジトリに接続されているプロジェクトを開いてください。


### フェッチする
そのままではGitHub上の更新をUiPath Studio側は知らないため、フェッチ(fetch)という作業が必要になります。

UiPath Studioでは`リモートブランチを更新`と表記されているのでこれをクリックしてください。
これによって作成したブランチ情報を読み込むことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/4d83335d-5ec7-afb4-956b-3302ee37044d.png)


### ブランチを切り替える
無事に更新が完了したら、再度右下のmainをクリックしてください。
先程GitHub上で作成したブランチに`origin`が付いた`Origin/feature-#1-change-from-log-to-msgbox`が出ていれば成功です！

クリックするとブランチを切り替えできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/9441e545-55db-59cf-2a34-51003e711c09.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/7d4a959c-f767-8ffc-788d-0b416fae0cbd.png)


### 作業する
それでは、ブランチを切り替えることができたので後は大胆に変更していきましょう。
issueに従ってログをメッセージボックスに変更してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/75fc6ad8-edf8-86a6-da88-9adbb35be639.png)


### コミット、プッシュする
上書き保存後、前回学習したようにコミットとプッシュをしましょう！

ただし、今回はコミットメッセージにissue番号の`#1`を付けることを忘れないでください。
これもブランチと同様に、GitHub上でissueと関連付けすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/a520dcc6-647c-125a-6aae-d3717a9baa9b.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/766d14ea-20c3-cf37-f358-7cd44191d3b9.png)

## GitHubで確認する

プッシュができたら、GitHub上で確認してみましょう！


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/8578f204-9857-1efd-eb10-adf1719eaf4a.png)

何か出ていますね。とりあえず無視して、`2 branches`のタブをクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/7de61150-96eb-f7e3-9fdc-f750c0f7b80f.png)

Branchesの中に、`main`ブランチ以外に先程作業した`feature-#1-change-from-log-to-msgbox`ブランチがあります。

クリックしてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/9d9f8da1-3dfb-cbdc-370c-e2b0f2962726.png)

先程プッシュした変更が表示されました！**mainブランチに戻すとこの変更は表示されません。**


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/27056519-1a81-1f2a-5f28-d43a373eaaef.png)

### つまりどういうことか

つまり、**本番であるmainブランチには影響を及ぼさずに好き勝手に編集ができる**ということになります。
これを使えば安心して開発することができます。

では、無事にデバッグも完了し、**本番にこのブランチで作業した変更を反映したい！** ときはどうすればいいのでしょうか？

**いよいよ次回、merge(マージ)機能を使って反映していきます。**


## 参考資料
<!--

https://qiita.com

[リンク1](https://qiita.com)
-->

https://qiita.com

[リンク1](https://qiita.com)


## まとめ
だんだん差分管理システムの恩恵を受けてきている実感が……ありますかね？

今回実施したような
1. issueをGitHub上で作成する
1. ブランチを切る
1. UiPath Studioで作業をする

といった流れで開発することを**issueドリブン**といいます。
機能や修正ごとに作業を区切ることができるのでおすすめの開発手順になります！

つづく