Feature refactor

リファクタ

根本の設計を調整
CLIライブラリによるオプション処理の実装
メソッド切り出し
クラス切り出し
パフォーマンスチューニング
バグフィックス　二分探索のミスを修正
デバッグオプションの追加（かかった時間の表示）