"a fish"と"fish"の違い
a fish → 完成した形の魚、もともとの形の魚、泳いでいる魚、丸焼きの魚など
fish → 完成した形から崩れた魚(刺身、しっぽの部分だけの塩焼きや煮魚など)
I caught a fish. 「私は一匹の(完成した形の)魚を釣りました」
I ate a fish. 「私は一匹の(完成した形の)魚を食べました」
fish に a がつくのは「ひとつ」と数えられるときで、それは<ひとつの完成した形>を表すときです。つまりa fishで「(完成した形の)一匹の魚」を表しています。完成した形の魚というのは、泳いでいる魚、丸焼きの魚(つまり、頭からしっぽまで形が完成している、泳いでいた形のままの魚)などです。
釣った魚は、その魚のもともとの形(完成した形)をしていますね。だから、a fishとなります。
I ate a fishは「一匹の(丸焼きの)魚を食べた」という感じです。丸焼きの魚なら完成した形を残していますね。
それに対して、
I ate some fish. 「私は(完成していない形)の魚、(完成した形から崩れた)魚を食べました」という意味です。
完成した形から崩れた魚というのは、刺身の切り身とか、しっぽの部分だけの塩焼きや煮魚といった、魚の一部分という意味です。だから、I ate some fish.を「刺身をいくらか食べました」という意味で理解してもOKです。
ここで注意してもらいたいのは、some fishes ではないということです。
a fishでもfishesでもない、つまり「単数」でも「複数」でもないということは「数えられない」ということです。理由は上で述べた様に、 a がつくのは「ひとつ」と数えられるときで、ひとつの完成した形を表すときなので、 魚の一部分では<完成した形>を表せないからです。ですからsome fishは「魚肉をいくらか」「魚の刺身をいくらか」ということになるわけです。
複数形“fish”と“fishes”の違い
“fish”の複数形には、“fish”と“fishes”があります。
“fish”は「魚の数が複数(2匹以上)」の場合に使います。
この場合、<同じ種類の魚が複数>かもしれないし、<同じ種類かどうか分からないけれども魚が複数>かもしれません。
“fishes”は、「魚の種類が複数」の場合に使います。
この場合、<違う種類の魚が複数>であることがわかっている。
many fish → たくさんの数の魚(魚の種類は同じかもしれないし違うかもしれない)
many fishes → たくさんの種類の魚(魚の種類が複数だとわかっている、違う種類の魚がたくさんいる)
「たくさんの種類の魚」は“many kinds of fishでもOKです。この場合、通例として“fishes”ではなく“fish”を使います。
まとめ
完成している形の魚1匹について話すときは “a fish”を使い、
完成していない形の魚について話すときは"fish"を使い、
いろいろな魚がたくさんいるときは複数形の “fishes”を使い、
たくさんの数の魚(種類が同じかわからない)のことを話すときは複数形の “fish”を使う。
3番目と4番目は、同じ形のfishになりますが、その見分けは文全体の意味で簡単に判断できます。
ポイントは、自分で出来るかどうか、その場面を想像できるかどうかです。
例えば、I ate some fish.
「私は魚の切り身をいくらか食べました」 → 自分でもできるし、その場面を想像できます
「私は魚の丸焼きを何匹か食べました」→ 自分はそんなに食べられないので、その場面が想像できない
テストで出題される問題は、読む人が想像できるような内容というのが一般的だから上の意味が適切
もうひとつ、I caught some fish.
「私は(同じ種類か違う種類かわからないけど)何匹かの魚を釣りました」
「私は完成していない形の魚(しっぽだけの魚、頭だけの魚、魚の死体の一部など)を釣りました」
上の方が想像しやすいけれど、下も想像できない事はないですね。この場合、想像しやすいほうを選べばOK.