(1)delegateメソッドを、カテゴリからプロトコルに変更
(2)delegateメソッドの確認を、setDelegate時に行いキャッシングするように変更