来たる2024/6/16にJJUG CCC 2024 Springが開催されます!
この記事ではセッション一覧から内容を想像して、予習していきます。 当日聞くセッションの参考になれば幸いです。
※セッションの説明から考えた個人の想像になります。実際の内容とは異なる場合があります。
タイムテーブルはこちら
https://sessionize.com/api/v2/mqw0vro3/view/GridSmartsessionize.com
- 知名度は高くないけど便利なJavaライブラリ集 10:00 - 10:45 #Intermediate
- Virtual Threadsで実現する性能改善 10:00 - 10:20 #Beginner
- InvokeDynamic Under the Hood 10:00 - 10:45 #Advanced
- リファクタリングとデザインパターンの基礎 10:00 - 10:20 #StepUp
- Javaで学ぶ SSL/TLS 10:00 - 10:20 Beginner
- チームの成長を促すためのスプリントレトロスペクティブの活用法 10:25 - 10:45 #Beginner
- 物理削除 vs 論理削除 レコード消滅作戦 10:25 - 10:45 #Beginner
- JVM言語でもできる、競技プログラミング 10:25 - 10:45 #Beginner
- あとがき
思ったより書くのに時間かかったので、いくつかに記事を分けています。
知名度は高くないけど便利なJavaライブラリ集 10:00 - 10:45 #Intermediate
Javaのライブラリ紹介です。
登壇者が作成したValidationライブラリ『YAVI
』をはじめとして、知名度が高くないライブラリの紹介を行うようです。
他にJilt
という、アノテーションプロセッサを利用したビルダーパターンのクラス生成補助ライブラリやNullAway
というNullについての静的解析ツールを紹介するそうです。他にも追加予定とのこと。
個人制作でJavaを使っている方やライブラリ選定の決定権を持つテックリードの方が聞くとためになるセッションなのではないかと思います。
Virtual Threadsで実現する性能改善 10:00 - 10:20 #Beginner
初心者向けのVirtual Threads
に関するセッションです。
Virtual Threads
はJava21で追加された新機能です。初期のJVM ThreadはOSのスレッドと1対1でしたが、Virtual Threads
では軽量の仮想的なスレッドを作ることで、次のような開発者体験を実現します。
- 従来通りの逐次的な記述(<=>Lambda式)
- 扱いやすい例外処理(<=>Lambda式)
- スループットの向上(<=>従来スレッド)
本セッションでは「Virtual Threads
とは何か」から運用方法、実際のスループットの向上効果がどうだったかまで紹介してくれるそうです。
通信やDB関係(I/O)が重要なプロジェクトに関わっている方や関わる可能性がある人はぜひ学んでほしい内容です。
InvokeDynamic Under the Hood 10:00 - 10:45 #Advanced
InvokeDynamicという命令を掘り下げるセッションです。
Java 7で導入されたバイトコードであるInvokeDynamicは実行時に動的に実行メソッドを決定できます。ちなみに他には以下のような命令があります。
- invokeinterface
- invokespecial
- invokestatic
- invokevirtual
InvokeDynamicは有名なところだと文字列結合やLambda式で使われています。
BuriKaigiでSakurabaさんが行ったセッションからInvokeDynamic
の部分を掘り下げるようなセッションとなりそうですね。YujiSoftwareさんと合同での登壇というのも気になるところ。
ライブラリ作成者やJVMについて詳しく知りたい人は必聴のセッションです。
リファクタリングとデザインパターンの基礎 10:00 - 10:20 #StepUp
実例を元にリファクタリングの進め方を示すセッションのようです。
リファクタリング対象は「無駄に複雑になった関数の分解、重複した記述の排除、難解な条件分岐の整理等」とのことなので、Strategyパターン等を使うように思えますね。
認知負荷が高いコードになっていると気づいても、どのように修正したらよいのかわからない方も多いのではないでしょうか?
デザインパターンという「型」を元に改善指針を示してくれそうで、StepUp(初学者を抜けるための)セッションとして、非常に良いテーマになっているように感じます。
Javaで学ぶ SSL/TLS 10:00 - 10:20 Beginner
JJUG CCCでは珍しい?ネットワーク系のセッションです。
普段なんとなく使っているSSL/TLSをJavaのソースコードを元に解説してくれるらしいです。
通常の通信との違い、証明書とはなにかという比較的基礎的なことから説明してくれるとのこと。
Web系の開発を始めたけど、通信関係に自信がない人の助けになりそうです。
余談ですが、Java 18でjwebserver
コマンドで簡易サーバーが立ち上げられるようになりましたが、これはHTTP限定なんですね。まぁlocalhostしか使わないし、それはそうかって感じです。
チームの成長を促すためのスプリントレトロスペクティブの活用法 10:25 - 10:45 #Beginner
アジャイル開発の「振り返り」についてのセッションです。
アジャイル開発では短く工程を区切り、反復的に計画、実施、振り返りを行います。登壇者が感じた振り返りでの課題感を元に、効果的な実践のための取り組み等を共有してくれるようです。
「反省会になりがちで辛い」、「アクションがアクションに移らない」など、振り返りあるあるの解決策が示されると良いなと思います。
チームで振り返りを実施しているが、閉塞感があるような場合、他社の事例の共有は非常に助かりますよね。
物理削除 vs 論理削除 レコード消滅作戦 10:25 - 10:45 #Beginner
設計思想に関するセッションです。自分のセッションなので、ここだけ断定系で書きます。
設計するにあたり、選択する必要がある削除指針について、さまざまな削除方法を提示しつつ、どのように選択していくか指針を出します。
物理削除と論理削除をキーとして話しますが、設計全般で普遍的な進め方についてもお話しますので、「設計」って何を考えてどう進めれば良いの?って方は聞いていただきたいです。
JVM言語でもできる、競技プログラミング 10:25 - 10:45 #Beginner
競技プログラミングをJVM言語(Kotlin)で実施する話ですね。
AtCoderで実際に競技プログラミングを実施している経験を話すそうです。
atcoder.jp
ちなみに「AtCoder Beginner Contest 314」におけるKotlinの使用率は0.13%らしいです。 qiita.com
一般的にJVM系言語は処理時間がC++等と比べて長くかかる傾向にあるので、問題によっては不利に働くこともあります。 そのあたりの話があると非常にテクニカルで面白い気がします。
あとがき
全部まとめて書こうと思ったら全然進まなかったので1時間ごとにわけて記事にして、あとで合体させるかいい感じにリンクつけるかします。