採択
2022/06/19 15:00〜
Track A (#jjug_ccc_a)
Video:40min + Live:10min
Beginner DevOps Youtube公開予定 メディア取材可 Standard

パターンマッチングを学んで新しいJavaの世界へ!Java 18までの目玉機能をおさらいしよう

ihcomega よこな

プレゼンタイプ / 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 / Database / Others]: Java SE
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes
メディア取材可否 / Can you respond to the interview? [Yes or No]: Yes

概要 / Abstract:
3月にJava 18がリリースされました。リリース頻度が変わってから、頻繁なキャッチアップが難しいなと思っている方もいらっしゃるのではないでしょうか。
このセッションでは、パターンマッチングに着目してJava 18までの主な機能をおさらいしながら、最近のリリースの意味や使い方を紹介します。機能そのものについて学ぶのはもちろんのこと、各機能同士の繋がりや将来どう便利になるかを理解することで、今後の学習も楽になることを狙ったお話をお届けします。

具体的には

  • switch式
  • レコード
  • シールクラス
  • switch式やinstanceofを使ったパターンマッチング
    などを扱います。
11
採択
2022/06/19 15:00〜
Track B (#jjug_ccc_b)
Video:40min + Live:10min
Intermediate Java SE DevOps Tools Youtube公開予定 メディア取材可 Standard

JUnit5.7, 5.8の新機能紹介

kyon_mm きょん

プレゼンタイプ / Presentation Type Standard
レベル / Level Intermediate
カテゴリー / Categories Java SE / DevOps / Tools
後日セッション動画の公開を希望する / Agree to publish your session video Yes
メディア取材可否 / Can you respond to the interview? Yes

概要 / Abstract:
Java言語でつくられるソフトウェアを自動テストするときのツールであるJUnitの最新機能を紹介します。
メインは2021年にリリースされた5.8を対象にしますが、一部5.7の機能も深掘ります。
いくつかはIntelliJ IDEAを使いながらデモをし、利用したソースコードはGitHubで公開しますので、後日利用できる形で提供予定です。

紹介予定機能の一部
@Suiteによる宣言的テストスイート
Java Flight Recorder対応
テストクラスの順序指定
@TempDirによる一時ディレクトリ利用
@ParameterizedTest によるAuto-close 対応

リポジトリURL : https://github.com/kyonmm/junit-5-8-examples

採択
2022/06/19 15:00〜
Track C (#jjug_ccc_c)
Video:40min + Live:10min
Intermediate Others Youtube公開予定 メディア取材可 Standard

RDRA + JavaによるレジャーSaaSプロダクトの要件定義と実装のシームレスな接続

junyaebe 江部隼矢

プレゼンタイプ / Presentation Type [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 / Database / Others]: Others
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes
メディア取材可否 / Can you respond to the interview? [Yes or No]: Yes

概要 / Abstract:
レジャー業界のSaaSを提供するアソビューで実践するRDRA + Javaによる要件定義と実装の流れを紹介します。

ソフトウェア開発において、規模の大きなプロジェクトであればあるほど要件定義と実装の断絶を起こしがちで、正しいあるべき姿が失われていくことにより長期的に開発コストが積み上がっていくことが多々あるとおもいます。
アソビューでは、RDRAとDDDのエッセンスを用いて、ビジネス要求を高い網羅性と整合性を持って整理し、長期的に要件と実装が一体となった状態を保っていくことにチャレンジしています。
本発表では実際のレジャー施設向けSaaS開発プロジェクトを具体例として紹介します。まだ道半ばのプロジェクトではありますが、一つの事例として参考にしていただければと思います。

6
採択
2022/06/19 15:00〜
Track D (#jjug_ccc_d)
Video:15min + Live:10min
StepUp Beginner Method Youtube公開予定 メディア取材可

脱二重メンテナンス!ドキュメント自動生成への道

shindo_ryo 進藤 遼

プレゼンタイプ / Presentation Type [StepUp]:
レベル / Level [Beginner]:
カテゴリー / Categories [Method]:
後日セッション動画の公開を希望する / Agree to publish your session video [Yes]:
メディア取材可否 / Can you respond to the interview? [Yes]:

概要 / Abstract:
ソフトウェア開発では様々なドキュメントを作成します。しかし多くの開発者がドキュメントに苦い思い出をお持ちかと思います。統一されないフォーマット、ソースコードとの乖離、バラバラの置き場所…
特にドキュメントとソースコードの乖離という課題に対して、ドキュメントからソースコードの生成、ソースコードからドキュメントの自動生成というアプローチがありますが、十分に使いこなせていないと感じる方もいるかもしれません。
このセッションでは、Spring Bootアプリケーションを題材に、OpenAPI、SchemaSpyなどを使った各種ドキュメントを"実際に動くもの"から生成する方法を紹介し、ドキュメント自動生成との現実的な付き合い方について考えていきます。

13
採択
2022/06/19 15:25〜
Track D (#jjug_ccc_d)
Video:15min + Live:10min
StepUp Beginner Java SE Tools Database Youtube公開予定 メディア取材可

Javaのビルドやバージョンの違いをグラフデータベースで理解する。移行で困らないための知識グラフを作ろう。

kojiannoura Koji Annoura

プレゼンタイプ / Presentation Type [StepUp]:
レベル / Level [Beginner]:
カテゴリー / Categories [Java SE / Tools / Database ]:
後日セッション動画の公開を希望する / Agree to publish your session video [Yes]:
メディア取材可否 / Can you respond to the interview? [Yes]:

概要 / Abstract:
Javaのバージョンを変えても手元のアプリは動くのでしょうか
Java 8で動く手元のアプリを、Java 18に変えても動くのでしょうか?
JDKのビルドはOpenJDK, Oracle JDK, Azul JDKなどたくさんあって、ほぼ同じですと書いてあります。
ほぼ同じってどういうことでしょうか?
単純に入れ替えても大丈夫でしょうか?
何が違うのでしょうか?
交換して問題ないのをどうすれば分かるのでしょうか?
Javaの細かな仕様をグラフデータベースに取り込んでみましょう。
今まで、何となく分かったような気になっている仕様の違いがグラフデータベースを使えば明確に分かります。

今回は実装が容易なグラフデータベースのNeo4j、検索の言語はCypherを使いますが、リアルタイム性はない仕様を取り込む簡単な処理なので他のグラフデータベースを使って、検索をGremlinなどの他の言語でも同様の処理は可能です。

7
採択
2022/06/19 16:00〜
Track A (#jjug_ccc_a)
Sponsor Session (Video:40min + Live:10min)
Beginner Cloud Tools Others Youtube公開予定 メディア取材可 Standard

Javaの認証認可基盤のKeycloak(Red Hat Single Sign-on)

takashyan 井上 貴博

プレゼンタイプ / Presentation Type [BeginnerSpeaker]:
レベル / Level [Beginner]:
カテゴリー / Categories [Cloud / Tools / Others]:
後日セッション動画の公開を希望する / Agree to publish your session video [Yes]:
メディア取材可否 / Can you respond to the interview? [Yes]:

概要 / Abstract:
Red HatではKeycloakをUpstreamとしたRed Hat Single Sign-onというプロダクトをサポートしています。現在、Keycloakは認証認可基盤として広く利用されています。本セッションでは、認証認可やKeycloakの基礎的な部分をご説明し、Keycloakが内部ランタイムをwildflyからQuarkusに変更し、よりクラウドネイティブになっていくお話などをさせて頂きます。

6
採択
2022/06/19 16:00〜
Track B (#jjug_ccc_b)
Sponsor Session (Video:40min + Live:10min)
Intermediate Advanced Java SE Youtube公開予定 メディア取材可 Standard

LINEのB2Bプラットフォームにおけるトラブルシューティング2選

be_hasee 長谷部 良輔

プレゼンタイプ / Presentation Type: Standard
レベル / Level : Intermediate / Advanced
カテゴリー / Categories: Java SE
後日セッション動画の公開を希望する / Agree to publish your session video: Yes
メディア取材可否 / Can you respond to the interview? : Yes

概要 / Abstract:
LINEには、LINE公式アカウントやLINEアプリを中心にした様々なサービスにおける広告など、多種多様なB2Bプロダクトとそれを支えるプラットフォームがあります。それらは、社内/社外の多くのシステムと連携しており、大規模なトラフィックとデータを扱っています。

こうしたB2Bプラットフォームを運用する上で発生した"問題"とそのトラブルシューティングの事例をいくつか面白おかしくご紹介したいと思います。

弊社環境でしか発生しない問題もいくつかあると思いますが、トラブルシューティングの過程が参考になれば幸いです。

5
採択
2022/06/19 16:00〜
Track C (#jjug_ccc_c)
Sponsor Session (Video:40min + Live:10min)
Intermediate Architecture Youtube公開予定 メディア取材可 BeginnerSpeaker

連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ

kanamexx_ 本山 要

プレゼンタイプ / 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 / Method / Community / Database / Others]: Others
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes
メディア取材可否 / Can you respond to the interview? [Yes or No]: Yes

概要 / Abstract:
本セッションではマイクロサービスアーキテクチャの実装事例をご紹介します。テーマは連続画像の非同期型リアルタイム処理です。
ざっくりといえばカメラを搭載したお掃除ロボットをイメージして下さい。お掃除ロボットは自動で部屋を動き回り掃除してくれる代物ですが、壁や家具にぶつかることがありますよね。「画像処理を組み入れることで壁にぶつからないル●バを実現する」というのが今回の骨子です。

ロボットが部屋の風景を高頻度にカメラで撮影してサーバーに送信します。サーバーは受信した画像をイイ感じに捌いて、現在の位置情報を計算してロボットに障害物を回避するよう指示を出します。
将来の機能拡張やスケールアウトを考慮し、マイクロサービスアーキテクチャーを採用しました。
実装では画像処理のような重い処理をほぼリアルタイムにこなすための工夫をいくつも凝らしています。
今回のプロジェクトで得られたノウハウの一部を共有します。

3
採択
2022/06/19 16:00〜
Track D (#jjug_ccc_d)
Sponsor Session (Video:40min + Live:10min)
Beginner Others Youtube公開予定 メディア取材可 Standard BeginnerSpeaker

スナップショットログを用いた自動E2Eテストの導入

濱岡 佑介

プレゼンタイプ / Presentation Type : BeginnerSpeaker
レベル / Level : Beginner
カテゴリー / Categories :Others
後日セッション動画の公開を希望する / Agree to publish your session video :Yes
メディア取材可否 / Can you respond to the interview? :Yes

概要 / Abstract:
皆さんのチームではE2Eテストを活用されていますか?
E2Eテストはシステム全体の挙動を確認できるという大きなメリットがある一方、
以下のようなデメリットが存在しているため、導入や運用に苦労されている方も多いかと思います。

  • 実行速度が遅い
  • テストケースの準備が煩雑
  • 壊れやすく維持が大変

ホットペッパービューティーのモバイルアプリ向けAPIでも、
100本以上のエンドポイントが存在する大規模システムであるため、
テストケースの作成やメンテナンスのコストが高く、自動E2Eテストの導入は見送っていました。
しかし、テストスコープをAPIに絞り、スナップショットログを用いる方法によって、
テストケースの作成やメンテナンスのコストを下げることで、自動E2Eテストを導入しました。

そこで本セッションでは、
自動E2Eテストの手法とその実現方法(ログの収集やmockの手法など)について、
AspectJ / WebFilter / Jacksonなどの技術を交えてご紹介したいと思います。
自動E2Eテストの導入や、使用している技術に興味のある方はぜひご参加ください。

4
採択
2022/06/19 17:00〜
Track A (#jjug_ccc_a)
Video:40min + Live:10min
Beginner JVM Youtube公開予定 メディア取材可 Standard

バイトコードって言葉をよく目にするけど一体何なんだろう?

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 / Spring / Cloud / JVM / DevOps / Tools / Mothod / Community / Database / Others]: JVM
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes
メディア取材可否 / Can you respond to the interview? [Yes or No]:Yes

概要 / Abstract:
Javaを使うとき何らかのタイミングで「バイトコード」という言葉を目にしたり人から聞いたりした経験がきっとあることでしょう。ではJavaにおいてバイトコードとは一体何なのでしょう?なぜバイトコードがあるのでしょう。どんなことに使っているのでしょう。普段Javaを使って開発しているとき、バイトコードを意識する瞬間が訪れることは通常ありません。なので、今日ここでバイトコードについて知ってみませんか?このセッションを聴いたあと、きっとすぐにバイトコードを自分で見てみたくなるでしょう!

13
採択
2022/06/19 17:00〜
Track B (#jjug_ccc_b)
Video:40min + Live:10min
Intermediate Others Youtube公開予定 メディア取材可 Standard

テストコードの注入から始めるレガシーコードのリファクタリング

nihonbuson 風間裕也(ブロッコリー)

プレゼンタイプ / 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 / Database / Others]: Others
後日セッション動画の公開を希望する / Agree to publish your session video [Yes or No]: Yes
メディア取材可否 / Can you respond to the interview? [Yes or No]: Yes

概要 / Abstract:
近年、テスト駆動開発(以下、TDD)を学ぶ手段が増えています。
様々な機会でTDDを学び始めた人が、現場でぶつかる壁の一つは「レガシーコードなのでTDDが使えない」です。
「レガシーコードをリファクタリングしたいけど、リファクタリングするためのテストコードがない」「テストコードを書きたいけど、レガシーコードなのでテストコードが書きづらい」というジレンマに陥りがちです。
また、レガシーコードのリファクタリングの書籍の多くは、テストコードの大切さを説いている一方で、肝心のテストコードはあまり記述されないことが多いです。
そこで本講演では、テストコードを少しずつ注入していきながらレガシーコードに立ち向かう方法を、ライブコーディング形式でお伝えします。

今回の発表では、以下のコードを用います。
事前にコードを見ておくと、発表の理解が深まります。
https://github.com/nihonbuson/Tennis-Refactoring-Kata/blob/870d192a146e63afb0523685ee5e8fc8ea7049f6/java/src/main/java/TennisGame1.java

11
採択
2022/06/19 17:00〜
Track C (#jjug_ccc_c)
Video:40min + Live:10min
Advanced Java SE メディア取材可 Standard

イベントソーシング入門 in Java――イベントストーミングから Akka persistence を使った CQRS+ES 実装まで

nrslib 成瀬 允宣

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

概要 / Abstract:
本トークではイベントストーミングでモデリングを行い、Akka でそれを実装する様子をお届けします。

マイクロサービスにはいくつもの課題があります。
たとえば多くのマイクロサービスではデータストアがサービスごとに用意されます。
これはモノリシックアーキテクチャでは可能だった RDB JOIN 操作やマクロなデータベーストランザクションが利用できないことを意味します。
この課題を乗り越える方法のひとつが CQRS+ES です。

CQRS+ES を実践するにはいくつかのハードルが存在しますが、Akka には CQRS+ES をスムーズに実践できる機能があります。

本トークでマイクロサービスの課題を認識し、CQRS+ES の実装をキャッチアップしてみましょう

◆アジェンダ

  • マイクロサービスのデータストア周辺課題
  • イベントソーシング概要
  • イベントストーミングダイジェスト
  • Java + Akka-persistence による CQRS+ES 実装
15