JJUG CCC 2023 Springに行ってきました!
久しぶりのオフライン開催?
JJUG CCCというカンファレンスが久しぶりにオフラインでやるということでちょっと行ってきました。
自分自身は最近Javaは書いてないしRustとかReactとかNext.jsとか書いててちょっとアレがアレではあったのですが、Virtual Threadの話は気になるしオフラインというのも色々エネルギーをもらえそうかなということで行ってみました。
オンラインのカンファレンスはなかなか集中力がもたない
完全に個人的な意見なんですが、オンラインだと何かしら子供の面倒見たりだとか、家事ちょっと手伝ってよだとかしっかり集中するのが難しいです。
また、時間に空きが出来、集中できる状況だとしても
1時間かけてそのセッションを聞くぞーというより倍速再生して掃除でもしながら…みたいな妙な雑念が生まれます。
その点オフラインは一緒に話を聞いている人々が居て、目の前で登壇者がしゃべって自分に語りかけてくるわけで集中しやすいよなぁと改めて思いました。雑念も湧きにくい(発表を聞きながらTwitterしてるやつが何言うてんねん、というのは置いといてください)
オンラインであっても如何に集中できる状態を演出するかみたいなのはオンラインでの登壇とかイベントの演出とか難しいところだなぁと思います。
コロナ禍の3年ぐらいで、皆オンラインスタッフ業とかオンラインでの発表というところだとこなれてきた感がありますが、如何に満足度を上げるかとか有意義にするかとかオフラインと差別化するかとかは極まってないような印象もあります。
久しぶりな人とも話せた
cero_tさんとかサムライズムのyusukeさんとかは話したかったけどタイミング的にアレして話せなかった。
ちょこっと話せたのはirofさんとかじゅくちょーさんとかよこなさんとかtadaさんとかてらださんとかとか。色んな人と話せて嬉しかったです。
数年ぶりかつ、マスクつけてるとほとんどの人に認識されないことが分かった
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
いやー、今日も存在感がほとばしってたんですけどねぇ〜!
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
や、やっぱ数年間空きましたからねっ!
聞いたセッション
ちょっと家庭の都合もあり、興味のある2セッションに絞りました
AI を利用した Java 開発の最新情報(てらだよしおさん)
自分の視力低下もあいまってか、スライドあんまり見えなかった。。
後ろの方じゃなくてもうちょっと前に座れば良かったです
そのため、ちょっとメモは少なめ
てらださんの発表に関する記事: https://qiita.com/yoshioterada/items/2a4cc2c9995254560fce
以下、メモ書きです。
copilot
- https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat
- 承認が通った人のみ使える
- VSCodeのインサイダーバージョンというものがある
Azure Open AI PlayGround
- Azure Open AI PlayGroundというものがある
- https://medium.com/microsoftazure/azure-openai-playground-279f1f3da562
- CopilotやOpenAIを使えば1週間ぐらいで簡単にアプリケーションが作れる。例えばYouTubeの音声を文章化し、Markdownにするアプリをそのぐらいの期間で作りました、とのこと
その他:
copilotとみせかけて、てらださんがすべてコピペしてるだけだったらちょっとおもしろんだけどな#jjug_ccc #jjug_ccc_a
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
赤ちゃんはコンテントセーフティ
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
バックドア的に使えるんか(ない)#jjug_ccc #jjug_ccc_a
小休憩
座りたくなる張り紙 pic.twitter.com/ZPxzK0eimn
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
Virtual Threads - 導入の背景と、効果的な使い方(さくらばさん)
資料:https://speakerdeck.com/skrb/virtual-thread-dao-ru-nobei-jing-to-xiao-guo-de-nashi-ifang-372a94a6-b5dc-448d-b1d1-e8750efdafcb
いろふさんも見に行きたかったけど久しぶりにさくらばさんの発表を聞きたくなったのでこっち来た#jjug_ccc_a
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
メモ書きです。
Veirtual Threadの概要
- JVM管理の軽量Thread
- 他の言語だとファイバー
- コルーチンとgoルーチンとは観点が違う
- 目的:スループット向上
- I/O多いシステムにで効果的
- 魔法ではない。使ったからと言ってCPUが変わるわけではない
- スループットは上がるが、応答時間下がる
スレッドにまつわる歴史(Java 5)
- Concurrency Utilities
- newFixedThreadPool 応答時間重視
- newCachedThreadPool スループット重視
- Thread Per Request/Task
スレッドにまつわる歴史(Java 7)
- Folk Join
- 分割統治法
- work stealing task scheduler
業務タスクの特徴
- 通信、データベースアクセスが多い
- i/Oばっかりが時間を食う
- I/O wait。ブロッキング
- CPUが遊んじゃうし、スレッドのコンテキストスイッチもない
- Folk Joinだと遊んだまま
- Project lambdaで遊ばないようになった
スレッドにまつわる歴史(Java 8)
-
Completable Future
- 非同期処理を関数で
- WebFlux、Helidon SEなど
-
関数
-
従来の記述と違う、例外処理、デバッグしにくい・・・
-
非同期だとスタックトレースが途絶える
そこで
- 逐次処理で例外処理も扱いやすいスループットも上がる
- Virtual Thread
Virtual Threadの詳細
- 区別のため、既存のThreadをPlatform Threadと呼ぶようになった
- 実行時、Virtual ThraedとPlatform Threadかどうかは分からん
- Virtual ThreadはPlatform Threadにマウントしたりする
- マウントしたThreadをキャリアThreadという
- 限定継続、Continuationでコンテキストスイッチを高速化
- work-stealingによるスレッドスケジューリング
- スタックトレースも追いかけられる
- 限定継続を入れたとはいえ、コンテキストスイッチは依然としてオーバーヘッドある
- I/Oによる。Socket IOは対応している
- park(駐車)とi/O割り込みによるreadを繰り返す
- yield continuation。yieldは譲るということ
- ContinuationはVirtual Threadの内部クラスなので外から使えない
Virtual Threadの使い方
- Executors.newVirtualThreadPerTaskExecuctor
- Executors.newThreadPerTaskExecuctor(Thread.ofVirtual().factory())
- Threadとインターフェースは同じ(シグネチャ同じ)
- Virtual Threadを直接作るようなことはしない方が良い
- 独自のExecutorServiceを作るような人だけ明示的に呼び出すとかかな
- ExecutorServiceはJava19からAuto Closable
注意点
- synchronizedではなくReentrantLockやセマフォやCountdownLatch
- スレッドは使い回さない
- Threadのstop,suspend,resumeはdeprecated。直接使わない
Virtual Thread
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
・JVM管理の軽量スレッド
・KotlinのCoroutines、GoのGoroutineとは観点が違う
・目的:スループット向上
・I/O多いシステムにで効果的
・魔法ではない。使ったからと言ってCPUが変わるわけではない
・スループットは上がるが、応答時間下がる#jjug_ccc #jjug_ccc_a
えっExecutorServiceがJava19からAutoCloseable??
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
たしかにこれが一番嬉しい説あるわ#jjug_ccc #jjug_ccc_a
WebFlux使ってる場合・・・VirtualThread使う必要ない(意識する必要ない)
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
Spring Boot(WebMvcとか?)の場合・・・フレームワークが対応するのを待ちましょう#jjug_ccc #jjug_ccc_a
そのあと
2つセッションを聞いてからアンカファレンスをぼーっと立ち聴きして帰りましたとさ。
本当は懇親会とかも出たかったけど、お家帰って子供の面倒見たりもあるのでなー
早めに退散しますー、おつかれさまでした!
— やんく✌('ω')✌ (@yy_yank) June 4, 2023
まとめ
知らない知識を学ぶ良い機会になりました。
あと人の熱気とか楽しそうな感じとか良い刺激になったなと思います
またどこかで会いましょう
0 件のコメント:
コメントを投稿