td2skさんのsource参考に色々mergeして作成しました。