DroidKaigi2019 - Android Studio 設定見直してみませんか？のアウトプット

DroidKaigi2019の公開されている動画を見てて
「おーこれは使えそう」という機能がいくつかあったので記録に残す

## 動画
DroidKaigi 2019 - Android Studio 設定見直してみませんか？ / shiraji [JA] - YouTube
https://www.youtube.com/watch?v=MV14DDxv6DE

## セッション内容
* 自分専用のアクションリストを作ってみる
* !=をカッコ良く
* 通知周り
* File Color
* Kotlinのファイルフォーマット忘れ防止
* 急に別の言語書きたくなった時のストレス発散方法
* JSON書きやすくする
* Run Configurationや.ideaの共有
* Layout Editor
* Pluginのインストールの強制

## 自分専用のアクションリストを作ってみる
Quick lists
自分専用のポップアップが作ることができ、Android Studioの機能を自由に追加できる。

<img width="807" alt="スクリーンショット 2019-04-12 7.16.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/f5450bbd-8714-815d-6b8e-ec5036f1206d.png">

keymapを追加すると簡単に呼び出せる （⌘ + option + iを設定中）
<img width="822" alt="スクリーンショット 2019-04-12 7.20.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/2d61320f-6b4c-fe63-f21a-7b0d4208fcf4.png">

⌘ + option + i を押すとポップアップが出る
<img width="347" alt="スクリーンショット 2019-04-12 7.22.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/7f01d1c8-1d95-1b25-8b27-24dcec1a59e6.png">


### 設定パス
Preferences | Appearance & Behavior | Quick Lists

### 感想
なかなか便利！
ショートカットがない機能を追加して使用する、あるいはショートカットを覚えられない機能の使用に使えそう。

## !=をカッコ良く
fontの話
Android Studioのフォントを変えて != や == を直感的に表示する

### 感想
いらないかな

## 通知周り
Android Studioの特定の処理が終わったらNotificationを表示できる
Gradle syncをBalloonにすると、Syncが終わったらバルーンで通知がでる

<img width="444" alt="スクリーンショット 2019-04-12 7.09.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/aa0f8b98-a70e-37cc-3f96-88f5fdb94a21.png">

### 設定パス
Preferences | Appearance & Behavior | Notifications

### 感想
なかなか便利そう
Syncが終わったのに気付かずQiitaを見続けることがなくなる（はず）

## File Color
バンドルの環境別にファイル/タブの色をかえれる
Debugのファイルを編集したかったのに、Releaseを編集していた、というミスがなくなる

<img width="416" alt="スクリーンショット 2019-04-12 7.34.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/8969306c-eb84-cdbe-afd6-972853ef1083.png">

### 設定パス
Preferences | Appearance & Behavior | File Colors

### 感想
これはぜひ導入したい
（たまにやらかしてたりするし）

## Kotlinのファイルフォーマット忘れ防止

コード書いてる途中のフォーマット未適用のコードに警告やエラーを表示できる。

### 設定パス
Preferences | Editor | Inspections
Kotlin > Style issues > File is no formatted according to project settings
をEnableにして、色をError（赤）に設定する
未フォーマットのコードがエラー表示になる

<img width="1007" alt="スクリーンショット 2019-04-12 7.36.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/c9348324-aa49-b7ee-a79e-27ed9caa0979.png">

コードの色をWarningにした場合
<img width="404" alt="スクリーンショット 2019-04-12 7.40.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/826700b9-0bfc-3d04-5c3e-2c921f8fa777.png">
未フォーマット箇所が黄色になっている

### 感想
まあまあ便利
色をエラー（赤）にすると、コードのエラーなのか未フォーマットなのか区別つかず分かりにくい。
Warning(黄)表示にするといいかもしれない

### フォーマット対象外にしたい時
Preferences | Editor | Code Style
Enable formatter markers in comments をEnableにする

## break point
Conditionでブレークポイントが止まる条件を指定できるが、簡単に消せてしまうので、それを防ぐ設定がある
### 設定パス
Preferences | Build, Execution, Deployment | Debugger
Confirm removal of conditional or logging breakpoints をEnableにする
これで式があるブレークポイントを消す時に確認ポップアップがでる

<img width="456" alt="スクリーンショット 2019-04-12 7.43.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/1576d16a-8b7b-9a78-0827-5e4bf2e4b06e.png">

### 感想
これは便利、常時Enableでも害はなさそう

## JSON書きやすくする

String変数をJsonとして扱いたい時、inject laungageで便利に修正できるようになる。
例えばこんなコード

```kotlin
var json = "{ \"name\":\"ikemura\",\"github\":\"@ikemura\" } "
```
文字にカーソルを当ててoption + enter
ポップアップが出たら inject laungage or reference を選んでEnter（▶でメニューを展開させないで）
JSONを選ぶ

これでこの文字列はJsonとしてIDEに認識される
何が便利かというと、Android StudioでJsonのエディタが使えるようになる
Json化した変数の文字の上でoption + Enter

Edit JSON Fragment を選択すると、JSON Fragmentというエディタが表示される
<img width="753" alt="スクリーンショット 2019-04-12 7.47.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/68f94c78-fffb-e3f7-f685-ac76a3e07ff2.png">
JSON Fragmentで項目を追加すると自動で文字がエスケープされるので便利
ダブルクォーテーションも勝手につけてくれるしね

ソースコード上では普通の文字列と見た目が変わらないので、`@Language("JSON")`を追加する

```kotlin
@Language("JSON") var json = "{ \"name\":\"ikemura\",\"github\":\"@ikemura23\" } "
```

この `@Language("JSON")` を自動で追加する設定を有効にするには
Preferences | Editor | Language Injections | Advanced
Add @Launguage annotation or comment if needed を Enableにする
これでinject laungageをすると、@Language("JSON")が自動で付与される

### 感想
めちゃ便利そう
Jsonを扱う機会がたまにあるので、その時に真価を発揮するかも

## Layout Editor

下タブのTextタブが左にくる、Designタブが右になる（順が入れ替わる）

<img width="1552" alt="スクリーンショット 2019-04-12 7.52.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/bbe67210-b013-a06f-447f-2ccfd8175eff.png">

### 設定パス
Preferences | Editor | Layout Editor
Prefer XML editor をEnableにする

### 感想
地味な変更だが、これは良い
初めにレイアウトxmlを開くとDesignタブが勝手にひらいて「お前じゃない、俺はTextタブがみたいんだ！」となることを防げる。

## copy preferences

Android Studioの設定をひらき、左のメニューの上で右クリックすると
Copy Preferences path をクリックする
設定のパスがクリップボードにコピーされる

<img width="950" alt="スクリーンショット 2019-04-12 7.54.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/52227/6eb70d85-12a3-ffc1-448a-03895c26b7f2.png">

### 感想
この動画で一番の収穫
これで設定場所をスクショで保存する場面が減る
深い設定場所まではコピーできないので、スクショが必要な場面もある

## Pluginのインストールの強制

Android Studioを起動すると、足りないプラグインをインストールするポップアップがでる
Event Logにもエラーログが出る

### 設定パス
Preferences | Build, Execution, Deployment | Required Plugins
+でプラグインを選択して、追加

### 感想
そこまで設定するならPluginを直接インストールしたらいいのに、と思うかもしれないが、
おそらくAndroid Studioの設定ファイルをチームメンバーに共有して、Plugin使用を義務付けたり、簡単にPluginをシェアする際に便利なんだろうなと。