フルスタックエンジニアが歓喜するIntelliJの３つの機能

# はじめに
今年も第九の季節がやってきましたね！ってことで、今回は大げさなタイトルをつけましたが、内容はなんでも屋さんが喜ぶちょっと便利な機能を紹介していきます。
ショートカットは、Mac用になっていますので、Windowsユーザは[ここ](https://pleiades.io/help/idea/mastering-keyboard-shortcuts.html)とかで置き換えてください。

# ①シェルスクリプトをとてもキレイに書ける
シェルスクリプトってデプロイや運用とかのちょっとした用途にしか使わないから、テキトウな汚いソースになりがちですよね？
やたらと長く汚いシェルスクリプトの貝塚のようなリポジトリに嫌気がさしているかたも多くいらっしゃるかと思います。
そんなことが起こらないよう、普段から小さなシェルを描く場合もIntelliJを使って書くようにしましょう。

IntelliJを使えばどんな言語だろうとクリーンなコードにしたくなりますね！

では実際にその手順を見てみましょう。

- 特にエラーもないように書いてるつもりでも、IntelliJにいろいろ注意されまてますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/4de6117d-8153-1670-866d-4d0af50787be.png)

- 波線が付いている部分で[Alt]+[Enter]を押すと、どのように対処するかが表示されますので、選んでみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/1a288f52-4d88-eb1d-13fd-0192ddb958d0.png)

- そうすると波線部分がリファクタリングされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/ad0ea5c4-beca-0445-d5a0-130b8cb76b4d.png)

- この勢いで全部修正して、✅が表示されるとリファクタ完了です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/8d156d5a-0c0c-65db-c23c-cc5ff95fe624.png)

- 実行ボタンを押すと、すぐ実行されます。 
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/3f117b31-f4f9-0e6d-956d-a81423f3b36e.png)

# ②専用ソフトに負けないDBToolと便利な連携
DB操作のために、別の専用ソフトを起動してませんか？
IntelliJのDBToolは専用ソフトに負けない機能とソースエディタとの絶妙な連携機能を持っていますので、こちらを使いましょう！

- コード上のSQLをそのまま実行できる。
下記はmarkdown上のSQLですが、どんな言語でもコード上のSQLを[command]+[Enter]で実行することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/a6bc6c91-9222-d809-bb89-47426ea1b6d4.png)

- ネストされた複雑なSQLの場合は、一部分のSQLのみを実行することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/03e415bb-7ecf-5038-3b67-0e258355e16b.png)

- 選択した列の合計などのサマリー情報を表示できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/dc2155c3-25af-5c95-6d10-7318ad8fd874.png)

- Tree表示して編集も可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/d9551a24-cdcd-3653-ca91-b316c24bbd04.png)

- 実行した結果は、CSVはもちろんJSON・Excel・SQL(INSERT文)など、さまざまなフォーマットでエクスポートできます。Groovyで独自のフォーマットも簡単に作れますので、PHPやRubyの構造に出力できたりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/93418d30-6974-8ddf-5a33-0ee48191c1dd.png)

- CSVを開くと、SQL実行結果と同じ機能が使えるので、編集はもちろん、Tree表示・別フォーマットでのエクスポートもできます。下の[Text]タブでテキスト表示に戻すことももちろん可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/6e38b37d-a48d-a332-97e8-e80d5f4aae3a.png)

- 接続したDBから綺麗なダイアグラムも作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/3949e502-3c7f-c9cb-efab-b0414badc5c9.png)

# ③サーバに簡単デプロイ
CI/CDが導入されているところも増えてきましたが、昔ながらの手動でデプロイってところもまだ多くあるかと思います。
そのためにWinSCPやCyberduckを起動してませんか？
IntelliJには、とても優秀なdeployment機能がありますので、こちらを使いましょう！

今回はWordpressのテーマをカスタマイズする時を例に設定してみます。
接続タイプは、FTP　FTPS　SFTPが選べますが、今回はSFTPを選択してみます。
SSH configurationでサーバ情報を入力後、下記のようにデプロイの対象フォルダをMappingしてやります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/81df09af-d69a-af57-d5fa-8b64aad2c5a3.png)

設定したら、ローカル側からでもリモート側からでもダウンロード、アップロードができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/6cc5248c-bf81-23bf-63c1-fa24fa011833.png)

[Sync With ...]を選択すると、ローカルとリモートの差分を表示して、ファイル毎にアップロード・ダウンロードを選択できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/441f78ae-33cd-0eab-55b4-6e00058aff91.png)

[Automatic Upload]をチェックすると、ファイルを編集して[Command]+[S]を押すと勝手にサーバにアップロードされるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/d04b0961-1432-54b5-60da-fa55e6a4aaf8.png)

SSH設定はTerminalと共用されているため、下記のように接続先にすぐSSH接続できます。
ターミナルもコードエディターといろいろと連携されているので、専用ターミナルソフトを使うより何かと効率がよくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68254/ce36462d-b01d-f02e-2b09-535496bc853f.png)

# おわりに
３つ以外にmarkdownやOpenAPIでのドキュメント作成、PlantUMLを使った各種設計図の作成、Selenium連携、DockerやAWS操作など便利な機能がたくさんありますので、もっと壮大なIntelliJの讃美歌を用意する予定だったのですが、しょっぱい内容になってしまい恐縮です。
EclipseやVSCodeでもできるじゃんって話もあるかと思いますが、各機能がうまく連携していてかゆいところに手が届く真の統合開発環境はやはりIntelliJだと信じております！