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

第12回 エディタの話[その4]─テンプレート展開

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

ライブテンプレートのカスタマイズ

「Preferences / Live Templates」でカスタマイズを行います。分かりづらいのですが画面右上のほうにある「+」⁠-」ボタンでテンプレートやテンプレートグループを作成できます(既存のテンプレートのコピーもできます)⁠

図8 ライブテンプレートの登録

図8 ライブテンプレートの登録

ひとつ例にとってテンプレート定義の説明します。⁠output / stdoutv」の定義を見てみましょう。

図9 ⁠output / stdoutv」の定義例

図9 「output / stdoutv」の定義例

「Abbreviation」はテンプレートの名前です。ここに定義した名前が "Insert Live Templates" の候補にあがります。⁠Description」はテンプレートの説明で,こちらも補完候補の右側に表示されます。わりとどうでも良い話なのですが「Description」に日本語を入力することも可能です(それを言ったら「Abbreviation」も日本語で登録できます)⁠

図10 ライブテンプレートを日本語で登録してみた例

図10 ライブテンプレートを日本語で登録してみた例

「Template text」には展開したいテンプレートそのものを定義します。テンプレートの書式には,ほんのちょっとだけルールがあります。テンプレート内で変数を使いたい場合は変数名をドル記号($)で囲みます。定義した変数の振る舞いについては「Edit variables」で定義していきますが,それは後ほど説明します。

変数には2つだけ定義済みのものがあります。1つは$END$で,テンプレート展開後のカーソル位置を指定します。もう1つは$SELECTION$で,テンプレート展開前に選択していた範囲を示します。こちらは主に "Surround with Live Template"用のテンプレート(surroundグループ)で用います。

「Edit variables」ボタンを押すと,図11のようなダイアログが表示されます。

図11 ⁠Edit Template Variables」ダイアログ

図11 「Edit Template Variables」ダイアログ

ここで,テンプレートに定義した変数ごとの振る舞いを定義していくのですが,見ただけでは何をしていいのかサッパリわかりませんよね。ちなみにIntelliJのヘルプはこちらになります。

参考:Edit Template Variables Dialog - IntelliJ IDEA Web Help

定義する内容は,変数ごとに「やるべきこと(Expression)⁠「デフォルト値(Default value)⁠スキップ可能かどうか(Skip if defined)⁠を決めていきます。⁠やるべきこと」には自分以外の変数の値や固定値,その他にいくつかの関数が用意されています。どんな関数が用意されているかは,先ほどのヘルプを参照してください。ただし,ヘルプを見てもすぐ使いこなせはしませんので,まずはプリセットされているテンプレートの定義を参照してみるところから始めましょう(筆者もそうしてます)⁠

がんばればそれなりに表現力のあるテンプレートを作れますが,使い勝手や融通さではEclipseのテンプレートのほうが優れていると思います。

話を「Preferences / Live Templates」の設定画面に戻します。⁠Options」ではテンプレート展開時の振る舞いを指定します。

  • 「Reformat according to style」⁠ - 現在のスタイルに合わせてフォーマットする
  • 「Use static import if possible」⁠ - 可能なら static import を使う
  • 「Shorten FQ names」⁠ - 完全修飾名を短くする(import文 を自動展開します)

設定画面の最下行にある「Applicable in」はテンプレートの対象範囲を指定します。設定そのものは「Change」リンクを押して行いますが「ちょっとやり過ぎじゃないか?」と思えるほど多彩な設定ができます。

図12 ライブテンプレートを適用するファイルタイプを指定する

図12 ライブテンプレートを適用するファイルタイプを指定する

著者プロフィール

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

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

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

Twitter: @masanobuimai