JNI とネイティブ境界
Scala / JVMドメインコードはJNI、JNA、ネイティブライブラリを直接呼ばない。必要なときはインフラadapterに閉じ、狭いScala APIの背後にネイティブ実装を隠す。
ネイティブコードを小さなモジュールの背後に隠す
Section titled “ネイティブコードを小さなモジュールの背後に隠す”ネイティブ連携が必要なとき(暗号アクセラレータ、メディアコーデック、レガシー SDK)、狭いScala APIを公開する:
- 境界を越える前に入力を検証する
- ネイティブ失敗を型付きエラーにマップする
- ネイティブ層が前提とする不変条件を文書化する
ドメイン遷移でのネイティブ呼び出し禁止
Section titled “ドメイン遷移でのネイティブ呼び出し禁止”ドメイン遷移は純粋なScalaのまま。ネイティブ処理はインフラadapterで行う。
ドメイン / applicationテストではネイティブラッパーをmockまたはfakeする。実ネイティブ統合テストは明示的なCI jobを持つadapterモジュールに限定する。