JJUG CCC 2021 Fall トーク一覧

採択 Intermediate Java SE Standard Video:15min + Live:10min

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

nrslib 成瀬 允宣 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 が用意しているドメイン駆動設計のパターンを意識したモジュールを利用しますので、ドメイン駆動設計を採用したいと考えている開発者にもお勧めの内容です。
「リポジトリ」や「集約」といったトピックに対する予備知識があるとより楽しめるでしょう。

1
採択 Intermediate Tools Method Standard Video:40min + Live:10min

TDD: seriously, try it!

icougil Nacho Cougil icougil

プレゼンタイプ / Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]:
Standard

レベル / Level [Choose either from Beginner / Intermediate / Advanced]:
Intermediate to Advanced 😉

カテゴリー / Categories [Choose at least one from Java SE / Jakarta EE / Cloud / JVM / DevOps / Tools / Community / Others]:
Tools and Others?: TDD is a practice, so I don’t know where it fits better 😅

後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]:
Yes

Abstract:
Have you heard of TDD? Are you interested or familiar with this practice but have never been able to understand it?

Join this session to see the benefits of Test-Driven Development (TDD), understand how it works and its benefits. In a more detailed approach, we will see this way of developing software, where our code is always built guided by tests.

We will go over some history about TDD, which is the main process we must follow when we work with this mechanic and the rules that surround it. We will also list the main advantages and disadvantages that most developers who practice TDD find and whether the arguments in favour add up to more than those that subtract. Finally, we will review some good habits and practices when applying TDD and see how to do it step by step with an example of a "live" coding session with Java.

At the end of the session, I hope that you will have a wider understanding of what TDD is, what advantages it brings, why it is interesting to master it and also that you will take with you some tricks and good practices to be able to apply them in your day-to-day life when writing code 😉

採択 他イベントOK Beginner JVM Standard Video:40min + Live:10min

”Kotlinらしい"実装スタイルから学ぶKotlinの言語思想

doyaaaaaken 小山 健太 doyaaaaaken

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

Abstract:
KotlinはJVMで動作する静的型付けのオブジェクト指向プログラミング言語です。
モダンな記法が使えることや、Java/Scala等のJVM言語の文法と類似性が高く学習コストが低いことから、サーバーサイド開発において利用される機会も多くあります。

今回は登壇者が4年近くKotlinを使ってきて学んだ知見をもとに、例えば「標準ライブラリのAPIデザイン」「特定のデザインパターン(例:Factoryパターン)の書き方」等の課題に対して、Kotlinらしいコードの書き方についてご紹介させていただきます。
Kotlinを使ったことがない人にKotlinの言語思想について知ってもらうと同時に、Kotlinを使っている人にとっても具体的な知見が得られる内容にします。

採択 他イベントOK Beginner Java SE BeginnerSpeaker Video:15min + Live:10min

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

openjdk17 エキサイト中尾 openjdk17

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

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

  1. 目次
  2. 自己紹介
  3. 担当する仕事
  4. システム概要を理解する
  5. 管理画面が4つある????
  6. web面が4つある????
  7. apiが2つある???
  8. データベースの数珠つなぎ構成?
  9. ストアドプロシージャー??
  10. これから
  11. データベースの接続をapiに一本化
  12. マルチモジュール構成で一つにする!
  13. springで良かったこと
  14. まとめ
採択 Beginner JVM BeginnerSpeaker Video:40min + Live:10min

GraalVM を普通の Java VM として使う ― クラウドベンチマークでの比較

石井 佑弥 

プレゼンタイプ / 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]: JVM
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: No

Abstract:
クラウドや多言語の環境に対応できる 新しいJava実行環境 GraalVM は,
ネイティブビルドだけでなく,通常の Java VM として使うこともでき,
パフォーマンス向上の工夫も行われつつあります。
このたび,クラウド環境用ベンチマーク BluePerf を使い,GraalVM と
OpenJDK を比較したので,結果を報告します。

採択 他イベントOK Beginner Jakarta EE Standard Video:40min + Live:10min

Applied Domain-Driven Design Blueprints for Jakarta EE

reza_rahman Reza Rahman reza_rahman

プレゼンタイプ / 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]: Jakarta EE
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes

Abstract:
Domain-Driven Design (DDD) is an architectural approach that strongly focuses on materializing the business domain in enterprise software through disciplined object-oriented analysis. This session demonstrates first-hand how DDD can be elegantly implemented using Jakarta EE via an open source project named Cargo Tracker.

Cargo Tracker maps DDD concepts like entities, value objects, aggregates and repositories to Jakarta EE code examples in a realistic application. We will also see how DDD concepts like the bounded context are invaluable to designing pragmatic microservices.

採択 Beginner Others BeginnerSpeaker Video:15min + Live:10min

変わりゆく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 を用いた設計

採択 Beginner DevOps BeginnerSpeaker Video:40min + Live:10min

勤怠管理サービスでの継続的テストの取り組み

yuya yamaguchi

プレゼンタイプ / 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]: DevOps
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes

Abstract:
SPA(Spring Boot + Vue.js)を採用した勤怠管理サービスを開発しています。勤怠管理サービスは日々変化する出退勤や休暇などの勤怠情報を用いた計算処理が複雑であるという特徴があり、テストが重要となっています。
テストが重要であるにも関わらず専任のテスターがおらず、開発者がテストも担当しています。そのため、2020年10月のリリース前からCI/CDパイプラインへのテストの組み込みとテストの自動化を進めていました。

このセッションでは継続的テストに始めたい方向けにこれまでの取り組みの実例をご紹介します。

採択 Intermediate DevOps Standard Video:15min + Live:10min

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

hiroisojp 磯田 浩靖 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を用いたグラフ、ログなどで比較)
採択 StepUp Intermediate Tools Standard Video:15min + Live:10min

Goodbye JSR305, Hello JSpecify!

Kengo_TODA 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の中の人からざっくり概要を共有します。

採択 Beginner Tools Standard Video:40min + Live:10min

Debeziumで変更データキャプチャを学ぼう

yy_yank yy_yank yy_yank

プレゼンタイプ / スタンダード
レベル / Beginner
カテゴリー / Tools
後日セッション動画の公開を希望する / No

Abstract:
モノリシックなサービスをマイクロサービス化する際、データの移行・同期などは大きな障壁となります。そんな際、有効なアプローチの一つが変更データキャプチャと言われています(もちろん他のユースケースでも有効です)
そんな、変更データキャプチャツールとして代表的なDebeziumを実際のサンプルコードを交えて学んで見よう!というセッションです。

採択 Intermediate Architecture Standard Video:40min + Live:10min

Building for Resiliency, Fault-Tolerance, Scalability and Your User's Expectation

noctarius2k Chris Engelbert noctarius2k

プレゼンタイプ / 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]: Others, Architecture
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes

Abstract:
The past decade changed the world. The internet, web applications, and mobile apps are as common as never before. Building service infrastructures for the ever increasing number of users and devices has its challenges though. Three main concepts help us meet the user's expectation of always-on: Resiliency, Fault-Tolerance, and Scalability. Let's explore and learn them together, and how to achieve the impossible.

採択 Intermediate Java SE Standard Video:40min + Live:10min

Head toward Java 17 and Java 18

sugarlife KUBOTA Yuji sugarlife

プレゼンタイプ / 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]: Yes

Abstract:
まいどおなじみ最新のJava技術についてお届けします!

本セッションでは2021年9月にリリースされたJava 17、そして予定通りであれば2022年3月にリリース予定のJava 18についてどのような機能や変更点が入ったのか・入る予定なのかを紹介し、「このセッションさえ聞けば今の最新状況が分かる!」を目指します。

Java 17は多くのJDKディストリビューターでLTSとなるバージョンであるため、バージョンアップを検討しているところも多いのではないでしょうか。一方で、LTSかどうかに関わらず一定品質以上を保ちつつ提供することをポリシーとしているため、Java 17でも従来通り試験的な(IncubatorやPreview)機能が導入されています。Java 17ではSealedクラスの標準機能化やForeign Function & Memory APIの導入の他、RMI Activationの削除やApplet APIの非推奨化などのアップデートが行われており、今後の開発や運用に影響を与える変更が加わっています。発表当日までのJava 18の開発状況を含めて、未だ止まることなく進化を続けるJavaを余すどころなくお伝えしていきます!

採択 Beginner Community Standard Video:15min + Live:10min

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

jyukutyo 阪田 浩一 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分です。

採択 他イベントOK Intermediate Others Standard Video:40min + Live:10min

Kafka Cluster Design Patterns 2021 Fall

tansan_engineer 須田 桂伍 tansan_engineer

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

Abstract:
Apache Kafkaはメッセージングだけでなくストリーム処理の基盤としても有力な選択肢のひとつとなりました。昨今ではManaged Serviceとしても提供されるようになり、アプリケーションからの利用もよりしやすくなってきました。一方でより柔軟なシステム構成やシステム要求に応えるためにIaaS等でKafkaを運用するケースも多いかと思います。

本セッションではKafkaの特徴を最大限に活かすためのKafka Clusterの構成パターンについて、その特徴や適したシーン、設計構築時の考慮ポイントをデザインパターンとして整理します。
また、Kafka StreamsやKafka ConnectといったKafkaを中心とした主要なエコシステムを組み合わせた場合の設計・構築ポイントにも触れていきながら様々な観点からClusterの構成パターンを探求していきます。

採択 Beginner Others Standard Video:15min + Live:10min

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

aa7th Abe Asami aa7th

プレゼンタイプ / 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でのコードからの設計の可視化について。
・仕様の追加、変更を行う様子。

について話す予定です。

採択 Beginner DevOps Standard Video:15min + Live:10min

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

kounan13 正野 勇嗣 kounan13

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

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

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