AndroidStudioのScratch Fileでビルドせずにプログラムを実行する方法


##■概要
ちょっとした演算や勉強、作成した関数の結果などを調べたいときにアプリケーション全体を作成せずに、軽量な方法でKotlinコードを作成および実行できます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/41b5d06c-a178-c473-c70d-dbb639297db9.png)


##■特徴
- 軽い！！！
- AndroidStudioのエディタと基本同等機能が使える 
   - 入力保管
   - 動的なエラー表示
   - 関数ジャンプ
   - ローカルヒストリーなどなど
- プロジェクト内のクラス、関数の利用
- 全プロジェクトで共通のScratch Fileを使用可能
- プロジェクトに含めなくてよいのでGitなどで他者と共有する心配がない

##■使い方

<font color="red">**・ショートカット**
【Mac】command + shift + N
【Windows】Ctrl + Alt + Shift + Insert</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/f07a409e-7dc3-b834-c42b-fa46bb57ca2f.png)

言語を選択すると下の画像のような状態になると思います
今回はKotlinを選択しました
Windowsの場合は結果画面が右に別れています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/7caf9b4e-c309-8084-ebd6-c4f237d92dd0.png)

##■機能説明

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/582fc028-caab-da8b-5b52-ffbe6eb6d522.png)
実行
右クリックからでも出来ます


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/b1696f35-dc2c-7199-37ba-e74ef02126d9.png)

実行結果の削除

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/1d8605a0-d215-e400-aa5e-94a08b9b16af.png)

モジュールの選択
選択するとプロジェクト内のクラスや関数が使用可能になります
コンテキストは使えないので注意

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/6d7b261a-2750-99c6-cff8-5de8dd5c767a.png)

モジュールを選択すると出現
実行時にモジュールを作成する
一回はモジュール作成しないとモジュールの関数等使えないので注意

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/5685f08a-de39-589a-a617-38d58cc242d5.png)
インタラクティブモード
何もしていないと2秒おきに結果を出力してくれる
しかしMacでは使えない？？？（調査中）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/e89dd24b-4b37-c732-eed5-ec2b6a7d1791.png)

Read-Eval-Print-Loopの略で対話型実行のこと
新しいコードのみが実行されます
結果の表示形式も若干変わって
3 * 5        <font color="blue">res1: kotlin.Int = 15</font>
res1 * 10    <font color="blue">res2: kotlin.Int = 150</font>
といったように結果を利用することもできます

##■色々試してみる
最初の画像と同じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/41b5d06c-a178-c473-c70d-dbb639297db9.png)

いちいちprintlnとか入力しなくても値を出してくれるのはありがたいですね
モジュールの関数を使う場合はimportが必要ですが、基本自動で補完してくれます

##■保存場所
多少環境によって変わりますが以下でした
【Mac】~Library/Preferences/AndroidStudio3.5/scratches
【Android】~Users/user/AndroidStudio3.5/config/scratches

全プロジェクトで同じファイルを呼び出せます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/49727f00-055e-9719-58dc-8d4dfc4afa50.png)

Scratche File選択時のみに出る【Scratches】をクリックしてファイル選択、削除、名前変更するのがお勧めです
ファイル検索にひっかからないのでFavoritesにScratch Filesを登録しておくのも良いかも
新規作成して【Scratches】を出すのもありかと思います


##■参考
・IntelliJ IDEA
https://pleiades.io/help/idea/scratches.html
・Kotlin
https://kotlinlang.org/docs/tutorials/quick-run.html
・Productivity Hack: AndroidStudio Kotlin Scratch File
https://medium.com/@shivam.gosavi340_58315/productivity-hack-androidstudio-kotlin-scratch-file-e17cfde152c6


##■おまけ　他の簡易実行方法
###1.WEB常にて実行

入力補完がなく動的にエラーを教えてくれないですが、ちょっとしたプログラムをコピって試すぐらいなら便利です

https://paiza.io/projects/YKxAS5SYXhuQXDPQrpwaqQ?locale=ja-jp

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/229934f6-016a-004a-b7b9-90499c6d6bd9.png)

https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/067ca3b3-bb06-e85f-054e-95fbf417ef56.png)

###2.Kotlin REPL

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/80bd5a23-324b-6f5e-4599-4d56d3d4a777.png)

上の手順でREPLを起動

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252283/83882ad5-b6bd-8d58-e3e5-20ceeea2b6cc.png)

補完は効きますが、対話式で前の編集が効きません
私の使い方が悪いのかもしれないですが、使いどころが思い浮かびませんでした