実装のめんどくささを除いたらすべてのメソッド定義をインターフェースベースでやったほうがよさそうだ・・・
クラスとインターフェースを混在させるとどこかで破綻する・・・(´・ω・`)