【画像処理API】エンドポイントおよびクラス設計
API開発における画像処理の機能実装については、API設計の考え方にならってオブジェクトを基準として(オブジェクト指向的に)設計していく。
下記の点は、API開発にかかわらず、オブジェクト単位での実装一般に関わるように思う。
どう使いたいのかは、不完全な実装でも使ってみてからの方がわかりやすい。
オブジェクト指向とテスト駆動開発を知って変わってきたこと(もろ引用です)
・関数にするかクラスを利用するか
選択肢:ひとつの巨大な関数での実装(設定と動作)
実装が簡単。しかし、同じ設定を繰り返す分の無駄を生じてしまう。
選択肢:クラスとそのメソッドによる実装(設定のメソッドと動作のメソッド)
少しばかり実装の仕方を考える。設定を行う部分と動作を分離するので、同じ設定を何度も繰り返す無駄がなくなる。
利用する関数の中で、初期化と設定のメソッドの記述する位置について考えておくこと。
・入出力
ある機能がファイルインタフェースなのか、画像キャプチャのインタフェースなのか。
別々の実装にしない。
アルゴリズムのコアの部分はDRY原則を満たすように実装して、コードの乖離の問題を持ち込まない。
個人的な実装についての備忘録
とりあえず、画像の状態(管理)に対応するImagesクラス、/imagesエンドポイントのオブジェクトを想定
処理のを司るクラス、エンドポイントとなるImageProcクラス、/filtersエンドポイントのオブジェクトを想定
基本は、画像についてはID(画像ID、機能ID)で管理、してフロント側でもIDのみを保持する仕様
imagesのエンドポイントに対して、リクエストを投げるとIDとフォーマットのパラメータでレスポンスを制御する流れ