
2025年6月7日、国内最大級の Java コミュニティイベント、JJUG CCC 2025 Spring に参加してきました。この記事はそのレポートです。
参加したセッション
楽天24のレガシー基幹システム大刷新 ~Seasar2からSpring Bootへのフルリプレイス
10年前に構築された Java 8 + Seasar 2 の在庫連携システムを Java 21 + Spring Boot 3 へ移行した事例が紹介されていました。
移行前は、単体テストのコードはメンテされていなくて動かず、ローカル環境で動作確認してExcelでテスト結果を書くのが単体テストとして扱われていたそうです。他にもリリースは月に1度の手作業、対応不要なアラートが深夜電話で飛んでくる、などリアルな話を聞けました。
現在は単体テストを書く文化ができ、デプロイも自動化されているそう。
このセッションでテストフレームワークの Spock を初めて知りました。Groovy ベースで振る舞い駆動でテストケースを記述できるそうです。
DBCP(データベースコネクションプーリング)の変遷と理解
Tomcat 7 から 8 のアップグレードに伴い、Tomcat のデフォルトの DBCP 実装が Apache Commons DBCP 1系から2系に切り替わった際のハマりどころが語られていました。
設定名やデフォルト値が変更されたために問題が発生し、最終的には jconsole で原因を特定したそうです。
Tomcat の DBCP が Apache Commons DBCP ベースなのを初めて知りました。
入門 Java言語仕様を読もう! with Java Puzzlers
Java Puzzlers Q1
— なぎせ ゆうき (@nagise) 2025年6月7日
解説は後ほど!#jjug_ccc #jjug_ccc_a pic.twitter.com/4dIwWv4Mkc
『Java Puzzlers』の問題を題材に Java の言語仕様を読み解くセッションでした。
問題6の try と finally それぞれで return した場合の戻り値は finally の return になる挙動は、実務でも落とし穴になりそうだと感じました。
このセッションを聞いて『Java Puzzlers』を勉強会のネタにしたいと思いましたが、日本語版は絶版で書籍の入手が難しそうなのが難点ですね。
HashMap の実装ってどうなってるの?
HashMap の内部構造が分かりやすく解説されてました。
HashMap は配列の各要素に Node を格納し、その Node は連結リストになっていると理解しました。
パフォーマンス面では、容量がいっぱいになると配列を再確保して rehash するため hashCode() の戻り値の散らばり具合がパフォーマンスに影響すること、また要素数が 13 を超える場合はあらかじめ初期容量を指定したほうが rehash の回数を減らせることを知れました。
単体テストの始め方/作り方
テストコードを書きたいけど何を検証すればよいか分からない方向けのセッションで、テストケースをまず日本語で洗い出し、AAAパターンで掘り下げてコードへ落とし込んでいく手法を紹介していました。
また、テストは DRY より DAMP(Descriptive And Meaningful Phrases)を優先するという話が印象的でした。
Mutation Testingのプロジェクト実践
Mutation Testing 用のライブラリ PIT を Controller 層、Service 層、Repository 層で試した経験談を話されていました。
Mutation Testing はこのセッションで初めて知りました。バイトコードを改変して意図的にバグを埋め込み、そのバグをテストで検出できるかを検証する手法だそうです。
各層で PIT を試した結果、純粋なビジネスロジックを扱う Service 層では効果が高い一方、SQL が主役の Repository 層では Java のコード改変が効かず不向きで、代わりに DBUnit などを使ったほうが良いとのことでした。
変化に強いテーブル設計の勘所
データの寿命はアプリケーションより長く、テーブル設計は何年も使える技術であること、結果から前提を疑って修正するのはAIではなく人間の仕事であること、が心に残りました。
セッションの最後に示された書籍リストで買ってないものはぜひ買いたいと思いました。
スポンサーブース
ツール・サービス提供を目的にしたブースと、採用を目的としてるブースに大まかに別れていたと思います。
採用を目的としていそうなブースでは、参加者へのアンケート、ノベルティのプレゼント、会社の技術スタックの紹介などが行われていました。
また、スポンサーブースの横でコーヒーとクッキーが無料で振る舞われており、長丁場のセッションで疲れた頭をリフレッシュできてとてもありがたかったです。
感想
Java の最新事例や言語仕様、テスト技法など多面的な学びが得られ、大満足の1日でした。
いくつかのセッションでドメイン駆動の話題が上がっていて、興味が湧き勉強してみたいと思いました。
また、今回は同じチームのメンバーと一緒に参加したのですが、その場ですぐ感想を言い合えて嬉しかったです。普段はソロでイベントに行くことが多いのですが、複数人でイベントに参加するのも楽しいなと思いました。
次回は 2025 年秋に開催予定とのことなので、またぜひ参加したいです。