採択
2022/06/19 10:00〜
Track D (#jjug_ccc_d)
Video:40min + Live:10min
Beginner Java SE Spring Youtube公開予定 メディア取材不可 BeginnerSpeaker

サービス開発の理想と現実・短納期でローンチした新サービスをJavaで開発した話

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

概要 / Abstract:
電子帳簿保存法の改正により急遽立ち上がった新規サービス開発。
久々の新規開発でテックリードの腕の見せ所とはりきる私。
新しい技術要素をモリモリ使って開発したい..ただ法改正がトリガーなので絶対に納期が延ばせないが考えなければいけないことは盛り沢山
・使用するJavaのバージョンとフレームワーク
・マルチテナントDB方式
・APIクライアント
・セキュリティ関連
・多言語、タイムゾーン対応
・フロントエンド
・クラス設計の方針
などなど
そのような状況の中でJavaを中心とした技術選定で妥協しなかったことや開発で苦労したことなど、開発事例をお話させていただきます。

10
採択
2022/06/19 12:30〜
Track A (#jjug_ccc_a)
Video:40min + Live:10min
Intermediate Java SE Youtube公開予定 メディア取材可 Standard

JDK Flight Recorder入門

chiroito 伊藤ちひろ

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

概要 / Abstract:
これまでJavaで動くシステムではアプリケーションの情報とOSの情報は柔軟に取得できました。その間で動いているJava Virtual Machineに関する問題に備えるためにはMBeanとJVMログから取得するのが一般でした。しかしながら取れる情報が漠然としていたり、大量にログに出力されるために問題に気付けないなど、監視するのは非常に難しい物でした。

そこで登場したのが JDK Flight Recorder (JFR)です。

JFRはOpenJDK 11に導入され、その後 OpenJDK 8 にバックポートされました。そのため、多くのユーザがマイナーバージョンを上げるだけでも利用できます。

JFRは標準でも2%程度の負荷でJVMの様々な情報を記録します。また、JFRはさまざまなAPI提供しており、これらを使うことでアプリケーションの情報の記録も低負荷で行え、アプリケーション側ではJFRで記録された情報をもとにアクションすることもできます。

本セッションでは、JFRの全体像の紹介と実案件で使用したナレッジを紹介します。

13
採択
2022/06/19 12:30〜
Track C (#jjug_ccc_c)
Video:40min + Live:10min
Beginner Java SE Spring Database Youtube公開予定 メディア取材可 Standard

Java初心者が知っておくべきプログラミングのこと

kis きしだ なおき
kis

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

山本ユースケさん、杉山貴章さんと共に書いた「プロになるJava」が3月19日に出版されました。
この本は、Javaに関する知識なしの状態から、Javaエンジニアとして就職するための知識と技能を得ることを目的にした本です。
今回のセッションでは、きしだが担当したJava言語パートから、プログラムの処理を書くのがなぜ難しいのか、オブジェクト指向がなぜ難しいのか、クラスをうまく使うためにどのようにオブジェクト指向と「お別れ」すればいいのかを解説します。
概要 / Abstract:

11
採択
2022/06/19 12:30〜
Track D (#jjug_ccc_d)
Video:40min + Live:10min
Advanced Youtube公開予定 メディア取材可 Standard

Lauchableで僕が学んだ働き方 〜リモートワークで会社もプロダクトも1から作る経験〜

yoshiori Yoshiori Shoji

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

概要 / Abstract:
Launchable は Jenkins の作者の川口さんが友人とコロナが蔓延する前の 2019年8月に立ち上げた会社です。前の会社もリモートで運営していたので今回の会社も最初からリモートワーク前提で設計されています。その後、コロナ禍になり世間的にもリモートワークも特別な事ではなくなってきています。
少し前にGitLabが公開した「リモートワークマニフェスト」が話題になりさらにGitLab社のイベントでの発表も話題になりました。僕もそれを見させてもらって凄く学びになりつつも「あ、これ僕らもやってる事だな」って言うものも色々ありました。
せっかくなので僕らが会社の立ち上げからプロダクトを世に出すまで、リモートでどのように働いてきたのかを話したいと思います。
実際の開発はどう進めているのかを具体的な例を出しつつ説明していきます。 時差や言語の壁があることを最初から受け入れて設計された会社の仕事の仕方はみなさんのリモートワークの仕方にも参考になる部分が何かあると思いますので、是非楽しんで聞いていただければと思います。

9
採択
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 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