採択
2021/11/21 10:00〜
Track D (#jjug_ccc_d)
Video:15min + Live:10min
Beginner Java SE BeginnerSpeaker

エキサイトブログ刷新に向けて序章 - APIを一つに

openjdk17 中尾正剛

プレゼンタイプ / Presentation Type [BeginnerSpeaker]:
レベル / Level [Beginner]:
カテゴリー / Categories [Java SE]:
後日セッション動画の公開を希望する / Agree to publish your session video [Yes]:

Abstract: エキサイトブログ刷新するにあたってspringで開発しているので、それについて語ろうと思います。
アジェンダ

  1. 目次
  2. 自己紹介
  3. 担当する仕事
  4. リビルド
  5. 配属されて
  6. リポジトリたくさん
  7. データベースの数珠つなぎ構成??
  8. ストアドプロシージャー??
  9. これから
  10. データベースの接続をapiに一本化
  11. マルチモジュール構成で一つにする!
  12. springで良かったこと
  13. まとめ
4
採択
2021/11/21 10:25〜
Track D (#jjug_ccc_d)
Video:15min + Live:10min
Beginner Others BeginnerSpeaker

変わりゆくAPI連携仕様との付き合い方

太田 拓也

プレゼンタイプ / Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: BeginnerSpeaker
レベル / Level [Choose either from Beginner / Intermediate / Advanced]: Beginner
カテゴリー / Categories [Choose at least one from Java SE / Jakarta EE / Cloud / JVM / DevOps / Tools / Community / Others]: Others
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes

Abstract:

私が担当しているプロダクトでは、他のサービスと API 連携を行なっています。
既存のサービスの API を利用することで、開発コスト、期間を圧縮でき、大きなメリットが得られます。
しかし、当然メリットばかりを得られるわけではありません。次のようなデメリットもあります。
・API公開側にも止むを得ない事情があり、 API に破壊的な変更が加えられることがあると、追従するための開発が突発的に発生する
・別の組織が運用しているため、結合テストが難しく、保守コストが高い
・プロダクトで使用しているドメイン用語が、 API では別の意味で使われている場合があり、混乱を招く

このトークでは、このようなデメリットを軽減するための以下のようなアーキテクチャ、工夫、また苦悩についてお話します。
・DDD を取り入れた開発
・Interface を用いた設計

3
採択
2021/11/21 12:30〜
Track B (#jjug_ccc_b)
Video:15min + Live:10min
Beginner Community DevOps Others Standard

Spring Boot採用システムを定期Upgradeするお話

山縣 京輔

プレゼンタイプ / Presentation Type : BeginnerSpeaker
レベル / Level : Beginner
カテゴリー / Categories : Java SE , DevOps , Community
後日セッション動画の公開を希望する / Agree to publish your session video : Yes

Abstract:
金融系システムで用いる社内フレームワーク(Spring Boot 2系ベース)および利用システムについて、定期でUpgrade対応を行っています。

リモートワークで、期日を守りつつ、品質は損なうこと無く
Upgrade作業する為には、どのように計画およびタスク進めれば良いか?実務から得た学びを共有させて頂きます。

5
採択
2021/11/21 12:30〜
Track C (#jjug_ccc_c)
Video:15min + Live:10min
StepUp Intermediate Tools Standard

Goodbye JSR305, Hello JSpecify!

Kengo_TODA Kengo TODA

プレゼンタイプ / Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: StepUp
レベル / Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
カテゴリー / Categories [Choose at least one from Java SE / Jakarta EE / Cloud / JVM / DevOps / Tools / Community / Others]: Tools
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes

Abstract:
JSR305 (2006) から既に15年、Javaには未だに欠陥検出用アノテーションが標準化されていません。JSR305, FindBugs/SpotBugs, Jetbrains, Spring, Checkerframeworkなどの設計が異なる非標準アノテーションが多数存在し、ひとつのプロジェクトに複数のアノテーションが共存することも少なくありません。このトークでは先日バージョン0.2.0が公開された標準アノテーション策定プロジェクトJSpecifyについて、当プロジェクトに参画もしているSpotBugsの中の人からざっくり概要を共有します。

2
採択
2021/11/21 12:55〜
Track B (#jjug_ccc_b)
Video:15min + Live:10min
Beginner DevOps Standard

JavaエンジニアがKubernetesでGitOpsに入門する

kounan13 正野 勇嗣

プレゼンタイプ: Standard
レベル: Beginner
カテゴリー :DevOps
後日セッション動画の公開を希望する: Yes

Abstract: Kubernetesへの入門。ましてやGitOpsなんてハードルが高いという方もいらっしゃると思います。本セッションでは、Kubernetesの基本的な用語からCIOps/GitOpsの違いまで、具体的なツール(Argo CD/Flux2など)を用いて丁寧に説明します。

※本セッションは、拙著「Kubernetes入門」をベースに解説いたします。
https://news.mynavi.jp/itsearch/series/devsoft/kubernetes.html

8
採択
2021/11/21 12:55〜
Track C (#jjug_ccc_c)
Video:15min + Live:10min
Intermediate DevOps Standard

LogbackからLog4j 2への移行によるアプリケーションのスループット改善

hiroisojp 磯田 浩靖

プレゼンタイプ / Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
レベル / Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
カテゴリー / Categories [Choose at least one from Java SE / Jakarta EE / Cloud / JVM / DevOps / Tools / Community / Others]: Java SE, Serverside
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes

Abstract:
LogbackからLog4j 2への移行検証についてお話します。
私達のシステムでは多くのリクエストを捌く必要がありますが、ログ出力時にアプリケーションのスループットが低下することがありました。
そこで、この課題を解決するためにLog4j 2の検証を行いました。

Log4j 2の非同期ロギングではロックフリーのデータ構造が採用されており、マルチスレッド下においても高いパフォーマンスを出せるように設計されています。
また、Log4j 2のサイトによると、LogbackとLog4j 2のパフォーマンス比較があり、Log4j 2のほうが高いパフォーマンスが出るということが示されています。
実際に私達のシステムでLog4j 2の検証を行ったところ、アプリケーションのスループットが改善しました。

このセッションでは次の内容についてご紹介し、検証内容について共有したいと考えています。

  • Log4j 2の非同期ロギングについて
  • Logback, Log4j 2の差異(JDK Flight Recorder, JDK Mission Controlを用いたグラフ、ログなどで比較)
5
採択
2021/11/21 15:00〜
Track D (#jjug_ccc_d)
Video:15min + Live:10min
Beginner Others Standard

暗算脳トレアプリで学ぶモデリング

aa7th Abe Asami

プレゼンタイプ / Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
レベル / Level [Choose either from Beginner / Intermediate / Advanced]: Beginner
カテゴリー / Categories [Choose at least one from Java SE / Jakarta EE / Cloud / JVM / DevOps / Tools / Community / Others]: Otheres
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes

Abstract:
次の暗算脳トレアプリを題材として、モデリングの話をします。

SAMMY7th/MentalArithmeticGame: Java(SpringBoot)製の暗算脳トレゲーム
https://github.com/SAMMY7th/MentalArithmeticGame

具体的には

・どのような考え方でモデリングし、コーディングを進めていったか。
・JIGでのコードからの設計の可視化について。
・仕様の追加、変更を行う様子。

について話す予定です。

2
採択
2021/11/21 15:25〜
Track D (#jjug_ccc_d)
Video:15min + Live:10min
Beginner Community Standard

今のうちに!オンラインの英語Javaカンファレンスに慣れて渡航再開とともに現地参加(あまつさえ講演も)できる状態になっておこう!

jyukutyo 阪田 浩一

プレゼンタイプ / Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
レベル / Level [Choose either from Beginner / Intermediate / Advanced]: Beginner
カテゴリー / Categories [Choose at least one from Java SE / Jakarta EE / Cloud / JVM / DevOps / Tools / Community / Others]: Community
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes

Abstract:
「海外のカンファレンスは平気な方?どんどん行ってもらうから」という感じのやり取りも面接でありました。東京に引っ越し1年半が経ちましたが転職以来まだ海を渡っていません。代わってオンラインの海外カンファレンスに参加するようなりました。セッションをライブで観たり録画で観たり。それで気づいたんです。海外カンファレンス未経験の人にはオンラインで慣れておくのがよいかもって。とはいえ国内の勉強会と同じくオンラインでは海外カンファレンスの楽しさは半分くらいしかないのも事実です。だから渡航できない今のうちにオンラインで慣れてもらい、渡航再開後に現地に行くというシナリオが一番よいように思います。このセッションでは、数々のオンライン海外カンファレンスを観まくり、さらにはオンラインの英語登壇(録画ではなくライブで30分!)までやってみた私じゅくちょーが、海外カンファレンスや英語セッションの楽しみ方や攻略法、英語登壇の笑い話をお話します。気軽に聞いていただける15分です。

5
採択
2021/11/21 16:00〜
Track D (#jjug_ccc_d)
Video:15min + Live:10min
Intermediate Java SE Standard

巨大なトランザクションを分解せよ!イベント駆動入門 in Spring Framework

nrslib 成瀬 允宣

プレゼンタイプ / Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
レベル / Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
カテゴリー / Categories [Choose at least one from Java SE / Jakarta EE / Cloud / JVM / DevOps / Tools / Community / Others]: Java SE
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: No

Abstract:
はじめはコンパクトであったビジネスロジックも、長く運用が続けられると様々な要求が突き付けられ、次第に複雑な処理を行わざるを得なくなるときが訪れます。
そんなとき、一切の考慮もせず、単純にコードを伸ばしていくと、トランザクションの範囲が無秩序に広がってしまうことがあります。
巨大なトランザクションは容易に競合を発生させ、ロックを引き起こし、ソフトウェアの性能を低下させます。
トランザクションは可能な限り小さいサイズに抑えるべきなのです。

そこで、本トークでは巨大なトランザクションを最小限に分解して、ロックの可能性を少しでも減らす方法として、イベントを用いたイベント駆動によるトランザクションの分解についてコードベースで解説します。

なお、サンプルコード全体の構成はドメイン駆動設計のパターンを意識した形で、アーキテクチャは ADOP ないしヘキサゴナルアーキテクチャをベースとします。
Spring Framework が用意しているドメイン駆動設計のパターンを意識したモジュールを利用しますので、ドメイン駆動設計を採用したいと考えている開発者にもお勧めの内容です。
「リポジトリ」や「集約」といったトピックに対する予備知識があるとより楽しめるでしょう。

11