リソース管理にstd::shared_ptrを使用するようにした