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

第11回 エディタの話[その3]─コード補完

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

キーワード展開

Eclipseでいう「単語補完」です。現在のテキストに含まれる「語(キーワード⁠⁠」を展開する,テキストエディタでもよく見かけるアレです。

キーワードをカーソル位置から前方向(文頭に向かっていく)に探していく "Cyclic Expand Word" と,逆に後方向(文末に向かっていく)に探しに行く "Cyclic Expand Word (Backward)"の2つがあります。

オマケ的な機能ですがテキストファイルなどAndroid Studioが得意としないファイルの編集でも使えるので,普段使っているテキストエディタと同じショートカットキーにしておくと重宝します。残念なことに,日本語混じり文をひとつの単語とみなすため,時折図10のようなことになります。

図10 キーワードに日本語が近接していると,それごとひとつの単語と認識する(クリックすると動きがわかります)

それごとひとつの単語と認識する` &title=`図10 キーワードに日本語が近接していると,それごとひとつの単語と認識する` &width=`400` />

コード補完のデフォルト動作

自動補完も含め,コード補完の動作は「Preferences / Editor / Code Completion」で細かく設定できます。デフォルトの動作が気持ち悪い場合など,このあたりを調整して手に馴染む動作にしてみましょう。

図11 ⁠Preferences / Editor / Code Completion」設定画面

図11 「Preferences / Editor / Code Completion」設定画面

Case sensitive completion
  • コード補完の候補を大文字・小文字を区別するかどうかを指定します。
  • 選択肢は「First lettar(最初の文字で決める⁠⁠All(常に大文字・小文字を区別する⁠⁠None(大文字・小文字を区別しない⁠⁠」の3つです。
Auto-insert when only one choise on
  • 補完候補がひとつしかない場合,自動的にその候補を確定するかどうかを指定します。
  • コード補完のタイプ(Basic補完/Smart補完)ごとに指定できます。
Sort lookup items lexicographically
  • ONにすると補完候補を辞書順にソートして表示します。
  • OFFだと関連するエントリごとに並び替えます(これをONにして得することはそうないと思います⁠⁠。
  • 補完候補のリストをよーく見ると右端に「π」とか「A」のアイコンがあり,ここをクリックすることでも切り替え可能です。

図12 補完候補の並び順を変える

図12 補完候補の並び順を変える

Autopopup code completion
  • 自動補完を有効にします。
  • 自動補完が鬱陶しい場合は,ここをOFFにするとよいです。
Insert selected variant by typing dot, space, etc.
自動補完の候補が出ている最中にドッド(.⁠⁠,スペース,タブなどを入力すると,その文字の代わりに補完候補を確定します。これをONにすると,だいぶ鬱陶しいです。なんのために用意したオプションなんでしょう……。
Autopopup documentation in (ms)
  • 選択した候補の「Quick Documentation」ポップアップが表示されるまでの待ち時間(ミリ秒)を指定します。
  • これをOFFにすると"Quick Documentation"コマンドを実行しない限り「Quick Documentation」ポップアップは表示されません。

次はコード補完とは直接の関係はありませんが,おなじ設定画面にあるので説明しておきます。

Parameter Info
Autopopup in (ms)
メソッドのパラメータ情報をポップアップするまでの待ち時間(ミリ秒)を指定します。ここをOFFにすると"Parameter Info"コマンドを実行しない限り,パラメータ情報は表示されません。
Show full signatures
パラメータ情報に戻り値を含めた完全な情報を表示するかどうかを指定します。

図13 "Parameter Info"の表示の違い

図13 

補完候補リストについて

先ほどのSort lookup items lexicographicallyのように補完候補リストもいろいろな操作を受け付けます。

たとえば,現在表示されている補完候補のコントラストで,それが自動補完によるものなのか,Basic補完/Smart補完といった明示的な補完によるものなのか見分けることができます。図14 のように比べてみるとわかりますが,自動補完と明示的補完では補完候補の濃淡が違います。

図14 自動補完と明示的補完の補完リストの違い

図14 自動補完と明示的補完の補完リストの違い

それと,補完候補リストの真下にメッセージが表示されています。よく読むと稀に役に立つ(立たない?)ことが書いてあるので,たまには意識を向けてみると得することがあるかもしれません。⁠≫」をクリックするとメッセージが切り替わります。

図15 補完候補リストにひっそり出ているヘルプメッセージ(クリックすると動きがわかります)

どちらも正直,だからどうってことは無いんですが,へぇーとでも思っていただければ幸いです。

補完候補の絞り込み

補完候補は入力文字をタイプしていくほどに絞り込まれていきます。JetBrainsが公開しているドキュメント:Code Completion - IntelliJ IDEA Quick Start(翻訳はこちら⁠」に中間マッチングの説明がありますが,Android Studioも補完候補の絞り込みも対象の先頭からタイプする必要はありません。

図16 中間マッチングの例

図16 中間マッチングの例

rayとタイプすれば,ArrayListがマッチする。

ただ,この中間マッチング,結構なクセがありまして,ある程度使い込まないと望み通りの絞り込みはできないと思います(少なくとも筆者がそうです⁠⁠。筆者のオススメはキャメルケースの頭文字を利用した絞り込みです。

図17 キャメルケースマッチングの例

図17 キャメルケースマッチングの例

補完候補の絞り込みとはちょっと違う話なのですが,スタティックメソッドや定数はクラス名を記述せず,スタティックメソッド名をタイプしてBasic補完を実行すると,クラス名が展開された候補リストが表示されます。

図18 スタティックメソッドや定数のマッチングの例

図18 スタティックメソッドや定数のマッチングの例

asとタイプしてBasic補完を実行すると,それに該当するスタティックメソッドや定数が候補に出てくる。

こちらも知っていると,多少キータイプ量を減らせますので,頭の片隅にでも置いておいてください。

今回のまとめ

「Ctrl+スペース」で事が足りてたEclipseと異なり,2種類の補完を用途に応じて使い分けなければならず「ちっ,面倒臭いなぁ」と思われた方も少なくないと思います。こうして文書にすると書いた本人も「Android Studioのどこが便利なんだろ?」と筆が止まることもしばしばありました。それでも,こうゆう特徴を知った上で,コード補完を使いこなすと「サイコミュでも搭載してるのか!?」と錯覚するほどピタっとしたコード補完をするようになります。脳汁があふれる瞬間ですね。

騙されたと思って,この2つのコード補完(Basic補完/Smart補完)を使ってみてください。使い分けのコツは,次のとおりです。

何にも無いところで入力をはじめる場合は,Basic補完
  • 自動補完でかってに候補がでるのであまり気にする必要はありません。
  • Java以外のファイルを編集中は,Basic補完だけで良いです。
ある程度入力してから補完する場合は,Smart補完
  • 代入式の右辺やメソッドの引数など「型」で縛って補完候補を絞り込みます。
  • Javaファイルを編集中にのみ効力を発揮します。

あと「まさか,こんなところで補完は効かないよね」と思えるところでも補完候補がでる場合があるので「ここで候補でないかなぁ」と思うところでは,とりあえずBasic補完を試してみると良いと思います。

著者プロフィール

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

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

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

Twitter: @masanobuimai