3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IntelliJ のファイルテンプレート機能でコードを自動生成して開発を楽にする

Posted at

 ファイルを作った後に必ず書かないといけないコードがあれば、自動生成されるようにしたいですよね。Lombok みたいなプラグインもありますが、そうはいってもプロジェクト個別なデフォルトなコードがあったりします。
 デフォルトなコードを自動生成する方法はいくつかあるかもですが、私は IntelliJ のファイルテンプレート機能を使っています。

環境

IntelliJ IDEA 2018.1.7 (Ultimate Edition)
(昔、もっと古いバージョンでも利用できたので、今使ってる人ならまず使えるかと思います)

ファイルテンプレート機能

 ファイルテンプレート機能といっているのは、以下の項目における設定のことです(コードテンプレート機能というのも含まれていますがこの記事では触れません)。
Preference -> Editor -> File and Code Templates
image.png

使い方

構文は Apache Velocity テンプレート言語に沿って書きます。
例えば、JavaSpring Boot)でリポジトリを実装するときに、必ず implements するものや、オーバライドしないといけないものを自動で用意したいとすれば、以下のようにします。

# if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
# parse("File Header.java")

# set ($name = ${NAME})
# if ($name.contains("RepositoryImpl"))
import web.app.repo.BaseRepository;

@Repository
public class $name implements BaseRepository {

  @Override
  public void findOne() {
  }
}
# else
public class $name {
}
# end

実際には findOne() の戻り値が void や、仮引数が無いということはないと思います。
なのでこのままだとエラーになるでしょうが、補うのは簡単なので例としては気にしないことにします。

以下は、説明をつけたものです(//している文が説明)。

// パッケージ名
# if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
// 外部テンプレート(File Header.java)のインポート
# parse("File Header.java")

// クラス名を変数に退避(${NAME}のままだと.contains()などチェインできなかったので)
# set ($name = ${NAME})
// クラス名に RepositoryImpl が含まれているなら自動で生成される部分
# if ($name.contains("RepositoryImpl"))
import web.app.repo.BaseRepository;

@Repository
public class $name implements BaseRepository {

  @Override
  public void findOne() {
  }
}
// 条件に該当しない場合に生成される部分(デフォルト)
# else
public class $name {
}
# end

おわりに

他にもいくつかテンプレート化したコードがあり、個人的には、大いに楽をできています。
人によっては、エディタを使いこなせば、これぐらいのコードは秒で書けるじゃんと思うでしょうし、実際に言われたこともありますが、最初からあったほうが楽だし、結構なにを書くか忘れちゃうもので……。
いったんこれで満足してますが、機能をもっと使いこなせば、もっといろいろできるかもですね。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?