We study the edge-coloring problem in the message-passing model of distributed computing. This is one of the most fundamental problems in this area. Currently, the best-known deterministic algorithms for (2Δ-1)-edge-coloring requires O(Δ) + log* n time , where Δ is the maximum degree of the input graph. Also, recent results of  for vertex-coloring imply that one can get an O(Δ)-edge-coloring in O(Δ∈+ log n) time, and an O(Δ 1 + ∈)-edge-coloring in O(log Δ log n) time, for an arbitrarily small constant ∈ > 0. In this paper we devise a significantly faster deterministic edge-coloring algorithm. Specifically, our algorithm computes an O(Δ)-edge-coloring in O(Δ∈) + log* n time, and an O(Δ1 + ∈)-edge-coloring in O(log Δ) + log* n time. This result improves the state-of-the-art running time for deterministic edge-coloring with this number of colors in almost the entire range of maximum degree Δ. Moreover, it improves it exponentially in a wide range of Δ, specifically, for 2Ω(log* n) ≤ Δ ≤ polylog(n). In addition, for small values of Δ (up to log1 - δ n, for some fixed δ > 0) our deterministic algorithm outperforms all the existing randomized algorithms for this problem. On our way to these results we study the vertex-coloring problem on graphs with bounded neighborhood independence. This is a large family of graphs, which strictly includes line graphs of r-hypergraphs (i.e., hypergraphs in which each hyperedge contains r or less vertices) for r = O(1), and graphs of bounded growth. We devise a very fast deterministic algorithm for vertex-coloring graphs with bounded neighborhood independence. This algorithm directly gives rise to our edge-coloring algorithms, which apply to general graphs. Our main technical contribution is a subroutine that computes an O(Δ/p)-defective p-vertex coloring of graphs with bounded neighborhood independence in O(p2) + log* n time, for a parameter p, 1 d p d Δ. In all previous efficient distributed routines for m-defective p-coloring the product m · p is super-linear in Δ. In our routine this product is linear in Δ, and this enables us to speed up the coloring drastically.