脱初心者を目指す！Android Studioの便利な機能やショートカットまとめ

## はじめに

こんにちは。
去年の秋までクロスプラットフォームなアプリ開発を行っており、その後ネイティブ言語（SwiftやKotlin）によるアプリ開発を担当するようになりました。
ネイティブ言語でのアプリ開発を始めて約半年、色々なことをキャッチアップしましたが、その中でとくに役立ったのはIDEの便利な機能やショートカットでした。

そこで、今回はAndroid Studioにしぼって、この半年間でよく使ったもの、自分で調べて便利だなと思ったもの、さらにはモブプロやペアプロした中で他のエンジニアから見聞きしたものを記事にまとめます！
Android Studioを使っている人はもちろん、これから使おうとしている人にも役立てば幸いです。

## この記事の対象者

- Android Studioでのアプリ開発を始めたての人[^1]
- Androidアプリ開発をするにあたって最低限の便利な機能やショートカットを知りたい人

[^1]: Android Studioが使ったことあれば問題ありません！さらに[Android Studio UI](https://developer.android.com/studio/intro/user-interface)（ToolbarやNavigation BarなどのAndroid Studio上で表示されるUI名）を知っていると、こちらの記事をより理解しやすいかもしれません。

## Android Studioのプラグイン

まずはじめにAndroid Studioで便利なプラグインを紹介します。

| プラグイン名 | 概要 |
| --- | --- |
| [CamelCase](https://plugins.jetbrains.com/plugin/7160-camelcase) | キーワードのケース（キャメルケースやスネークケースなど）を簡単に切り替えられます。マルチカーソルと組み合わせると便利です。 |
| [ADB Idea](https://plugins.jetbrains.com/plugin/7380-adb-idea) | アプリのアンインストールやアプリ内ストレージの削除、アプリの再起動など便利な機能をAndroid Studio上で使えるようになります。 |
| [GitHub Copilot](https://plugins.jetbrains.com/plugin/17718-github-copilot) | もはや説明不要かもしれないコーディング支援サービス。コード補完もチャットも両方Android Studioで使用できます |
| [IdeaVim](https://plugins.jetbrains.com/plugin/164-ideavim) | VimのキーバインドをAndroid Studio上で使えるようになります。個人的にVimが好きなので使っています！ |

## Android Studioでの便利機能

ここではAndroid Studioで便利な機能を紹介します。

### 開発ビルドを起動している状態からデバッグを開始する

デバッグしていない状態で起動して途中からデバッグしたい時ってよくありますよね。
以下で紹介する方法は、再度ビルドしたり、アプリを再起動する時間を短縮できるだけでなく、 デバッグビルドを実行するよりも若干動作が軽く感じるといったメリットもあります。

1. 開発ビルドを起動している状態で、デバッグを開始したい箇所にブレークポイントを設定する
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/d66b4443-cb81-2eee-65d3-5e9f2956e412.png" alt="ブレークポイントの設定" width="500">

1. ToolBarの「Attach Debugger to Android Process」をクリックする
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/ecc2eccd-3120-9749-00c1-0001d5dd6705.png" alt="デバッガーのアタッチ" width="450">

1. 起動しているプロセスを選択する
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/ae873c19-7e44-0664-9286-58d727d0c45a.png" alt="プロセスの選択" width="350">

1. デバック状態となる
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/44358ba1-a47f-19de-70dd-9010ca30b639.png" alt="デバッグ状態" width="500">

### アプリの通信状態を確認する

アプリの通信状態を確認する方法を紹介します。
この機能を使えば、CharlesやProxymanなどのアプリを使わなくともAndroid Studio内でアプリがAPIリクエストを送信したり、APIレスポンスを受け取っているかを確認できます。
とくにホスト名やクエリパラメーター、ヘッダー、レスポンスのボディを確認したい時に便利です。

1. デバッグを開始する
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/b4927c18-c9a4-6e6c-110d-f80ed93dd059.png" alt="debug" width="450">
1. Tool Window Bar内の「App Inspection」をクリックする
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/ba331753-5f80-b4db-98a0-bec58a8da254.png" alt="app_inspection" width="800">
1. プロセスを選択する
    - 自動でアプリのプロセスが選択される場合もあるため、その場合はこの操作はスキップでOK
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/d6c76511-ff0d-1b9d-4602-6d980f2b4af2.png" alt="select_process" width="400">
1. Network Inspectorをクリックする
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/b15b64e0-65be-fb93-ad24-df844cecf225.png" alt="app_inspection" width="500">

### アプリのアンインストールやストレージの削除を簡単に行う

開発したAndroidアプリを検証する中で、アプリをインストール直後の状態に戻したいことや、アプリ内ストレージを削除したい（たとえば、ユーザー情報を含んだストレージを削除することでログアウト状態にさせたい）ことがあります。
しかし毎回端末（とくにエミュレーター）上でアンインストールやストレージ削除するのはとても手間ですよね。

ここではAndroid Studio上からアプリのアンインストールやストレージ削除の方法を紹介します。

1. [こちら](#android-studioのプラグイン)で紹介したADB Ideaをインストールする
1. 「アクション検索」を開く（ショートカットは[こちら](#android-studioの便利なショートカット)に記載しています）
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/668eb2d2-316e-168a-2988-2dce0d6a70a3.png" alt="find_actions" width="500">
1. 実行したいコマンドを選択する
    - アプリをアンインストールする場合：「ADB Uninstall App」
        <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/59f34258-dacd-2805-96c7-90b6bb143245.png" alt="uninstall_app" width="500">
    - アプリ内ストレージを削除する場合：「ADB Clear App Data」
        <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/cb6d889b-65a2-8f0c-6350-9a9bd2a59f16.png" alt="clear_app_data" width="500">

## Android Studioの便利なショートカット

次によく使われるショートカットを紹介します。ここではショートカットを以下の4種類に分類しています。

- コード編集系
- 検索系
- ナビゲーション系
- デバッグ系

ショートカットを活用できると、コードや文章を書きながら必要な機能をすぐに呼び出せて作業効率が上がるので、個人的にショートカットを覚えることは結構大事だと思っています。
とくにペアプロやモブプロでショートカットを使っていると、GUIで操作するより実装をテンポよく進められてかなり快適です！

### コード編集系

| 機能 | 主な用途 | ショートカット (macOS) |ショートカット (Windows) |
| --- | --- | --- | --- |
| クイックドキュメント | ドキュメントを参照したい時 | F1 | F1 |
| Quick fixの表示 | 警告を修正したい時 | ⌥ + Enter | Alt + Enter |
| キーワードの置換 | 変数やメソッドの名前をまとめて変更したい時 | Shift + F6 | Shift + F6 |
| コードフォーマット | .xmlファイルの属性を並び替えたり、インデントを調整したい時 | ⌘ + ⌥ + l | Ctrl + Alt + l |
| 自動インポート | インポートをまとめたり、並びを調整したい時 | Ctrl + ⌥  + o | Ctrl + Alt + o |
| ケース（キャメルケースやスネークケースなど）を切り替える[^2] | APIレスポンスのjsonの型からレスポンス用クラスを作成する時 | ⌥ + Shift + u | Alt + Shift + u |
| マルチカーソルの作成（1行上） | 複数の宣言（変数や関数など）を同時に行いたい時[^3] | ⌘ + ⌥ + ↑ | Ctrl + Alt + ↑ |
| マルチカーソルの作成（1行下） | 複数の宣言（変数や関数など）を同時に行いたい時[^3] | ⌘ + ⌥ + ↓ | Ctrl + Alt + ↓ |

[^2]: このショートカットを使用するには、CamelCaseプラグインをインストールする必要があります。
[^3]: IdeaVimユーザーであれば、Vimのキーバインドで簡単にマルチカーソルを作成できます。自分はIdealVimを使用しているため、こちらのショートカットは基本的に使っていません。

### 検索系

| 機能 | 主な用途 | ショートカット (macOS) |ショートカット (Windows) |
| --- | --- | --- | --- |
| アクション検索 | アクション[^4]を検索したい時 | ⌘ + Shift + f | Ctrl + Shift + f |
| テキスト検索 | 複数ファイル間でキーワードを検索したい時 | ⌘ + Shift + f | Ctrl + Shift + f |
| ファイル検索 | ファイルを検索したい時 | ⌘ + Shift + o | Ctrl + Shift + o |
| ファイルやクラスなど一括検索 | 特定のキーワードのクラスやファイルを一括で検索したいとき | Shift + Shift | Shift + Shift |

[^4]: アクションとは、Android Studio上で行える操作のことです。たとえば、ファイルの新規作成やリネーム、プロジェクトのビルドなどもすべてアクションとなります。

### ナビゲーション系

| 機能 | 主な用途 | ショートカット (macOS) |ショートカット (Windows) |
| --- | --- | --- | --- |
| 戻る | 直前の編集箇所（ファイルや行）に戻りたい時 | ⌘ + [ | Ctrl + [ |
| 進む | 元の編集箇所（ファイルや行）に戻りたい時 | ⌘ + ] | Ctrl + ] |
| 行・列への移動 | 特定の行や列に移動したい時 | ⌘ + l | Ctrl + l |
| カーソルが置かれているクラスやProject Window（左側のウィンドウ）で選択されているファイルが使用されている箇所を表示する | resource（.xmlファイル）を使用されている箇所を調べたい時 | ⌥ + F7 | Alt + F7 |
| Editor Windowで開いているファイルをProject Window 内で開く | ファイルを複製したりリネームしたい時 | ⌥ + F1 + Enter | Alt + F1 + Enter |
| 定義へのジャンプ | 変数やメソッドの定義に移動を確認したいとき | F4 | F4 |
| ファイル構造を表示 | ファイル内で記述されたクラスやメソッドを一覧で確認したい時 | ⌘ + F12 | Ctrl + F12 |

### デバッグ系

| 機能 | 主な用途 | ショートカット (macOS) |ショートカット (Windows) |
| --- | --- | --- | --- |
| ブレークポイントを切り替える | 行にブレークポイントをつけたり消したりしたい時 | ⌘ + F8 | Ctrl + F8 |
| プログラムを再開する | ブレークポイントで止まった状態を解除したい時 | ⌘ + ⌥ + r | Ctrl + Alt + r |
| 式を評価 | デバック時に変数の中身を確認したい時 | ⌥ + F8 | Alt + F8 |

## (Appendix) 知っておくと少し便利なTips

本編は以上ですが、Android Studioの機能やショートカット以外にも知っておくと便利なTipsをいくつか紹介します。

### さまざまな画面サイズでUIを確認する方法

アプリのUIをさまざまな画面サイズの端末で確認したいことはよくあると思います。しかし異なる画面サイズの端末を準備するのは大変ですしお金もかかります。

そのような場合に有効なのが以下で紹介するAndroidの開発者向け機能を使う方法です。こちらの方法はエミュレーターでも使用可能のため、実機なしでも色々な画面サイズのUI確認が行えます。

1. 開発者向けオプションを有効にする
    - 端末ごとに有効にする方法が異なりますが、ここではエミュレーターでの手順を参考までに記載します。
        - 設定アプリから「エミュレートされたデバイスについて」を開き、**ビルド番号**を何度かタップ
1. 設定アプリの「開発者向けオプション」内の**最小幅**を変更する
    - 元の最小幅に戻す際は手動で行わないといけないため、変更前の数値をメモすることをオススメします
        <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/631a2aa9-4848-70dd-9ffe-8c6d4cca06be.png" alt="minimum_width" width="250">
    - 画面サイズ変更後の画面
        <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/3e19a73c-e209-f8f3-482d-95581cf3a60c.png" alt="small_width" width="250">

### エミュレーターのウインドウ画面を簡単に表示する方法(macOSのみ)

デフォルトだとAndroid Studioの内部にエミュレーターが表示され非常に見にくいため、別のウィンドウに表示させている方は結構多いと思います。
しかしAndroid Studioとエミュレーターのウィンドウを行き来するのはmacOSだと少し手間ですよね。

ここでは、ショートカットでウィンドウを切り替える方法を紹介します。

1. システム設定からショートカットの設定を行う
    - キーボード > キーボードショートカット > キーボード内の「次のウィンドウを操作対象にする」にチェックを入れる[^5]
        <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646568/83b00ce7-758e-733b-4676-cd329cc2d9f4.png" alt="ショートカットの設定" width="500">
        [^5]: 添付画像では英語になっていますが、日本語のシステム設定でもおそらく同じ場所にあるはずです
1. Android Studio上で先ほど設定したショートカット（上の例だと、⌘ + F1）を入力してウィンドウを切りかえられることを確認する

### Android端末の画面をPC上で表示する方法

開発したアプリを実機にインストールし動作確認を行う際、実機の画面をPC上で映すことでペア・モブでの動作確認を行えるためとても便利です。
ここでエミュレーター使えば問題ないのではと思われるかもしれませんが、実機で動作させる分PCが重くならずスムーズかつ快適に動作確認が行えるため、実機を使えるなら実機での確認がオススメです。

ここではAndroid端末の画面をPC上で表示するツールとして[scrcpy](https://github.com/Genymobile/scrcpy?tab=readme-ov-file)を紹介します。
このツールを使いはじめてまだ数ヶ月ですが、とても使い勝手がよく非常に重宝しています。具体的には以下のような良さがあると思います。

- インストールが簡単
- AndroidとPC間のラグがほとんどなく快適
- PCからキーボード入力やマウス操作が可能
- PCのクリップボードからAndroidにペーストできる

使い方は以下の通りです。

1. [公式ページのGet the app](https://github.com/Genymobile/scrcpy?tab=readme-ov-file#get-the-app)に沿って、インストールする
1. Android端末をUSBでPCに接続する
1. ターミナルで`scrcpy -d`を実行する[^6]

[^6]: 私はよくこのコマンドを実行するため、MacのSpotlightから起動するための.commandファイルを作成しています。こちらの設定方法はまた別の記事で書くかもしれません。