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

JUnitで闘うレガシーコード改善

YutaSaito1991 齋藤 悠太

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

概要 / Abstract:
私が働いてきた複数の職場で、古いコードの書き方のまま改善されていないシステムと出会ってきました。
「継承が多用されている」「1メソッドに1000行のコード」「副作用があるメソッド」などのレガシーコードを改善するためには、Junitが不可欠です。
今回はそんなレガシーコードと闘うための私が行ってきたJUnit活用方法について共有させていただきます。

12
採択
2022/06/19 10:00〜
Track B (#jjug_ccc_b)
Video:15min + Live:10min
Intermediate Spring Cloud Youtube公開予定 メディア取材可 BeginnerSpeaker

AWS Batch × Spring Batch でクラウド最適なバッチを構築した話

sinocloudon 猪熊 朔也

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

概要 / Abstract:

不動産(賃貸)業界の業務システムでは、様々な連携先から物件データを受信し、様々なポータルサイトへ物件データを送信しなければなりません。
AWS Batch と Spring Batch を組み合わせることで、柔軟かつリトライ・リラン容易なバッチシステムを設計・構築しています。

本セッションでは、クラウド環境で Spring Batch を 使ったバッチアーキテクチャを構成するにあたって、考慮したことや工夫したこと、苦労したことなどをお伝えできればと思います。
クラウド上にSpring Batch によるバッチシステムを構築する際の参考事例としてお聞きいただければと思います。

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

開発者にやさしく、柔軟性、安全性を高めたGithub ActionsベースのCI/CDを構築する

大橋政也

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

概要 / Abstract:
機能検証とリリースの小回りが利かない、一部切り戻しも難しい、本番へのリリースが鈍重…
そんなブランチ・デプロイ運用を見直して、開発者にとってはシンプルに、運用者にとっては柔軟性、安全性を高くする施策を行いました。
従来の慣習に捉われず、「我々の今の開発スタイルで運用していくにはどのような形のCI/CDにするのがROIが高いか?」を突き詰めた結果、
ビルド、デプロイ時間が5分の1に、本番リリース時間が4分の1になり、また自動テストやバージョン管理の利便性なども向上しました。

このセッションでは、宿泊業のユーザー企業で実際に行なったCI/CD劇的ビフォーアフターについて、その施策と効果について紹介します。

8
採択
2022/06/19 10:25〜
Track A (#jjug_ccc_a)
Video:15min + Live:10min
Beginner Tools メディア取材可 BeginnerSpeaker

Testcontainersでコンテナを使ったテストを実行しよう

setys0 なかやまひろ(せち)

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

概要 / Abstract:
TestcontainersはJUnitからDockerコンテナを簡単に使うことができるライブラリです。
・Junitのテストでデータベースを使いたいけど面倒くさそう
・データベースを使ったテストやってるけどパラレルで動かしたらよく失敗する。ツライ
そんな悩みをTestContainersは解決できると思います。
本セッションではTestContainersをSpringBootで使うサンプルコードをベースに簡単な機能を紹介したいと思います。

8
採択
2022/06/19 10:25〜
Track B (#jjug_ccc_b)
Video:15min + Live:10min
Beginner Others Youtube公開予定 メディア取材可 BeginnerSpeaker

Spring Boot と WebRTC を用いた Web 会議システムの開発

meeting_dev 源 拓洋

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

概要 / Abstract:
WebRTC を活用した Web 会議システムを Spring Boot 2 を用いて開発しました。

なぜ Java を選んだかから、 WebRTC を使った会議システムの構成、WebRTC 配信サーバーと Spring Boot を用いた Web アプリケーション との連携など、開発で得た経験についてお話しできればと思います。

6
採択
2022/06/19 10:25〜
Track C (#jjug_ccc_c)
Video:15min + Live:10min
Beginner DevOps Youtube公開予定 メディア取材可 BeginnerSpeaker

Java で作るカスタム GitHub Actions

Tetsuya Morimoto

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

概要 / Abstract:

ヌーラボ社の Backlog と GitHub 連携を行うためのインテグレーションツールを GitHub Actions 上で実行するカスタムアクションとして開発しました。実際のツールは次になります。

次の2つの機能があります。

  • Pull Request (以下 PR) が作成されたときにコミットメッセージからイシュー番号を取得して、PR のリンク情報を Backlog のイシューに書き込む
  • コミットメッセージからイシュー番号を取得して、コミットの情報を Backlog のイシューのコメントに書き込む

汎用的な CLI ツールとして設計しているため、要望次第で他の機能を追加していくことも検討しています。

機能紹介 (英語)

一般論として Java はカスタムアクションを実装する言語としては不向きです。しかし、不可能ではありません。GitHub Actions が提供する3つのカスタムアクションの1つである Docker コンテナーアクションを用い、Java アプリケーションから Docker イメージをビルドして、GitHub Packages から提供することで簡単に任意の処理を Java で実装できます。本セッションでは、カスタムアクションを Java で開発する上で必要になる知識や要素技術について私の開発経験をお話しします。

  • GitHub Actions とカスタムアクション
  • Docker container action によるカスタムアクション
  • Java の CLI アプリケーションと Docker container action の境界
  • Java アプリケーションを Docker イメージとしてビルド
  • カスタムアクションの開発、テストやデバッグのコツ

カスタムアクションを作ったことがない開発者や GitHub Actions で何ができるかを知りたいといった開発者向けにも参考になると思います。

2
採択
2022/06/19 12:30〜
Track B (#jjug_ccc_b)
Video:15min + Live:10min
Beginner JVM Youtube公開予定 メディア取材可 Standard

ライブコーディングで学ぶKotlinチュートリアル

doyaaaaaken 小山 健太

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

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

「Kotlinについて知りたい!」と思っている方の中でも、調べるのは時間がかかったり、何から調べていいかわからなかったり、個別の言語仕様を調べても言語としての全体像がよくわからなかったいるすことが多いかと思います。
このセッションでは、15分間ライブコーディングしている様子をお見せすることで、Kotlinの特徴についてざっくりと掴んでいただくことを目的としたセッションになります。

5
採択
2022/06/19 12:55〜
Track B (#jjug_ccc_b)
Video:15min + Live:10min
Beginner Others Youtube公開予定 メディア取材不可 BeginnerSpeaker

RabbitMQを用いたイベント駆動アーキテクチャの紹介

otokunaga2 Seiki Tokunaga

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

概要 / Abstract:
Abstract:
<背景>
RabbitMQはスタートアップからエンタープライズまで幅広く導入されている
オープンソースのメッセージブローカーです。
マイクロサービスの普及とともに、イベント駆動アーキテクチャを実現するメッセージブローカーも重要な存在になっています。
また、イベント駆動アーキテクチャを実現する際にRabbitMQは一つの有力な技術選択肢になると発表者は考えています。

<発表内容>
本発表では、RabbitMQを用いたイベント駆動アーキテクチャの実装例を発表者のこれまでの経験をもとにポイントを絞って紹介します。
まず前提となるRabbitMQを利用するにあたって理解しておく必要がある各要素技術(queue、 exchange、 binding)を紹介します。
また、実際にイベント駆動アーキテクチャをRabbitMQで実装するイメージを深めてもらうために、
書籍「ソフトウェアアーキテクチャの基礎」で紹介されている実装例を中心に紹介します。

<発表の目標>
・イベント駆動アーキテクチャを用いた非同期通信を用いたシステム開発手法を知ってもらうこと
・非同期通信を実現する一つの手段であるRabbitMQについて情報を提供すること

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