100)}こうすることで、MyCollectionsを外から生成してfizzBuzzCollectionを見るときには、FizzBuzzCollectionという型は見えず、AnyCollection<String>という型で見えるようになり、型を隠蔽することができます。一つの使い方としては、例えばFizzBuzzCollectionと同じく要素がStringのPPAPCollectionがあったとしましょう。Pen-Pineapple-Apple-Pen!どちらもfunnyなcollectionということで、これらをまとめる配列を作るとします。してAnyCollectionに包んであげることで型消去しつつまとめてあげることができます。みたいにして何でも...というわけにはいかないので注意です内部にlistを所有するようなCollectionを自作してみる今度は内部にlist(Array)を持つCollectionを自作してみます。αをもつ型として定義できるところかと思います。shelf.firstShelf.listでもいいじゃんという感じもしますが、その型自身をCollectionと見立てて操作ができるので個人的には良いなと思います。みたいな冗長さを解消できると思います。冗長さを感じなくなった!とはいいつつも、使い所が難しいかもしれないです。内部に持つlist(配列)を外から見えなくしつつ、その型をCollectionとして扱えるのは良いのかもしれません。Indexableの場合はCollectionを使えと書いてありますまとめ普段使っているArrayやDictionaryの先祖を辿ってみる、実際にprotocolを適合させた自作の型を使ってみると理解が深まりますね!本当はSubSequenceとかIteratorとかまで深掘りしたかったのですが、迷宮入りしそうだったので今回は諦めて、なるべくそれを今回は意識しなくて済むようにさせて頂きました今回自分でまとめるまで、AnyCollectionってなんぞや?って感じだったので、勉強にもなりました。自作の型にCollectionを適合させる場合には、範囲外アクセスしてしまわぬよう気をつけましょう。何かあれば気軽に編集リクエストとかでもお投げください。参考swiftdocCollectionおまけCollectionとはちょっと離れますが、Iteratorだけを使ってFizzBuzzもできるよということで貼っておきます。upLoginユーザーは見つかりませんでした。