痒いところに手を届かせるArchUnitの利用法 〜アーキテクチャーテストからアプリケーション解析まで〜

location_city Online schedule Nov 7th 10:00 - 10:50 AM place Track A people 17 Interested

TNG Technology Consulting GmbH社によって開発されているArchUnitは
アプリケーションのアーキテクチャーをテストするためのOSSです。

ArchUnitはJavaなどのJVM言語で記述されたアプリケーションコードに対して
リフレクションやJavaバイトコード解析を実行することで
クラス・メソッドなどのコンポーネント間の依存関係を収集します。
そして得られた依存関係が、開発者が望むアーキテクチャーの制約に違反していないかの検査を可能にします。

ArchUnitはテストのルールをライブラリが提供する様々なAPIを用いてJavaコードで記述できるため、
アプリケーション開発者が柔軟にルールを定義できるといった特徴があります。
さらにその柔軟性の高さゆえ、アーキテクチャーのテストだけには留まらず、
アプリケーションの解析ツールとして利用することも可能です。

そこで本セッションでは

- パッケージ間の依存関係の制約によるバグの防止
- クラス・メソッド間の依存関係の制約によるライフタイムが長いブランチの削減

といった標準的なArchUnitの利用事例から

- 以下のような複数アプリケーション間の依存関係に関するドキュメントの自動生成
  - Androidアプリのどの画面が何のAPIに依存しているのか
  - マイクロサービスの各APIエンドポイントが他のマイクロサービスのどのAPIに依存しているのか
  - マイクロサービスの各APIエンドポイントがデータベース上のどのテーブルに依存しているのか
- コミットのファイル差分の影響範囲の解析による自動テストやレビューの効率化
  - 差分が影響を与えうるクラスだけに絞ったテストケースの実行
  - 差分が影響を与えうる影響範囲の自動検知・Pull Request上での共有

などいった応用的な利用事例をArchUnitの仕組みや技術的な背景を踏まえながら紹介していきます。

 
 

Outline/Structure of the BeginnerSpeaker

1.ArchUnitとは?
2.ArchUnitの仕組み
3.ArchUnitの標準的な利用事例の紹介
 3-1.パッケージ間の依存関係の制御によるバグの防止
 3-2.クラス・メソッド間の依存関係の制御によるライフタイムが長いブランチの削減
3.ArchUnitの応用的な利用事例の紹介
 3-3.ドキュメントの自動生成
 3-4.自動テストやレビューの効率化

Learning Outcome

ArchUnitが提供するAPIを最大限に利用した
アーキテクチャの単体テストだけに留まらない
ソースコード解析の活用事例を知ってもらうことによって
手動でやるほどではないけどもしも自動化できたら嬉しい
そんな痒いところに手が届くようなアイデアが実現できるようになります。

Target Audience

アプリケーション開発者

Prerequisites for Attendees

特になし

schedule Submitted 3 months ago