handler IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler ハンドラーは実行環境に対するエンドポイントの提供と、各サービスのDIのみ行う
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler ビジネスロジックは、純粋なロジックのみで特定の環境に依存しない
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler LINE Messaging APIとやり取りするサービスクラスはLINE Messaging APIにのみ依存する
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler ビジネスロジックは抽象化したインターフェースを介して環境に依存する処理を呼び出す
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler 環境に依存する処理は各サービスクラスがインターフェースを実装する
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler つまり、別の環境で動かす場合は環境依存の部分だけを修正(別途実装/DI)すればよく、
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler コアロジックには一切の変更が不要