機能要求を一通り実装。異常系は未確認ですごめんなさい