EclipseをやめてVisual Studio Codeに乗り換えれるか試してみる

# はじめに
仕事では主にJavaを扱ってます。
そして普段は、IDEとしてEclipseを使っています。
プロジェクトの構成管理はmavenです。

でも、最近golangの勉強をし始めて、「なんかIDE統一できんのかな・・・」と思い始めてVisual Studio Codeでよくね？と思いチャレンジしたお話です。
会社だとフロントエンドは、AngularでVisaul Studio Code使っていますし、もしこれができれば統一できるな！あんまりメリットは無いけど！と思った感じです。

# 結果

もしかしたら、まだ使いこなせていない or 実は他のプラグイン入れれば便利になるよ！というものがあるかもしれません。コメントいただけると大変助かります。

 - **個人レベルの開発なら十分使える！（むしろ使っていきたい）**
 - 百人規模のプロジェクトなら推奨は高スペックPCはEclipse。低スペックならVS Code。<br>基本mavenプロジェクト動けばなんでも良いという規約だからあくまで推奨するものは？レベル。<br>IntelliJ IDEAは流行ってるけど、使える人は周りにそんな多く無い。
 - Spring Bootとの相性良さそう！

|機能   |個人的評価 |備考  |
|:-----|:---:|:----|
|コード保管 | ○| | 
|インポート保管|△ |※1 |
|コードフォーマット|○| |
|コンパイルエラー箇所の表示|○| |
|スタイルチェック|○| |
|デバッグ機能。|△|※2 |
|gitリポジトリとの連携|△|※3|
|ソースの雛形生成|×|※4|
|pom.xmlの依存関係表示|×|※5|
○・・・十分使える！△・・・一部不満。×・・・使えない。

※1:複数候補発見された場合、ちょっと使いづらい部分有。(問題箇所クリックして選択）
※2:stacktraceに表示されたコードから対象となる外部ライブラリのソースを開く機能が多分無い。
※3:egitほどのGUIは無い。コマンド使える人なら関係無いレベル。
※4:ありそうなもんだけど・・・新規クラス作成とかは無い。Eclipseみたいなテンプレート機能が欲しい。
※5:むむ・・・conflict確認とか手軽にできない感じ。まぁ滅多に確認すること無いけど。

# そもそもIDE(エディタ)に期待する機能
これ、達成できたらVisual Studio Codeで良いかなって思ってることです。
上に記載してあるものが優先順位高いです。

 1. コード保管。入力するの嫌。
 2. インポート保管。インポート文なんて書かない。
 3. コードフォーマット。フォーマットしてくれないと泣く。
 4. コンパイルエラー箇所の表示。 
 5. スタイルチェック。コーディング中に規約のチェックしてくれないとしんどい。
 6. デバッグ機能。にstacktraceに表示されるクラスをクリックして、該当箇所表示してくれないとデバッグしづらい。
 6. gitリポジトリとの連携 (個人=github。会社=gitlab)。
 7. ソースの雛形生成。クラスコメントとかファイルヘッダとか入力したくない。
 8. pom.xmlの依存関係表示。  `dependency:tree` 入力したくないしGUIで見たい。

# Visual Studio Codeセットアップ
アドオンで入れたものです。下記の情報見てセットアップです。
https://code.visualstudio.com/docs/languages/java

## Java Extension Pack
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack
![image.png](https://qiita-image-store.s3.amazonaws.com/0/268550/b12f923f-bff6-7a95-54a3-b5a871035a25.png)

下記のパッケージングです。

### Language Support for Java(TM) by Red Hat
https://marketplace.visualstudio.com/items?itemName=redhat.java

プログラミングする上でのコード保管やらなんやら入ってます。
 
### Debugger for Java
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug

Javaでのデバッグするための機能です。

### Java Test Runner
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-test

JUnitを実行、結果確認など行えるための拡張機能です。

### Maven for Java 
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-maven

Maven Explorerの表示、および各種タスクを実行するための拡張機能です。

## Lombok Annotations Support for VS Code
![image.png](https://qiita-image-store.s3.amazonaws.com/0/268550/0c391d40-8705-4c9f-524e-da7fe1e6e7f7.png)

https://marketplace.visualstudio.com/items?itemName=GabrielBB.vscode-lombok

Lombok使うので入れます。

## Checkstyle for Java
![image.png](https://qiita-image-store.s3.amazonaws.com/0/268550/5fe2b307-1fa1-96e9-5914-91c54ee60e62.png)

https://marketplace.visualstudio.com/items?itemName=shengchen.vscode-checkstyle

コーディング規約は、CheckStyleを使っているので入れます。

## Spring Boot Tools
![image.png](https://qiita-image-store.s3.amazonaws.com/0/268550/e7aa7e38-8cfd-6fc7-78c5-4227729dc413.png)

https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-spring-boot

Spring Bootの設定保管とエンドポイント関連の便利機能拡張です。


# うまく動かなかったこと

## Spring Boot ToolsのDebug時のエンドポイント表示
エンドポイントは表示してくれます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/268550/c4b82bbe-5e80-ae86-484d-de7b0ee01bbe.png)
でも・・・そこからエンドポイントを選んでも下記のようにエラーになります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/268550/62dbbbab-8dbc-8e97-7245-693828bb7b55.png)

うーん。ブラウザが開くはずなんだけど・・・ちょっとどこにもエラーが出ていないので調査断念。
https://github.com/spring-projects/sts4/blob/master/CONTRIBUTING.adoc
みてstackover flowで質問しようかと思ったけど、
 -  `spring-tools-4` タグがまだ無い。
 - 作ったばかりのアカウントじゃ新規タグ作れない
という感じで・・・
https://stackoverflow.com/questions/52128210/vscode-not-work-quick-access-for-running-apps-with-spring-boot-tools
こうなった:disappointed_relieved:
果たして通じる英語になっているかどうか・・・！

# これから試そう（期待）してること

## Java with Kubernetes in VS Code
https://code.visualstudio.com/docs/java/java-kubernetes
おぉ？Kubernetesと連携できるのか。まぁ正直ローカル環境でわざわざKubernetesで動かすメリットはわからないけど面白そう！

## VS Live Share/VS Live Share Audio

[ゆるWeb勉強会@札幌 #1](https://mild-web-sap.connpass.com/event/95075/) で知った機能。
請負会社さんの技術的支援する際に、これ使えないかな？ってすごい思ってる。
QAチケットよりも、slackよりも捗りそう。