middlewareパターン