独自モナド定義する意味ないしStateTとMaybeTにした
depends on MaybeT