Jakarta EEの日本のコミュニティを新たに立ち上げるということで勉強会に参加しました。

CDIの誤解しがちな仕様とその対処TIPS / 吉崎 太清 (アクセンチュア)

CDIをアプリケーションから使う際にハマりがちな罠の説明。
- CDIでインジェクトする対象のコンポーネントにpublicなフィールドがあると、デプロイ時に警告が出るけれども原因が分かりにくいといういう話。GitHubにサンプルコードを公開してくれているので、IntelliJ IDEAで開いて見たところ、デプロイしなくてもエディタ内で警告してくれました。
@yusuke デプロイしなくてもIDEが警告してくれた #JakartaEE - CDIのコンポーネントをフレームワークにInjectしてもらわず、アプリケーションから取得した場合、明示的に破棄しないとメモリリークするという話。
Injectしてもらわずに自分から取得するケースってかなりレアなので「陥りがちな罠」という感じではない気がしたが、知識としてはもっておくと有用。
LangChain4jとは一味違うLangChain4j-CDI / 数村 憲治@kkzr(富士通株式会社)
- LangChain4jの歴史。LangChainはPythonからChatGPTなどのLLMを利用するためのライブラリ。LangChain4jは同じような役割のJava版。「移植」ではなく、似た機能を持つ独自実装だそう。
- LangChain4j-CDIの紹介。JakartaでAI関連機能を策定するかどうかはかなり議論があり、まだ時期尚早という声も多かったものの、Jakarta EEにはまだ組み込まない形で独立仕様として策定していこうという方向になっている。
What’s Up With Open Standard Enterprise Java and AI?
リリースされたばかりのLangChain4j-CDIで、n代目の大統領や首相、その出身地を質問できるアプリケーションのデモ。利用するLLMをハードコードすることなく、LLMの差し替えが可能であったり、LLMに接続できない場合のフォールバック動作、プロンプトインジェクションを防ぐInput Guardrail、予期しないレスポンスをユーザーに提示してしまうことを防ぐOutput Guardrailなどが紹介された。
Understanding LangChain4j Guardrails
プロンプトインジェクションや、DoS攻撃などはLLMを使ったアプリケーションではかなり気になるところ。今回のデモでは入力は整数しか受け付けない作りなので、Input Guardrailは不要と思われるけれども、入力を自由に受け付けられるアプリケーションを実装するときはInput Guradrailの作りがかなり肝となりそう。
スライドのそこかしこに登場する丸みを帯びたゆるDukeが可愛かった。
懇親会
参加者20名くらい?懇親会前にジャンケン大会でMicroProfileのパーカーを頂いた。Lサイズを選んだがアメリカンのLサイズで、ゆったりだった。次回の勉強会に着て行く。
吉崎さんが追加の講演をしながら、懇親会も並行する感じでした。美味しくピザをいただきました。会場、懇親会の飲み物食べ物を提供してくださったレッドハットありがとう。
懇親会で私はずっと@_vermeer_と、AIを使った開発でシステム開発の人員は減らせそうだね、とか大規模開発では打ち合わせがボトルネックになりそうだけどもどういう流れで開発を進めていけばいいんだろうか、とか、MSX楽しいね、とか話していました。
感想
Spring Bootに押され気味のJakarta EE。基幹システムでは古くから使われているが、今後どうなんだろうという感じ。Broadcom、VMwareの今後の以降が知れないので、Jakartaにも頑張って欲しいが、参加者も講演者もJakartaの今後はどうなんだろうね、とちょっと不安交じりでもありました。
あと、標準化されており実装は各々が出来る、とはいえコンポーネントによっては各メーカー同じ実装を使っているケースも多いので、標準化ってなんなんだろうね?とか、LibertyとWildfly/JBoss EAPはそろそろ合流しないのかね?とかも話題になりました。
いずれにせよ、選択肢が多いというJakarta EEのメリットはあるので今後の繁栄を願ってやみません。
