LoginSignup
2
0

More than 3 years have passed since last update.

やはり俺の青春ラブテレはまちがっている。Scala編

Last updated at Posted at 2020-03-22

Ya-Hello, Live Template!!

IntelliJをお使いの皆さん、Live Template略してラブテレ!(無理矢理ェ)使っていますか?

いわゆるIDEのコード補完の機能ですが、普段の面倒な入力を一瞬で片付けてくれるすごいやつです。楽して、美しいコードを書けるのでぜひ使いこなしてみてください!この記事の最後で、すぐにScala開発で活用できる拡張ファイルもご用意しています!

ちなみにこの記事と俺ガイルは一切関係ありません。
が、僕は圧倒的にいろはす派です👍!

つまりどういう機能だってばよ

つまりはこんなことができる機能です。
画面収録 2020-03-21 18.33.09.mov.gif

これはIntelliJ標準で設定されているライブテンプレートで、すぐに皆さんの環境で試すことができます。todoと入力してtabを押すとコメントアウトとTODOの文字列が展開され、すぐにコメントを打ち込めるわけですね。

ライブテンプレートは標準のものだけでなく、自身でオリジナルテンプレートを設定することができます。どんなことが便利になるのかのイメージがつくように、僕の普段の開発言語であるScalaの設定をいくつかご紹介します。

基礎編 - 入力を1文字で済ませる

valやdefを1文字で書く

ライブテンプレートで設定する狙い目は当然、普段よく書くことです。
例えばvaldefは普段から何百回と書いているのではないでしょうか?

ライブテンプレートを設定すればこんな風に書くことができます。
v + tab => val 変数名 = 値
d + tab => def 関数名(引数): 返り値 = {}
val編.gif

型入力を1文字で済ませる

型定義を都度要求するScalaでは何度もStringLongを入力します。
そんな型をこのように登録します。
S + tab => String
I + tab => Int
L + tab => Long
O + tab => Option[]
型編.gif

応用編 - TDDで真価を発揮するラブテレ

僕の開発チームはTDDを積極的に実践しています。
つまり開発がある限り、毎週テストは必ずやってきてその多くはパターン化できるのです。

FunSpec系の場合

dr + tab => describe展開
it + tab => it展開 + 期待値の入力
mb + tab => mustBe expect

FunSpec.gif

WordSpec系の場合

wst + tab => テストケース展開 + 期待値の入力
mb + tab => mustBe expect

WordSpec.gif

ちなみにWordSpec系の場合、

ライブテンプレートを使わなかった場合の入力時間:約90秒
ラブテンプレートを使った場合の入力時間:約30秒

67%も速くなった!!!!!!

普通に打つとmust()とか出てくる括弧を消さなくてよくなったりするので、冗談抜きに速くなります!

「タイピング速いから俺関係ないし」 と、思うじゃん?

タイピングがお世辞にも速くない僕は、最初はスピードアップが目的でした。
でも使ってる中でわかったのは、IntelliJが僕の集中スイッチを入れてくれる効果もあるということです。

コーディング中は無意識にいろんなことを考えていて、意外と集中できてない状態です。
でもライブテンプレートでvと打った時、サジェストされることで「変数名をつけること」に頭のスイッチが切り替わります。

コーディング中に真に頭を使うべきは以下のようなことだと思います。

  • やりたいことを端的に表す関数名って何だろう?
  • どんなテストケースなら次見た人が理解しやすいだろう?

DBfluteの久保さんの記事でも紹介されていますが、頭のCPUはなるべく節約して、集中すべき時はIntelliJにスイッチを入れてもらうとコーディングはもっと楽しくなると思います!

[意外と忘れがちな優秀なプログラマーになるための10のコツ]

では最後に、オリジナルテンプレートの設定方法もご紹介しておきますね!

オリジナルテンプレートの設定方法

IntelliJの画面からPreferences -> Editor -> Live Templatesと進みます。
ここに全てのライブテンプレートの設定が言語ごとにまとまっています。

スクリーンショット 2020-03-21 18.45.36.png

手順としては、

  1. テンプレートを使いたい言語のグループを選択
  2. 右端の+ボタンを押す
  3. 1.Live Templateを選択
  4. 必要項目を入力
  5. Apply or OKで登録完了

必要項目は主にこの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/

参考文献

2
0
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
2
0