Android Studio最速入門~効率的にコーディングするための使い方

第17回 エディタの話[その9]─いろいろなナビゲーション

この記事を読むのに必要な時間:およそ 6.5 分

はじめに

編集機能についてはあらかた説明を終えたので,今度は移動手段について説明します。

Navigateメニューひとめぐり

主な移動コマンドはメニューバーの「Navigate」に集約されています。まず手始めにこのメニューを上から順に説明していきます。Eclipseを使っていた人向けに補足すると「ナビゲート」メニューに相当すると思って下さい。Eclipseと類似している機能は極力,それと対比するように説明していきます。

クラス・ファイル・シンボルへ移動

上から順に「クラスに移動」⁠ファイルに移動」⁠シンボルに移動」です。Eclipseの相当機能は「ナビゲート → リソースを開く...」「ナビゲート → 型を開く...」だと思います。

図1 クラス・ファイル・シンボルへ移動

図1 クラス・ファイル・シンボルへ移動

Eclipseと比べるとシンプルな検索ウィンドウが開きます。このウィンドウ上で文字を入力して,検索対象を絞り込んでいきます。

検索対象(用途)に応じてコマンドが分かれています。使い分けは面倒かと思いますが,こういうものだと思ってあきらめて使い方を覚えましょう。

「Navigate → Class...」
Javaのクラスを検索します。
チェックボックス(Include non-project classes)をONにすることで,プロジェクトのソースコード以外のクラス(ライブラリなどのクラス)を検索することができます。
検索ワードは,コード補完と同じく中間マッチングが有効で,大文字・小文字はちょっとだけ意味を持ちます(大文字を続けた場合,キャメルケースの先頭文字をマッチしようと試みます)⁠
ワイルドカードとしてアスタリスク*が有効です。ただ,検索文字は「その文字からはじまるクラス」を検索するわけでもないし,スペースもワイルドカードの一種として評価するため,アスタリスクの出番は少ないです。

図2 ⁠Navigate → Class...」の例

図2 「Navigate → Class...」の例

検索ワードの後に「スペース」を入れることで「そのワードで終わるクラス」を検索できます(実は「このワードではじまるクラス」だけを検索することができません)⁠

内部クラスは普通に検索ワードで検索できますが,匿名クラスについては検索ワードの末尾に$数字を指定して検索できます。とは言え,そのクラスに匿名クラスが存在しているかどうかは移動してみないとわからないので,実用性については疑問の残る指定方法だと思います(覚えなくても損はしないでしょう)⁠

図3 ⁠$数字」を指定して匿名クラスに移動する(クリックすると動きがわかります)

「⁠$数字」を指定して匿名クラスに移動する` &title=`図3 ⁠$数字」を指定して匿名クラスに移動する` &width=`400` />

「Navigate → File...」
プロジェクト内のファイルを検索します。
Javaのクラスもファイルとして検索できるので,機能的には「Navigate → Class...」を包括しています。
ここでもチェックボックス(Include non-project files)をONにするとプロジェクト外のファイルも検索対象となりますが,先ほどのクラスほどONにする用途は無いでしょう。

図4 ⁠Navigate → File...」の例

図4 「Navigate → File...」の例

検索する対象は「ファイル」だけではなく「ディレクトリ」も検索できます。

検索ワードの入力規則は「Navigate → Class...」と同じです。ファイル検索の場合,スラッシュ/で区切ることで,特定のディレクトリを絞り込むことができます。

図5 スラッシュ(/)でディレクトリの絞り込みを行う(クリックすると動きがわかります)

(/)でディレクトリの絞り込みを行う` &title=`図5 スラッシュ(/)でディレクトリの絞り込みを行う` &width=`373` />

「Navigate → Symbol...」
シンボル(Javaのクラスやメソッド,フィールドなど)を検索します。こちらも機能的には「Navigate → Class...」を包括しています。

図6 ⁠Navigate → Symbol...」⁠の例

図6 「Navigate → Symbol...」の例

使い方は人それぞれだと思いますが,筆者は画面を極力広く使いたいため普段は「Projectツールウィンドウ」を閉じて使っています。そのため,目的のクラスやファイルに素早く移動するためにこのメニューを多用しています。移動対象によってコマンドが3つ(Class, File, Symbol)に分かれていますが,主に使うのはクラス検索,次いでファイル検索です。意外かも知れませんがシンボル検索は滅多に使いません。理由は簡単でシンボル名までしっかり覚えてないからです。

いずれにしろ,3種類もショートカットキーを覚えるのは苦痛なので,まずは「Navigate → File...」から使ってみる事をオススメします。

ちょっとしたTIPSですが,この検索ウィンドウにリストアップされる候補に対して"Quick Definition"や"Quick Documentation"が使えます。これは思いのほか便利です。

図7 "Quick Definition"で候補から定義内容を参照

図7 

またエディタ上で何かを選択状態にして,これらのコマンドを実行すると検索ウィンドウに,その選択内容が展開されます。"Select Word at Caret"と組み合わせると,まあまあ便利なのですが,対象がクラスやメソッドの場合,後述する専用の移動コマンドがあるのであまり使い道がありません。

むしろ,コメントやリテラル中の文字列から任意の対象へ移動する場合に使うと,そこそこ便利です図8)⁠

図8 選択中の文字列があると,それを検索ワードとして引き継ぐ(クリックすると動きがわかります)

それを検索ワードとして引き継ぐ` &title=`図8 選択中の文字列があると,それを検索ワードとして引き継ぐ` &width=`373` />

それと,IntelliJのヘルプから知ったのですが,この「Navigate → Class / File / Symbol」の検索候補を選ぶときにEnterキーではなく,SHIFT+Enterキーを押すと対象ファイルが 別ウィンドウ で開きます。

図9 SHIFT+Enterキーで別ウィンドウにファイルを開く(クリックすると動きがわかります)

この機能「Preferences / Keymap」にも載っていないので今まで見落としていましたが,これ以外でも「Projectツールウィンドウ」「TODOツールウィンドウ」⁠後ほど説明する)⁠Findツールウィンドウ」でも有効でした。

[コラム]Custom Regionってなに?

脈絡も無く「クラス・ファイル・シンボルへ移動」と隣接している「Navigate → Custom Region...」ですが,そもそも「Custom Region」って何でしょうね?と言うところから説明する必要があります。

図10 謎の「Navigate → Custom Region...」

図10 謎の「Navigate → Custom Region...」

Android Studioのエディタは,コードブロックやブロックコメントなどの構文をたたみ込むfoldingという機能を持っています(メニューバーの「Code → Folding」⁠この派生機能で,2種類のコメント記法で任意の領域をfoldingできます図11図12)⁠なお,この実行メニューは「Code → Folding」ではなく「Code → Surround With...」にあります。

図11 <editor-fold>形式のCustom Region

図11

図12 region~endregion形式のCustom Region

図12 region~endregion形式のCustom Region

※ region~endregion形式はバグなのか,Custom Regionと認識されませんでした(v0.2.5で確認)⁠

前置きが長くなりましたが,⁠Navigate → Custom Region」はこの2つのコメント記法で囲んだ範囲を見つけ出すコマンドなのです。ちなみに検索対象は,現在アクティブになっているエディタのみ。

Custom Regionが存在するエディタ上で実行すると図13のような選択ダイアログが表示されます。

図13 ⁠Navigate → Custom Region」の実行例

図13 「Navigate → Custom Region」の実行例

正直「こんなコマンドがここにある必要が?」と思ってしまいます。置くところが無くて,とりあえず「Navigate」メニューに置いときました的なコマンドですね。それと,あまり用途もなさそうな気がします……。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai

コメント

コメントの記入