プロトコルによるdelegateの代わりにブロックで書いてみた。