Plastic SCMを使ってみようと思った⑥

# はじめに
[前回の記事で盛大な回り道](https://qiita.com/Accky/items/5d1e3e0c31f389aadcf4)をしてしまったので、今度こそコードレビュー機能を試してみたい。

# コードレビュー概要
[こちらのサイト](https://www.plasticscm.com/code-review)でPlastic SCMのコードレビューについてざっくり説明されているようです。
Google翻訳に頼りながら内容を解読してみますと、コードレビュー機能はブランチかチェンジセットに対して作成できるようです。なのでまず、ブランチを作って適当なソースコードを足してみようと思います。

# コードレビュー用のブランチを作成
というわけで早速、AddCodeTestというブランチを作ってみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/b619b1c3-5546-331d-c308-ba45070bda44.png)
## コミットするファイルを制限できるのかな？
ここでコードを足す前に、ふと気になったことは.gitignoreのように、チェックイン対象にするファイルを制限できないかなということ。これはないと地味に……いや派手に不便です。
調べてみたところ、[この情報](http://blog.plasticscm.com/2020/01/definitive-ignoreconf-for-unity-projects.html)が見つかりました。

要するに、ignore.confというファイルを作って、その中に制限するファイルの拡張子などを設定し、リポジトリに追加してやれば大丈夫そうです。

というわけで、上記の記事の内容通りのignore.confを作ってチェックイン……しようとしたのですが、confファイルは基本的に無視されてるみたいです。基本的にはローカルファイルとして扱う感じなんでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/641b5bf2-b1b1-66fd-db8c-f788bff81bca.png)
でもまあこういうものはプロジェクト全体で共通のものを使うことが多いはず。というわけでconfファイルを右クリックしてみたところ、管理に追加することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/9c80bfba-ff50-b414-0c9f-2811b1bf1596.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/5be5052a-571e-f751-4cd9-957c91434823.png)
あとはこいつをチェックインしておしまいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/9accb186-a780-635b-c368-1a6f682b1844.png)

# 今度こそコードを追加
ignore.confがUnity向けのフィルタ設定だったので、C#のコードを適当に追加してみることにします。Unityで新しいC#スクリプトを追加したときに作られるNewBehaviourScript.csを足します。
チェックインコメントを書いて、チェックイン＆Push！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/6f8dbb9b-54a6-ee32-7eda-18e2ce5403b5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/e7791c3f-f51e-c36a-f041-ca7ab8566baa.png)

# チェンジセットに対してコードレビューを追加する
先程の変更に対して、コードレビューを追加してみます。現在のブランチを選択して右クリックしたら「New code review for this changeset...」で追加できそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/037a2390-6e92-8a45-38b5-c756cbcc1f24.png)
というわけでそれをぽちっと実行すると以下のコードレビューウィンドウが表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/f575daa8-0f4b-733a-0934-ec5c7aab5aa3.png)
また、左メニューからCode reviewsタブを開くと、先程追加したコードレビューが表示されるようになっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/f0b5b9cc-0e08-c478-f20e-a6680ee365a0.png)
この情報はチェックインなどを行わなくて良い（変更として表示されない）ので、追加するだけで全体で共有できるようになるのかな？と思われます。（未確認）

# 実際にレビューしてみる
今このリポジトリをいじっているのは私だけなので一人芝居になりますが、レビュー機能を試してみましょう。

というわけで、コードレビューウィンドウのソースコードにコメントを付けてみます。ソースコードの右端のバーにプラスマークが表示され、好きな行にコメントを追加できるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/a7d1d7f3-64f8-c2be-1c15-d4e01542648c.png)
コメントのタイプは「変更要求」と「質問」の２つがあるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/a5ea5015-a148-9216-5ecf-8c55dca061ee.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/ab417727-f300-5927-bfa3-57c743d67b5d.png)

## 質問してみる
質問のコメントを付けてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/95a7a5a2-2d35-5c1b-8063-c2c8800fd24e.png)

## 変更要求してみる
次に変更要求のコメントをつけてみました。こちらは質問のコメントと違ってコメントのIDが表示されました。レビューに対処するときに使うんですかね？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/66a76a49-8f86-da20-b513-0f7bb72e375a.png)

## 質問に答えてみる
質問のコメントはレスした段階でPendingではなくなるようですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/d557a9de-7e53-9491-3a25-415fa254e046.png)

## 変更要求にレスしてみる
こちらはレスしただけではだめなようです。（当たり前）
なのでここはコードを変更してチェックインして、変更要求に答えてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/ebe2d4ff-8705-d86a-c8f9-6f2de764fa9a.png)

# レビューに対応してチェックインする
早速レビューで（自分で）コメントした内容である「クラス名が悪い」というのを修正します。といってもNewをSampleにしただけですが。
というわけでその変更を加えてチェックインした結果がこちら。コメントを消してクラス名を変更しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/4169b7a8-eed4-45cb-7d12-e9bf2286d6af.png)
……あれ？そういえばコードレビューってチェンジセットごとに設定されているから、どうやって修正したことを反映するんだろう、と思っていたら、アプリの説明部分が教えてくれました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/135969fc-51a1-bf2a-e8af-9454b707916e.png)
どうやらコードレビューを解決するためには、チェックインのコメントに[apply-change:(コメントのGUID)]を書き込まないといけないようです。なるほど、だから変更要求のコメントにIDが表示されていたのか……。

ひとまずあまりお行儀が良くない方法ですが適当な変更を加えて上記のコメントを書いてみたところ、無事変更要求のコメントがPendingから解決状態になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/79fd2a0a-452a-cc04-3f8c-3c6f17c7c05a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/fa8c3538-38ec-1880-744b-8de6daa02310.png)
ちなみにチェックイン時のコメントを編集できるみたいだったので、最初に誤ってチェックインしたコメントを編集して上記のタグを書きこんでみたのですが、Done: cs6の部分が変化しませんでした。コメントの変更がサーバに反映されてないのかなあ……？

# レビューを終わらせてみる
変更要求した内容も反映されたのでレビューはおしまいです。コードレビューウィンドウの上の方にある状態をレビュー済みに変更します。（変更要求したときはRework requiredにしてました）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/90b6b88e-5c36-b44b-0249-943fb28b934d.png)
その状態になると、コードレビュータブで表示されるときの色が安全カラーな青に変わりました。基本的にこのリストをすべて青色にしながら運用していく感じですねきっと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/480efbd2-816b-0eb6-7419-053d5b422e43.png)
また、レビューした人orグループも指定できるようです。コードレビューウィンドウの右上で設定できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294857/6605346a-9f02-31d4-8e33-62a4729b2e47.png)
個人を設定できる以外にグループが指定できるのは、名前を出すと厳しい指摘をするときに遠慮してしまうのを避けるためとかでしょうか。

# おわりに
ざっくりとコードレビュー機能を試すことができました。
コードレビューの情報がどういうタイミングで同期されてるのかなど一人でいじっているとよくわからないこともありますが、なんとなく使えました。もっと多人数でハードに使ったら違う見え方をするかもしれませんが。

感想としては総じてわかりやすく直感的で使いやすいなあと思います。
プルリクのようにレビューを通らないとマージができない、のような強い仕組みではないかなと思うので、そのぶん運用に合わせてルールを作る必要はあるのかなとは思いました。
個人的には気楽に使えるという感じがして好感が持てました。上手に運用できる方法を考えて使えたらいいなーと思います。