WebStormで愛用している機能たちを紹介する

## はじめに

エディタ、IDE は何を使いますか？
React や Vue.js, TypeScript などを扱う方は、VSCode を利用することが多いのではないでしょうか。

WebStorm 自体、聞いたことがない方もいるかもしれません。

知らない、使ったことがない方には、是非知ってほしい WebStorm の素敵な機能たちを紹介します。

## WebStorm とは
JetBrains 社製の IDE (統合開発環境) です。
あらかじめ色々な環境が用意されているのですぐにフロントエンド開発を始められます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/5aa32d4c-f326-9768-8063-1060f6ce9715.png)

公式サイトの紹介欄

https://www.jetbrains.com/ja-jp/webstorm/features/

※ 最近まで有料だったのですが、非商用利用は無料になりました。

## Git クライアント
個人的には JetBrains といえば、Git 機能をゲキ推ししたいです。
CLI での操作は一切必要なく、GUI だけで Git 操作が完結します。
視覚的に扱える機能が多いので、ミスが減り、効率もUP間違いなしです。

### Github との連携
公式ドキュメントに詳しく書いてあるので割愛しますが、簡単に連携できます！

https://pleiades.io/help/webstorm/github.html

### 日常の操作
便利度: ★★★★★

#### `git fetch` 的な操作

ボタンを押すだけで fetch を実行します。
このあたりは VSCode と同じかもしれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/57a0af06-812d-acbc-e9f8-2c2dd16128e6.png)


#### `git pull` 的な操作

`git pull` もボタン一つで実行されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/92bab731-b6c4-092c-e047-acfa3c2ae5e8.png)

#### `commit` ログの表示

変更の差分を表示することができます。
必要なファイルだけチェックを入れて、 Commit することができます。

Mac: `command + k`
Windows: `ctrl + k`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/76555886-3763-b89a-c42c-0a94a654e3bf.png)

チェックボックスをONにするだけで、 amend commit もできるのが便利です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/84a35ef7-f822-9b74-6b72-7bbbf75a1c8f.png)


#### `push` 作業

Mac: `command + shift + k`
Windows: `ctrl + shift + k`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/59b39bef-5650-dcb2-305d-df486467eb33.png)

#### commit のリセット

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/0b11dde4-d7f1-949e-5b77-e1bdd4ec6655.png)

#### cherry-pick とか

cherry-pick も GUI で一瞬で完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/5c7cf7ca-c467-ba0c-b2de-b513e4974139.png)

#### merge or rebase

GUI ですぐにできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/34299774-7cd6-464c-c48c-a1ea67874e8f.png)

#### スカッシュなどもできます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/7a1cdf8c-978c-ad6c-638a-581716c94322.png)

#### このコミットいらないなー

そんなときはコミットの破棄も簡単に実行できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/afedb438-2b35-6e21-db70-d330a3daca08.png)


### シェルブ機能
**便利度**: ★★★★★

修正中の変更を退避することができます。
退避したファイルなどは、シェルブタブから確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/83efc55c-899e-7a64-06b9-9f39304d045f.png)

`右クリック > アンシェルブ` ですぐにファイルを作業時の状態に戻すことが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/252b1728-bb47-2a31-7749-1519875b486e.png)


Git stash に似ていますが、シェルブは IDE の保存領域を使うので、ローカルで完結します。
以下みたいなケースのときによく使います。

- 機能開発中に、コードレビューの依頼が来て、一旦退避したいとき
- 機能を作ってみたけど、しっくり来ないとき 

便利なのは、一部だけを適用することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/28291078-d79e-035a-299e-0597dc8d1655.png)

差分画面から`<<`で一部だけを取り込む事もできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/3541a41d-6176-6930-f691-df4b2b1e72ba.png)

これ本当に便利です。
ローカルだけで気軽に変更を退避したり、戻したり出来るので、ヘビーユーズしています。


https://pleiades.io/help/webstorm/shelving-and-unshelving-changes.html

### コンフリクト修正
**便利度**: ★★★★★

コンフリクト修正を GUI で簡単に行うことができます。
コンフリクトしている箇所は、赤。
コンフリクトしていない箇所は青で差分が表示されます。

左右で見比べながら、変更を修正できるので、コンフリクトしても焦ることなく作業できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/d34922b8-9939-c6ce-52a6-287461ca1a1c.png)

ローカルとリモートのコンフリクトしていない青い差分は、下記のボタンを押下することで一気に取り込むことが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/2f2a76d9-aff3-ee3d-f0b6-0d126261976e.png)

この差分が0になればコンフリクト解消となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/90c21f3e-2e03-0ffc-074d-44311f15f327.png)


## Code With Me
**便利度**: ★★★

コードシェアもできます。
VSCode Live Share と同じような機能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/c1567b29-cf22-4100-3051-5ea3afd4d50c.png)

そして、この記事を執筆しながら知ったのですが、Code With Me はライブシェア内で通話もできるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/d229690f-45a7-dd49-3a99-384394d85d65.png)

ただ私の周りは、みんな VSCode や Cursor を使っているので、Code With Meしたことがありません。やってみたいです。


https://pleiades.io/help/webstorm/code-with-me.html

## AI Assistant
**便利度**: ★★★

Github Copilot のような機能です。有料機能です。
2024/12/19 現在は税込み1430円です。

わたしは、会社の経費で利用させていただいております。ありがとうございます！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/f5c37cee-67ae-73fc-6ea7-2733408d4c13.png)

Chat形式で OpenAI-gpt-4oや、gemini-pro-1.5 などのモデルが利用可能です。

`#`を活用することで、より多くのコンテキストを与えることができます。

| command | 説明 |
| --- | --- |
| #thisFile | 現在開いているファイルを参照します。 |
| #selection | エディターで現在選択されているコードの一部を参照します。 |
| #localChanges | コミットされていない変更を指します。 |
| #commit | プロンプトにコミット参照を追加します。呼び出されたポップアップからコミットを選択するか、コミットハッシュを手動で書き込むことができます。 |
| #file | 現在のプロジェクトからファイルを選択できるポップアップを呼び出します。ポップアップから必要なファイルを選択するか、ファイル名 (例: #file:Foo.md) を入力します。 |
| #symbol | プロンプトにシンボルを追加します (例: #symbol:FieldName)。 |
| #schema | データベーススキーマを参照します。データベーススキーマをアタッチすると、スキーマのコンテキストで生成された SQL クエリの品質を向上させることができます。 |

予測入力機能もあります。
予測入力の精度は、肌感で Github Copilot のほうが良い気がしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/53a27d32-527c-fe12-53cd-4953bc6d80ba.png)

選択項目に対して、リファクタリングの提案や、Docsの追加、ユニットテストの生成なども実施してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/b75c639f-2ecc-7e71-fbd5-656bf08ec5e7.png)

https://pleiades.io/help/webstorm/ai-assistant.html#install-ai-assistant-plugin

## DB 操作

**便利度**: ★★★★

これは最近無料になりました！
IntelliJ には標準搭載されていましたが、ついに WebStorm でも無料で使えるようになり嬉しい限りです。

IDE 上で直接 DB も操作できてしまうのです。

### データソースの登録

ホスト名、ユーザー名、パスワードなどを入力し、Test Connectionでつながっていることを確認します。

JDBC を使って接続するようですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/2f9955bd-c98d-8465-015a-4f688099c7fe.png)


### データの表示

色々な形式でテーブルを表示することが出来ます。

#### Table

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/5deb9951-e712-a311-2db0-e935d77ff6d2.png)

#### Tree

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/6a8ccb42-587c-e52a-cfe7-6e2069bee1bf.png)

#### Text

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/eb1cb659-6f46-e609-8cfe-ee16cbd316c0.png)

### フィルタリング
行のフィルタリングも簡単にGUIで実行できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/1c3d7c22-14c2-a319-1f7e-b61a2628f6d5.png)


### クエリの実行

IDE上でSQLのエディターを開き、クエリを実行することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/b2fd88b0-b65f-3df3-da02-bc8f219ba622.png)

### インポート/エクスポート

インポートはCSVやSQLファイル、表データから行うことが出来ます。

エクスポートはCSVやSQL Scriptsなど形式を選んでエクスポートすることが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387112/c9a9cd31-d859-63f1-038f-08abed09c7fb.png)

https://pleiades.io/help/webstorm/relational-databases.html

## おわりに

今回は、私が WebStorm で愛用している機能を紹介しました。
IDE だけで完結でき、様々なツールを行き来する必要がないので、大変開発しやすいと感じています。

この記事では書いていませんが、他にもエディターの機能や、テスト機能、スクリプト実行など便利な機能が備わっています。

ぜひ、WebStorm に触れてみてください！