diff --git a/src/acct/render.ts b/src/acct/render.ts
index 191034361d..c29bfb4764 100644
--- a/src/acct/render.ts
+++ b/src/acct/render.ts
@@ -1,4 +1,4 @@
-import { IUser } from "../models/user";
+import { IUser } from '../models/user';
 
 export default (user: IUser) => {
 	return user.host === null ? user.username : `${user.username}@${user.host}`;
diff --git a/src/build/i18n.ts b/src/build/i18n.ts
index f7602dfd17..dc48251c95 100644
--- a/src/build/i18n.ts
+++ b/src/build/i18n.ts
@@ -48,7 +48,7 @@ export default class Replacer {
 		if (error) {
 			console.warn(`key '${key}' not found in '${path}' of '${this.lang}'`);
 			return key; // Fallback
-		} else if (typeof text !== "string") {
+		} else if (typeof text !== 'string') {
 			console.warn(`key '${key}' is not string in '${path}' of '${this.lang}'`);
 			return key; // Fallback
 		} else {
diff --git a/src/models/note.ts b/src/models/note.ts
index 83cd93353b..af6f6f7c01 100644
--- a/src/models/note.ts
+++ b/src/models/note.ts
@@ -220,7 +220,7 @@ export const pack = async (
 			hide = false;
 		} else {
 			// 指定されているかどうか
-			const specified = _note.visibleUserIds.some(id => id.equals(meId));
+			const specified = _note.visibleUserIds.some((id: mongo.ObjectID) => id.equals(meId));
 
 			if (specified) {
 				hide = false;
@@ -272,7 +272,7 @@ export const pack = async (
 	}
 
 	// Populate media
-	_note.media = hide ? [] : Promise.all(_note.mediaIds.map(fileId =>
+	_note.media = hide ? [] : Promise.all(_note.mediaIds.map((fileId: mongo.ObjectID) =>
 		packFile(fileId)
 	));
 
diff --git a/src/models/user.ts b/src/models/user.ts
index 942faeeff4..0d1be439e9 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -1,6 +1,6 @@
 import * as mongo from 'mongodb';
 const deepcopy = require('deepcopy');
-import sequential = require('promise-sequential');
+const sequential = require('promise-sequential');
 import rap from '@prezzemolo/rap';
 import db from '../db/mongodb';
 import Note, { pack as packNote, deleteNote } from './note';
diff --git a/src/parse-opt.ts b/src/parse-opt.ts
index 031b1a6fe2..29e5959c3e 100644
--- a/src/parse-opt.ts
+++ b/src/parse-opt.ts
@@ -1,6 +1,6 @@
 import * as nopt from 'nopt';
 
-export default (vector, index) => {
+export default (vector: any, index: any) => {
 	const parsed = nopt({
 		'only-processor': Boolean,
 		'only-server': Boolean
diff --git a/src/publishers/push-sw.ts b/src/publishers/push-sw.ts
index aab91df62f..b0b4701155 100644
--- a/src/publishers/push-sw.ts
+++ b/src/publishers/push-sw.ts
@@ -11,7 +11,7 @@ if (config.sw) {
 		config.sw.private_key);
 }
 
-export default async function(userId: mongo.ObjectID | string, type, body?) {
+export default async function(userId: mongo.ObjectID | string, type: string, body?: any) {
 	if (!config.sw) return;
 
 	if (typeof userId === 'string') {
@@ -34,7 +34,7 @@ export default async function(userId: mongo.ObjectID | string, type, body?) {
 
 		push.sendNotification(pushSubscription, JSON.stringify({
 			type, body
-		})).catch(err => {
+		})).catch((err: any) => {
 			//console.log(err.statusCode);
 			//console.log(err.headers);
 			//console.log(err.body);
diff --git a/src/queue/index.ts b/src/queue/index.ts
index 3f82b30b35..1efd6e54ef 100644
--- a/src/queue/index.ts
+++ b/src/queue/index.ts
@@ -12,7 +12,7 @@ const queue = createQueue({
 	}
 });
 
-export function createHttp(data) {
+export function createHttp(data: any) {
 	return queue
 		.create('http', data)
 		.removeOnComplete(true)
@@ -21,7 +21,7 @@ export function createHttp(data) {
 		.backoff({ delay: 16384, type: 'exponential' });
 }
 
-export function deliver(user: ILocalUser, content, to) {
+export function deliver(user: ILocalUser, content: any, to: any) {
 	createHttp({
 		title: 'deliver',
 		type: 'deliver',
diff --git a/src/queue/processors/http/deliver.ts b/src/queue/processors/http/deliver.ts
index 2c4bbe9bf0..946d2f65bd 100644
--- a/src/queue/processors/http/deliver.ts
+++ b/src/queue/processors/http/deliver.ts
@@ -2,7 +2,7 @@ import * as kue from 'kue';
 
 import request from '../../../remote/activitypub/request';
 
-export default async (job: kue.Job, done): Promise<void> => {
+export default async (job: kue.Job, done: any): Promise<void> => {
 	try {
 		await request(job.data.user, job.data.to, job.data.content);
 		done();
diff --git a/src/queue/processors/http/index.ts b/src/queue/processors/http/index.ts
index 6f8d1dbc2b..156be42250 100644
--- a/src/queue/processors/http/index.ts
+++ b/src/queue/processors/http/index.ts
@@ -1,12 +1,12 @@
 import deliver from './deliver';
 import processInbox from './process-inbox';
 
-const handlers = {
+const handlers: any = {
 	deliver,
 	processInbox,
 };
 
-export default (job, done) => {
+export default (job: any, done: any) => {
 	const handler = handlers[job.data.type];
 
 	if (handler) {
diff --git a/src/queue/processors/http/process-inbox.ts b/src/queue/processors/http/process-inbox.ts
index dfafe64a78..0da442aefb 100644
--- a/src/queue/processors/http/process-inbox.ts
+++ b/src/queue/processors/http/process-inbox.ts
@@ -10,7 +10,7 @@ import { resolvePerson } from '../../../remote/activitypub/models/person';
 const log = debug('misskey:queue:inbox');
 
 // ユーザーのinboxにアクティビティが届いた時の処理
-export default async (job: kue.Job, done): Promise<void> => {
+export default async (job: kue.Job, done: any): Promise<void> => {
 	const signature = job.data.signature;
 	const activity = job.data.activity;
 
@@ -22,7 +22,7 @@ export default async (job: kue.Job, done): Promise<void> => {
 	//#endregion
 
 	const keyIdLower = signature.keyId.toLowerCase();
-	let user;
+	let user: IRemoteUser;
 
 	if (keyIdLower.startsWith('acct:')) {
 		const { username, host } = parseAcct(keyIdLower.slice('acct:'.length));
@@ -36,7 +36,7 @@ export default async (job: kue.Job, done): Promise<void> => {
 
 		// アクティビティを送信してきたユーザーがまだMisskeyサーバーに登録されていなかったら登録する
 		if (user === null) {
-			user = await resolvePerson(activity.actor);
+			user = await resolvePerson(activity.actor) as IRemoteUser;
 		}
 	} else {
 		user = await User.findOne({
@@ -46,7 +46,7 @@ export default async (job: kue.Job, done): Promise<void> => {
 
 		// アクティビティを送信してきたユーザーがまだMisskeyサーバーに登録されていなかったら登録する
 		if (user === null) {
-			user = await resolvePerson(signature.keyId);
+			user = await resolvePerson(signature.keyId) as IRemoteUser;
 		}
 	}
 
diff --git a/src/remote/activitypub/kernel/accept/index.ts b/src/remote/activitypub/kernel/accept/index.ts
index 2f9d646d14..572a254d9a 100644
--- a/src/remote/activitypub/kernel/accept/index.ts
+++ b/src/remote/activitypub/kernel/accept/index.ts
@@ -3,7 +3,7 @@ import * as debug from 'debug';
 import Resolver from '../../resolver';
 import { IRemoteUser } from '../../../../models/user';
 import acceptFollow from './follow';
-import { IAccept } from '../../type';
+import { IAccept, IFollow } from '../../type';
 
 const log = debug('misskey:activitypub');
 
@@ -25,7 +25,7 @@ export default async (actor: IRemoteUser, activity: IAccept): Promise<void> => {
 
 	switch (object.type) {
 	case 'Follow':
-		acceptFollow(actor, object);
+		acceptFollow(actor, object as IFollow);
 		break;
 
 	default:
diff --git a/src/remote/activitypub/kernel/announce/index.ts b/src/remote/activitypub/kernel/announce/index.ts
index a2cf2d5762..612b5dee84 100644
--- a/src/remote/activitypub/kernel/announce/index.ts
+++ b/src/remote/activitypub/kernel/announce/index.ts
@@ -3,7 +3,7 @@ import * as debug from 'debug';
 import Resolver from '../../resolver';
 import { IRemoteUser } from '../../../../models/user';
 import announceNote from './note';
-import { IAnnounce } from '../../type';
+import { IAnnounce, INote } from '../../type';
 
 const log = debug('misskey:activitypub');
 
@@ -25,7 +25,7 @@ export default async (actor: IRemoteUser, activity: IAnnounce): Promise<void> =>
 
 	switch (object.type) {
 	case 'Note':
-		announceNote(resolver, actor, activity, object);
+		announceNote(resolver, actor, activity, object as INote);
 		break;
 
 	default:
diff --git a/src/remote/activitypub/kernel/announce/note.ts b/src/remote/activitypub/kernel/announce/note.ts
index e258567389..7aa6aa5707 100644
--- a/src/remote/activitypub/kernel/announce/note.ts
+++ b/src/remote/activitypub/kernel/announce/note.ts
@@ -2,7 +2,7 @@ import * as debug from 'debug';
 
 import Resolver from '../../resolver';
 import post from '../../../../services/note/create';
-import { IRemoteUser } from '../../../../models/user';
+import { IRemoteUser, IUser } from '../../../../models/user';
 import { IAnnounce, INote } from '../../type';
 import { fetchNote, resolveNote } from '../../models/note';
 import { resolvePerson } from '../../models/person';
@@ -36,7 +36,7 @@ export default async function(resolver: Resolver, actor: IRemoteUser, activity:
 
 	//#region Visibility
 	let visibility = 'public';
-	let visibleUsers = [];
+	let visibleUsers: IUser[] = [];
 	if (!note.to.includes('https://www.w3.org/ns/activitystreams#Public')) {
 		if (note.cc.includes('https://www.w3.org/ns/activitystreams#Public')) {
 			visibility = 'home';
diff --git a/src/remote/activitypub/kernel/create/image.ts b/src/remote/activitypub/kernel/create/image.ts
index 2a55522220..9c19abbcc4 100644
--- a/src/remote/activitypub/kernel/create/image.ts
+++ b/src/remote/activitypub/kernel/create/image.ts
@@ -1,6 +1,6 @@
 import { IRemoteUser } from '../../../../models/user';
 import { createImage } from '../../models/image';
 
-export default async function(actor: IRemoteUser, image): Promise<void> {
+export default async function(actor: IRemoteUser, image: any): Promise<void> {
 	await createImage(image.url, actor);
 }
diff --git a/src/remote/activitypub/kernel/create/note.ts b/src/remote/activitypub/kernel/create/note.ts
index ed9fb6e54c..0f874b9fbf 100644
--- a/src/remote/activitypub/kernel/create/note.ts
+++ b/src/remote/activitypub/kernel/create/note.ts
@@ -5,7 +5,7 @@ import { createNote, fetchNote } from '../../models/note';
 /**
  * 投稿作成アクティビティを捌きます
  */
-export default async function(resolver: Resolver, actor: IRemoteUser, note, silent = false): Promise<void> {
+export default async function(resolver: Resolver, actor: IRemoteUser, note: any, silent = false): Promise<void> {
 	const exist = await fetchNote(note);
 	if (exist == null) {
 		await createNote(note);
diff --git a/src/remote/activitypub/kernel/delete/index.ts b/src/remote/activitypub/kernel/delete/index.ts
index 10b47dc4ca..5d7a23584f 100644
--- a/src/remote/activitypub/kernel/delete/index.ts
+++ b/src/remote/activitypub/kernel/delete/index.ts
@@ -2,11 +2,12 @@ import Resolver from '../../resolver';
 import deleteNote from './note';
 import Note from '../../../../models/note';
 import { IRemoteUser } from '../../../../models/user';
+import { IDelete } from '../../type';
 
 /**
  * 削除アクティビティを捌きます
  */
-export default async (actor: IRemoteUser, activity): Promise<void> => {
+export default async (actor: IRemoteUser, activity: IDelete): Promise<void> => {
 	if ('actor' in activity && actor.uri !== activity.actor) {
 		throw new Error('invalid actor');
 	}
diff --git a/src/remote/activitypub/kernel/reject/index.ts b/src/remote/activitypub/kernel/reject/index.ts
index a82c3fd61e..d89985c238 100644
--- a/src/remote/activitypub/kernel/reject/index.ts
+++ b/src/remote/activitypub/kernel/reject/index.ts
@@ -3,7 +3,7 @@ import * as debug from 'debug';
 import Resolver from '../../resolver';
 import { IRemoteUser } from '../../../../models/user';
 import rejectFollow from './follow';
-import { IReject } from '../../type';
+import { IReject, IFollow } from '../../type';
 
 const log = debug('misskey:activitypub');
 
@@ -25,7 +25,7 @@ export default async (actor: IRemoteUser, activity: IReject): Promise<void> => {
 
 	switch (object.type) {
 	case 'Follow':
-		rejectFollow(actor, object);
+		rejectFollow(actor, object as IFollow);
 		break;
 
 	default:
diff --git a/src/remote/activitypub/kernel/undo/index.ts b/src/remote/activitypub/kernel/undo/index.ts
index 71f547aeb9..5d9535403b 100644
--- a/src/remote/activitypub/kernel/undo/index.ts
+++ b/src/remote/activitypub/kernel/undo/index.ts
@@ -1,7 +1,7 @@
 import * as debug from 'debug';
 
 import { IRemoteUser } from '../../../../models/user';
-import { IUndo } from '../../type';
+import { IUndo, IFollow } from '../../type';
 import unfollow from './follow';
 import Resolver from '../../resolver';
 
@@ -29,7 +29,7 @@ export default async (actor: IRemoteUser, activity: IUndo): Promise<void> => {
 
 	switch (object.type) {
 		case 'Follow':
-			unfollow(actor, object);
+			unfollow(actor, object as IFollow);
 			break;
 	}
 
diff --git a/src/remote/activitypub/misc/get-note-html.ts b/src/remote/activitypub/misc/get-note-html.ts
index 33dd381689..0ceecdd00b 100644
--- a/src/remote/activitypub/misc/get-note-html.ts
+++ b/src/remote/activitypub/misc/get-note-html.ts
@@ -1,4 +1,4 @@
-import { INote } from "../../../models/note";
+import { INote } from '../../../models/note';
 import toHtml from '../../../text/html';
 import parse from '../../../text/parse';
 import config from '../../../config';
diff --git a/src/remote/activitypub/models/image.ts b/src/remote/activitypub/models/image.ts
index 0d5a690c6c..fb17a7c9e5 100644
--- a/src/remote/activitypub/models/image.ts
+++ b/src/remote/activitypub/models/image.ts
@@ -10,7 +10,7 @@ const log = debug('misskey:activitypub');
 /**
  * Imageを作成します。
  */
-export async function createImage(actor: IRemoteUser, value): Promise<IDriveFile> {
+export async function createImage(actor: IRemoteUser, value: any): Promise<IDriveFile> {
 	// 投稿者が凍結されていたらスキップ
 	if (actor.isSuspended) {
 		return null;
diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts
index 974fce433b..b0fe045e6d 100644
--- a/src/remote/activitypub/models/note.ts
+++ b/src/remote/activitypub/models/note.ts
@@ -1,5 +1,5 @@
 import * as mongo from 'mongodb';
-import * as parse5 from 'parse5';
+const parse5 = require('parse5');
 import * as debug from 'debug';
 
 import config from '../../../config';
@@ -9,30 +9,30 @@ import post from '../../../services/note/create';
 import { INote as INoteActivityStreamsObject, IObject } from '../type';
 import { resolvePerson, updatePerson } from './person';
 import { resolveImage } from './image';
-import { IRemoteUser } from '../../../models/user';
+import { IRemoteUser, IUser } from '../../../models/user';
 
 const log = debug('misskey:activitypub');
 
 function parse(html: string): string {
-	const dom = parse5.parseFragment(html) as parse5.AST.Default.Document;
+	const dom = parse5.parseFragment(html);
 
 	let text = '';
 
-	dom.childNodes.forEach(n => analyze(n));
+	dom.childNodes.forEach((n: any) => analyze(n));
 
 	return text.trim();
 
-	function getText(node) {
+	function getText(node: any) {
 		if (node.nodeName == '#text') return node.value;
 
 		if (node.childNodes) {
-			return node.childNodes.map(n => getText(n)).join('');
+			return node.childNodes.map((n: any) => getText(n)).join('');
 		}
 
 		return '';
 	}
 
-	function analyze(node) {
+	function analyze(node: any) {
 		switch (node.nodeName) {
 			case '#text':
 				text += node.value;
@@ -51,7 +51,7 @@ function parse(html: string): string {
 
 					if (part.length == 2) {
 						//#region ホスト名部分が省略されているので復元する
-						const href = new URL(node.attrs.find(x => x.name == 'href').value);
+						const href = new URL(node.attrs.find((x: any) => x.name == 'href').value);
 						const acct = txt + '@' + href.hostname;
 						text += acct;
 						break;
@@ -63,20 +63,20 @@ function parse(html: string): string {
 				}
 
 				if (node.childNodes) {
-					node.childNodes.forEach(n => analyze(n));
+					node.childNodes.forEach((n: any) => analyze(n));
 				}
 				break;
 
 			case 'p':
 				text += '\n\n';
 				if (node.childNodes) {
-					node.childNodes.forEach(n => analyze(n));
+					node.childNodes.forEach((n: any) => analyze(n));
 				}
 				break;
 
 			default:
 				if (node.childNodes) {
-					node.childNodes.forEach(n => analyze(n));
+					node.childNodes.forEach((n: any) => analyze(n));
 				}
 				break;
 		}
@@ -135,7 +135,7 @@ export async function createNote(value: any, resolver?: Resolver, silent = false
 
 	//#region Visibility
 	let visibility = 'public';
-	let visibleUsers = [];
+	let visibleUsers: IUser[] = [];
 	if (!note.to.includes('https://www.w3.org/ns/activitystreams#Public')) {
 		if (note.cc.includes('https://www.w3.org/ns/activitystreams#Public')) {
 			visibility = 'home';
diff --git a/src/remote/activitypub/renderer/accept.ts b/src/remote/activitypub/renderer/accept.ts
index 00c76883a9..76326285fd 100644
--- a/src/remote/activitypub/renderer/accept.ts
+++ b/src/remote/activitypub/renderer/accept.ts
@@ -1,4 +1,4 @@
-export default object => ({
+export default (object: any) => ({
 	type: 'Accept',
 	object
 });
diff --git a/src/remote/activitypub/renderer/announce.ts b/src/remote/activitypub/renderer/announce.ts
index 8e4b3d26a6..8c3ff9f113 100644
--- a/src/remote/activitypub/renderer/announce.ts
+++ b/src/remote/activitypub/renderer/announce.ts
@@ -1,4 +1,4 @@
-export default object => ({
+export default (object: any) => ({
 	type: 'Announce',
 	object
 });
diff --git a/src/remote/activitypub/renderer/create.ts b/src/remote/activitypub/renderer/create.ts
index de411e1951..b8bf98a655 100644
--- a/src/remote/activitypub/renderer/create.ts
+++ b/src/remote/activitypub/renderer/create.ts
@@ -1,4 +1,4 @@
-export default object => ({
+export default (object: any) => ({
 	type: 'Create',
 	object
 });
diff --git a/src/remote/activitypub/renderer/delete.ts b/src/remote/activitypub/renderer/delete.ts
index d15cb447e6..f468a22e24 100644
--- a/src/remote/activitypub/renderer/delete.ts
+++ b/src/remote/activitypub/renderer/delete.ts
@@ -1,4 +1,4 @@
-export default object => ({
+export default (object: any) => ({
 	type: 'Delete',
 	object
 });
diff --git a/src/remote/activitypub/renderer/document.ts b/src/remote/activitypub/renderer/document.ts
index 91a9f7df38..1985c6bc8b 100644
--- a/src/remote/activitypub/renderer/document.ts
+++ b/src/remote/activitypub/renderer/document.ts
@@ -1,7 +1,8 @@
 import config from '../../../config';
+import { IDriveFile } from '../../../models/drive-file';
 
-export default ({ _id, contentType }) => ({
+export default (file: IDriveFile) => ({
 	type: 'Document',
-	mediaType: contentType,
-	url: `${config.drive_url}/${_id}`
+	mediaType: file.contentType,
+	url: `${config.drive_url}/${file._id}`
 });
diff --git a/src/remote/activitypub/renderer/image.ts b/src/remote/activitypub/renderer/image.ts
index d671a57e7c..cf91ce3a0c 100644
--- a/src/remote/activitypub/renderer/image.ts
+++ b/src/remote/activitypub/renderer/image.ts
@@ -1,6 +1,7 @@
 import config from '../../../config';
+import { IDriveFile } from '../../../models/drive-file';
 
-export default ({ _id }) => ({
+export default (fileId: IDriveFile['_id']) => ({
 	type: 'Image',
-	url: `${config.drive_url}/${_id}`
+	url: `${config.drive_url}/${fileId}`
 });
diff --git a/src/remote/activitypub/renderer/like.ts b/src/remote/activitypub/renderer/like.ts
index 33e1341a20..523cb4f1ad 100644
--- a/src/remote/activitypub/renderer/like.ts
+++ b/src/remote/activitypub/renderer/like.ts
@@ -1,7 +1,8 @@
 import config from '../../../config';
 import { ILocalUser } from '../../../models/user';
+import { INote } from '../../../models/note';
 
-export default (user: ILocalUser, note, reaction: string) => ({
+export default (user: ILocalUser, note: INote, reaction: string) => ({
 	type: 'Like',
 	actor: `${config.url}/users/${user._id}`,
 	object: note.uri ? note.uri : `${config.url}/notes/${note._id}`,
diff --git a/src/remote/activitypub/renderer/mention.ts b/src/remote/activitypub/renderer/mention.ts
index 95cae52aa2..8d12e6d8bf 100644
--- a/src/remote/activitypub/renderer/mention.ts
+++ b/src/remote/activitypub/renderer/mention.ts
@@ -1,5 +1,5 @@
-import { IUser, isRemoteUser } from "../../../models/user";
-import config from "../../../config";
+import { IUser, isRemoteUser } from '../../../models/user';
+import config from '../../../config';
 
 export default (mention: IUser) => ({
 	type: 'Mention',
diff --git a/src/remote/activitypub/renderer/note.ts b/src/remote/activitypub/renderer/note.ts
index 556054fa93..b908f8bb1e 100644
--- a/src/remote/activitypub/renderer/note.ts
+++ b/src/remote/activitypub/renderer/note.ts
@@ -2,13 +2,13 @@ import renderDocument from './document';
 import renderHashtag from './hashtag';
 import renderMention from './mention';
 import config from '../../../config';
-import DriveFile from '../../../models/drive-file';
+import DriveFile, { IDriveFile } from '../../../models/drive-file';
 import Note, { INote } from '../../../models/note';
 import User from '../../../models/user';
 import toHtml from '../misc/get-note-html';
 
-export default async function renderNote(note: INote, dive = true) {
-	const promisedFiles = note.mediaIds
+export default async function renderNote(note: INote, dive = true): Promise<any> {
+	const promisedFiles: Promise<IDriveFile[]> = note.mediaIds
 		? DriveFile.find({ _id: { $in: note.mediaIds } })
 		: Promise.resolve([]);
 
diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts
index b2ac885f46..8825c56c25 100644
--- a/src/remote/activitypub/renderer/person.ts
+++ b/src/remote/activitypub/renderer/person.ts
@@ -16,8 +16,8 @@ export default (user: ILocalUser) => {
 		preferredUsername: user.username,
 		name: user.name,
 		summary: user.description,
-		icon: user.avatarId && renderImage({ _id: user.avatarId }),
-		image: user.bannerId && renderImage({ _id: user.bannerId }),
+		icon: user.avatarId && renderImage(user.avatarId),
+		image: user.bannerId && renderImage(user.bannerId),
 		manuallyApprovesFollowers: user.isLocked,
 		publicKey: renderKey(user)
 	};
diff --git a/src/remote/activitypub/renderer/undo.ts b/src/remote/activitypub/renderer/undo.ts
index f38e224b60..4498409a57 100644
--- a/src/remote/activitypub/renderer/undo.ts
+++ b/src/remote/activitypub/renderer/undo.ts
@@ -1,4 +1,4 @@
-export default object => ({
+export default (object: any) => ({
 	type: 'Undo',
 	object
 });
diff --git a/src/remote/activitypub/resolver.ts b/src/remote/activitypub/resolver.ts
index f405ff10c3..0b053ca774 100644
--- a/src/remote/activitypub/resolver.ts
+++ b/src/remote/activitypub/resolver.ts
@@ -12,7 +12,7 @@ export default class Resolver {
 		this.history = new Set();
 	}
 
-	public async resolveCollection(value) {
+	public async resolveCollection(value: any) {
 		const collection = typeof value === 'string'
 			? await this.resolve(value)
 			: value;
@@ -33,7 +33,7 @@ export default class Resolver {
 		return collection;
 	}
 
-	public async resolve(value): Promise<IObject> {
+	public async resolve(value: any): Promise<IObject> {
 		if (value == null) {
 			throw new Error('resolvee is null (or undefined)');
 		}
diff --git a/src/remote/resolve-user.ts b/src/remote/resolve-user.ts
index c612a8c949..1e8fc5d750 100644
--- a/src/remote/resolve-user.ts
+++ b/src/remote/resolve-user.ts
@@ -4,7 +4,7 @@ import webFinger from './webfinger';
 import config from '../config';
 import { createPerson } from './activitypub/models/person';
 
-export default async (username, _host, option?): Promise<IUser> => {
+export default async (username: string, _host: string, option?: any): Promise<IUser> => {
 	const usernameLower = username.toLowerCase();
 
 	if (_host == null) {
diff --git a/src/server/api/endpoints/aggregation/posts.ts b/src/server/api/endpoints/aggregation/posts.ts
index 9ada9cd3f5..48e344312d 100644
--- a/src/server/api/endpoints/aggregation/posts.ts
+++ b/src/server/api/endpoints/aggregation/posts.ts
@@ -49,13 +49,13 @@ module.exports = (params: any) => new Promise(async (res, rej) => {
 			} }
 		]);
 
-	datas.forEach(data => {
+	datas.forEach((data: any) => {
 		data.date = data._id;
 		delete data._id;
 
-		data.notes = (data.data.filter(x => x.type == 'note')[0] || { count: 0 }).count;
-		data.renotes = (data.data.filter(x => x.type == 'renote')[0] || { count: 0 }).count;
-		data.replies = (data.data.filter(x => x.type == 'reply')[0] || { count: 0 }).count;
+		data.notes = (data.data.filter((x: any) => x.type == 'note')[0] || { count: 0 }).count;
+		data.renotes = (data.data.filter((x: any) => x.type == 'renote')[0] || { count: 0 }).count;
+		data.replies = (data.data.filter((x: any) => x.type == 'reply')[0] || { count: 0 }).count;
 
 		delete data.data;
 	});
@@ -65,7 +65,7 @@ module.exports = (params: any) => new Promise(async (res, rej) => {
 	for (let i = 0; i < limit; i++) {
 		const day = new Date(new Date().setDate(new Date().getDate() - i));
 
-		const data = datas.filter(d =>
+		const data = datas.filter((d: any) =>
 			d.date.year == day.getFullYear() && d.date.month == day.getMonth() + 1 && d.date.day == day.getDate()
 		)[0];
 
diff --git a/src/server/api/endpoints/drive/files/upload_from_url.ts b/src/server/api/endpoints/drive/files/upload_from_url.ts
index c012f0d3c9..cb617d851f 100644
--- a/src/server/api/endpoints/drive/files/upload_from_url.ts
+++ b/src/server/api/endpoints/drive/files/upload_from_url.ts
@@ -4,11 +4,12 @@
 import $ from 'cafy'; import ID from '../../../../../cafy-id';
 import { pack } from '../../../../../models/drive-file';
 import uploadFromUrl from '../../../../../services/drive/upload-from-url';
+import { ILocalUser } from '../../../../../models/user';
 
 /**
  * Create a file from a URL
  */
-module.exports = async (params, user): Promise<any> => {
+module.exports = async (params: any, user: ILocalUser): Promise<any> => {
 	// Get 'url' parameter
 	// TODO: Validate this url
 	const [url, urlErr] = $.str.get(params.url);
diff --git a/src/server/api/endpoints/drive/folders.ts b/src/server/api/endpoints/drive/folders.ts
index fac9780325..3413778950 100644
--- a/src/server/api/endpoints/drive/folders.ts
+++ b/src/server/api/endpoints/drive/folders.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
 import $ from 'cafy'; import ID from '../../../../cafy-id';
 import DriveFolder, { pack } from '../../../../models/drive-folder';
+import { ILocalUser } from '../../../../models/user';
 
 /**
  * Get drive folders
  */
-module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 	// Get 'limit' parameter
 	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 	if (limitErr) return rej('invalid limit param');
diff --git a/src/services/drive/delete-file.ts b/src/services/drive/delete-file.ts
index a8ed13bd77..4ac60439b7 100644
--- a/src/services/drive/delete-file.ts
+++ b/src/services/drive/delete-file.ts
@@ -1,4 +1,4 @@
-import DriveFile, { DriveFileChunk, IDriveFile } from "../../models/drive-file";
+import DriveFile, { DriveFileChunk, IDriveFile } from '../../models/drive-file';
 import DriveFileThumbnail, { DriveFileThumbnailChunk } from '../../models/drive-file-thumbnail';
 
 export default async function(file: IDriveFile, isExpired = false) {
diff --git a/src/services/drive/upload-from-url.ts b/src/services/drive/upload-from-url.ts
index f83d57d415..73d9b1123a 100644
--- a/src/services/drive/upload-from-url.ts
+++ b/src/services/drive/upload-from-url.ts
@@ -9,7 +9,7 @@ import { IDriveFile, validateFileName } from '../../models/drive-file';
 import create from './add-file';
 import config from '../../config';
 import { IUser } from '../../models/user';
-import * as mongodb from "mongodb";
+import * as mongodb from 'mongodb';
 
 const log = debug('misskey:drive:upload-from-url');
 
diff --git a/src/services/following/requests/accept-all.ts b/src/services/following/requests/accept-all.ts
index 9708d9e658..45da004988 100644
--- a/src/services/following/requests/accept-all.ts
+++ b/src/services/following/requests/accept-all.ts
@@ -1,5 +1,5 @@
-import User, { IUser } from "../../../models/user";
-import FollowRequest from "../../../models/follow-request";
+import User, { IUser } from '../../../models/user';
+import FollowRequest from '../../../models/follow-request';
 import accept from './accept';
 
 /**
diff --git a/src/services/following/requests/accept.ts b/src/services/following/requests/accept.ts
index 1b89cdb981..2eaccbbd36 100644
--- a/src/services/following/requests/accept.ts
+++ b/src/services/following/requests/accept.ts
@@ -1,12 +1,12 @@
-import User, { IUser, isRemoteUser, ILocalUser, pack as packUser } from "../../../models/user";
-import FollowRequest from "../../../models/follow-request";
+import User, { IUser, isRemoteUser, ILocalUser, pack as packUser } from '../../../models/user';
+import FollowRequest from '../../../models/follow-request';
 import pack from '../../../remote/activitypub/renderer';
 import renderFollow from '../../../remote/activitypub/renderer/follow';
 import renderAccept from '../../../remote/activitypub/renderer/accept';
 import { deliver } from '../../../queue';
-import Following from "../../../models/following";
-import FollowingLog from "../../../models/following-log";
-import FollowedLog from "../../../models/followed-log";
+import Following from '../../../models/following';
+import FollowingLog from '../../../models/following-log';
+import FollowedLog from '../../../models/followed-log';
 import event from '../../../publishers/stream';
 
 export default async function(followee: IUser, follower: IUser) {
diff --git a/src/services/following/requests/cancel.ts b/src/services/following/requests/cancel.ts
index 50c95de0eb..7e9dc5630f 100644
--- a/src/services/following/requests/cancel.ts
+++ b/src/services/following/requests/cancel.ts
@@ -1,5 +1,5 @@
-import User, { IUser, isRemoteUser, ILocalUser, pack as packUser } from "../../../models/user";
-import FollowRequest from "../../../models/follow-request";
+import User, { IUser, isRemoteUser, ILocalUser, pack as packUser } from '../../../models/user';
+import FollowRequest from '../../../models/follow-request';
 import pack from '../../../remote/activitypub/renderer';
 import renderFollow from '../../../remote/activitypub/renderer/follow';
 import renderUndo from '../../../remote/activitypub/renderer/undo';
diff --git a/src/services/following/requests/reject.ts b/src/services/following/requests/reject.ts
index acd419d0ee..affcd2ef5a 100644
--- a/src/services/following/requests/reject.ts
+++ b/src/services/following/requests/reject.ts
@@ -1,5 +1,5 @@
-import User, { IUser, isRemoteUser, ILocalUser } from "../../../models/user";
-import FollowRequest from "../../../models/follow-request";
+import User, { IUser, isRemoteUser, ILocalUser } from '../../../models/user';
+import FollowRequest from '../../../models/follow-request';
 import pack from '../../../remote/activitypub/renderer';
 import renderFollow from '../../../remote/activitypub/renderer/follow';
 import renderReject from '../../../remote/activitypub/renderer/reject';
diff --git a/src/text/html.ts b/src/text/html.ts
index 41adb2e7f7..64208af88b 100644
--- a/src/text/html.ts
+++ b/src/text/html.ts
@@ -4,7 +4,7 @@ import config from '../config';
 import { INote } from '../models/note';
 import { TextElement } from './parse';
 
-const handlers: {[key: string]: (window: any, token: any, mentionedRemoteUsers: INote["mentionedRemoteUsers"]) => void} = {
+const handlers: { [key: string]: (window: any, token: any, mentionedRemoteUsers: INote['mentionedRemoteUsers']) => void } = {
 	bold({ document }, { bold }) {
 		const b = document.createElement('b');
 		b.textContent = bold;
diff --git a/src/text/parse/elements/bold.ts b/src/text/parse/elements/bold.ts
index 0566ace8b7..cf615cd3cc 100644
--- a/src/text/parse/elements/bold.ts
+++ b/src/text/parse/elements/bold.ts
@@ -3,7 +3,7 @@
  */
 
 export type TextElementBold = {
-	type: "bold"
+	type: 'bold'
 	content: string
 	bold: string
 };
diff --git a/src/text/parse/elements/code.ts b/src/text/parse/elements/code.ts
index de87aa410b..f48e945048 100644
--- a/src/text/parse/elements/code.ts
+++ b/src/text/parse/elements/code.ts
@@ -5,7 +5,7 @@
 import genHtml from '../core/syntax-highlighter';
 
 export type TextElementCode = {
-	type: "code"
+	type: 'code'
 	content: string
 	code: string
 	html: string
diff --git a/src/text/parse/elements/emoji.ts b/src/text/parse/elements/emoji.ts
index d0eed88965..83d3effef5 100644
--- a/src/text/parse/elements/emoji.ts
+++ b/src/text/parse/elements/emoji.ts
@@ -3,7 +3,7 @@
  */
 
 export type TextElementEmoji = {
-	type: "emoji"
+	type: 'emoji'
 	content: string
 	emoji: string
 };
diff --git a/src/text/parse/elements/hashtag.ts b/src/text/parse/elements/hashtag.ts
index cde0c2b224..129041774f 100644
--- a/src/text/parse/elements/hashtag.ts
+++ b/src/text/parse/elements/hashtag.ts
@@ -3,7 +3,7 @@
  */
 
 export type TextElementHashtag = {
-	type: "hashtag"
+	type: 'hashtag'
 	content: string
 	hashtag: string
 };
diff --git a/src/text/parse/elements/inline-code.ts b/src/text/parse/elements/inline-code.ts
index bcb0bca0ad..1dd5affa51 100644
--- a/src/text/parse/elements/inline-code.ts
+++ b/src/text/parse/elements/inline-code.ts
@@ -5,7 +5,7 @@
 import genHtml from '../core/syntax-highlighter';
 
 export type TextElementInlineCode = {
-	type: "inline-code"
+	type: 'inline-code'
 	content: string
 	code: string
 	html: string
diff --git a/src/text/parse/elements/link.ts b/src/text/parse/elements/link.ts
index 7e0d6f5cf8..b353aebc5c 100644
--- a/src/text/parse/elements/link.ts
+++ b/src/text/parse/elements/link.ts
@@ -3,7 +3,7 @@
  */
 
 export type TextElementLink = {
-	type: "link"
+	type: 'link'
 	content: string
 	title: string
 	url: string
diff --git a/src/text/parse/elements/mention.ts b/src/text/parse/elements/mention.ts
index a4140458d4..eda60b530a 100644
--- a/src/text/parse/elements/mention.ts
+++ b/src/text/parse/elements/mention.ts
@@ -4,7 +4,7 @@
 import parseAcct from '../../../acct/parse';
 
 export type TextElementMention = {
-	type: "mention"
+	type: 'mention'
 	content: string
 	username: string
 	host: string
diff --git a/src/text/parse/elements/quote.ts b/src/text/parse/elements/quote.ts
index 56de561f3f..bef9ad4988 100644
--- a/src/text/parse/elements/quote.ts
+++ b/src/text/parse/elements/quote.ts
@@ -3,7 +3,7 @@
  */
 
 export type TextElementQuote = {
-	type: "quote"
+	type: 'quote'
 	content: string
 	quote: string
 };
diff --git a/src/text/parse/elements/search.ts b/src/text/parse/elements/search.ts
index 4bd19ee3fa..e5d9b9f0c2 100644
--- a/src/text/parse/elements/search.ts
+++ b/src/text/parse/elements/search.ts
@@ -3,7 +3,7 @@
  */
 
 export type TextElementSearch = {
-	type: "search"
+	type: 'search'
 	content: string
 	query: string
 };
diff --git a/src/text/parse/elements/title.ts b/src/text/parse/elements/title.ts
index 11b3abc61b..b89739a7c5 100644
--- a/src/text/parse/elements/title.ts
+++ b/src/text/parse/elements/title.ts
@@ -3,7 +3,7 @@
  */
 
 export type TextElementTitle = {
-	type: "title"
+	type: 'title'
 	content: string
 	title: string
 };
diff --git a/src/text/parse/elements/url.ts b/src/text/parse/elements/url.ts
index bbc27b4fd7..78b9b1f2f1 100644
--- a/src/text/parse/elements/url.ts
+++ b/src/text/parse/elements/url.ts
@@ -3,7 +3,7 @@
  */
 
 export type TextElementUrl = {
-	type: "url"
+	type: 'url'
 	content: string
 	url: string
 };
diff --git a/src/text/parse/index.ts b/src/text/parse/index.ts
index ccfef44591..2b6a459b1e 100644
--- a/src/text/parse/index.ts
+++ b/src/text/parse/index.ts
@@ -2,17 +2,17 @@
  * Misskey Text Analyzer
  */
 
-import { TextElementBold } from "./elements/bold";
-import { TextElementCode } from "./elements/code";
-import { TextElementEmoji } from "./elements/emoji";
-import { TextElementHashtag } from "./elements/hashtag";
-import { TextElementInlineCode } from "./elements/inline-code";
-import { TextElementLink } from "./elements/link";
-import { TextElementMention } from "./elements/mention";
-import { TextElementQuote } from "./elements/quote";
-import { TextElementSearch } from "./elements/search";
-import { TextElementTitle } from "./elements/title";
-import { TextElementUrl } from "./elements/url";
+import { TextElementBold } from './elements/bold';
+import { TextElementCode } from './elements/code';
+import { TextElementEmoji } from './elements/emoji';
+import { TextElementHashtag } from './elements/hashtag';
+import { TextElementInlineCode } from './elements/inline-code';
+import { TextElementLink } from './elements/link';
+import { TextElementMention } from './elements/mention';
+import { TextElementQuote } from './elements/quote';
+import { TextElementSearch } from './elements/search';
+import { TextElementTitle } from './elements/title';
+import { TextElementUrl } from './elements/url';
 
 const elements = [
 	require('./elements/bold'),
@@ -28,7 +28,7 @@ const elements = [
 	require('./elements/search')
 ].map(element => element.default as TextElementProcessor);
 
-export type TextElement = {type: "text", content: string}
+export type TextElement = { type: 'text', content: string }
 	| TextElementBold
 	| TextElementCode
 	| TextElementEmoji