書き直したプログラムできちんと動作するように調整してみた。