diff --git a/src/models/sw-subscription.ts b/src/models/sw-subscription.ts
index 743d0d2dd9..621ac8a9b6 100644
--- a/src/models/sw-subscription.ts
+++ b/src/models/sw-subscription.ts
@@ -11,3 +11,31 @@ export interface ISwSubscription {
 	auth: string;
 	publickey: string;
 }
+
+/**
+ * SwSubscriptionを物理削除します
+ */
+export async function deleteSwSubscription(swSubscription: string | mongo.ObjectID | ISwSubscription) {
+	let s: ISwSubscription;
+
+	// Populate
+	if (mongo.ObjectID.prototype.isPrototypeOf(swSubscription)) {
+		s = await SwSubscription.findOne({
+			_id: swSubscription
+		});
+	} else if (typeof swSubscription === 'string') {
+		s = await SwSubscription.findOne({
+			_id: new mongo.ObjectID(swSubscription)
+		});
+	} else {
+		s = swSubscription as ISwSubscription;
+	}
+
+	if (s == null) return;
+
+	// このSwSubscriptionを削除
+	await SwSubscription.remove({
+		_id: s._id
+	});
+}
+
diff --git a/src/models/user.ts b/src/models/user.ts
index a4b7becbd2..c121790c31 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -18,6 +18,7 @@ import DriveFolder, { deleteDriveFolder } from './drive-folder';
 import PollVote, { deletePollVote } from './poll-vote';
 import FollowingLog, { deleteFollowingLog } from './following-log';
 import FollowedLog, { deleteFollowedLog } from './followed-log';
+import SwSubscription, { deleteSwSubscription } from './sw-subscription';
 
 const User = db.get<IUser>('users');
 
@@ -239,6 +240,11 @@ export async function deleteUser(user: string | mongo.ObjectID | IUser) {
 		await FollowedLog.find({ userId: u._id })
 	).map(x => deleteFollowedLog(x)));
 
+	// このユーザーのSwSubscriptionをすべて削除
+	await Promise.all((
+		await SwSubscription.find({ userId: u._id })
+	).map(x => deleteSwSubscription(x)));
+
 	// このユーザーを削除
 }