IntelliJ IDEA 入門

Eclipse に体が馴染んでしまった人が、頑張って IntelliJ IDEA の使い方を勉強したときのメモ。

# IntelliJ IDEA とは
JetBrains という会社が開発している IDE。
Eclipse, NetBeans の競合。

# 環境
## OS
Windows 7

## IntelliJ IDEA
IntelliJ IDEA Community Edition 2016.1.1

## JDK
8

# インストール
フリーで OSS な Community 版と、有償の Ultimate 版がある。
今回は Community 版で。

https://www.jetbrains.com/idea/#chooseYourEdition

# Hello World
## <span id="create_project">プロジェクトを作る</span>
- 起動したら [Welcome to IntelliJ IDEA] というウィンドウが表示される。
- とりあえず [Create New Project] を選択する。
- [New Project] というウィンドウが表示される。
- デフォルトでは [Project SDK] に何も登録されていないようなので、 [New] をクリックして [JDK] を選択する。
- ローカルにインストールしている JDK のホームを登録する。
- 左の一覧から [Java] を選択して [Next] をクリック。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/cc53b405-a628-3401-c38b-d559b84363b8.jpeg)

- [Create project from template] はそのまま [Next]。
- 最後にプロジェクト名と、作成先のフォルダを入力して [Finish]。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/782729e5-e5d6-3e28-7aeb-5b5ca7bf89de.jpeg)

## ソースを作成する
- [src] を右クリックして [New] -> [Java Class]。
- クラス名を入力して [OK]。

```java:Main.java
package sample.intellij;

public class Main {
    public static void main(String... args) {
        System.out.println("Hello IntelliJ!!");
    }
}
```

- 適当にソースを記述したら、メニューバーの [Run] -> [Run] と選択して 起動する Main クラスを選択する。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/8be8c616-b557-8421-32a2-82a1ddf767af.jpeg)

- コンソールに結果が出力される。

# 環境設定
## テーマ
- [File] -> [Settings]
- [Appearance & Behavior] -> [Appearance]
- [UI Options] の [Theme] を選択。
- 目に優しい暗色系がいいので、 `Darcula` を選択。

## フォント
- [File] -> [Settings]
- [Editor] -> [Colors & Fonts] -> [Font]
- [Scheme] で `Darcula` を選択して [Save As] をクリック。
- [Name] に任意の名前を入力して、 [OK] を選択。
- [Primary Font] でフォントを選択して [OK]。

## 空白スペースを表示させる
- [File] -> [Settings]
- [Editor] -> [General] -> [Appearance]
- [Show whitespace] のチェックをオンにする。

## 行番号を表示させる
- [File] -> [Settings]
- [Editor] -> [General] -> [Appearance]
- [Show line numbers] のチェックをオンにする。

## クラスの import でワイルドカードを使用させない
- [File] -> [Settings]
- [Editor] -> [Code Style] -> [Java]
- [Import] タブの [General] -> [Class count to use import with '*'] の値を `99999` とかにする。

自分は、クラスの import は `*` を使いたくない派。

- コード中で使っているクラスが、具体的にどのパッケージのものなのかひと目で分かりづらくなる。
- import 文だけでは、そのクラスが使用している具体的なクラスが判断できなくなる。
- import しているクラスの実際の数が分かりづらくなる（import するクラスが多い場合は、そのクラスの役割が大きくなっているという合図になる）。

## クラスを作成した時に Javadoc を自動生成させない
デフォルトだと、 OS のユーザー名を `@author` にした Javadoc が生成される。

- [File] -> [Settings]
- [Editor] -> [File and Code Templates]
- [Files] -> [Class]
- `#parse("File Header.java")` となっているところを削除。
- 他にも [Interface], [Enum], [AnnotationType], [package-info.java] とかにもある。

## 現在開いているソースを、プロジェクトツールウィンドウ上で選択する
- プロジェクトツールウィンドウにある歯車のアイコンをクリック。
- [Autoscroll from Source] にチェックを入れる。

## マウスホバーで Javadoc や変数の情報などを表示させる
- [File] -> [Settings]
- [Editor] -> [General]
- [Show quick documentation on mouse move] のチェックをオンにする。

**参考**

[How to make Intellij show Eclipse like API documentation on mouse hover - Stack Overflow](http://stackoverflow.com/questions/18814076/how-to-make-intellij-show-eclipse-like-api-documentation-on-mouse-hover)

## 保存したときにスペースだけの行が削除されないようにする
- [File] -> [Settings]
- [Editor] -> [General]
- [Other] の [Strip trailing spaces on Save:] を `None` にする

# プロジェクト・モジュールの操作
## プロジェクトとは
IntelliJ IDEA の**プロジェクト**は、 Eclipse ではワークスペースに該当する。
Eclipse のプロジェクトは、 IntelliJ IDEA では**モジュール**に該当する。

IntelliJ IDEA | Eclipse
---|---
プロジェクト | ワークスペース
モジュール   | プロジェクト

## <span id="create_new_project">プロジェクトを作成する</span>
- [File] -> [New] -> [Project]

あとは、 [最初](#create_project) と同じ手順で作成する。

## モジュールを作成する
- プロジェクトを右クリックして [New] -> [Module]
- [Module SDK] を選択して [Next]
    - プロジェクトで指定している [Module SDK] をそのまま使うなら、 `Project SDK` を選択。
- [Module name] を入力して [Finish] をクリック。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/da31adb3-6688-66d8-bfd7-bdb9fa561586.jpeg)

## モジュールを削除する
- 削除するモジュールを右クリックして [Remove Module] を選択。
- これだけだと、モジュールとしての認識が解除されるだけで、フォルダやファイル自体は残る。
- フォルダも完全に削除したい場合は、再び元モジュールのフォルダを右クリックして [Delete] を選択する。

## ソースフォルダを追加する
- ソースフォルダとしたいフォルダを作成し、右クリック -> [Mark Directory As] -> [Sources Root] を選択。

### リソースフォルダなどの追加
[Mark Directory As] を見るとわかるが、リソースフォルダなどもここで指定できる模様。

## ソースフォルダを解除する
- ソールフォルダを右クリックして、 [Mark Directory As] -> [Unmark as Sources Root] を選択。

## <span id="opne_project_settings">プロジェクト（モジュール）の設定を開く</span>
- プロジェクトを右クリックして [Open Module Settings] を選択する。

## 依存する jar ファイル（ローカル）を追加する
- プロジェクト内に対象の jar ファイルを配置する。
- jar ファイルを右クリックして [Add as Library] を選択する。
- [Create Library] というダイアログが開くので、必要に応じて設定を変更して [OK] をクリックする。

### もうちょっと細かく設定する
- [プロジェクトの設定を開いて](#opne_project_settings)、 [Modules] の [Dependencies] タブか、 [Libraries] で設定する。
- [Libraries] は jar 自体の追加・削除を設定する。
- [Modules] の [Dependencies] は、モジュールごとに依存する jar の参照を設定する。

## エクスプローラで開く
- 開きたいファイル・フォルダを右クリックして [Show in Explorer] をクリック。

## プロジェクトに対する勘違い
![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/bf6d6e21-4b81-dfda-9eb7-b529c80e1e4f.jpeg)

- これを見たとき、 `hello-intellij` は **プロジェクト** だと思っていた。
- そのため、「IntelliJ は、プロジェクトも `src` フォルダを持つことができる」と<u>勘違い</u>していた。
- しかし、よく見てみると、 `hello-intellij` のフォルダアイコンは、右下に水色の四角が付いている。
- これは、そのフォルダが **モジュール** として認識されていることを表している。
- つまり、 `hello-intellij` というプロジェクトに `hello-intellij` というモジュールがある、という状態になっている。

## 現在開いているファイルの場所をプロジェクトツールウィンドウ上で開く

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/cf8e5f28-5e0a-7da4-e25a-ae7df2ad4f40.jpeg)

プロジェクトツールウィンドウの右上にあるアイコンのうち、一番左にある丸いアイコン（`Scroll from Source`）をクリックする。

すると、プロジェクトツールウィンドウが現在開いているファイルの場所まで一気に展開される。

## 空のパッケージも階層で表示させる
![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/ce9879a3-4ae6-a44f-a92b-fd6702462378.jpeg)

あるパッケージの以下にパッケージが１つしかないと、上のように `foo.bar` と表示される。

この状態で `foo` パッケージ直下にクラスを追加したくて `foo.bar` を右クリック→クラスを追加とすると、 `foo.bar` の下にクラスが追加されてしまう。

`foo` の直下にクラスを追加しやすくしたい場合は、パッケージの表示を切り替える。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/1c15540c-dfef-1b61-ef98-90ce03c106a4.jpeg)

プロジェクトツールウィンドウの右上にある歯車のアイコンをクリックして、 `Compact Empty Middle Packages` のチェックを外す。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/8ac785a5-9560-b431-5743-06bddfcd3f15.jpeg)

これで `foo` パッケージが単独で表示されるようになるので、 `foo` パッケージ以下にクラスを追加しやすくなる。


# Gradle で開発する
## IntelliJ IDEA で Gradle プロジェクトを作る
- [プロジェクトを作る](#create_new_project) ときに、 [Gradle] を選択すれば作れる。
- [GroupId] と [ArtifactId] は、まぁ適当に入力する。
- `Create directories for empty content roots automatically` にチェックを入れておくと、 `src/main/java` などのフォルダが自動生成される。
- 使用する Gradle については、必要に応じて切り替えればいいと思う。

生成された `build.gradle` は以下のような感じになる。

```groovy:build.gradle
group 'gl8080'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.5

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}
```

### 実行する
- 簡単な Hello World クラスを作って、

```java:Main.java
package foo;

public class Main {
    public static void main(String... args) {
        System.out.println("Hello World!!");
    }
}
```

- `build.gradle` を修正して、

```diff:build.gradle
group 'gl8080'
version '1.0-SNAPSHOT'

- apply plugin: 'java'
+ apply plugin: 'application'

+ mainClassName = 'foo.Main'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}
```

- [Run] -> [Edit Configurations...] を選択。
- 左上の `+` をクリックして、 [Gradle] を選択する。
- `Unnamed` という名前で実行するタスクの定義が追加されるので、適当に名前を変更する（とりあえず `run` にしとく）。
- [Gradle project] で対象のプロジェクトを選択する。
- [Tasks] に、実行するタスクを記述する（今回は `run` タスクを実行したいので、 `run` だけ）。
- [OK] で閉じる。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/f5ddc0fa-3f48-83f7-879d-ac943e238589.jpeg)

- 画面右上のタスクを選択するプルダウンで、今追加した `run` が選択できるようになっているので、 `run` を選択して緑色三角ボタンをクリックする。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/d833c672-2c45-11fd-38a6-efab6ca1e296.jpeg)

- 図のように表示されて標準出力が見えない場合は、マウスカーソルが当たっているところをクリックすれば表示が切り替わる。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/4033c0bb-7611-3402-1909-8e4b6752dd10.jpeg)

## build.gradle の修正を反映させる
- 画面の右側に [Gradle] と書かれたところがあるので、それをクリックする。

![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/040eb523-623d-2b22-82bd-53c9b92b8a22.jpeg)

- [Gradle Tool Window] が表示されるので、上の画像でマウスカーソルが当たっている更新ボタンをクリックする。
- `build.gradle` の内容に合わせてプロジェクトの設定が更新される。
- `dependencies` などを変更したときは、これをクリックすることでクラスパスの変更を反映させられる。

## 既存の Gradle プロジェクトを取り込む
- 適当に Gradle のプロジェクトを作る。
- [File] -> [Open] を選択。
- パスを入力するところに、あらかじめ作成しておいた Gradle プロジェクトのパスを入力する。
- IDE から Gradle プロジェクトを作ったときと同じような感じのダイアログが開くので、良しなに設定して [OK] をクリック。
- `.idea` フォルダが作成されて、 IntelliJ に取り込まれる。

# デバッグ
## ブレークポイントを設定する
![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/dd51a026-5e1e-c8cf-b8dc-2e1ec9113ae1.jpeg)

- エディターの左端をクリックすれば、その行にブレークポイントを設定できる。

## デバッグで実行する
![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/0ce4558d-b318-cdfe-bc96-1c55b2f92ef1.jpeg)

- 右上の虫アイコンでプログラムを起動すると、デバッグ起動できる。
- Gradle プロジェクトの場合も、 `run` タスクを虫アイコンのボタンで起動するとデバッグできる。

## デバッグ中の操作
操作 | ショートカットキー
---|---
ステップオーバー | `F8`
ステップイン     | `F7`
ステップアウト   | `Shift + F8`
カーソル行まで実行 | `Alt + F9`
続行              | `F9`

## デバッグ中に任意の例外をスローさせる
eclipse だとデバッグ中に「表示」ウィンドウで例外をスローさせることができるが、 IntelliJ ではできないっぽい。

[java - In Intellij, how can I throw an exception at a break point? - Stack Overflow](http://stackoverflow.com/questions/17094304/in-intellij-how-can-i-throw-an-exception-at-a-break-point)

なんか、色々工夫しているっぽい。

## 例外がスローされたらブレークさせる
![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/00047a74-4ca9-8ad5-e02d-c2ef016b9064.jpeg)

- [View Breakpoints] をクリック。
- `+` をクリックして、 [Java Exception Breakpoints] を選択。
- 停止させたい例外を選択して、 [OK] をクリック。

## デバッグ中に任意のコードを実行する
![intellij.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/b637e3b4-a079-22a9-681b-e7af081d0003.jpeg)

- [Evaluate Expression] をクリックすると、ダイアログが開くので、任意のコードを入力して [Evaluate] をクリックすると、結果が [Result] に表示される。

## リモートデバッグ
- [Run] -> [Edit Configurations...]
- 左上の `+` をクリック -> [Remote] を選択。
- 適当に名前を付ける。
- [Settings] の [Host] と [Port] に適切な値を設定。
    - [Transport] は `Socket`
    - [Debugger mode] は `Attach`
- [Search sources using modules classpath] で、ソースコードがあるモジュールを選択。
- [OK] をクリックして編集を完了させる。
- [Run] -> [Run...] を選択。先ほど登録した設定を実行する。


# ショートカットとか、その他色々
## 検索・選択
|              操作              |                        キー                        |
|--------------------------------|----------------------------------------------------|
| ファイル検索                   | `Ctrl` + `Shift` + `n`                             |
| 型検索                         | `Ctrl` + `n`                                       |
| ファイル内検索                 | `Ctrl` + `f`                                       |
| Grep                           | `Ctrl` + `Shift` + `f`                             |
| インクリメンタルサーチ         | 普通の検索がインクリメンタルサーチ                 |
| 行番号を指定して移動           | `Ctrl` + `g`                                       |
| クイックアウトライン           | `Ctrl` + `F12`                                     |
| クラスやメソッドを使用している箇所を検索する  | `Alt` + `F7`                         |
| 宣言箇所へ移動                 | `Ctrl` + マウスクリック<br>or `Ctrl` + `b`         |
| マウスを使った矩形選択         | `Alt` + ドラッグ                                   |
| 同じ文字列を順次選択           | `Alt` + `j` (`Alt` + `Shift` + `j` で、選択を戻す) |
| 同じ文字列を一括で選択         | `Ctrl` + `Shift` + `Alt` + `j`                     |
| マウスを使って複数の位置を選択 | `Alt` + `Shift` + マウス選択                       |
| 型階層を開く                  | `Ctrl` + `h`   |
| 選択範囲を広げる              | `Ctrl` + `w`   |

## 編集
|                                       操作                                      |                                キー                                |
|---------------------------------------------------------------------------------|--------------------------------------------------------------------|
| アンドゥ                                                                        | `Ctrl` + `z`                                                       |
| リドゥ                                                                          | `Ctrl` + `Shift` + `z`                                             |
| 行削除                                                                          | `Ctrl` + `y`                                                       |
| 選択行を上下に移動                                                              | `Alt` + `Shift` + ↑ or ↓                                           |
| 行コピー                                                                        | `Ctrl` + `d`                                                       |
| Grep 置換                                                                       | `Ctrl` + `Shift` + `r`                                             |
| ファイル内置換                                                                  | `Ctrl` + `r`<br>`Replace` が` Enter`, `Replace All` が `Alt` + `a` |
| リファクタリング                                                                | `Shift` + `F6`                                                     |
| クイックフィックス                                                              | `Alt` + `Enter`                                                    |
| コード補完                                                                      | `Ctrl` + `Space`                                                   |
| インポートの編成(必要なインポートの追加)                                        | `Alt` + `Enter`                                                    |
| インポートの編成(不要なインポートの除去)                                        | `Ctrl` + `Alt` + `o`                                               |
| コード生成<br>（Getter, Setter, toString,<br>コンストラクタ, equals, hashCode） | `Alt` + `Insert` で出てきたパネル上で選択                          |
| コメント切り替え（行）                                                          | `Ctrl` + `/`                                                       |
| コメント切り替え（ブロック）                                                    | `Ctrl` + `Shift` + `/`                                             |
| 単体テストクラスへ移動する（なければ生成）                                      | `Ctrl` + `Shift` + `t`                                             |
| テストメソッドを追加                                                            | `Alt` + `Insert` で出てきたパネル上で選択                          |
| 大文字・小文字の切り替え | `Ctrl` + `Shift` + 'u' |
| メソッドの抽出 | `Ctrl` + `Alt` + `m`|

## その他
|              操作              |       キー      |
|--------------------------------|-----------------|
| 実行                           | `Shift` + `F10` |
| デバッグ実行                   | `Shift` + `F9`  |
| 現在開いているファイルを閉じる | `Ctrl` + `F4`   |
| プロジェクトをビルドする       | `Ctrl` + `F9`  |

## クラスメソッドの static インポート
JUnit で `assertThat` などを static インポートする方法。

- `asserth` のように途中まで入力。
- `Ctrl` + `Space` を２回入力。
- すると候補が表示されるので、インポートしたいクラスのメソッドにカーソルをあわせる。
- `Alt` + `Enter` を入力すると、 static インポートするかの選択肢が現れるので、それを選択。

![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/c4c43570-8b0f-22af-9da7-69e42786da7f.gif)


# テンプレート（スニペット）
| テンプレート |        展開結果        |
|--------------|------------------------|
| `psvm`       | `main()` 関数          |
| `sout`       | `System.out.println()` |

- 個人的によく使うのはこの２つだけ。
- 他にもいっぱいあるけど、覚えられる気がしない。。。
- 他のテンプレートは、 [Settings] の [Editor] -> [Live Templates]。

# Postfix
IntelliJ IDEA 最強の機能（と勝手に思ってる）。

[Kotlin 勉強会](http://kanjava.connpass.com/event/27758/) で Postfix のライブコーディングを見て驚愕して、俄然 IntelliJ に興味を持った。

## `!`：否定
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/d49a86e3-1df2-28ec-39c3-a164d411dc3b.gif)

- `boolean` を否定できる。
- プリミティブの `boolean` の場合は、 `true`, `false` 自体が入れ替わる。
- `.not` でも可能。

## `cast`：キャスト
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/49486dd3-eb38-6fcc-ed79-dd6e7c294bb1.gif)

## `if`, `else`：`if` 文の生成
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/6f229520-26ba-9ea8-4a8c-c9232f628d4b.gif)

- `boolean` に対して `.if` で `if` 文を生成できる。
- `.else` だと `boolean` を否定した形で `if` 文を生成できる。

## `null`, `notnull`： `null` 比較の `if` 文生成
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/063c2c6c-ec20-2a2f-de4f-c5b09de11b83.gif)

- `notnull` は、 `nn` でも可。

## `for`, `fori`, `forr`： `for` 文の生成
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/3469bbe0-8a87-ab4f-849f-2b68dd931b01.gif)

- `for` は拡張 `for` 文。
- `fori` は、インデックスを伴った通常のループ。
- `forr` は、インデックスを伴った逆順ループ（`r` はリバースの `r`？）

## `while`：`while` 文を生成する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/bfd5a8e9-bd52-5ea0-35f3-9ebc5de17c53.gif)

## `stream`： Stream API を使用したループの生成
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/2c3f6cdc-4702-1884-7ebe-4071fbaf8bd0.gif)

- 配列を `Arrays.steram()` で `Stream` に変換した形式にする。

## `sout`：標準出力
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/cbca5e65-0ecf-b7c2-6d26-750f726d376e.gif)

## `format`：`String.format()` へ変換する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/88992c63-98c0-f52b-68e8-bd2724e5d6a5.gif)

## `opt`：`Optional` へ変換する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/6f7e9a89-23ad-de97-d213-0837f0df78a8.gif)

## `var`：ローカル変数へ代入する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/6d847cfc-3181-3c9a-36e4-d6243f9cccf2.gif)

## `field`：インスタンスフィールドへ代入する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/1183956a-ed9d-f4b0-4c14-8ec19187769f.gif)

- インスタンスフィールドも自動生成される。

## `return`：`return` を生成する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/5b13d491-30fb-0905-800b-fbac82fab840.gif)

## `throw`： `throw` を生成する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/1590164f-f512-12f6-0718-c006a61049ea.gif)

## `try`：`try catch` を生成する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/a0f073a3-f491-de3e-0fcb-c7e6f3b9cb9e.gif)

- 任意の式の後ろに `.try` と続ける。

## `twr`:`try with resource` を生成する
![intellij.gif](https://qiita-image-store.s3.amazonaws.com/0/28302/63f535a9-9394-32fe-9530-a9668334880e.gif)

- `AutoCloseable` の後ろに `twr` と続ける。



# その他
## jar ファイルを出力する
- [プロジェクトの設定を開いて](#opne_project_settings)、 [Project Settings] -> [Artifacts] を選択。
- [Nothing to show] の上にある `+` をクリックする。
- [JAR] -> [From modules with dependencies] を選択。
- [Main Class] を選択して [OK] をクリック。
- `プロジェクト名.jar` という名前で jar の出力設定が追加される。
- メニューバーから [Build] -> [Build Artifacts] を選択する。
- [Build] を実行すると、デフォルトだと `out/artifacts` の下に出力される。


# 参考
- [Android Studio本格活用バイブル ~効率的にコーディングするための使い方 : 今井 勝信 : 本 : Amazon.co.jp](http://www.amazon.co.jp/Android-Studio%E6%9C%AC%E6%A0%BC%E6%B4%BB%E7%94%A8%E3%83%90%E3%82%A4%E3%83%96%E3%83%AB-~%E5%8A%B9%E7%8E%87%E7%9A%84%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9-%E4%BB%8A%E4%BA%95-%E5%8B%9D%E4%BF%A1/dp/4774178705/ref=sr_1_2?ie=UTF8&qid=1459610129&sr=8-2&keywords=android+studio)
- [Meet IntelliJ IDEA](https://www.jetbrains.com/help/idea/2016.1/meet-intellij-idea.html)
- [intellij idea - How to display hidden characters by default (ZERO WIDTH SPACE ie. &#8203) - Stack Overflow](http://stackoverflow.com/questions/9868796/how-to-display-hidden-characters-by-default-zero-width-space-ie-8203)
- [IntelliJ+Gradleのプロジェクト作成方法メモ - Qiita](http://qiita.com/WK6_8B/items/77f3b49fc0b7d4c4ff27)
- [忙しい人のためのIntelliJ IDEAショートカット集（´-`） - Qiita](http://qiita.com/yoppe/items/f7cbeb825c071691d3f2)
- [IntelliJ IDEA 13.1 RC Introduces Sublime Text Style Multiple Selections | IntelliJ IDEA Blog](http://blog.jetbrains.com/idea/2014/03/intellij-idea-13-1-rc-introduces-sublime-text-style-multiple-selections/)
- [これだけは覚えておきたいIntelliJのショートカット - たけぞう瀕死ブログ](http://takezoe.hatenablog.com/entry/20150601/p1)
- [GrailsをIntellijからリモートデバッグする - Yamkazu's Blog](http://yamkazu.hatenablog.com/entry/2012/10/20/233031)
- [How to show all parents and subclasses of a class in IntelliJ IDEA? - Stack Overflow](http://stackoverflow.com/questions/3990781/how-to-show-all-parents-and-subclasses-of-a-class-in-intellij-idea)