JetBrains Code With Me はどう?

この記事は whywaita Advent Calendar 2020 の19日目の記事です。

今年はwhywaitaくんには関係ない記事で申し訳ないです。申し訳ないので昨日のやり取りを載せておきます。

f:id:kurouw:20201219044345j:plain

今回はJetBrainsでCode With Me というIDEEAP リリースしたので早速使ってみた感想を書いていこうかなと思います。

Code With Meとは

Code With Me とはみんな大好き JetBrainsからローカルのIntelliJベースのIDEをチームで共有してリアルタイムコーディングができるアプリケーションです。

この機能を使えばコロナなどでリモートワークが増え、今までオフラインでペアプロやモブプロなどをしていたチームがオンラインで開発をせざるを得ない状況になっても今までと同じようにストレスなく開発できそうなのでとてもありがたいのではないかと思います。

使い方は簡単で、

HostでIntelliJ IDEA Ultimate版のpluginに存在するCode With Meをインストールする。

f:id:kurouw:20201219025310p:plain

するとIntelliJウィンドウの上部に専用のボタンが出現するので Enable Access And Copy Invitation Link をクリック、パーミッションの設定をしてリンクが発行されるのでそのリンクをGuestに教えてあげる。

f:id:kurouw:20201219025900p:plain

f:id:kurouw:20201219030153p:plain

f:id:kurouw:20201219030311p:plain

f:id:kurouw:20201219042129j:plain

f:id:kurouw:20201219042317j:plain

f:id:kurouw:20201219042620j:plain

Guest側はリンクを開くとCode With Meが立ち上がりHost側で共有をAcceptしてあげると使えるようになる。

Guest側でCode With Meのクライアントをインストールしてない場合はインストール用のスクリプトがまず取得できるようです。

結構すごくて、パーミッションの設定でFullアクセスを許可するとコード編集はもちろんのこと、ターミナルでホストのマシンの環境をいじくり回せちゃうんですよね。悪用は厳禁ですw

動機とか

そもそもなんでこれを試そうかと思ったかというと、普段の業務ではScalaでアプリケーションのバックエンドを実装していてIntelliJなしではやっていけないほどなんですが、開発しているプロジェクトも大きいうえにリモートワークが増え、Zoomを開きながらなどマシンのリソースを酷使することが大きくなりだんだんと重いなと感じ始めたのが発端です。

そこでチームの間ではコードは手元で書いてローカルのコードのビルドもサーバーでやりたいねという話が盛り上がってました。 チームの先輩たちは VSCode + Metals を使ってEC2のスポットインスタンス上にビルドサーバーを立ち上げて開発するという方法を試していました。僕もこの方法が一番筋が良さそうだなと思ったのですが、僕は どうしてもIntelliJが使いたい ので上記の方法が確立しても正直移行するか迷っていました。

そこで銀の弾丸のように舞い降りてきた Code With Meです。

どういうことかというと、Code With Meを同じようにEC2でHostとして立ち上げて手元のマシンでGuestとして参加すれば IntelliJで開発とサーバーでビルドが両立するのではないかと思ったのです。

実際に試してみる

まず準備としてEC2を立ち上げる。 今回使ったのは t2.xlarge(4コア 16G RAM)のインスタンスタイプのEC2でOSはUbuntu 18.04です。 Guestに当たる手元のマシンはMacです。

サーバー上でも画面操作が必要なのでRDPをインストール、起動。ScalaをビルドするためにJavaやsbtなどをインストールしました。

Code With Meでリンクを作成して手元のマシンで開くと、、、

f:id:kurouw:20201219043013j:plain

f:id:kurouw:20201219043152j:plain

(モザイクばっかなのは申し訳ないです🙇‍♂️)

おおおお、開いて編集できる!!

気になっていたショートカットなどもMacのもの(手元のマシン)で使うことができる。

pluginなどはHostのものと同じものが入っているのかと思いましたが Code With Me自体にも別途pluginをインストールする必要があるようです。

f:id:kurouw:20201219043442p:plain

共同編集が目玉機能なのですが問題なくどこを修正しているかも追えそうです。

f:id:kurouw:20201219043719j:plain

使ってみた感想としては、今までファンが唸っていたマシンも唸らなくなりかなり快適に思えました。 ただ、重くはならなくなったのですが、補完などは少し遅いかな?と思いました。これはサーバーのスペックが足りないのか Code With MeのVM Optionなどの設定をいじれば早くなるのかまでは検証してませんので気になった方はベンチマークなどをしていただけたら教えて欲しいです。

機能面で言えば一点気になった部分がありました。Scala + IntelliJの開発ではScalaのビルドツールであるsbtの設定を変更した場合にそれをIntelliJに認識させるためにリロードをする必要があります。

sbtのタブがCode With Me上では見当たらなかったので完全に手放しで開発に専念できるという感じではないかなと思いました。ただ頻繁に変更するものではないので集中してコードだけ書いてテストするなどの用途になら十分足りうるのかなと思います。 EAPリリースなのでもしかしたら正式にリリースされたものにはこの機能や他の見つけられていない微妙な点が解決されているのかもしれませんね。

まとめ

今回はIntelliJをより快適に使うためにCode With Meの導入を検討してみました。

デスクトップ付きのでかいマシンをクラウド上で構築して手元で IntelliJを使い コードを書いてサーバーでビルドするということが出来そうなことがわかりました。

気になる点としては

  • 補完が若干遅いかも?
  • リモートデスクトップでサーバーを操作する必要があるのでそもそも微妙かも?
  • sbtのリロードのボタンがなさそう

でした。

あくまでも完全に個人的な検証しかしていないのでその他に気になる点がある方は構築も簡単ですしやってみるといいと思います。

早く正式リリースして欲しいなと思います。


明日は nakanokurenai さんの 「わいわいたさんの出身大学に関するサービスを作るかもしれない」です。