見出し画像

JJUG CCC 2024 Fall 感想 (午前)

日本Javaユーザグループの恒例イベント JJUG CCC に午前中だけ参加したので拝聴したセッションの感想などを書きます。

リファクタリングへの耐性が高いモデルベースの統合テストの紹介

Yuito Sato (@Yuiiitoto) さんによるセッション。

リファクタリング耐性が高いとは?

上のスライドにあるとおり、振る舞いを変えていないのにも関わらず、テストが失敗してしまうようなテストコードがリファクタリング耐性の低いコードです。あるいは脆いテスト(Fragile Test)と呼ばれるアンチパターンです。
それを避けるために、テストコードは内部の状態や相互作用ではなく、観察可能な振る舞いを検証することが原則となります。

統合テスト(Integration Test)は、テストダブルを使うのでなく実物のDBまで一気通貫で繋げて実行するので、性質としてリファクタリング耐性が高くなります。しかし、DBに対するデータの準備や、検証のためのデータ取得をSQLで直でやってしまう(あるいはCSV等による操作)と、テーブル構造という実装の詳細に踏み込んでしまうため、リファクタリング耐性が下がってしまうよねという問題提起でした。

解決策として、実際のモデル(ドメインオブジェクト)やリポジトリを使ってテストデータの準備や検証を行う方法が紹介されました。

個人的に一番共感したのは、テストコードはGivenのコードが最も面倒くさくて大変だよねー、という話です。
※Given-When-ThenはBDDスタイルの用語で、AAA(Arrange/Act/Assert)だとArrange(準備)にあたるフェーズ。テストフィクスチャのセットアップを行う

テスト観点に関係しないデータや、データ項目は、テストコードから見えなくしたい。これ、本当そうだと思います。何を検証するテストケースかを一目瞭然にするためには、余計なノイズを除去することは大事です。

たとえばテスト観点に関係しないテスト項目を隠すテクニックとしてBuilderパターンが紹介されていました。
テストフィクスチャのセットアップに関するテストパターンとしては、Test Data BuilderやObject Motherが有名ですね。(詳しく知りたい方は僕が以前Qiitaに書いた記事もご参照ください)

テストコード好きな僕としては、とても満足度の高いセッションでした。

オニオンアーキテクチャで実現した本質課題を解決するインフラ移行の実例

Hiroto Ryushima (@hryushm) さんによるセッション。

大量の集計データに対するクエリ性能が、PostgreSQLでは限界を迎えたため、BigQuery(Google CloudのDWHサービス)への移行を行なったが、オニオンアーキテクチャを採用していたために容易に行うことができたという体験談でした。

PostgreSQLからBigQueryへのデータ連携やBigQueryの最適化は結構大変さもあったそうなのですが、アプリ側の改修は極小化することができ、それは依存性逆転の原則(Dependency Inversion Principle:DIP)による恩恵であったということです。
※依存性逆転の原則(を含むSOLID原則)については拙書『アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築』第2章でも取り上げています

また、既存のQuerySerivceに対して網羅的なテストがあったことも、BigQueryへの移行を容易にしたそうです。テスト万歳!ですね。

QAタイムが短く質問しそびれたのですが、テストデータの準備(DBへの投入)についてのインパクトの有無や工夫されたことなどは聞いてみたいと思いました。

プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット

Daisuke Endo (@DddEndow) さんによるセッション。

新規メンバーのオンボーディングを効率的に行うには?というお話でした。
学びの四象限で捉えると、他者が関わる三象限はサポート可能!という話、いいですね。刺さりました。75%ならほぼ100%ですよね!(?)

「内部品質を大事にする文化」、とても素敵だと思いました。経営層やビジネスサイドからの理解があるからこそだと思いますが、これはソフトウェアの内部品質を高めることはソフトウェアを長期的に持続可能とし、すなわち顧客への提供価値を最大化することができる、という本質が戦略として企業に根付いているのだと思います。

戦略といえば・・・

JJUG CCCの前日の10/26(土)に、「秋の旬なアーキテクチャLT会 supported by KIKKAKE CREATION」という勉強会にご招待頂いて、登壇しました。
(場所も、偶然新宿でした。そして、勉強会でご一緒だった方に、JJUG CCCの会場でも遭遇しました!)

アーキテクトの主たる役割の一つは技術面での戦略づくりです。そもそも戦略って何だっけ?戦略的に思考するってどゆこと?アーキテクティングとどう関係するの?みたいな話をしました。よろしかったら以下のスライドをご参照ください。

最後に

今回は会場が「ベルサール新宿グランド コンファレンスセンター」に戻りましたが、広くて導線もしっかりしているので良いですね! 新宿駅からだと少し歩きますが、散歩としてちょうどいい感じです。

運営、スタッフの皆さま、登壇者の皆さま、スポンサーの皆さま、そして参加者の皆さま、お疲れ様でした!

We love JJUG CCC!

いいなと思ったら応援しよう!

yonekubo
もし記事の内容が何かの参考になりましたら、チップで応援頂けますとありがたいです!