abstractのテンプレートを外部に切り出した