え！！複数の JVM プロジェクトで同時に Code with me を！？

**出来らあっ！**

---

この記事は [Uzabase Advent Calendar 2021](https://qiita.com/advent-calendar/2021/uzabase) 1日目の記事です。

## 概要

IntelliJ IDEA のプラグインである Code with me は1年前に [記事](https://qiita.com/m-takehara/items/8e0d62bf3edf29efd5cd) を書いたときから色々とアップデートが入り、今では IntelliJ IDEA にデフォルトでバンドルされるようになりました。
IntelliJ IDEA ユーザかつペアプロ・モブプロをする方は、一度はお世話になったプラグインではないでしょうか。筆者もその1人です。

ただ、例えば筆者のように複数の Kotlin のプロジェクトを同時に編集する必要がある場合、Code with me の使い方にひと工夫が必要です。
当記事では、その設定方法について記載します。

## 問題点の確認

まずは普通に Code with me のセッションを作ってみます。(映っているのは IntelliJ IDEA から生成した [Ktor](https://jp.ktor.work/) のテンプレートプロジェクトです)

![スクリーンショット 2021-11-30 23.54.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/c4fd6025-27cc-8bd5-6d9a-23e1999309ac.png)

![スクリーンショット 2021-11-30 22.33.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/858a96b3-27b7-1725-6247-c8d1c52681f0.png)

"Enable Access" すると URL が作られます。
ここまでは問題ありません。普通の Code with me の使い方です。

ここからが問題です。
上記で共有したプロジェクトとは別のプロジェクトを IntelliJ IDEA で開き、それも Code with me で共有しようとしてみます。

![スクリーンショット 2021-11-30 22.36.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/0c1c9c66-268e-e29b-839b-9da37e8731a2.png)

左が共有済み、右が未共有です。
この状態で右のほうの Code with me を有効化しようとすると...

![画面収録-2021-11-30-22.41.24.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/68dc6f51-447d-89b1-4508-297c1be3bcd6.gif)

"Enable Access and Copy Invitation Link" の選択肢がありません。

ということで、**複数のウィンドウを使って複数の Code with me のセッションは作れません。**

## 解決策

モジュールをインポートする機能を使って、1つの IntelliJ IDEA 内で複数のプロジェクトを開けるようにしましょう。

IntelliJ IDEA のメニューから "File" → "Project Structure" を開きます。

![スクリーンショット 2021-11-30 23.57.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/e3f46178-6a1b-eb25-eb95-475f5aed2fa1.png)

そして "Modules" を開き、

![スクリーンショット 2021-11-30 23.57.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/6bfaa8e4-1d8e-700e-8c51-9d3514c9b8f8.png)

モジュール追加ボタン `+` から "Import Module" を使って、2つ目のプロジェクトをインポートしましょう。
このとき、Maven プロジェクトなら `pom.xml`、Gradle プロジェクトなら `build.gradle` や `build.gradle.kts` など、ビルドツールのコンフィグファイルを指定するとよいです。
あるいは、IntelliJ IDEA が自動で生成する IntelliJ IDEA 用のキャッシュファイル `~~~.iml` を指定してもよいです。

![スクリーンショット 2021-11-30 23.58.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/cca11030-0dd8-94f8-be22-8d3c9fcb76c0.png)

![スクリーンショット 2021-12-01 0.00.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/7cb4b979-6b41-8ea1-9cbf-cc1474f8c152.png)

すると、1つの IntelliJ IDEA ウィンドウ内で2つのプロジェクトを同時に開けます。

![スクリーンショット 2021-12-01 0.02.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/daef56fd-41a0-0a6f-38bc-89d68435273c.png)

![スクリーンショット 2021-12-01 0.02.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/d441040b-dbb5-b0d3-8aaf-aeab30d1b5fa.png)

あとは Code with me のセッションを発行すれば終わりです。簡単ですね！

## 気をつけること

当然といえば当然ですが、1つの IntelliJ IDEA 内で1つのプロジェクトしか開いていないときには気にしていなかったことを気にする必要があります。
筆者が遭遇した範囲だと、以下のようなことがありました。

### テストの全実行

機能追加や修正をした際に単体テストをすべて実行したくなりますが、[Ctrl + Ctrl] → `mvn clean test` では単体テストの全実行ができなくなります。
プロジェクトルートが1つではなく2つ以上になってしまうから、ということで当然といえば当然。

筆者は maven の実行コンフィグを以下のように作りました。
("Working directory" を指定するのがポイント)

![スクリーンショット 2021-12-01 0.10.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/7ef46693-f1e2-b712-f208-8082b2271930.png)

### プロジェクト間で JDK のバージョンが違う場合は？

"File" → "Project Structure" → "Modules" から、JDK のバージョンを指定したいプロジェクトを選び、以下のように使う JDK を個別指定できます。

![スクリーンショット 2021-12-01 0.17.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262975/90b6929c-820f-582d-4efe-796de71ff1d3.png)

## おわりに

どうやら JetBrains は Fleet という新 IDE のベータテストをもうじき実施するようで。

[Fleet へようこそ！ \| JetBrains News](https://blog.jetbrains.com/ja/blog/2021/11/29/welcome-to-fleet/)

> Fleet は、コラボレーションを念頭に構築されています。

とのことで、いずれは Code with me ともオサラバ、って感じになるんでしょうか。
それまでは Code with me にお世話になることにしましょう。