以前実装した分

かなりコードは適当なので参考程度に。