技術覚書

自分のために技術的なことを色々と書こうと思います。

【参加した】【オンライン】 JJUG CCC 2022 Spring

こんにちは!
お久しぶりです。
本当にめっちゃひさびさのブログエントリです。
いい刺激を受けましたー。

目次

これに参加しました

jjug.doorkeeper.jp

当日のタイムテーブルです。 fortee.jp

当日聴講したセッション

オンライン開催だと、同じ時間帯のセッションを後で追っかけて視聴できるところがいいね。

セッションごとのメモ

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

セッション資料

t.co

memo

レガシーコード

  • コードを修正すると他の箇所にまで影響してしまう
  • コードの理解に時間がかかる

リファクタリングしよう

副作用をなくして呼び出しもとメソッドでクラスの値を設定させるにあたり 手動のテストだと難しい。漏れもある→だからJunit
1. まず、テストコードを先に書く
1. そこからリファクタリング
1. それからテストコードを実行する

1個人のリファクタリングには限界がある

  • 他の人が新たにレガシーコードを増やすスピードが早い可能性。
  • だから、「テストコードを書く文化」を作る どれくらいの規模なのかなー?というのが気になって登壇者の方に質問したところ 開発メンバーが20人くらいの規模だそう。結構規模が大きい。 そんな中でテストコードを維持し続け、文化を醸成するまでは本当に大変だっただろうな。と思い馳せました。

Testcontainersでコンテナを使ったテストを実行しよう

memo

DBを使ったテスト環境を作るに当たって、これ便利だなーと思いました。 単体テストもそうなんだけど、結合テスト、運用テストで出た 不具合の検証をするための環境が欲しいのだけど、 勝手に環境触るわけにはいかないし、検証のためにテストデータ吸い上げるのも一苦労。 コンテナ環境があれば開発メンバー一人一人に検証環境が割り当てることができるから、 これってめっちゃ助かるやん?と。 ただ、TestContainerを導入するにはそれなりにマシンスペックが必要になるらしい。。。ふむ。

話が横道に逸れるけど、コンテナ使わないにしても 開発環境はスペック高いのが欲しいよね。 生産性に直結するもんね。 開発環境整えるの大事!

「サポート」は製品開発? JDBCライブラリ屋さんが実践する攻めのテクニカルサポートとJavaエンジニアのキャリアについて

セッション資料

t.co

memo

今回聴いた中では一番刺さることが多かったセッション。製品サポートの仕事って面白いなーと思いました。
製品サポートの仕事に対するCDATAさんの姿勢が心に刺さりました。

後半のエンジニアのキャリアの話も良くて Javaエンジニアっていうキャリアってキャリアプランって狭く考えられがち。 - スペシャリスト目指す - フルスタックエンジニア目指す - SE・コンサルタント目指す - マネージャになる など。

エンジニアのスキルの活かし方ってもっと多様なはず 「ロール」のためにビジネスがあるのではなくて、「ビジネス」のためにロールがある。

自分も「ロール」で考えてたなー。 こういうふうに考えると自分のキャリア形成っていろんな可能性が見えてきますね。 会社でメンバーと面談する時もこの考え方を取り込んでいきたいなと思った所存。

JDK Flight Recorder入門

セッション資料

t.co

memo

heapダンプとか見ても恥ずかしながらぶっちゃけよくわからなかったので
こういうのをうまく実際の職場で活用できたらいいんじゃないかと思いました。

JFR(JDK Flight Recorder)とは

イベント収集フレームワーク。アプリケーションの動作に関する低レベルの情報を収集。 全てのLTSでデフォルトで利用可能。Java8も使える。 JMC(JDK Mission Control)と組み合わせて使う。

JMC(JDK Mission Control)

JFRファイルに記録されている情報を見るためのアプリケーション ベンダによってはJDKに入ってたりなかったり。

使いこなせるようになるには

まずは簡単なアプリケーションをサンプルで作って、 JMCでモニタリングしてみるところからやっていくと良い。

参考

JFR for JDBC

Java初心者が知っておくべきプログラミングのこと

セッション資料

t.co

memo

初学者にとってのプログラミングの難しさ

  • 状態遷移の理解
  • プログラムの処理では状態が変わっていく
  • 状態が変わっていくこと=状態遷移を理解する必要がある

初学者に教えるべきことは

  • 逐次実行や状態遷移を把握するためには、Jshellやデバッガの使い方を教える必要がある
  • ループを分類して、ループ処理の構造を理解すること。そして実際にループのプログラムを書く練習をする
  • オブジェクト指向を開発で当てはめるのは限定的なので惑わされる原因になるので、後回し。
  • とにもかくにも、まずは動くプログラムを書けるよう練習すること。

プログラム経験が少ない若手のメンバーにはこの辺を教えていけたら。 そういえば昔、新人研修の講師をやるときにここのサイトの問題を使ってたな。 プログラミングを練習するにはいい題材だと思っている。 kitako.tokyo

脱二重メンテナンス!ドキュメント自動生成への道

memo

OpenAPI、Swaggerというのを使ってドキュメントの自動生成をすることで ソースとドキュメントの二重管理を無くし、CI導入して自動化する試み。 RESTful API のドキュメント生成の話で、自分の実務と異なる領域だったけど ソースとドキュメントの二重管理がなくなる仕組みが欲しいし作っていきたいなと 思っていたので、技術的なアプローチとして参考にしていきたい。

参考

OpenAPIとSwagger 入門

Javaのビルドやバージョンの違いをグラフデータベースで理解する。移行で困らないための知識グラフを作ろう。

Javaのバージョン差異でグラフデータベースを使って見える化する試みの紹介。
t.co

これがめっちゃ便利そうだった。 11と17といった離れたバージョン間でも差異が出せる。