まくまくAndroidノート
Android Studio の便利なショートカット (1) コードの調査/メソッド間のジャンプ
2016-04-12
Android Studio などの IDE の大きな利点は、メソッドの使用場所や定義場所へジャンプする機能が優れていることです。ショートカットキーを使いこなすと、実装作業だけでなく、既存コードの分析も効率的に進めることができるようになります。

コード探索に便利なショートカットキー一覧

ショートカットキーの組み合わせはたくさんあってややこしいですが、B キー系のショートカットは定義へのジャンプF7 キー系のショートカットは参照箇所へのジャンプと覚えれば迷わずに使用できるようになります。 B キーに関しては、マウスの左クリックで置き換えられるようになっています。

ひとまず、下記を使いこなせばほとんどのケースはカバーできるはずです。

  • Ctrl-Alt-B – クラス実装、メソッド実装、変数定義へのジャンプ
  • Ctrl-Shift-B – 変数の型(クラス)へのジャンプ
  • Alt-F7 – 参照箇所へのジャンプ
  • Ctrl-Alt-左 – ジャンプ元へ戻る

下記はコードを調査するときに便利なショートカットキーの一覧です。 特に使いこなしたいキーに関しては、★マークを付けてあります。

B キー系(実装、定義へのジャンプ)

ショートカットキー説明
Ctrl-B
Ctrl-クリック
中央ボタンクリック
Declaration
コンテキストに応じて振る舞いが変わる。例えばカーソルがメソッド定義にあるときは参照箇所へジャンプ、カーソルが参照箇所にあるときは定義へジャンプする。できればこれに頼らず、より用途のはっきりした別のショートカットを使うとよい(下記2つ)。
Ctrl-Alt-B
Ctrl-Alt-クリック
Implementation(s)
子クラスやインタフェースの実装クラス、メソッド実装へジャンプ。インタフェース→具象クラス、メソッド参照→メソッド実装、というジャンプ。
Ctrl-Shift-B
Ctrl-Shift-クリック
Type Declaration
テキストカーソル下のオブジェクトの実装クラスへジャンプ。あるいは、テキストカーソル下のメソッドの戻り値のオブジェクトの実装クラスへジャンプ(戻り値が void の場合は何も起こらない)。オブジェクト→クラス、というジャンプ。

F7 キー系(参照箇所へのジャンプ)

ショートカットキー説明
Alt-F7 Find Usages
メソッドや変数の参照箇所をツリー表示
Ctrl-Alt-F7 Show Usages
メソッドや変数の参照箇所をリスト表示(1か所だけなら即ジャンプ)
Ctrl-F7 Find Usages in File
ファイル内の参照箇所へジャンプ。F3で次へ移動。
Ctrl-Shift-F7 Highlight Usages in File
ファイル内の同じキーワードをハイライト、どんどん追加していける。Esc ですべてのハイライトをクリア。
Ctrl-Alt-Shift-F7 Find Usages Settings...

F キー系(テキストサーチ)

ショートカットキー説明
Ctrl-F Find...
ファイル内をテキスト検索
Ctrl-Shift-F Find in Path...
プロジェクト内をテキスト検索
Ctrl-Alt-F Field...
フィールドをテキスト検索

その他

ショートカットキー説明
Ctrl-Alt-左/右 Back/Forward
ジャンプ元へ戻る/進む
Ctrl-N Class...
クラス名を指定してファイルオープン
Ctrl-H Type Hierarchy
クラスやインタフェースの階層構造を表示
Ctrl-F12 File Structure
クラス内のメンバ、フィールドをリスト表示

実装へジャンプする B キー系ショートカット

Ctrl-BCtrl-クリック)はコンテキストによって異なる振る舞いをするため、可能であれば、このショートカットは使わずに、より用途が明確な Ctrl-Alt-BCtrl-Shift-B の方を使えるようになると、スムーズにコード調査を行えるようになります。

  • Ctrl-B (Declaration) – 振る舞いがころころ変わる
  • Ctrl-Alt-B (Implementations) – クラス実装、メソッド実装、変数定義へのジャンプ
  • Ctrl-Shift-B (Type Declaration) – 変数の型(クラス)へのジャンプ

ここでは、テキストカーソルの位置によってどのように振る舞いが変わるかを具体的に見ていきましょう。

クラス/インタフェース定義にテキストカーソルがある場合

public class MyClass {
    ...
}

public interface MyInterface {
    ...
}
  • Ctrl-B – クラスの参照箇所へジャンプ(Ctrl-Alt-F7 と同様)
  • Ctrl-Alt-B – 実装クラス(or子クラス)へジャンプ(Ctrl-H で継承ツリー表示した方がわかりやすい)
  • Ctrl-Shift-B – 該当なし(オブジェクトじゃないため)

親クラス/インタフェースにテキストカーソルがある場合

public class Child extends Parent {
    ...
}

public class Concrete implements IInterface {
    ...
}
  • Ctrl-B – 親クラスの定義へジャンプ
  • Ctrl-Alt-B – 実装クラスへジャンプ
  • Ctrl-Shift-B – 該当なし(オブジェクトじゃないため)

メソッドの定義にテキストカーソルがある場合

public class MyClass {
    void myMethod() {
        ...
    }
}
  • Ctrl-B – メソッドの参照箇所へジャンプ
  • Ctrl-Alt-B – 該当なし(自分自身が実装のため)
  • Ctrl-Shift-B – 該当なし(ただし、戻り値があればそのオブジェクトのクラスへジャンプ)

メソッドの参照箇所にテキストカーソルがある場合

public class MyClass {
    void myMethod() {
        obj.method();
    }
}
  • Ctrl-B – メソッドの実装へジャンプ
  • Ctrl-Alt-B – メソッドの実装へジャンプ
  • Ctrl-Shift-B – 該当なし(オブジェクトじゃないため)

変数定義にテキストカーソルがある場合

public class MyClass {
    private MyClass mField;
    ...
    private void method(MyClass param) {
        ...
    }
}
  • Ctrl-B – 変数の参照箇所へジャンプ(Ctrl+Alt+F7と同様)
  • Ctrl-Alt-B – 該当なし(変数自体に実装はない)
  • Ctrl-Shift-B – そのオブジェクトのクラスへジャンプ

変数の参照箇所にテキストカーソルがある場合

public class MyClass {
    private void method() {
        mMyField.method();
    }

    private void method(MyClass param) {
        hoge(param);
    }
}
  • Ctrl-B – 変数の定義へジャンプ
  • Ctrl-Alt-B – 同上
  • Ctrl-Shift-B – そのオブジェクトのクラスへジャンプ

参照箇所へジャンプする F7 キー系ショートカット

参照箇所へジャンプする F7 キー系のショートカットは、定義/実装へジャンプする B キー系のショートカットと違って振る舞いが一定しているため簡単に使いこなすことができます。 基本は、Alt-F7 で参照箇所をツリー表示してジャンプ、という使い方で OK です。 ツリー表示された状態で、Ctrl-Alt-上/下 を押すことで、参照箇所に順番にジャンプすることができます(行入れ替えの Ctrl-Shift-上/下 と間違えないように!)。

Ctrl+H (クラスやインタフェースの継承構造を表示)

クラス名にカーソルがある状態で、Ctrl-H を押すと、そのクラスの継承構造がすべてツリー表示されます。

調査対象としているクラスが複雑な継承構造を持っているとき、やみくもにコードを読み進めても全体の振る舞いを理解しにくいことがあります。 まずは、調査したいクラスの継承構造を把握するのがよいでしょう。 インタフェース名にカーソルがある状態で Ctrl-H を押すと、そのインタフェースを実装するクラスをすべて把握することができます。

この操作は、クラス名、あるいは、インタフェース名にテキストカーソルが置かれている状態でしかうまく機能しないことに注意してください。 フィールドや、変数にテキストカーソルが置かれている状態で実行した場合は、そのフィールドを保持しているクラスに関しての情報が表示されます。

2016-04-12