@libere18 さんのを fork したので自分用に書き換え開始