こんにちは。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 ServerやCData 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とそこから生成されたバイトコードを比較して見ていかないと理解が追いつかないですね・・・。
バイトコード操作ライブラリがあるのは初めて知りました。こういう楽しみ方、いいですね。
関連コンテンツ