- 2026/5/30
- https://ccc2026spring.java-users.jp/
RestTemplate非推奨化に備えよう!RestClient入門、そしてリニューアルされたSpring Retryでリトライして、WireMockでテストする。
Masatoshi Tadaさん(クレディセゾン)
https://www.docswell.com/s/MasatoshiTada/K1QXMG-restclient-retry-wiremock
- RestTemplateは
- Spring7.1で非推奨化
- Spring8.0で削除
- 意外と早く来るかも
- RestClientが後継
- SpringRetryとも組み合わせられる
- RestClient
- RestClientBuilderで作る
- prototypeスコープでDIされる
- application.ymlでのタイムアウトの設定を忘れずに
- HTTPメソッドが違っても全部同じように書けるようになった
- HTTPステータスが400/500系なら例外が投げられる
defaultStatusHandler()で挙動をカスタマイズできる
RestClientExceptionが親でそこから詳細な例外がたくさんある- 各HTTPステータスごとの例外とかも
- ClientHttpRequestFactory
- 5種類実装がある
- 基本はjdkでいい
- 依存ライブラリに勝手に変えられないように明示した方がいい
- SpringRetry
- ネットワーク越しでのアクセスはさまざまな理由でタイムアウトが起きる
- クラウドで瞬間的なネットワーク不調
- オートスケールのタイミング
- SpringFramework本体に入ることになった
- 独立してた頃と使い方がちょっと変わったから注意
- リトライ方法
- Retrytemplate
- ラムダ式を使って書く
- リトライ間隔/回数などを定義
- リトライ対象外の例外の指定
- RetryListenerで失敗時の処理や回数上限到達時の処理
- AOP
- 割り込み処理でリトライ
- Beanにしか使えない
- RetryListenerを使えない
@Retryable
- Retrytemplate
- リトライで考えること
- そもそもリトライで解決する可能性があることなのか
- 呼び出し元をどれだけ待たせられるか
- リトライして問題がない処理か
- 冪等でない場合はIdempotency-Keyに一意な値を入れて同一リクエストか判断してもらう
- ネットワーク越しでのアクセスはさまざまな理由でタイムアウトが起きる
- WireMock
- テスト用モックサーバー
- MockRestServiceServer
- Spring謹製
- サーバーが起動するわけではない
- 公式でもこれは古いやつと書かれてる
- WireMock
- OSS
- MockServer
- OSS
- 開発が止まってたが最近動き出した
- MockRestServiceServer
- WireMockの設定
- http2を有効にしてるとなぜか一部テストが落ちる
@ExtendWithだとなぜか一部テストが落ちる- このURLにアクセスされたらこのデータを返すって感じで書く
- 異常時も同じ感じで
- リトライのテストは何回目はこれを返すって感じにできる
- テスト用モックサーバー
変化に強いテストを育てる、Spring Bootのレイヤー設計
Takeshi Miyajimaさん(株式会社サンアーチ)
https://www.docswell.com/s/tmiya-tech/53JENE-2026-05-30-095125
- 変化に弱いテスト
- 信頼性が低い
- テストは通ってるのに動かない
- 成功失敗が不安定
- 保守コストが高い
- 機能変更のたびに大量に修正が必要
- 仕様は変わってないのにテストが壊れる
- フィードバックが遅い
- 実行が遅い
- エラーの原因がわからない
- 信頼性が低い
- プロダクトコードの質とテストコードの質
- 良い設計が良いテストコードにつながる
- 責務の混在をしないで分離する
- 外部接続の分離
- 外部との接続やフレームワーク依存を薄く分離
- Controllerはサービスを呼ぶだけ
- RepositoryをシンプルなデータIOに特化
- 純粋で複雑なロジックを厚くテスト
- SpringTestに依存しないテストは速い
- 外部との接続やフレームワーク依存を薄く分離
- レイヤー内の分離
- 外部接続を分離して残ったアプリケーションレイヤーが大きくなる
- 変化に強い構造で責務ごとに分ける
- 判断と処理の分離
- ValueObjectにロジックを寄せる
- 処理フローと実処理の分離
- 分岐と処理が分かれるとテストケースが掛け算から足し算に
- 構築と実行の分離
- 重点してテストが書けるのでテストバリエーションを増やしやすい
- 境界が安定するまではテストはあえて分離しない作戦もあり
- 外部接続を分離して残ったアプリケーションレイヤーが大きくなる
- 参照系の分離
- 参照と更新で同じモデルを使うと相互に影響し合ってしまう
- 参照と更新では同じ概念でも要件や重視することが違う
- UIのためとデータのため
- いわゆるCQRS
- 分離するところしないところの見極めも必要
- シンプルなところまで引きづられると複雑さが増してしまう
- 参照系のみGraphQLを使うという選択も
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転
Hirokuni Maetaさん(サイボウズ)
- 長年の開発で読みづらく変えづらくなったコード
- 巨大なクラス
- 役割が不明なクラス
- 難解なデータ構造
- プロパティが多く用途がわからない
- 依存が多すぎる
- Kintoneのデータは木構造で持っている
- 拡張性などのために
- 単純に値を取得/更新するのが難しい
- プロパティが多く用途が分かりづらい
- 特化したプロパティが汎用的なクラスにいたり
- 依存が多い
- 避けられない面もある
- 修正の影響範囲が広すぎる
チーム全員で実施できるプロジェクトに集中するためのゴール設定を磨くスキル
小泉岳人さん(ニッセイ情報テクノロジー)
https://www.docswell.com/s/Insurtech-lab/ZQ297X-2026-05-30-100023
- ゴール設定
- プロジェクトでどんな価値を目指すのか
- なぜゴールが必要か
- AIで速くつくれるようになったから目指す状態を合わせないと
- 期待が多様な中で人によって考える良いを揃えたい
- 変化が全体のなかで優先することややめることを判断したい
- どんなゴールがいいか
- 誰かが決めたじゃなくて皆で決める
- やることを並べるだけでなく何が嬉しいか分かる
- 時間軸
- 長期: ビジョン
- 中期: 3か月程度
- 短期: 数日〜数週(スプリントゴール)
- ゴールの作り方
- ステークホルダーごとのありたい状態を想像する
- 長期中期短期の情報を事前に見ておくといい
- ビジョンやマスタースケジュールなど
- キーワードをつなげてストーリーに
- 物語にして違和感を話していく
- 生成AIが物語化してくれる
- リスクや好機を共有する
- セイルボート
- やることやらないこと
- やりたいことを大量にあげる
- やりたい/まあやりたい/やらないにマッピング
- GoalとJoyに分けて書く
- 達成したいことと喜んでいる状態
- やることだけに偏りがちなところを状態も考えられる
- SMART/ALIVE/FOCUS
- ゴールをこまめに確認する
- 達成できそうか
- モヤモヤする点はないか
大規模なメトリクス収集の仕組みをアーキテクチャ変更して得た学び
Masanori Taniさん(サイボウズ)
https://www.docswell.com/s/uta8a/KJW81E-2026-05-30-jjug-spring-2026
- kintoneのユーザ向けダッシュボード
- リクエスト数やレスポンスタイム
- ETLアーキテクチャに近い構成
- リアルタイムで1分単位とかで
- 一部提供開始期
- 実データでの検証
- 顧客からのフィードバック
- API Gateway - Lambda - Kinesis - EventBridge - Timestream
- メトリクスはFilterしてMicrometerで値を持ちそれを定期取得
- 一般提供期
- メモリ増大問題/レイテンシへの影響/Filterでとれる情報の制約
- 単にログを出力するだけの設計に変更
- Flient Bit - Kinesis - Firehose - S3 - Glue - OpenSearch
- AWSに寄った
AI時代の開発こそ標準化を武器に! — 方式・プロセス・プラットフォームの標準化
Shun Watanabeさん(野村総合研究所)
https://speakerdeck.com/s27watanabe/jjug-ccc-2026-spring-aishi-dai-nokai-fa-kosobiao-zhun-hua-wowu-qi-ni-fang-shi-purosesupuratutohuomunobiao-zhun-hua
- 開発方式の標準化
- ガイドライン
- 手順や方式の説明
- ライブラリ
- ガイドの方式を実現するための部品
- サンプル/テンプレート
- 動くアプリとしての実装例
- 課題感
- ベースとなるフレームワークの知識はないと使えない
- 学習コストが課題
- AI活用
- AIを活用した開発のベースラインとなることを目指す
- AIも活用できる仕組み
- MCPサーバー
- 情報量の最適化し余計な情報を除外
- AI駆動開発のためのテンプレート
- AI向けの情報を含めたテンプレート
- skillsやrulesなど
- 設計/開発/テストの各フェーズの分
- ガイドライン
- 開発プロセスの標準化
- 工程ごとのAI活用方針
- AI駆動開発のスタイル
- 開発プロセスに対応するテンプレート
- 開発プラットフォームの標準化
- AIエージェントの標準化
- ClaudeCodeのエンタープライズ
- LLM基盤
- 社内ネットワークに閉じる基盤の構築
- AIエージェントの標準化
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン
nrs / Masanobu Naruseさん(コドモン)
https://speakerdeck.com/nrslib/invariants-and-consistency-boundaries
海外カンファレンス沼へようこそ!現地でしか味わえない、あの瞬間。
髙橋 博実さん(三菱UFJインフォメーションテクノロジー)
https://speakerdeck.com/muit/javaone-report-purpose-and-results-in-the-user-it-company
阪田 浩一さん
Akihiro Nishikawaさん
Enum徹底入門
河野裕隆さん(虎の穴ラボ)
https://www.docswell.com/s/hk_it7/Z8NMQ1-2026-05-30-075434
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践
Javaで絵文字を正しく扱おう🥲
YujiSoftwareさん
https://yuji.software/emoji/
個人AIからチームAIへ:開発における品質と生産性の再設計
Atsushiさん(CodeRabbit)
https://speakerdeck.com/moongift/ge-ren-aikaratimuaihe-kai-fa-niokerupin-zhi-tosheng-chan-xing-nozai-she-ji
Modular Monolith Locally, Microservices in Production
小林 政友さん(シンプレクス株式会社)
長根尾 貴仁さん(シンプレクス株式会社)
https://www.docswell.com/s/Simplex/KE18JJ-kobayashi_naganeo_01
10年続くJavaシステムの進化を支える戦略:API・DB・キャッシュの互換性設計
Takumi Endoさん(Cariot)
https://speakerdeck.com/cariotinc/cariot-jjug-ccc-2026-s
イベントストーミングと Kiro Spec で実現する、要件の認識合わせプロセス
しょぼちむさん(アマゾンウェブサービスジャパン)
https://speakerdeck.com/syobochim/20260530-jjugccc-eventstorming-and-kiro
JSpecify で実現する Kotlin フレンドリーな Java API 設計
Ayako Hayasakaさん(LINEヤフー)
https://speakerdeck.com/ternbusty/jjug-ccc-spring-2026-jspecify
Javaで学ぶSOLID原則
Negimaさん(NTTデータフィナンシャルテクノロジー)
https://speakerdeck.com/negima/javadexue-busolidyuan-ze
ウェルスナビのマルチサービス化を支える技術 〜Spring Cloud GatewayとPub/Subの実践〜
koki-hoshiharaさん(ウェルスナビ株式会社)
Yusuke Saitoさん(ウェルスナビ株式会社)
https://www.docswell.com/s/WN_Tech-PR/5MQV6J-2026-05-30
ふつうのFeature Flag実践入門
irofさん
https://speakerdeck.com/irof/feature-flags-in-practice
テストコードのないプロジェクトにテストを根付かせる
Toru Takahashiさん
https://speakerdeck.com/tttol/tesutokodononaipuroziekutonitesutowogen-fu-kaseru
Spring Boot における AOT Cache 活用テクニックと起動時間改善事例
坂本統さん(NTTドコモソリューションズ株式会社)
https://speakerdeck.com/ntt_dsol_java/spring-boot-niokeru-aot-cache-huo-yong-tekunitukuto-qi-dong-shi-jian-gai-shan-shi-li
TornadoVMが切り拓くJavaの新領域:GPU活用と生成AIへの適用
Kenji Kazumuraさん
https://speakerdeck.com/kazumura/tornadovmgaqie-rituo-kujavanoxin-ling-yu
Gradle×GitHub ActionsでCI時間を約50%短縮 ─ ジョブ分割の設計と落とし穴
Java × distroless で軽量なコンテナイメージを
柄池 大輔さん(ハンディ)
https://speakerdeck.com/contour_gara/java-on-distroless
デプロイを恐れていたSpringチームが、月200回リリースするまで 〜真のリスクは停滞だった〜
iguさん(ZOZO)
https://docs.google.com/presentation/d/1dwuT7xqXJIT_iZ6kiwohBMb20RcutFVFtgDyPV0yRp4/edit?usp=sharing
クレディセゾンの内製開発に見る、技術と対話で価値をつくる面白さ
うじてっくさん(クレディセゾン)
https://www.docswell.com/s/ujitec/K6NJ64-2026-05-29-184940#p1
JEP 522 Deep Dive - G1 GC同期コスト削減によるスループット向上を徹底検証&解説
Daishi Tabataさん
https://speakerdeck.com/tabatad/jep-522-deep-dive-g1-gctong-qi-kosutoxue-jian-niyorusurupututoxiang-shang-woche-di-jian-zheng-and-jie-shuo
Inside Stream API
Yuichi Sakurabaさん(株式会社カサレアル)
https://speakerdeck.com/skrb/inside-stream-api
AI時代のソフトウェア設計の学び方
masuda220さん
https://speakerdeck.com/masuda220/ai-shi-dai-nosohutoueashe-ji-noxue-bifang
switch式で始めるJava流パターンマッチング
yuya296さん
https://www.docswell.com/s/Simplex/K7NJ6N-simplex_ito01
OpenID Connectによるサービス間連携
Shigeki Shojiさん(トレノケート株式会社)
https://speakerdeck.com/takesection/openid-connectniyorusabisujian-lian-xi
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴とその解決策
Takahiro Nagaoさん
https://speakerdeck.com/tnagao7/jakartaee-migration-jjug-ccc-2026-spring
Javaコミュニティをもっと楽しむための9箇条
杉山 貴章さん
https://speakerdeck.com/takasyou/javakomiyuniteiwomotutole-simutameno9ge-tiao
ビジネスルールを型システムで表現する
Yohei Kajiroさん
https://www.docswell.com/s/yoheiyohei4/57NJ3N-business-rules-in-the-type-system/1
Javaコミュニティの関心の変遷を可視化する:JJUG CCC 発表データから見る変化と不変
Ayana Murakamiさん
https://speakerdeck.com/moomin/visualize-topics-of-jjug-ccc-or-java