Ya-Hello, Live Template!!
IntelliJをお使いの皆さん、Live Template略してラブテレ!(無理矢理ェ)使っていますか?
いわゆるIDEのコード補完の機能ですが、普段の面倒な入力を一瞬で片付けてくれるすごいやつです。楽して、美しいコードを書けるのでぜひ使いこなしてみてください!この記事の最後で、すぐにScala開発で活用できる拡張ファイルもご用意しています!
ちなみにこの記事と俺ガイルは一切関係ありません。
が、僕は圧倒的にいろはす派です👍!
つまりどういう機能だってばよ
これはIntelliJ標準で設定されているライブテンプレートで、すぐに皆さんの環境で試すことができます。todo
と入力してtab
を押すとコメントアウトとTODOの文字列が展開され、すぐにコメントを打ち込めるわけですね。
ライブテンプレートは標準のものだけでなく、自身でオリジナルテンプレートを設定することができます。どんなことが便利になるのかのイメージがつくように、僕の普段の開発言語であるScalaの設定をいくつかご紹介します。
基礎編 - 入力を1文字で済ませる
valやdefを1文字で書く
ライブテンプレートで設定する狙い目は当然、普段よく書くこと
です。
例えばval
やdef
は普段から何百回と書いているのではないでしょうか?
ライブテンプレートを設定すればこんな風に書くことができます。
v
+ tab
=> val 変数名 = 値
d
+ tab
=> def 関数名(引数): 返り値 = {}
型入力を1文字で済ませる
型定義を都度要求するScalaでは何度もString
やLong
を入力します。
そんな型をこのように登録します。
S
+ tab
=> String
I
+ tab
=> Int
L
+ tab
=> Long
O
+ tab
=> Option[]
応用編 - TDDで真価を発揮するラブテレ
僕の開発チームはTDDを積極的に実践しています。
つまり開発がある限り、毎週テストは必ずやってきてその多くはパターン化できるのです。
FunSpec系の場合
dr
+ tab
=> describe展開
it
+ tab
=> it展開 + 期待値の入力
mb
+ tab
=> mustBe expect
WordSpec系の場合
wst
+ tab
=> テストケース展開 + 期待値の入力
mb
+ tab
=> mustBe expect
ちなみにWordSpec系の場合、
ライブテンプレートを使わなかった場合の入力時間:約90秒
ラブテンプレートを使った場合の入力時間:約30秒
####67%も速くなった!!!!!!
普通に打つとmust()
とか出てくる括弧を消さなくてよくなったりするので、冗談抜きに速くなります!
「タイピング速いから俺関係ないし」 と、思うじゃん?
タイピングがお世辞にも速くない僕は、最初はスピードアップが目的でした。
でも使ってる中でわかったのは、IntelliJが僕の集中スイッチを入れてくれる効果もあるということです。
コーディング中は無意識にいろんなことを考えていて、意外と集中できてない状態です。
でもライブテンプレートでv
と打った時、サジェストされることで**「変数名をつけること」**に頭のスイッチが切り替わります。
コーディング中に真に頭を使うべきは以下のようなことだと思います。
- やりたいことを端的に表す関数名って何だろう?
- どんなテストケースなら次見た人が理解しやすいだろう?
DBfluteの久保さんの記事でも紹介されていますが、頭のCPUはなるべく節約して、集中すべき時はIntelliJにスイッチを入れてもらうとコーディングはもっと楽しくなると思います!
[意外と忘れがちな優秀なプログラマーになるための10のコツ]
では最後に、オリジナルテンプレートの設定方法もご紹介しておきますね!
オリジナルテンプレートの設定方法
IntelliJの画面からPreferences
-> Editor
-> Live Templates
と進みます。
ここに全てのライブテンプレートの設定が言語ごとにまとまっています。
手順としては、
- テンプレートを使いたい言語のグループを選択
- 右端の
+
ボタンを押す -
1.Live Template
を選択 - 必要項目を入力
-
Apply
orOK
で登録完了
必要項目は主にこの5つです。
Abbreviation
: 補完するためのキーワード
Description
: このテンプレートの説明文
Template text
: キーワード + tab
で展開したいテンプレート
Define
: どの言語の時にこのテンプレートを有効にするのか?
Reformat according to style
: 展開後にフォーマッタをかけるかどうか?
Template text
の中では$NAME$
のように$
で囲むことで変数化し、展開後に文字列を入力できるように設定できます。$END$
を入れると展開後にカーソルがその部分に移動します。
なお、展開する時にtab
以外でもこの画面のExpand with
で設定できますよ!
まとめ
いかがでしたでしょうか?
「ライブテンプレート楽しそうじゃん!」と思っていただいた方のために、今回紹介したテンプレートを共有できるファイルもご用意しました!xmlファイルを所定のディレクトリに配置することで共有できる仕組みのようです。
▽下記のGithubからダウンロード
Scala_Templates.xml
お使いのIntelliJが2019.3のバージョンならダウンロードして下記の配下において再起動するだけで完了できます!使いにくい場合はチェックを外せばOFFにできます。簡単!
~/Library/Preferences/IntelliJIdea2019.3/templates/