迷いどころ：ロジックが複雑すぎ
結果、共通化しづらい。

もっといい解法が無いか？