JJUG CCC 2024 Fallに参加 & エンジニア大橋の登壇レポート
スマートラウンドでエンジニアをしている福本です!
10月は大きめのカンファレンスが多くて誠に忙しい。
さて本日は、10/27(日)に開催されたJavaコミュニティ”JJUG(Japan Java User Group)”のカンファレンス『JJUG CCC 2024 Fall』に参加してきたので、そのレポートを公開します!
ちなみに、スマートラウンドからはエンジニアの大橋さんが登壇しています🎉 そちらの様子と合わせてお届けできればと思います。
セッション内容
福本が参加したセッションのメモとなります👇️
Javaエンジニアのための低コストKotlin入門
IntelliJ IDEAを使って、Javaから徐々にKotlinを書いていく流れで両者の違いを理解しつつ、Kotlinへの理解を深めるセッションでした。
IntelliJ IDEAでalt + Enterでかなりの部分の置き換えや補完が済んでいて、IDEとしての優秀さを改めて実感しました。いつもお世話になっています。
ハマりどころとして、Java<>Kotlin間でコードを呼ぶ際に想定外となりそうなケースも紹介されてました。ぬるぽとかチェック例外の話ですね。
詳細については、以下の記事で解説をしていただいているみたいです。ありがたい!
オニオンアーキテクチャで実現した本質課題を解決するインフラ移行の実例
ログラスさんのオニオンアーキテクチャの話!
ちなみに、スマートラウンドは基本的にレイヤードアーキテクチャで、一部オニオンアーキテクチャなコードがあったりするので、個人的に気になるセッションでした。
まず本題に入る前に、レイヤード/オニオンアーキテクチャのおさらいと、それらの差異(Infrastructureを外に出す)を整理していただきました。ありがてえ。
次に、今回RDB->DWH(BigQuery)に移行された背景を説明されてました。一部の参照系のパフォーマンスが劣化していたので、それをBigQueryに問い合わせるようにしたかったとのこと。
その後、実際にデータソースを切り替える際に、アプリケーション自体の改修の時間を短くできた..という「課題との向き合い方」について話をされてました。
「どの対応が本質的な課題解決なのか、どの対応は本質的でないのか」と、作業の内容を整理して、理想の状態から改善活動を振り返っているのが印象的でした👇️
ちなみに、BigQueryに移行しての具体的なパフォーマンス面の話については、以下の記事で解説いただいているみたいです👇️
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
次のログラスさんの登壇!
新入社員のコードやアーキテクチャに対するキャッチアップに関する話です。
まず冒頭に、「開発のリードタイムに、新入社員のキャッチアップの時間も実は含まれるよね?」という問題提起が。はい…。
その後、コードに対する学びを四象限で整理した上で、「どの学びを会社としてサポートできるか?」を整理して、それぞれに対するアプローチを紹介されていました。
自分が特に良いなと思ったのは、入社者にアンケートをきちんと取って、課題の理解やアプローチを決めている点ですね。エラすぎる…。
具体的なアプローチ内容については、「設計標準のドキュメント整備」や「DDD/オニオンアーキテクチャを徹底して、どこに何のコードがあるかなんとなくわかる状態を作る」などがありました。
上記のような個別のアプローチはもちろんですが、そもそもそういった活動を全社で徹底できるログラスさんの組織文化の強さを感じたセッションでした。
現場で役立つモデリング超入門
スマートラウンド社内でも話題だった『現場で役立つシステム設計の原則』の著者、増田さんのセッション!個人的に一番楽しみにしていました。
最初に、「そもそもモデリングとは」をたくさん話していただきました。「モデリングはモデルを作る活動であり、何かを理解したり伝えたりするための手段。キレイな図が作れたけど、結局なにかよく分からない…というのは良くない」という話は、とても腑に落ちました。
次に、「具体的にモデリングをどう進めていくか」という話。
「モデリングは”言葉探し”と”言葉選び”」とおっしゃっていたのがすべてを表していて、モデルをうまく表現するためにどう言葉を使うか・探すか…という話をされていました。言葉は脳の連想ゲームなので、それを逆手に取るとうまい進め方が見つかりそう。
モデリングを進める話の後、「モデルを接地させる」という話がありました。言葉選びのセンスがすごい…。モデルはある対象をある側面から簡略化したものに過ぎないので、本質的にモデルは実態とかけ離れている(= モデル設置問題)とおっしゃってました。
他のモデルと比較/一般化されたモデルうまく使って整合性を検証していくなど、じっくりモデルと現実と向き合うことで改善を進めていく、その数を増やすのが重要みたいです。
内容が言葉でなかなか伝わらない部分もあるので、ぜひ登壇資料をご覧くださいー!増田さんありがとうございました👏
LangChain4j を使った 生成AIシステム設計パターン - Java で構築する最新アーキテクチャ
今LLMの話をしたな…??
というわけで、生成AI系のセッションです🤖
まずはJavaに関するLangChainのフレームワークであるLangChain4jの大まかなアーキテクチャについて説明があり、その後は抽象化されたAI Services / Function Callingについて話をしていただきました。
その後はRAG(Retrieval-Augmented Generation)に関する技術の解説と、それをLangChain4jでの扱う方法について解説がありました。AgentやEmbeddingなどもLangChain4jで実装されてて使えるみたいで、必要十分な感じがあります👇️
LLMやAIといえばPythonなイメージがありますが、Javaもかなり環境が整っていることが理解できました。やってみたい!
map関数の内部実装から探るJVM言語のコレクション: Scala, Kotlin, Clojureコレクションの基本的な設計を理解しよう
いよいよスマートラウンド大橋さんの登壇👏
この人ずっとmapの話してます。会場は立ち見も出るほどの超満員でした 🎉
まず、Javaのmap関数について大まかに解説した後に、Scala/Kotlin/Clojureの3つの言語でのmapおよびコレクションについての実装や考え方を見ていきました。なんてマニアックなんだ…。
その後、その差異からいろいろな示唆をまとめてくれていました。Clojureのターンで何も分からない人になっていたのでありがたい。
同じJVM言語でも、各言語で思想が全然違うのと、内部実装でそれらが読み解けるの非常に面白かったです!お疲れ様でした👏
ちなみに、 サーバサイドKotlinの勉強会であるServer-Side Kotlin Meetupで、別観点でJVM言語の比較を大橋さんがやってくれています。興味のある方はぜひ👇️
ブース🏪
おまけです。
空いた時間で企業さんのブースにも立ち寄らせていただきました🙌
私がノベルティオタクなので、色々と目移りしながら色んな方と交流させていただきました。私のお相手をしていただいた方ありがとうございました!
夕方に行ったら、Oracleさんの期間限定バッグがギリギリで貰えたりなど…。運が良い…。
こんな感じで、全力でJJUGを楽しむことができました!お疲れさまでした🙌
その他の資料
自分は参加できませんでしたが、TLに流れてきた資料をこちらに置いておきます👇️後から見つけたら随時追加していきます。
リファクタリングへの耐性が高いモデルベースの統合テストの紹介
テストが正しいかテストする?Mutation Testing入門!
Spring ModulithによるDDDとEvent-driven Architectureの実践
Java x Spring Boot製アプリケーションのコールドスタートに立ち向かう!〜暖機運転のアプローチいろいろやってみた〜
マイクロサービス時代のワークフローシステムについて
EventSourcingの理想と現実
シールドクラスをはじめよう
Googleのテストサイズを活用したテスト環境の構築
SpringBoot x MyBatis x TestContainersでSQLテストを行う
先輩社員がどうやって不具合を解決しているのか
ソースコードの読み方を理解してコーディングを楽しむ
モダンJava再入門ハンズオン - Java in Education For JUGs -
新卒2年目エンジニアが LINEギフトの保守性を 高めるために取り組んだこと
クレディセゾンにおける内製開発の取り組み
Jakarta Concurrencyによる並行処理プログラミングの始め方
端末が簡単にリモートから操作されるデモを通じて ソフトウェアサプライチェーン攻撃対策の重要性を理解しよう
Java Agent経由で簡単に混沌を注入しよう
JJUG_CCC_2024 プロダクトが変われば、テストも変わる
CI/CDやテスト自動化の開発プロジェクトへの適用
Java Webフレームワークの現状
開発効率向上のためのリファクタリングの一歩目の選択肢 ~コード分割~
詳細解説! ArrayListの仕組みと実装
Boost Performance and Developer Productivity with Jakarta EE 11
最近のSpring Bootの便利機能を復習!
で、ValhallaのValue Classってどうなったの?
失敗しないOpenJDKの非互換調査
役立つログに取り組もう
Java ジェネリクス入門 2024
外部システム連携先が10を超えるシステムでのアーキテクチャ設計・実装事例
Vavrのすすめ
【ブースLT】ソフトウェア産業は進化しているのか? -Javaの想い出とともに
おわりに
ここまで読んでいただいた皆さま、ありがとうございました!
今さらですが、私自身はKotlinでプロダクト開発を1年半ほど経験しており、Javaでお仕事をした経験自体はまだありません。大学でJavaをやっていた程度の知識で、楽しめるのか少し不安がありましたが、セッションのほとんどがKotlinと通ずる箇所があり(互換あるので当然ですが)、とても楽しむことができました🙌
改めてですが、運営の方々や登壇者の方々、本当にありがとうございました & お疲れ様でした!
スマートラウンドでもKotlinでサーバサイドを頑張っているので、もし興味のある方はぜひお話しましょう🤝