JJUG CCC 2022 Spring 参加レポート #JJUG_CCC

by 杉本和也 | 2022年06月23日

こんにちは。CData Software Japan リードエンジニアの杉本です。

今日は JJUG CCC 2022 Spring に参加してきたので、参加レポをお届けします!

https://jjug.doorkeeper.jp/events/135612

ちなみに、CData Software Japan はセッションスポンサーとして11時からのセッションを担当しました。

https://fortee.jp/jjug-ccc-2022-spring/proposal/6964800f-b92c-47a6-b161-d6bf8884b02c

スライドは以下で公開しているので良かったらどうぞ!

Blogバージョンもあります。

「サポート」は製品開発? 攻めのテクニカルサポートについて考える

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

レガシーコードと戦う上でJUnitをどのように導入し、適用させていったのか、生々しい部分にも触れながらお話しているセッションでした。

https://fortee.jp/jjug-ccc-2022-spring/proposal/c966194c-c7d5-43c2-a65e-5d8f4ac94cf2

技術的な取り組み方はもちろんですが、テストコードを書く文化の定着って難しいですよね。個々人で対応しても、レガシーコードの増加に追いつかないという話をしていたのが印象的。


テクニックとしてCIの導入とモックあたりはとても共感ですねー。


特に個人としてもこのあたりの開拓、Wiremockを使ったりという経験があったので、そのへんが予め整備されていたりするとやりやすいですよね。

Mock API ライブラリ WireMock を使ってみた

Java で作るカスタム GitHub Actions

私もいろいろと触ったことがある Backlog REST API関係のお話ということで参加してきました。しかしながら、Github のカスタムアクションは全然知らなかったので、こんなアプローチがあるのかと面白かったです。

https://fortee.jp/jjug-ccc-2022-spring/proposal/0c85f6b2-d44d-40c2-8e6d-ddc1fe821273

実際に触れられていたGithub Actionのカスタムアクションは以下のリンクから。

https://github.com/kazamori/backlog-github-integration-action

ワークフローが実行されたあと、BacklogのREST APIを介して、イシューのコメントに記入される、といったようなことが実現できます。

アプローチとして前述のカスタムアクションの1つである Docker コンテナーアクションを用いて実装していることがポイントでしたね。Github Actionsから依存関係が薄いので、独立して動作確認がしやすいのがメリットといった感じ。

Github カスタムアクションに限らず、プラグイン系は往々にしてテストが難しいので、こういう組み込み方があるのは良いですね。

JDK Flight Recorder入門

何回か試したことはあるものの、あまり包括的に理解しているといは言えなかったので参加してみました、JDK Flight Recorder 入門。

https://fortee.jp/jjug-ccc-2022-spring/proposal/c50104bb-a6ae-4077-8ac3-cce2f65207b3

基本的な使い方・活用方法の整理はもちろんですが、実際の使い方でREST APIを例にしたアプローチを紹介していたのがなんともありがたかったです。


問題の切り分けとして、どういう情報を足して、JFRのデータを有効活用していくべきか? というところに触れられているのも良かったです!

Jfr4JDBCというライブラリが初めて知りました。メモメモ。

https://github.com/chiroito/Jfr4Jdbc/blob/master/README.ja.md

分散データベースTiDB Cloudで構築するWebアプリケーション

JDBCドライバー屋さんとしては参加しなければ!ということで昨今色んなところで取り上げられているNew SQLの一つ、TiDBのセッションにも参加してきました。

https://fortee.jp/jjug-ccc-2022-spring/proposal/c92a5edb-8cb0-4355-98f5-44fc6acad5b6

TiDBはこちらから。

https://github.com/pingcap/tidb

https://docs.pingcap.com/ja/tidbcloud/tidb-cloud-quickstart

DBの機能周りよりも、MySQLプロトコル互換であるというところにめちゃくちゃビビッと来てしましました。


しかもプロトコルレベルをFull Support


TiDB CloudのDev版が無償で使えるということで早速トライしていました。

MySQL Workbenchからも普通に使えて、素晴らしい。

もちろん、CData Softwareで提供しているAPI ServerCData Syncでもそのまま使えました!

LINEのB2Bプラットフォームにおけるトラブルシューティング2選

LINEさん内部で実際に発生した問題に対するトラブルシューティングのアプローチ、過程が生々しく描かれたセッション!

https://fortee.jp/jjug-ccc-2022-spring/proposal/730d46e2-a295-45c2-abfa-bb7bf13ad7c9

実際の事例とそれにあたって、どのようなカットから調整して、問題の再現、特定につなげていったのか、めっちゃ具体的にわかって面白かった(というのも失礼ですが)


しかし、こういうトラブルシューティング系では、いかなる手段を用いても再現環境を作り上げることはめっちゃ大事ですね。LINEさんの中だと問題環境と同様の再現環境をまるまる富豪的な手段で作り上げてしまうこともあるそうな。

でも、そういう手段をとってもいい、そういう権限があるということが、カルチャー面としても大事なことですね。

あとはやっぱり「どのようにデータから推察していったのか」を説明してくれているのが素晴らしいですね。特に1つ目はパフォーマンス観点の問題なので、再現環境の構築+仮説からデータの取得・分析で問題発見の過程が解説されていました。大事だー。

バイトコードって言葉をよく目にするけど一体何なんだろう?

最後はJavaバイトコードのお話! 原理的にはイメージできても、なかなか内部的に突っ込んでいけてない領域なので、大変面白く聞かせてもらいました。

https://fortee.jp/jjug-ccc-2022-spring/proposal/38436423-2235-4736-8ca5-783c8f227ea1

ただ、これはやっぱり自分自身で手を動かして、Javaとそこから生成されたバイトコードを比較して見ていかないと理解が追いつかないですね・・・。


バイトコード操作ライブラリがあるのは初めて知りました。こういう楽しみ方、いいですね。

トライアル・お問い合わせ

関連コンテンツ