JJUG CCC 2024 Springに参加・登壇しました
JJUG CCC 2024 Springにはじめて参加・登壇してきました。
参加経緯
2024年にやりたいこと(1月の振り返り)でやりたいこととして「外に出る」と書いたとおり、何かしらオフラインのイベントに出たいと考えていました。
転職して早くも2年経ち、Java/Kotlinを触るようになったのでJava/Kotlin系のコミュニティに参加したい欲がありました。 去年あたりに見かけていたJJUG CCCがよさそうだと思い参加を決めました。
完全にアウェーで怖いが、「敢えてアウェーで戦う事に意味があるって話 - そーだいなるらくがき帳」のとおりに実践。 結果的に登壇が決まり、初参加・初登壇と言う流れになりました。思い切ってCfP出してよかった。
登壇内容
「Spring Bootで作成したAPIテストのコスパを高めよう!」というタイトルで、E2Eをコスパ良く行う方法についてお話させていただきました。
Spring Bootで作成したAPIテストのコスパを高めよう! - SpeakerDeck
runnというコマンドを利用することで、言語非依存かつCIフレンドリーにシナリオテストが作れることを、SpringBootの事例あわせて紹介しました。少しでもE2Eやってみるか、スキーマ駆動で開発してみようかみたいに思ってもらえていたらうれしいです。
イベント当日、朝から気合いを入れるためパンケーキを食べました
朝からパンケーキ🥞 pic.twitter.com/NOhUnse9GM
— ゴロウ (@gorou_178) June 16, 2024
登壇内容の補足
質問やフィードバックを発表後いただけたので、ブログで補足。 まず前提として、個人的にやってみた程度で仕事での活用はこれから検討段階です。
課題感として、ドキュメント(スキーマ)と実装の乖離をどうにか検知・テストできないかと調べていたところrunnを見つけました。 私が抱えていた課題をドンピシャで解決できると思い、調べて感じたことを発表でお伝えしました。
また、懇親会で「karateというツールを選ばなかった理由」について質問いただきました(質問してくれてうれしかった)。 知らなかったためそもそも比較もできていないという状態でしたので、素直にお伝えして個人的に試してみようと思います。ありがとうございます。
runnは、スキーマファイルそのものを利用してシナリオのチェックができるSSOT的思想があるところが個人的には好きです。
後日runnコマンド作者のk1LoWさんからお礼いただきました。うれしい。
runnがガッツリ紹介されている!ありがとうございます! https://t.co/k1fcFxLKsG
— k1LoW (@k1LoW) June 17, 2024
JJUG CCCに参加してみて
まず、とても多くの参加者がいてびっくりした。500名超えとのことでした。 JJUG総会というのが冒頭にあり、会則の変更についてや会計・監査報告がありとても透明性のあるコミュニティなんだなと感じました。
登壇者のスライドは、「JJUG CCC 2024 Springのスライドまとめ」をしてくれている方がいたのでスライドはこちらから参照すると早いです。 ※毎回恒例でやられているようです。ありがたい!
JJUG CCC 2024 Spring ( #jjug_ccc ) - セッション資料の一覧 - 地平線に行く
あと、おそらく運営スタッフルールなのだと思いますが、登壇者へのフィードバックを発表後スタッフからしていただけるのうれしかった。 「もっとこうした方がよい」みたいなフィードバックってなかなか視聴者からは得られないので貴重な体験でした。
個人的には、「交通費の補助が出る」のがとても大きい。遠方からでもCfP出してみようという気持ちになれました。 JJUG CCCスポンサーさんのおかげです。ありがたく使わせていただきます。
印象に残った発表
LINEヤフーさんの「Adopting ZGC in HBase for LINE Messaging」。 発表がとても聞き取りやすく、わりと難しいテーマだが順序よく説明してくれてスッと理解・納得できました。 ZGC、素振り程度でもよいから使ってみようと思った。
次が「条件分岐の多さと紛らわしい命名、先にリファクタリングするなら?」 「命名と構造どちらを優先的に修正すべきか」という問題の研究結果の発表でしたが、とてもおもしろかった。
「実際のコードの動作と矛盾してる命名」がソフトウェア開発に与える影響などについて書かれた論文「Linguistic Antipatterns: What They Are and How Developers Perceive Them」についての話題がありこれがおもしろい。たとえば「isXxxxというメソッドがbool値以外を返す」といったケースがいくつかアンチパターンとして載っている。
ChatGpt-4oに、論文からケースを抜粋してもらった(誤ってる可能性があります。正しくは実際の論文を参照ください。) 見たことありすぎて泣けてきます。
* 「get」 - アクセサ以上の動作を行う
* 例: getImageDataメソッドが、属性の値に関係なく毎回新しいオブジェクトを返す。
* 「is」 - 真偽値以外を返す
* 例: isValidメソッドが、戻り値の型がbooleanではなく、intなどのより複雑な型を返す。
* 「set」メソッドがvoidではない戻り値を持つ
* 例: setメソッドが、voidではなく、何かしらの値を返すが、コメントで説明されていない。
* 期待するが、単一のインスタンスを取得しない
* 例: getExpansionメソッドが、単一のオブジェクトではなくリストを返す。
* 実装されていない条件
* 例: メソッドのコメントが、実装されていない条件付きの動作を示唆する場合。デフォルトの実装であれば、それをコメントに記載する必要がある。
* 検証メソッドが確認を行わない
* 例: validate、check、ensureなどの名前を持つ検証メソッドが、検証が成功したかどうかを確認する戻り値を提供せず、どのように理解すればよいかの説明もない。
* 「Get」メソッドが値を返さない
* 例: メソッド名が「get」や「return」から始まるが、実際には何も返さない。
統計的に、「紛らわしい命名」の方を優先して対処する方がよいと言う結果がでたようで、論文としてまとめる段階とのことでした。 このような活動が、将来のエンジニアに寄与するかもしれないことにワクワクしますね。
実際に聴いた発表
- Virtual Threadsで実現する性能改善 / Toru Takahashi
- チームの成長を促すためのスプリントレトロスペクティブの活用法 / Masaki Asano
- Kubernetes でも Java アプリで TLS 接続を終端したい / Kohei Saito
- PCI DSSの観点から見たセキュアなJavaアプリケーション / Yoshihiko Minami
- 条件分岐の多さと紛らわしい命名、先にリファクタリングするなら? - Java ソースコードをみんなで読んで比べた結果 / 井上 翔太郎, 森崎 修司, twada
- Adopting ZGC in HBase for LINE Messaging / Shinya Yoshida (@bitter_fox, @shinyafox)
- Spring Boot vs MicroProfile - クラウドネイティブにおけるフレームワークの比較と選択 / 荻原 利雄
- Spring Boot 2.7 から 3.1 へのアップグレードに苦労したことと学んだこと / Kometsubu
- いまどきの分析設計パターン おすすめ10選 / masuda220
聴きたかった発表
聴きたかった発表。スライド必ず見ます。
- 知名度は高くないけど便利なJavaライブラリ集 / making
- InvokeDynamic Under the Hood / YujiSoftware, Yuichi Sakuraba
- FIFOキューで実現するSpring Bootの非同期処理とその性能評価方法 / Ryoto Ishizuka, Kaishu Shimizu
- Webアプリケーションセキュリティの基礎とSpring Bootでの実装 / 真敏 多田
- テストコードが根付くチームを立ち上げるために考えたいこと / Takashi Maeda
- イベント駆動アーキテクチャ導入の手引と共通の落とし穴 / Masanobu Naruse
非公式前夜祭
CfP通らなかった発表を効く会に参加申し込みしてたのですが、あまり集まらなかったみたいで 増田さんによる関Javaでやったコーディングワークショップの再演をおこなっていただきました。
想定してなかったのですが、がっつりコードを書きました。HHKBを持っていっててよかった。
作ったコード(メンテ中)
「単純なCRUDアプリ」「ETL処理」を1から作るの、以外とつまずいてスッと作れなかった。 いつも仕事でスッと作れるのはベースがあるから。やはり素振りは大事だなと改めて思いました。
コードは以下。未完成ですが、個人的に納得できるまで書くつもり。
gorou-178/jjug_ccc_informal_workshop_etl - GitHub
インフォキュリオン株式会社さま、会場提供・お菓子飲み物などの提供ありがとうございました。
観光
最終日はオールフリーだったのでぶらぶらしました。
浅草・スカイツリー
子どもから、「まんじゅうかもちもちしたもの」というお土産リクエストをもらっていました。 以前食べた「亀十」のどらやきが、もちもちしておいしかったため浅草に行くことに決めました。
時間も余裕があるためだいぶ前にスカイツリー行ったけど、ついでで行ってきました。
— ゴロウ (@gorou_178) June 17, 2024
ビアガーデンイベントをやっていたけど、ぐっと我慢(ヒューガルデンにそそられたが、食べ物メニューがやけに高くて…)。
コーヒーハウス ニシヤ
本当の目的地は「コーヒーハウス ニシヤ」さん。コーヒーだけでなくプリンが美味いとのことで行ってきました。
美味しかったプリン
めっちゃうまい🍮 pic.twitter.com/TkxrH65Rad
— ゴロウ (@gorou_178) June 17, 2024
暑かったため、冷たいものが飲みたいのと事前にメニューみて気になってたエスプレッソシェケラートいただきました。 冷たくてスッキリしてておいしかった。
ちなみにお店はカウンターのみ。少しだけ店長さんと福岡のコーヒーの話とかしました。 こういうスタイルのお店もよいですね!!もうすでにもう一度行きたいです。次はカプチーノ飲みたい。
ランニング
西新宿に泊まり、近くに新宿中央公園があり、ランニングができると言うことで早朝ランニングしてきました。
雨が降るかもと思ってたところ、止んでいたのでウキウキで走ってきました。 紫陽花ロードがきれいでとてもよかったのですが、風がふくと木々から雫がダーっと降ってきて結構濡れてしまった。
遠出でランニングはじめたのつい最近だが、ホテルにコインランドリーがあるの大事だなって思いました。今まで気にしてなかったけど大事だ。
まとめ
旅行記のようになったが、JJUG CCC 2024 Spring楽しかった。 アウェーに飛びこんだ結果、t-wadaさんとお話しでき、次の登壇ネタもできたり。発表してみて自分の知識不足・発表力のなさなどなど反省も尽きないですが、いろんな刺激を受けられました。
語彙力がないのですが、活力みたいなのが湧き出てきたのでしばらく頑張れそう。 JJUG CCC 2024 fallを視野にいれてアウトプットしていこうと思います。運営のみなさまありがとうございました、お疲れさまでした!
駄文
羽田空港とおり過ぎて、横浜方面に行きそうになる。危なかった
https://twitter.com/gorou_178/status/1802589346773783016あれ…横浜方面に行ってるなぁ…
— ゴロウ (@gorou_178) June 17, 2024
関東で、電車乗り換え検索して「直通」という表記を見ると心配になる。