共通インターフェイスの罠
- 異なる複数のものがある
- これらの操作を共通化しようと考える
- 異なる複数のものにはそれぞれ異なった得意分野がある
- 理想は双方の長所を活かせることだが、しばしば双方の共通部分だけになり強みを失う

Aが持つ機能を、Bが持たない場合
- 路線1: サポートしない路線
- 路線2: エラーにする路線
- 例えばインターフェイスはあるが、実行するとエラーになる設計
- 結局「どのバックエンドでは何が使えるか」はユーザが理解しなければならない
- 路線3: 頑張って実装してしまう路線
- 例: 機械学習ライブラリScikit-Learnでは異なる学習モデルに共通インターフェイスを用意した。
- モデルmに対してメソッド
m.predict_probaは確率推定の結果を返す
- 確率推定の機能を持たないSVMに対してもこのメソッドが生えている
- 4/5のデータで5回SVMを走らせてロジスティック回帰している: SVMで確率推定
- とても労力がかかる
- 必ずしも実装できるとは限らない
共通インターフェイスの罠
#ソフトウェア設計
#設計