コードレビューのためのgithubリポジトリを作成する

Twitterを起点にWEB制作の情報収集や発信を初めて２週間が経ちました。SNS上ではどういうことが求められているのだろうと思って始めましたが、初学者の方々が多かったので無料のレビューと質問を受付するとツイートしたところ１週間で7件ほどのご依頼をいただきました。

レビューの方法はgithubのURLを送ってもらったり、ファイルを一式送ってもらったり、アップされているWEBサイトを見たりしていたのですが、コードレビューはgithubのプルリクエストをベースにしたほうが、学習している人たちもgithubの知識も深まって良いだろうと考えました。


gitの基礎知識については下記をご確認ください。

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

githubは始めて慣れるまでが結構大変のようなので、こちらにレビューの流れをまとめさせていただきます。
前提条件としてgithubのアカウント取得とリポジトリの操作ができる状態とさせてください。

本説明は私の環境での作業となります。
- macOS Monterey 12.3.1
- Visual Studio Code 1.67.0
- git version 2.35.1
- github プラン Free

## リポジトリの作成
ログイン後にリポジトリの新規作成を行います。

**Repository name**
リポジトリの名前になります。任意のもので構いません。（実際の業務になると命名規則があったほうがいいでしょう）

**Description**
概要文です。空欄でも構いません。

**Public か Private の選択**
Publicは公開されるリポジトリになるので、誰でもアクセスできるようになります。後ほどポートフォリオの１つとするのであればこちらがいいでしょう。
Privateは非公開のリポジトリになります。誰かに見せたい時は、後でそのgithubのユーザーをコラボレーターとして登録する必要があります。

**Add a README file**
慣れている人はチェックを入れても構いませんが、このあとローカルPC内でREADMEを作ってプッシュをする流れを説明するのでチェック無しで進みましょう（説明の必要がない方は飛ばして構いません）

**Add .gitignore**
ローカルリポジトリからgithubにプッシュする際に除外するファイルを設定します。代表的なところだとタスクランナー導入時に作業ディレクトリに貼る`node_modules`などを記載します。今回はあとで記載方法を書くので、デフォルトの`.gitignore template: None`のまま進みましょう。

**Choose a license**
ライセンスの設定が必要であれば選択してください。

最後に`Create repository`をクリックしてリポジトリの作成を完了します。

## ローカルリポジトリ作成とREADMEのプッシュ

コードエディタ（もしくはターミナル）を開き、リポジトリの作成が完了後の画面に表示されるコマンドを実行していきます。`node_modules`などプッシュする必要のないファイルがある場合は`.gitignore`に記載しておきましょう。（macだと`.DS_Store`も記載したほうが良いですね）

.gitignore （除外したいファイルやディレクトリ名を改行で区切って入力します）
```
node_modules
.DS_Store
```

Visual Studio Codeの場合は作業ディレクトリを開いて、画面上部のツールバーから **ターミナル」** → **「新しいターミナル」** で開きます。

```
#READMEの作成
$ echo "# リポジトリ名" >> README.md　

#初期化
git init

# READMEファイルをインデックスに追加してコミットの対象とする
git add README.md

# 初回のコミット
git commit -m "first commit"

# mainブランチへ移動
git branch -M main

# リモートリポジトリの追加
git remote add origin git@github.com:ユーザー名/リポジトリ名.git

# リモートリポジトリへのプッシュ
git push -u origin main
```

この時点ではREADMEのみをプッシュしてください。実際にレビューするコードはこの後に別ブランチを作ってプッシュします。

![スクリーンショット 2022-05-08 22.46.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2656335/8c68c27b-2c57-08fb-e8bc-2ef01d57fdb9.png)

githubの画面を読み込み直して、`README.md`がアップされていればプッシュが完了しています。

## レビュー用のブランチ作成

下記のコマンドで新しいローカルリポジトリを作成して、リモートリポジトリへプッシュします。
```
# ""内のブランチ名は任意のもので構いません。
git checkout -b "review/0508"

# ローカルリポジトリが切り替わっているか確認、*がついているのが現在のブランチ
git branch
  main
* review/0508
```
ブランチの切り替えが完了したらファイルをプッシュしていきます。
```
全てのファイルをプッシュしないときは--allのオプションを書き換えてください
git add --all

git commit -m "任意のコミットメッセージ"

リポジトリ名は先ほどcheckout時に入力したもの
git push origin review/0508
```

![スクリーンショット 2022-05-08 22.54.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2656335/2bc3f09a-440a-dcac-4a81-961a33f05049.png)

無事にプッシュができていれば新しいリポジトリが登録されていますので確認しておきましょう。

## プルリクエストの作成

新たに作成したブランチのページ上部にプルリクエストを作るボタン`Compare & pull request`が表示されているのでクリックして進みます。

![スクリーンショット 2022-05-08 22.55.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2656335/bc632d37-147e-0a96-0ba7-4aa3ca71c689.png)

タイトルとコメントの入力を求められますのでレビュワーにわかりやすいように書いていきます。
コメントのテキストエリアに詳しい内容を書いていきますが、何をやったか、どこをレビューしてほしいか、その他資料（デザインカンプや仕様書、要件定義など）があるといいと思います。

![スクリーンショット 2022-05-08 23.04.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2656335/b1a6b86e-cc47-37c3-86b5-4984adfd9217.png)

最後に`Create pull request`を押してプルリクエストの作成は完了です。

## レビュー
ここまで完了したらレビュワーの方にプルリクエストのURLを送りましょう。レビュワーはコードの内容をチェックして、修正点の行にレビューコメントを記載していきます。レビューの記載が入るとプルリクエスト上のツリーに表示されますので、確認してコードの修正をしていきましょう。

![スクリーンショット 2022-05-08 23.09.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2656335/74282abf-384d-4d4e-a610-3c725990d0a0.png)

コードの修正はローカルリポジトリ内で行います。修正してaddとcommit、pushを行うとプルリクエストのツリーに表示がされるので、コメントに修正の旨を記載しましょう。
Visual Studio Codeの機能でもaddとcommitはできるので紹介しておきます。

![スクリーンショット 2022-05-09 11.22.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2656335/abedc6f5-5718-f10f-5b45-80aa60b36d13.png)
ウィンドウ左のツールバーから **「ソース管理」** のアイコンをクリックします。ファイルに変更があるとアイコンの右下に変更したファイル数がついているのがわかります。**「＋」** をクリックするとファイルごとにインデックスへの登録ができます。（ソース管理が表示されていない場合は画面上部のツールバー「表示」→「ソース管理」を選択）

![スクリーンショット 2022-05-09 11.22.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2656335/97aa98c0-48bf-2844-30c3-9b201871e9f5.png)
次にコミットメッセージを入力してチェックのアイコンをクリックするとコミットが完了です。続いてターミナルから先ほどと同じプッシュのコマンドを入力します。
```
git push origin review/0508
```

![スクリーンショット 2022-05-09 21.27.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2656335/b159f5a0-3808-45fa-2651-1356c18a9970.png)
画像下部にプッシュしたコミットが表示されていますので、レビューのコメントを返してレビュワーの方に再度チェックをしてもらいましょう。

すべてのレビューへの対応が完了したらレビュワーに`approve`をしてもらい、mainへのマージリクエストを送れば完了となります。
リポジトリの設定でレビュワーの指定や`approve`がないとマージリクエストを送れないなどの制御も可能なのですが、説明すると長くなるので本記事では割愛させていただきます。

マージリクエストが終わった後にもう一度このリポジトリを修正、更新したい場合は、新たにブランチを切って同様のフローで修正を行いましょう。

## 終わりに
一応、業務でもこれに近い流れでレビュー→mainへのマージを行なっています。
もっと「こうしたほうがいいよ！」という声がありましたら、是非ご教示いただきたいです。あと、ここがわからなかったなどもコメントいただければ書き足していくようにします。
よろしくお願い致します。