JJUG CCC 2021 Fall トーク一覧

採択 Beginner JVM BeginnerSpeaker 2021/11/21 10:00〜 Track A (#jjug_ccc_a) 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 を比較したので,結果を報告します。

6
採択 他イベントOK Beginner Jakarta EE Standard 2021/11/21 10:00〜 Track B (#jjug_ccc_b) 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.

3
採択 Beginner DevOps BeginnerSpeaker 2021/11/21 10:00〜 Track C (#jjug_ccc_c) 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パイプラインへのテストの組み込みとテストの自動化を進めていました。

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

5
採択 他イベントOK Beginner Java SE BeginnerSpeaker 2021/11/21 10:00〜 Track D (#jjug_ccc_d) 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. 配属されて
  6. リポジトリたくさん
  7. データベースの数珠つなぎ構成??
  8. ストアドプロシージャー??
  9. これから
  10. データベースの接続をapiに一本化
  11. マルチモジュール構成で一つにする!
  12. springで良かったこと
  13. まとめ
4
採択 Beginner Others BeginnerSpeaker 2021/11/21 10:25〜 Track D (#jjug_ccc_d) 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 を用いた設計

3
採択 Beginner Java SE Jakarta EE Spring Cloud JVM DevOps Tools Standard 2021/11/21 11:00〜 Track A (#jjug_ccc_a) Sponsor Session (Video:40min + Live:10min)

k8sでJavaを見守る新常識

chiroito 伊藤ちひろ chiroito

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

概要 / Abstract:

Kubernetesが発表されて長い時間が経ち、さまざまなシステムで導入されていきました。そのような中で、Java言語で書かれたアプリケーションをKubernetes上で動かす機会が増えています。

本セッションでは、まず、監視とはそもそも何か、また、Javaの監視について簡単に振り返ります。次に、昔の監視方法はどの様なもので、どの様な課題があったかを整理し、今のシステムではどの様な監視が求められているのかを紹介します。

最後に、Red Hatが提供しているエンタープライズグレードのKubernetesであるOpenShift Container Platformを使用することで、今求められている監視の要件をどの様に実現できるのかを紹介します。

注意:
本セッションではJavaを具体的にどの様に監視するのかという話はしません。Javaの監視の知識がなくても、簡単に詳細な情報を取得する機能について紹介します。

14
採択 他イベントOK Intermediate Cloud Standard 2021/11/21 11:00〜 Track B (#jjug_ccc_b) Sponsor Session (Video:40min + Live:10min)

Azure Spring Cloud の現状と最新 Azure Container Apps のご紹介

yoshioterada てらだよしお yoshioterada

2019 年秋の JJUG CCC で初めて Azure Spring Cloud を紹介しました。
そして2年が経過し、Azure Spring Cloud は、日本でも本番環境で利用できるようになり
世界でも本番環境で活用される事例が出てまいりました。
また、今年の SpringOne のイベントでは Enterprise Tier というエンタープライズ向けの機能提供も発表し、現在プレビュー版として特定の顧客向けにサービスを評価していただいています。
また、Microsoft は 2021/11/2 Microsoft Ignite で新しいサーバレス基盤である Azure Container Apps というサービスを発表しました。
いずれのサービスも Java のマイクロサービスを提供する基盤として利用できますが、どのような
違いがあるのか、またどのような時に使う事ができるのかをデモを交えて紹介します。

3
採択 Beginner DevOps Standard 2021/11/21 11:00〜 Track C (#jjug_ccc_c) Sponsor Session (Video:40min + Live:10min)

Javaアプリケーションのアーティファクト管理とDevSecOps

Ayana Yokota

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

概要 / Abstract:
皆さんは普段どのようなフローで開発・リリース・運用を行っていますか?作ったアプリケーションを素早く安全にリリースできているでしょうか?
そもそも「作ったアプリケーション」とは何でしょう?多くの方が真っ先に思い浮かべるのはソースコードかもしれません。しかし、ソースコードをビルドして生まれるアーティファクト(JARやWAR, Dockerイメージ等)のことも忘れないでください。アーティファクトこそ、サーバーやデバイスにデプロイされて動くものであり、きちんと管理すれば開発や運用の効率、セキュリティの向上に貢献してくれる存在です。
このセッションではアーティファクトを中心とした開発フローを扱いながら、作業の効率化やミスの低減、DevSecOpsを実現するためのヒントをお伝えします。

5
採択 Intermediate Method Standard 2021/11/21 11:00〜 Track D (#jjug_ccc_d) Sponsor Session (Video:40min + Live:10min)

クリーンアーキテクチャは難しい?

石橋 和洋

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

概要 / Abstract:
クリーンアーキテクチャ(CA)が流行っているようですね。私の周囲の案件でもCAやってみようと思う、もしくはやってみたという声が多く聞こえてくるようになりました。
その一方で、CAをやめた。何がいいのか分からないという声も聞こえます。
CAは難しいでしょうか?そもそもCAって何を目指したんでしたっけ?もしCAが難しいとしたらなぜ難しいのでしょう?
そんなことを皆さんと一緒に考えたいと思います。

11
採択 StepUp Beginner Java SE Standard 2021/11/21 12:30〜 Track A (#jjug_ccc_a) Video:40min + Live:10min

Java ジェネリクス入門

nagise なぎせゆうき nagise

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

Abstract:
Javaのジェネリクスについての入門セッションです。
ジェネリックに設計された標準ライブラリを利用するために必要な知識を身に着けることを目標とします。

・ジェネリクスの概要と利用の動機
・メソッドスコープとインスタンススコープ
・構文編 3種の<>
・変性と境界
・イレイジャについてよく誤解されること
・Java標準APIのジェネリクス事例

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

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
採択 StepUp Intermediate Tools Standard 2021/11/21 12:30〜 Track C (#jjug_ccc_c) 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の中の人からざっくり概要を共有します。

2
採択 Beginner JVM Standard 2021/11/21 12:30〜 Track D (#jjug_ccc_d) Video:40min + Live:10min

Kotlinを研究する

doyaaaaaken 小山 健太 doyaaaaaken

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

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

発表では『Kotlinはどんな言語で何を目指しているのか』について考察したいと思います。
客観的な事実や公表されているデータを元にKotlinについて読み解いていきます。
発表の特徴としては、可能な限り客観的な情報による分析を行うことで極力偏らない内容になっており、それに補足する形でKotlinを4年程使ってきた登壇者個人の主観的見解も交えていきます。

<目次>

  1. 公式ドキュメントから読み解くKotlin
  2. 歴史から読み解くKotlin
  3. サーベイから読み解くKotlin
  4. 言語仕様から読み解くKotlin
  5. 標準ライブラリから読み解くKotlin
  6. 実装パターンから読み解くKotlin
  7. 公式声明から読み解く今後のKotlin

<発表の目標>
・Kotlinを使ったことがない人に、興味深い知識や技術選定のための検討材料を提供する
・Kotlinをすでに使っている人に、言語思想などに関する理解を深めてもらう

採択 Beginner DevOps Standard 2021/11/21 12:55〜 Track B (#jjug_ccc_b) 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

8
採択 Intermediate DevOps Standard 2021/11/21 12:55〜 Track C (#jjug_ccc_c) 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を用いたグラフ、ログなどで比較)
5
採択 Intermediate Java SE Standard 2021/11/21 13:30〜 Track A (#jjug_ccc_a) Sponsor Session (Video:40min + Live:10min)

最新 LTS Java 17 でプログラムが書きやすくなるという話

PR_CASAREAL 石井 真 PR_CASAREAL

Presentation Type: Standard
Level: Beginner / Intermediate
Categories: Java SE
Agree to publish your session video: Yes

概要 / Abstract:
ひとつ前のLTS (Java 11)から最新のLSTであるJava 17までの間に、知っているとプログラマーにとって嬉しい仕様が多く追加されています。
新しい仕様の追加により、今までミスしやすかったり書きづらかったコードがミスしにくく書きやすくなる改良がされました。

本セッションは追加された様々な仕様の中から、言語仕様の追加 [プログラムの書き方]にフォーカスします。
最初に、LTSってなあに?からおさらいし、「今までの書き方」と「新しい書き方」をサンプルコードを使って分かりやすくお話しします。

6
採択 Intermediate Spring Standard 2021/11/21 13:30〜 Track B (#jjug_ccc_b) Sponsor Session (Video:40min + Live:10min)

Spring Batch でサブスク1億件のクレカ決済処理

tsuzuki_gmopg 鈴木 隆志 tsuzuki_gmopg

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

概要 / Abstract:
もはや当たり前になったサブスクでのサービス提供と毎月の自動お支払い。
私たちGMOペイメントゲートウェイでは毎月1億件近い件数のサブスクデータをSpring Batchを利用して安定的に処理しています。
このセッションではアプリケーション構造やデータ分散で工夫した点などをお話しできればと思います。
またサブスクリプション型のクレジットカードお支払い運用についても紹介します。

12
採択 Intermediate Cloud Database Standard 2021/11/21 13:30〜 Track C (#jjug_ccc_c) Sponsor Session (Video:40min + Live:10min)

無限にスケールできるRDB(NewSQL)でやれること

it2911 成臣 it2911

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

概要 / Abstract:

スケール環境の足手まといのデータベース/ストレージ。
現在、RDBを無限にスケールできるNewSQLが普及段階に入っています。
世界で一番勢いのあるNewSQLであるTiDBの特長とどのように使われているかをご紹介します。

4
採択 Intermediate Others Standard 2021/11/21 13:30〜 Track D (#jjug_ccc_d) Sponsor Session (Video:40min + Live:10min)

LINEでKotlinを活用して新規サービスを作っていく話

hoshi_gaki 岩谷 明 hoshi_gaki

Presentation Type: Standard
Level: Intermediate
Agree to publish your session vide: Yes

Abstract:
LINEで新規に開発しているライブコマースサービスのサーバーサイド開発において、どういうコンポーネントを作っているのか、どう作っていくのか、どんな技術を利用して作っているのかをご説明します。

今回利用しているKotlin, Kotlin coroutine, kubernetes, Spring, gRPC, Reactive Relational Database (R2DBC)などの技術に興味がある方や、実際にそれらの技術を利用して何をどうやって開発しているのか気になる方はぜひいらっしゃってください。

5
採択 Intermediate Java SE Standard 2021/11/21 15:00〜 Track A (#jjug_ccc_a) 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]: No

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を余すどころなくお伝えしていきます!

9