ついにJetBrains系IDEでペアプロができるようになりそう

# JetBrains系IDE
JetBrains社が提供している統合開発環境で詳しくは先人たちが紹介してくれている
なんなら説明不要のIDEである。
# ペアプログラミング
複数人で同時にプログラミングすること
昔は一台の端末に複数人がそれぞれキーボードをつなげてワイのワイのコーディングをしていたらしい。
基本的には
・教える人
・教わる人
という役割を決めてペアを組んで行うそうな。

# リモートペアプログラミング
キーボードを端末に複数台つなぐのではなく、ネットワークにて一台の端末に接続して
同時にプログラミングをすること。
2020年は特に重要な要素でもあると思う。

# JetBrains社が公式でペアプロ用プラグインの試用版をリリースした
個人的にはIDEといったらJetBrains系に勝るものはないと思っているのですが。
ペアプログラミングという面に関しては、なかなかよさげなものがない。
サードパーティ製のプラグインでCodeStreamなどなどあるものの
CodeStream側の有料プランが必要だったり、ライブ感がいまいち足りなかったりするものしかなかった。
おそらく現状一番理想的なペアプログラミングのツールはVSCodeのLiveShareプラグインなのではないだろうか。
これは実際使ってみたところ素晴らしい。イメージしていたリモートペアプログラミングまんまである。
しかし私はどうしてもJetBrains系IDEでペアプロをしたいのだ。
## 実は前からできることは知っててずっと待ってたんです。
私はJetbrains社の取り組み内容を下記にてちょいちょい監視していた
https://youtrack.jetbrains.com/
そしてペアプロ用プラグインを開発していることをしった。
https://youtrack.jetbrains.com/issue/IDEABKL-708

## 2020年08月28日、チーム内でペアプロしたいよねーって話をした
上記を待ってはいたのだが、昨今の事情もあり、すぐにでもリモートでペアプロできる仕組みがほしいということで
チーム内で様々なツールなどを検証していた。VSCodeとか、ホスト作ってRDPでいいんじゃね？とかCodeStream買ってみる？とかとか
そんな中、そういえばあのプラグインどうなったんかなと覗いてみると
https://youtrack.jetbrains.com/issue/IDEABKL-708#focus=Comments-27-4365766.0-0

**丁度！タイムリーに！試用版リリースしてるやんけ！**

もうね、すごく興奮しました。
code-with-meってプラグインのようです。なんかすでにあるけどそれの大型バージョンアップって感じのpluginだそうな

# code-with-me試用版を早速使ってみる
## pluginの入手
上記リンクからアンケートに答えてあげる
https://surveys.jetbrains.com/s3/code-with-me
アンケートの過程でメールアドレスを入力する箇所が出てきます。
アンケート完了後にプラグインの保管場所urlを入力したメールに送ってくれます。
※保管場所urlさえ知ってればアンケートスキップできますが、ここにはそのurlは貼りません。

保管場所URLを除くとjetbrains社が提供しているIDEの名前っぽいフォルダがずらりと出てきます。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185193/3d11c818-adb0-4176-5143-db1df3a40985.png)
このうち、自分が必要としている、またはいつも使っているIDEのフォルダの中を見ると
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185193/75be6359-2740-1ee4-48d7-10102ce10681.png)
こんな感じになってます。
pluginはこの中の一番上のzipファイルです。
そのほかはIDE本体となります。このpluginをDLして適当に配置
私は今回
C:\Users\\{ユーザー名}\Documents\tools\jetbrainsEarlyAccessPrograms
とかいうフォルダを作成してその中にいれました。

## pluginのインストールの前にIDE本体の確認
このpluginは比較的最新バージョンのものでないと動作しません。※ver 2020.2.1以上
直近でupdateしていない場合は本体もurlからDLするなど更新する必要があります。
長いこと更新をしていない場合、updateすると使えなくなるpluginとかがあるので注意です。
※昔の日本語pluginとか入ってるとそもそも起動しません
※intellijとかだとmybatisのpluginが使えなくなっちゃうとかとか

上記を乗り越え更新し、![無題3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185193/87579116-d1c0-6d9b-6066-091fd467c2bc.png)
こんな感じのバージョンが表示されれば準備完了です。


## pluginのinstall
設定からプラグインを選択いただき、歯車をクリックすると
Install Plugin from Disk
という項目があるのでそれを選びます。
![無題4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185193/0c30886c-98a8-adf0-8d8f-68757d2fa881.png)

するとエクスプローラーめいたものがでてくるので、pluginを保存した場所を指定し、pluginのzipファイルを選択してください。
するとCode With Meがinstallされ
RestartIDE
というボタンがでますのでそれをクリックすると勝手に再起動してくれます。

## 使ってみる
### 確認
再起動すると右上にCode With Meとかいうものが追加されているはずなのでクリックする![無題6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185193/3f103cc4-e94c-4bb3-12bd-828681ccd896.png)
### 自分を親とする
「アクセスを有効にして招待リンクをコピー」
をクリックする
以上で準備完了である。恐ろしいほど簡単ですね。
コピーしたリンクを共有したい人に伝えることで準備完了です。
招待リンクのコピーをクリックすれば何度でもリンクをコピーできます。
※windowsの場合firewallの許可が必要で、ポップアップが出てくると思うので許可する。をクリックする必要があります。
※また招待された人が承認要求してくるので許可するボタンを押してあげる必要があります。
### 招待された人
招待を受けた側の人間にもCodeWithMePluginが入っている場合
CodeWithMeの
「別のIDEに参加者として接続する」
をクリックするとURL入力欄がでるのでそこにURLをいれてOKを押下すると参加できます。
※クライアントをバックグラウンドでDLし、実際に参加する際はDLしたクライアントから参加します。
※利用規約が出てきますので必ず読んでください。
※試用版ということですので、自己責任にて検証することになります。
※マジのPJではなくsampleのPJを作って試すのがいいんじゃないかな。

### 招待された人のPCになにも入っていない場合
URLをブラウザに打ち込むと、DownLoadandLaunchボタンがあります。
これをクリックすると、なんとクライアントをDLできます。
DLしてインストールすると![無題7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185193/1d08f7d1-b25b-8e0d-720c-cd97b325c51e.png)
こんな感じのクライアントが起動して、ホスト側のIDEとペアプロを実施できます。
すごい
※このクライアントソフトのライセンスとかどういう感じかみてませんので注意。
※IntelliJのコミュニティ版っぽい感じなので多分フリーなんじゃないかと思ってます。多分

# 使ってみた
上記を経て、チーム内でお試しで使ってみました。
現在私の所属しているチームはリモートでのやり取りが多く、今回はGoogleMeetで会話しながらの作業となりました。
自分がホストとなり、実施したのですが、だれが何を書いているか、すぐにわかりますし、なんなら手分けして作業してる感もより強く感じることができました。
チーム内でもだいぶ良い印象でした。
使用感はVsCodeのLivbeShareに引けを取らないと個人的にはおもっており、何より強力なIDEのサポート機能を受けながら、かつペアプロを実施できるっていうのがいい。
そりゃLiveShareのほうが高機能感はありますが、個人的にはCodeWithMeのほうが簡潔でよい印象をうけました。
※チャットや、コールなどは実装されていなさそうなので現状はGoogleMeetなどで別途やり取りしながらがよいかなと思います。
※日本語化とか各種pluginはクライアントで新規にインストールする感じになります。

## 課題や要望
* まだ試用版ということで、これをPJに正式に持ち込むのは気が引ける
* インターネットを介するのでセキュリティ的に厳しいところはNGでそう。ただしコードなどのデータは暗号化して、かつSSL通信という基本的なことはやってるみたい。
* JetBrains社のサーバを介してのやり取りになるので同じようにセキュリティが問題になる現場は多そう。
* チャットやコメントができるといいなぁと思う。gitと連携などもあると夢が広がりそう。
* ホストのPJ内容すべてが見えてしまうようになっている、これはホスト側で調整できるといいなと思う。
* 編集権限なども操作できると事故も防げていいなとおもう。
* セキュリティ問題の解決として、オンプレ構築できるようなものがほしいなぁって思う。社内に環境全部作ってしまえば万事解決だし
* 多分サービスの性質上オンプレ構築用も開発するんだろうと思うが、ライセンスの体系が気になる。本気でほしいからこそ気になる。

# 終わりに
この出来事はほんとに嬉しかったです、ここ最近で一番興奮しました。夢ひろがっちゃいました。
Googleのスプレットシードっぽい感じをJetBrains系IDEでできるってホントに素敵。
LiveShare相当のやつJetBrainsでも使いたいなーって思ってたかたや、本記事をみて気になった方はぜひお試しください。

指摘事項や、感想、こういうのもあるよーなどご教示いただければと思います。

#追記
2020/12月に正式にリリースされるっぽいですね。

※なんか恥ずかしいタイポとか表記のゆれがあったので修正しました。

以上。