【7/9(土)】Doma勉強会 in 東京 に参加してきた

f:id:tenten0213:20160710123302p:plain

【7/9(土)】Doma勉強会 in 東京 - dots. [ドッツ] に参加してきました。

Doma自体はちゃんと利用したことが無いのですが、昔S2JDBCは利用したことがあったので気になっていたこと、Enkan で使われていること、うらがみさんが常々おすすめしていて気になっていたなどの理由から参加してみました。

Domaの紹介 - @backpaper0 さん

トップバッターはうらがみさんで、Domaの紹介。 自身がDomaを利用したことが無かったので、丁寧な説明で分かりやすかったです。

以下良いなーと思ったポイント。

  • 2-way SQL
    • コピペでそのままSQLを実行できるので便利
  • Java8 対応
    • DAOメソッドの引数や戻り値をOptionalで包める
    • StreamやCollectorを利用できる
  • エンティティリスナー
    • 思考停止で登録日時とか更新日時を入れさせられることが多いので便利そう
  • コンパイル時のチェック
    • しょうもないミスは結構防げそう
  • JAR1つに依存するだけ
    • 他のJARに依存しない
    • 導入の敷居がかなり低い

全体的に機能は充実しているのですが、割りきって切り捨てている(※) ところもあり、シンプルになっていると感じました。 ※ 検索系は必ずSQLを書かせる、SQLファイルのincludeなどは提供しない、など

ドメインクラスの話 - @backpaper0 さん

引き続きうらがみさんの「ドメインクラスの話し」。 ドメインクラスと言ってもDDD的なアレではなく、Domaで扱える値オブジェクトのこと。

普通にやるとIntegerやStringなどの基本型だらけになるカラムのマッピングで値オブジェクトを利用できる。

引数の順番誤りを防いだり、値の導出をユーティリティクラスでやらず、値オブジェクト自体に閉じ込めることが出来たりして良い。 他にも可読性(引数や戻り値のシグネチャに現れる)やIDEの補完などでもメリットがあるよ、という話しを聞いて納得。

Webアプリケーションにおけるデータの流れと値クラスと基本型の境界の図はとても分かりやすかったです。 (こうゆうのちゃんと整理できるようになりたい)

うらがみさんは、アプリケーションのレイヤでは基本型を使わず、全てドメインクラスを使うようにしているとのこと。(凄い…)

Domaに限らず参考にできるエッセンスが多く、仕事で活用できそうなヒントをいっぱい貰えました!

とあるDoma2の使い方 - @gakuzzzz さん

自分は何の勉強会に来ていたんだっけ?となるインパクトのある内容でした。

基本的にImmutableにするため、資料の全てのフィールドはfinal…!

そんな@gakuzzzz さんのDomaの使い方のお話。

最初はEntityをImmutableにするという話で、IDをDBの機能で自動生成している場合の対応を紹介していました。

IDクラスや、notAssigned()というIDが未割り当てだという状態を定義する、notAssigned()同士はequals が成り立たないようにする、など様々な工夫が紹介されており、普段あまり考えて設計してないことを痛感。。。

お次はDomaを使ったCollect検索の話し。序盤はおお、便利そう!って感じだったのが徐々に…いや、しょぼちむの頭が邪魔でコードが読めなかったってことにしておこう!…(´・ω・`)

後から資料をじっくり見なおしてみると理解できる部分も多く、1:nや、n:mの検索はかなり便利に思えました。

@gakuzzzz さんのツイートこんな感じで怖い人だ!って思っていましたが、とても優しい型でした!

Domaの開発で大切にしている10のこと - Qiita - @nakamura_to さん

最後はDoma開発者の @nakamura_to さん。 初めてQiita Slide見た!

Domaって7年も前からあるんですね。自分がIT業界に入って8年目なので、新人の時からあったのか。

7年間も開発を継続して、新機能の追加やJava8対応など利用者の要望や、新しい言語機能を積極的に取り入れているのホント凄い。

内容としてはDomaを開発するうえのフィロソフィのようなもので、シンプルさを重視しつつ、プロダクトの核となる部分は曲げない。

でもトレンドや利用者の要望は取り入れていくし、逃げ道(JDBCを自由に使える)を用意してあるので別のライブラリへの切り替えも容易(そもそも1JARだし)である、といった話でした。(絶対スライドを見たほうが良い!)

捨てるところは捨てる、プロダクトのコア・バリューとなる部分は曲げない、というバランスが素晴らしくて感心を通り越して感動してしまいました。(何様だって感じだけど良い言葉が思いつかない)

LT

Doma2とMVC1.0でJava EE Webアプリを作ろう! // Speaker Deck - @suke_masa さん

Java EE 成分濃い目でした。とはいえDoma2はもちろん、MVC1.0、Payara Micro、Thymeleafなどてんこ盛りな構成で面白かったです。

Doma2 with Kotlin - @yy_yank さん

大トリはやんくさん。 さすがの巨匠の風格でLTなのにnakamura_toさんより長く話していましたw

NASAのロゴは、うん、似ている気も…?

Togetter

おわり

懇親会ではnakamura_toさんやうらがみさん、がくぞさん、とーますさんの話しに付いて行くのでいっぱいいっぱいだったけど、かなり楽しかった! うらがみさん、発表でも懇親会でもかなり緊張していて、本当にDomaが好きで、憧れているのがわかった。 こういった、ユーザが好きだから開く勉強会は熱量が多くて刺激になる。

発表者の方々、運営をされていたとーますさん、dotsの方々、ありがとうございました!

会場、めっちゃお洒落で良かったです。