今年から現場が変わって
開発環境がいろいろ変わりました。
特に主張したい何かがあるわけじゃないけど
所感メモを残しておきます。
昨年に比べればだいぶ現代に近づけたかな・・・。
Java6 → Java8
ZonedDateTimeとか
ラムダ式とか、Listのforeachとか
便利そうな機能が加わった。
が、まだ現場では使えてない。
クソみたいなfor文ぐるぐる書いちゃうので
早く慣れたい。
SpringMVC→SpringBoot
旧Spring時代と比べ、大分良いです。
Java特有のお作法の厳しさがだいぶ軽くなります。
DIにふつーに@Autowiredしてもらえば
割と細かいことは意識しなくても動いてくれる感じステキ。
@Scope とか @SessionAttributes とか @Validated とか
便利なアノテーションもありがたいです。
Lombok
アノテーションといえばコイツ。
getter/setterを自動で書いてくれるヤツ。
他にも便利なアノテーション揃ってる優れたヤツ。
なぜ前の現場でこれを使わせてくれなかったのか。
小一時間問い詰めたい。
Eclipse
文字色がうまく治せない、
起動が遅いこと以外はそれほど不便を感じていないです。
Gradle
ずっとantで苦しんできたので、
だいぶ楽ちんになりました。
一番ありがたいのは、新しい何か採用するとき。
みんなMavenかGradleは使っているので
新しいライブラリとか導入したいとき、
一行書くだけでOK!なパターンが頻出。
antは依存関係を自分で調べて、自分でbuildして
自分で落とし穴にハマっていかないとわからなかったのです。
落とし穴にハマった話(https://qiita.com/kugyu10/items/ab2df77c187b23bf6670)
Thymeleaf
HTMLとJavaを分離できる!
これでみんな幸せ!
・・・とはならなかった!!
別に、Thymeleafでも、Viewに
ゴリゴリ書いちゃう人はいるのだ。
JSPよりはマシだけど。
CSSちゃんと書きません?さすがにもう読みにくいです。
Layout目的でiframe使うのもやめませんか?
PostgreSQL
OracleのNullと''(空文字)をごっちゃに
する感じは苦手だったので、
ぼくはこっちのが好きです。
運用よりの人の話を聞いてみたい。
MyBatis
O/R Mapper
うーん・・・悪くないんだけど・・・
Java現場あるあるなんだけど、
職場の制約や、いまいちなマッパーのため、
結局ゴリゴリやるしかない、ってなってしまう。
このserviceの醜いコード、
全部formからEntityに入れるだけだよね?
みたいな。
Mapper使うより、SQLゴリゴリ書いちゃう方が早い!って時に、
(テーブル設計が微妙だとよくある)ちゃんとその道が
用意されてるだけ良心的。
足りないもの
JUnit5/assertJ
テスト書かせて
Spring AOP(spring-boot-starter-aop)
アスペクト指向プログラミング。
あ、アスペ???
例えば、「全コントローラのstartとendのloggingしたい!」
みたいなふるまいを
コントローラクラスをいじることなく
外から定義、実装できる仕組み。
@Aspect
アノテーションで定義する。
DB設計で全テーブル「作成日付」「更新日付」「削除フラグ」
を持っている設計なんだけど、
Mapperでその実装とかなくて
アプリでそれを全部書くことになっている。
(そして、あっちこっちでそこそこ間違えている)
ここらへんもAOPで補完できるかもしれない。
既存のフレームワークやライブラリではちょっと不足してる箇所を
コレで補えたりすると幸せになれるかもしれない。
まとめ
RailsのActiveRecordは神すぎた。