なんか違和感あるな、と思っていたら、6/6 より前の 6/4 の JJUG CCC 2023 Spring 参加記録を書き忘れていました。
JJUG CCC は久々のオフライン参加でした。
前回いつ参加したっけ?と思って確認してみたところ、
昨日あたりから風邪気味なので懇親会は諦めて早く帰ることに。
— hmatsu47(まつ) (@hmatsu47) 2019年11月21日
JJUG CCC 2019 Fall https://t.co/uLk2AI0F42 #jjug_ccc @JJUGから
体調今一つで疲れがたまってるので、残念ながら本体への参加もキャンセル…。
— hmatsu47(まつ) (@hmatsu47) 2019年11月22日
この週末は家でおとなしくしてます。
(ホッキョクグマと戯れつつアドカレの準備でもしよう…。)
なんとコロナ前最後の 2019 Fall は体調不良でキャンセルしていて、
(ちなみにホッキョクグマ=Alibaba Cloud の PolarDB のことです)
お土産と晩ごはんを買って、ただいま帰りの新幹線待ち。
— hmatsu47(まつ) (@hmatsu47) 2019年8月23日
本日はありがとうございました。
春のJJUG CCCへは行けなかったので、秋(今年は11月なのでリアルに秋だ)は行くつもりです!#kanjava
今さらだけど、中国地方DB勉強会 in 松江とJJUG CCC 2019 Springの日程が被っていることに気付いた。
— hmatsu47(まつ) (@hmatsu47) 2019年2月25日
JJUGは普段からJavaでコード書くメンバーが行ってほしいな…(でも絶対に誰も行かないのが悲しい)。
さらにその前の 2019 Spring は予定被りで断念していたので(関ジャバも中国地方 DB 勉強会も懐かしい!ちなみにこのとき松江では、10 年に一度の「ホーランエンヤ」が開催されていました)、
書くの遅すぎ。 / はてなブログに投稿しました #はてなブログ #jjug_ccc
— hmatsu47(まつ) (@hmatsu47) 2018年12月23日
JJUG CCC 2018 Fall(12/15) - 構築中。https://t.co/EGvVBp3NqU
2018/12/15 の 2018 Fall 以来 4 年半ぶり(!)でした。
来ました。#jjug_ccc pic.twitter.com/Kxrx5Kh5XE
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
見慣れたのぼりが見慣れないところに立っていました。
受付で配ってたステッカー+セッション会場で配られたステッカーで、Java 9+9=Java 18に(ならない)。#jjug_ccc pic.twitter.com/uVe7Ri8unN
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
部屋に入って待機していたら、まーやさんからステッカーの追加分が配給されて Java 18 に(なってない)。
朝一は「脆弱性が見つかってから、パッチとSecurity Bulletinが作られるまで」に参加。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
最初の参加セッションでは、
まさか同じネタが発表者の口から出てくるとは。https://t.co/NnNd99pms4#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
思いがけずわたしの JJUG CCC 初ツイート(5 年半前)が発掘されました。
レポートどおり再現させるの割と難しいことが。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
(「レポートどおりじゃなかったけどバグや脆弱性が見つかる」パターンもあるので「再現しなかった」で終わりにできない問題)#jjug_ccc #jjug_ccc_c
「○○の脆弱性がない」とうっかり言ってしまうやつ、某自治体の何かを発行するサービスで見た光景。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
体制大変そう。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
個人の感想でした。
次はSpring Boot 2→3の話。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
悲しいかな、自社にはバージョンアップすべき Spring Boot 2 系のシステムが(メンテナンス作業時専用の)1 つしかありません(他は…)。
全部人力テストに頼っているとこのサイクルには追従しづらい。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
はい、自社には自動でまわるお寿司テストコードはほとんど存在しません(つらい)。
DatadogのAgent、これに限らずバージョンアップに追従せず長期間放置される例がそこそこあるからなあ。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
(GitHubリポジトリ見に行くと対応を進めてるのが見れたりするけど)#jjug_ccc #jjug_ccc_c
AWS の RDS メトリクス取得用エージェント(Lambda で動かすやつ)などは、Python 2.7 版のままずっと放置されていましたね(仕方がないので GitHub からソースコードを引っ張ってきたのですが当時はバグがあり、ソースコードを調べてワークアラウンドの自前パッチを当てた後に同じ問題の Issue が立っていたことに気づくという…)。
GradleのVersion catalogか。覚えておこう。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
他のセッションでも何度か出てきたようですが、いずれお世話になりそうなので覚えておきます。
次は「GraalVMでのFlight Recorderを使ったパフォーマンス解析」の話。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
GraalVMぜんぜん使ってないな。#jjug_ccc #jjug_ccc_a
Native化した場合Heapのグラフが出ない、と。#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
IOパフォーマンスは未実装なのでNative化すると出ない(リポジトリに実装のPRは出されている)。#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
コード実行パフォーマンスについては今のところは難しそう。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
(何らかの不具合あり?)#jjug_ccc #jjug_ccc_a
イベント出力内容の拡充に期待。#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
Native 化した場合はまだまだ見れるものが少ないようです。
なお、このセッション会場で、
@suke_masa さんに挨拶できてよかった。#jjug_ccc https://t.co/cM6gTSJXLd
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
別のイベントでニアミスした多田さんと挨拶できました。
次は「Spring Boot × MyBatis × FreeMarker を使って、データベースの接続先を安全に変更します。」
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
ずっと満席だったけど一昨日ぐらいにキャンセルで席が空いてるのに気づいて変更。#jjug_ccc #jjug_ccc_d
DB ネタは外せませんね(キャンセル見つけて滑り込めて良かった)。
なんか揺れた後に警報音が。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
開始早々地震がありましたが、ビルの耐震設備のおかげで(?)軽く揺れた程度でした。
Azure→AWSにあわせてSQL Server→PostgreSQLも実施。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
アプリケーションもPHPからJava(Spring Boot)へ。
コンテナ化も実施。#jjug_ccc #jjug_ccc_d
「アプリケーション」と書きましたが Web API (DB にアクセスする側)ですね。
MyBatisのdatabaseIdProviderの活用がキモ、と。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
FreeMaker でテンプレート化した SQL を、新旧両環境に向けてうまく「出し分け」できるようにする仕組みの中でコレ↑が重要、という話でした。
データ移行にEmbulkを選択した件、他のツールだと文字セットの移行やNullの移行が素直にやりづらかったので、そのあたり気にせずできたEmbulkを採用した、とのこと。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
異種 DBMS 間で移行先が AWS なので個人的には DMS がまず頭に浮かびましたが。
データ移行、3人で2年…。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
長い戦い。
最初どうなるかと思ったけど質問が活発だ。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
狭い部屋で多くの人が質問しやすい雰囲気が良かったようです。
昼休みはちょっとだけ周辺を散歩してきました。
昼休みの間に付近を一周。#jjug_ccc pic.twitter.com/BaC1Ue2xMJ
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
むかしヘーシャの東京事務所が西新宿にあった頃はここのコンビニはam/pmだったような(いつの時代?)。#jjug_ccc pic.twitter.com/uCSn9kwPaB
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
散歩中のツイートを見た高校の後輩さん(といっても通学時期はまったく重なっていない)から声が掛かり、私が JJUG CCC を離脱した後に会うことに。
Java 20・21の話。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
今秋ついに17の次のLTS(予定)が。#jjug_ccc #jjug_ccc_a
Project Amber。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
instanceofのパターンマッチングのrecord版、20で2nd Preview、21で標準機能に。#jjug_ccc #jjug_ccc_a
String Templates。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
21で最初のPreviewに。
Text Blockと組み合わせると便利そう。#jjug_ccc #jjug_ccc_a
無名パターン(変数)、他言語では割とよく使うやつかな?#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
他言語を意識した実装が(まだプレビューのものも多いけど)増えてきましたね。
次はバーチャルスレッド。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
Project Loom、19のプレビューが出た頃に思い出した。#jjug_ccc #jjug_ccc_a
Futureとは別に用意されるのか(Subtask)。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
普段別言語で書いてるのでJavaの書き方を忘れそう。#jjug_ccc #jjug_ccc_a
Loomの次はValhalla。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
そろそろ「あれ?どの機能の話だっけ?」ってなってきてる。#jjug_ccc #jjug_ccc_a
PanamaはVector APIか。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
この分野はある意味(Javaがどうとかではないけど)最近話題のやつ、にあたるのかな?(よくわからない)#jjug_ccc #jjug_ccc_a
Shenandoah GC。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
そろそろどんなGCだったか記憶が怪しい。
ZGCはとりあえず覚えてるけど。#jjug_ccc #jjug_ccc_a
SequencedCollection。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
順序に関するやつLinkedTreeナントカと混同しそう。#jjug_ccc #jjug_ccc_a
32bit Windows(x86)port終了のおしらせ。#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
JFRでselect句が書ける、とな?#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
地味なものも多いですが結構盛りだくさんでした。
てらださんからのプレゼント、むかしどこかで金太郎飴をいただいたような?#jjug_ccc #jjug_ccc_a pic.twitter.com/uwK3w8D20H
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
てらだよしおさんの「AI を利用した Java 開発の最新情報」で配られました。
写真はあえて撮らないけど会場は満員御礼状態。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
てらださん大人気!#jjug_ccc #jjug_ccc_a
さすが有名人、Bing Chatでもてらだよしおさんの情報は正確だ。#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
Windows 11になってから、めっきり使わなくなっちゃったな…(前はタスクバー上とか左とかに置いてた人)。#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
そういえば先日(6/6)の某支援士の特定講習を受けるのに 1 年半ぶりに Windows 11 マシンを引っ張り出してきました(動いて良かった)。
「プロセスを○す」とかうっかりプロンプトに書くと拒否されそう。#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
「リスキリング」も誤解されたりするのかな?(カタカナ語で言われるようになったのつい最近のことだし未学習の可能性が)
Copilotとかのこの手の仕組み、「コメントに処理内容を書くな教(?)」の人と相性が悪そう。#jjug_ccc #jjug_ccc_a
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
素朴な疑問。
トレンドに「Java」が来てる。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
(残念ながらJJUGではなかった)#jjug_ccc pic.twitter.com/ffdnsGj6kq
途中でこんなことが。
個人的に数村さんのセッションは外せないので見に来た。#jjug_ccc #jjug_ccc_c pic.twitter.com/Xtrvz6J0nn
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
数村さんセッション、一番期待して見に来たのですが…
(もうそろそろコンテナ環境におけるJava 8特有のheap設定の話はしなくても良い…ですよね?)#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
…と思ったらGC種別をJDK 8から説明し始めた数村さん(優しい)。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
CPUのリソース配分の話。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
CPU Sharesでは、アイドル状態のコンテナがある場合はその分を他のコンテナの実行に配分する。#jjug_ccc #jjug_ccc_c
JDK 17ではデフォルトでCPU Shareを参照しない。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
デフォルトではDocker CPU QuotaがCPU Sharesより優先される。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
Javaとその外側で配分の考え方が違う点については気を付けないと。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
ちゃんと観測できるようにしてないと何も分からなさそうなのはわかった。#jjug_ccc #jjug_ccc_c
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
ツイートの口数が減ったことでお分かりのとおり、睡眠不足の影響からこのあたりで半分力尽きていました。
(なのでスライドを見て後で復習)
Spring Boot Rest APIの話。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
高速化の話はしないらしいけど、高速化をテーマにしたセッションは今日別にいくつかあった気がする。#jjug_ccc #jjug_ccc_d
うっかり「テスト」というキーワードをつけ忘れてツイートしてますね(疲れてる)。
DBを使うテスト、DBも巨大な一枚岩的な感じだとテストに必要なテーブルとデータを一通り用意するだけで大変そう(なのでヘーシャではできてない)。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
さいきんはPlaywright流行ってそう。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
今時は「XMLに慣れてないから書きづらい」と思ってもChatGPTさんに頼んで変換してもらえそう。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
完全にツイートの「口数」が減ったままですが…完全な「理想論」とは別のテストの「現実解」を見せていただいた、という印象でした。
次はtacckさんの「FaaS における Java 起動時間の比較 (AWS / Azure / GCP)」。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
AWSとGCPで起動時間短縮のアプローチが違ってたはずなので比較が面白そう。#jjug_ccc #jjug_ccc_d
待ち時間に tacck さんとも挨拶できました。
tacckさんが好きなフィギュアスケートの技はスプレッド・イーグル(毎回のお約束)。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
CRaC(AWSのSnapStart)vs CPUブースト(GCP)の話以外に「そもそもコールドスタートさせない」技術も検証の対象に。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
AWS LambdaのSnapStartは有効にすると起動時間が1/6程度に。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
Corretto 11しか対応してないのが残念。#jjug_ccc #jjug_ccc_d
GCPのCloud Function Java 17ランタイムのCPUブーストも起動時間が1/6くらいまで短縮される。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
違うアプローチの高速化によって生じる効果がほぼ同じ、というのは面白いです。
コールドスタートさせない技術のほう。
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
AWS LambdaのProvisioned Concurrencyでは起動時間(準備)がコールドスタート比で3%くらいに。
AzureのFunctions Premiumでは比較の中で最速の1.25%。
(ただし常に動かし続ける状態なので費用も高額になる可能性が)#jjug_ccc #jjug_ccc_d
AWS の Provisioned Concurrency は先述の SnapStart と併用できないのが残念(動作原理を考えると現状では仕方がない気がする)。
FaaSのスケールアウト時は増加分がコールドスタート相当の状態になる点に注意。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
Java(JVM)でも「一旦C2まで行ってしまえば他言語より速い」からコンテナだからといって捨てがたい。#jjug_ccc #jjug_ccc_d
— hmatsu47(まつ) (@hmatsu47) 2023年6月4日
頻繁にコンテナ(Pod やタスク)が入れ替わるようなケースでは Java の性能は生かしきれないでしょうが、そういうコンテナばかりでもないと思いますので。
翌日が仕事だったのでわたしはここで離脱。
そして高校の後輩さんと合流してカフェへ…行ったら予定外に話し込んでしまい、結局 JJUG CCC の懇親会が始まったあたりの時間まで西新宿にいたのでした(家に着いた時間は日付が変わる前だったのでセーフ)。
久々のオフライン(というかハイブリッド)開催、関係者の皆さま、ありがとうございました&お疲れさまでした!