舞台裏

Qiita が表でこっちが裏。こっそりやっていく。

JJUG CCC 2016 Fall で話してきました

JJUG CCC 2016 FallJPA について話してきました。

懇親会やTL上でアウトプット重要という言葉を何度も目にし耳にし、色んな人がハイレベルな感想とかを上げていらっしゃるのを見てて、「僕もせな」と思い、発表に至った経緯(想い)について書いてみることにします。

発表資料は Qiita に上げています。

JPA と DDD の関係で僕が思っていること - Qiita

あと、当日 Java EE アドベントカレンダーの3日目の記事も上げましたのでよろしくどうぞ。

JPA マッピングカタログ - Qiita

CCCは今まで日帰りで見るだけの参加でしたが、今回初めて話す側で参加しました。

なぜ話す側で参加することにしたのか、理由は3つほどあります。

  1. JPAが誤解によって使いづらいと思われてないだろうか? という個人的な考えを言いたかった

  2. 僕よりJPAについて詳しい人からマサカリを引っ張り出す

  3. 懇親会ぼっち対策

1について、JPAHibernateに関して僕個人が知る範囲では、好意的な意見はほとんど聞いたことがありませんでした。 だいたいが使いづらかったり、複雑な挙動で苦労している話だと思います。

今まさにお仕事をしている現場でも、Hibernateに対して悪いイメージが溜まっています。
しかし、その使われ方は発表資料の最初の方にあるような、シンプルなDBアクセスライブラリ的なもので、ユニットオブワークも「なんとか使わないようにしている」といった使われ方でした。

それを見ていて、「それはHibernateが悪いのではなくて、使い方を間違ってるだけなのでは?」「レーシングカーで一般道を走ってて、走りづらいなぁ、と言っているだけでは?」という思いが自分の中で溜まっていきました。

個人的にJPAは、オブジェクト指向で全部頑張るという、実現しようと思ったら色々技術的に大変で険しく、誰もが途中で諦めた道を頑張って作っているというイメージがあります。
ちょうど Fate Zero の、オケアノスというあるかどうかも分からない子供の頃の夢に全人生を捧げたイスカンダルのような感じです(イスカンダルは忠誠を誓った臣下を丁重に扱うのに対し、 JPA は信じた分だけ裏切りが待ってるという違いはありますが)。

いろんなところでJPA複雑すぎ、Hibernateは無い、という意見をちらほら見る気がするので、もしそれらの意見も同じように使い方が間違ってるだけなら、なんだかJPAがかわいそうだなぁ、という想いがあり、今回発表に踏み切ったという次第です。

と言っても、JPAの目指している(と僕が思っている)理想は非常に高く、現実に実践しようと思ったら様々な問題があるんだろうなぁ、とも思っています。
すぐ思いつくものとしたら、パフォーマンスとのジレンマは避けては通れない気はしてます。

また、それ以外にも僕の知らない様々な落とし穴がある気がしてます。
僕のような経験の浅い若造が考えたことなんて、きっと間違いがあるはずです。

ということで、この発表に対して辛酸舐め尽くした経験者からマサカリ(体験談)を出してもらうという二番目の目的がありました。

もしかしたら、大量の厳しいマサカリでズタボロになって二度と東京に行きたくなくなるかもという恐怖が、発表前からずっとありました。

今のところそこまで強烈なものは頂いていませんが、まだ気は抜けないかもしれません。。。
(このエントリをきっかけに致死レベルのマサカリがくるかもと思うと、ここまで書いた記事をすべて消して「楽しかったです!」とだけ書いて終わらせてしまおうか迷います)

ちなみに、この目標については懇親会で@megascusさんにマサカリを頂き、ひとまず達成できたと思ってます。

なんでも、ビジネスロジックを@Entity や @Embeddable に書くと、分散環境でJPAを使っていてキャッシュされシリアライズされたインスタンスがあった場合に、ロジックを修正したバージョンのソースをデプロイすると、デシリアライズ時にバージョン違いによるエラーが起こる、とのことです。

キャッシュや分散環境というのは全く考慮していなかったので、これは大きな収穫でした。
この辺をもうちょっとしっかり勉強しなければならないという、次の勉強の方向性が決まった感じです。


と、まぁここまでそれっぽい理由を並べておいて、実は3番目が最大の理由です。

当方極度の人見知り+口下手なので、何もせずに懇親会に出てもきっと辛いことになるのが目に見えていました。なので、発表して顔を知ってもらえれば少しはマシになるのでは、という思いが理由の大部分を占めていました。

これも功を奏したのか、いろいろな方とお話することができたので発表して良かったかなと思ってます。

最後の飛び入り LT については、@yy_yankさんへの無茶振りがあったところから(もしかして来るかも...?)→(いや、ないよなw)→(マジで来た?!)って感じでした。
結果として @okapies さん(テンパってて一瞬しかお顔を確認できなかったので、もし人違いでしたら申し訳ございません!)や @yoshioterada さんとお話できるきっかけにもなり、いい思い出になりました。振っていただいた @ihcomega さんには感謝です。

(ただ普段は無茶振りされるとフリーズするタイプの人間なので、お手柔らかにお願いします...)

LT 資料も Qiita に上がっていますので、よろしければどうぞ。

Scala上でアセンブリでFizzBuzz - Qiita


という感じで、発表した目的についてはだいたい達成できたのかなぁと思うところです。

今回は自分の発表でいっぱいいっぱいだったので、次回はまた聞く専門になってじっくりセッションを楽しみたいかなぁと思いました。

皆様、ありがとうございました!


これとても思いました!