diff --git a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/ToDoConfig.java b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/ToDoConfig.java
new file mode 100644
index 0000000..677f5fa
--- /dev/null
+++ b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/ToDoConfig.java
@@ -0,0 +1,22 @@
+package jp.ac.kobe_u.cs.itspecialist.todoapp;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.List;
+
+@Configuration
+public class ToDoConfig implements WebMvcConfigurer {
+
+    @Override
+    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
+        PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
+        //ページ単位に表示する件数
+        resolver.setFallbackPageable(PageRequest.of(0, 5));
+        argumentResolvers.add(resolver);
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoController.java b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoController.java
index 6b20956..7d41716 100644
--- a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoController.java
+++ b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoController.java
@@ -3,6 +3,8 @@ package jp.ac.kobe_u.cs.itspecialist.todoapp.controller;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.validation.BindingResult;
@@ -54,13 +56,14 @@ public class ToDoController {
      * ユーザのToDoリストのページ
      */
     @GetMapping("/{mid}/todos")
-    String showToDoList(@PathVariable String mid, @ModelAttribute(name = "ToDoForm") ToDoForm form, Model model) {
+    String showToDoList(@PathVariable String mid, @ModelAttribute(name = "ToDoForm") ToDoForm form,
+                        Model model, Pageable pageable) {
         Member m = mService.getMember(mid);
         model.addAttribute("member", m);
         model.addAttribute("ToDoForm", form);
-        List<ToDo> todos = tService.getToDoList(mid);
+        Page<ToDo> todos = tService.getToDoList(mid, pageable);
         model.addAttribute("todos", todos);
-        List<ToDo> dones = tService.getDoneList(mid);
+        Page<ToDo> dones = tService.getDoneList(mid, pageable);
         model.addAttribute("dones", dones);
         return "list";
     }
@@ -69,12 +72,12 @@ public class ToDoController {
      * 全員のToDoリストのページ
      */
     @GetMapping("/{mid}/todos/all")
-    String showAllToDoList(@PathVariable String mid, Model model) {
+    String showAllToDoList(@PathVariable String mid, Model model, Pageable pageable) {
         Member m = mService.getMember(mid);
         model.addAttribute("member", m);
-        List<ToDo> todos = tService.getToDoList();
+        Page<ToDo> todos = tService.getToDoList(pageable);
         model.addAttribute("todos", todos);
-        List<ToDo> dones = tService.getDoneList();
+        Page<ToDo> dones = tService.getDoneList(pageable);
         model.addAttribute("dones", dones);
         return "alllist";
     }
@@ -85,10 +88,9 @@ public class ToDoController {
     @PostMapping("/{mid}/todos")
     String createToDo(@PathVariable String mid, @Validated @ModelAttribute(name = "ToDoForm") ToDoForm form,
             BindingResult bindingResult, Model model) {
-        if (bindingResult.hasErrors()) {
-            return showToDoList(mid, form, model);
+        if (!bindingResult.hasErrors()) {
+            tService.createToDo(mid, form);
         }
-        tService.createToDo(mid, form);
         return "redirect:/" + mid + "/todos";
     }
 
diff --git a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoRestController.java b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoRestController.java
index 1862695..4142359 100644
--- a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoRestController.java
+++ b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoRestController.java
@@ -49,13 +49,13 @@ public class ToDoRestController {
     /* --- R: ToDoを取得する (リスト) --- */
     @GetMapping("/{mid}/todos")
     List<ToDo> getToDoList(@PathVariable String mid) {
-        return todoService.getToDoList(mid);
+        return todoService.getToDoAllList(mid);
     }
 
     /* --- R: Doneを取得する (リスト) --- */
     @GetMapping("/{mid}/dones")
     List<ToDo> getDoneList(@PathVariable String mid) {
-        return todoService.getDoneList(mid);
+        return todoService.getDoneAllList(mid);
     }
 
     /* --- U: ToDoを完了する --- */
diff --git a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/repository/ToDoRepository.java b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/repository/ToDoRepository.java
index 4d7767c..d1b4a20 100644
--- a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/repository/ToDoRepository.java
+++ b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/repository/ToDoRepository.java
@@ -2,6 +2,8 @@ package jp.ac.kobe_u.cs.itspecialist.todoapp.repository;
 
 import java.util.List;
 
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.repository.CrudRepository;
 import org.springframework.stereotype.Repository;
 
@@ -9,8 +11,9 @@ import jp.ac.kobe_u.cs.itspecialist.todoapp.entity.ToDo;
 
 @Repository
 public interface ToDoRepository extends CrudRepository<ToDo, Long> {
-    List<ToDo> findAll();
-    List<ToDo> findByDone(boolean done);
-    List<ToDo> findByMid(String mid);
+    Page<ToDo> findAll(Pageable pageable);
+    Page<ToDo> findByDone(boolean done, Pageable pageable);
+    Page<ToDo> findByMid(String mid, Pageable pageable);
+    Page<ToDo> findByMidAndDone(String mid, boolean done, Pageable pageable);
     List<ToDo> findByMidAndDone(String mid, boolean done);
 }
diff --git a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/service/ToDoService.java b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/service/ToDoService.java
index 57a6371..5814047 100644
--- a/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/service/ToDoService.java
+++ b/src/main/java/jp/ac/kobe_u/cs/itspecialist/todoapp/service/ToDoService.java
@@ -4,6 +4,8 @@ import java.util.Date;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 import jp.ac.kobe_u.cs.itspecialist.todoapp.dto.ToDoForm;
@@ -43,37 +45,46 @@ public class ToDoService {
         return todo;
     }
 
+    public List<ToDo> getToDoAllList(String mid) {
+        return tRepo.findByMidAndDone(mid, false);
+    }
+
     /**
      * あるメンバーのToDoリストを取得する (R)
      * @param mid
      * @return
      */
-    public List<ToDo> getToDoList(String mid) {
-        return tRepo.findByMidAndDone(mid, false);
+    public Page<ToDo> getToDoList(String mid, Pageable pageable) {
+        return tRepo.findByMidAndDone(mid, false, pageable);
     }
+
+    public List<ToDo> getDoneAllList(String mid) {
+        return tRepo.findByMidAndDone(mid, true);
+    }
+
     /**
      * あるメンバーのDoneリストを取得する (R)
      * @param mid
      * @return
      */
-    public List<ToDo> getDoneList(String mid) {
-        return tRepo.findByMidAndDone(mid, true);
+    public Page<ToDo> getDoneList(String mid, Pageable pageable) {
+        return tRepo.findByMidAndDone(mid, true, pageable);
     }
 
     /**
      * 全員のToDoリストを取得する (R)
      * @return
      */
-    public List<ToDo> getToDoList() {
-        return tRepo.findByDone(false);
+    public Page<ToDo> getToDoList(Pageable pageable) {
+        return tRepo.findByDone(false, pageable);
     }
 
     /**
      * 全員のDoneリストを取得する (R)
      * @return
      */
-    public List<ToDo> getDoneList() {
-        return tRepo.findByDone(true);
+    public Page<ToDo> getDoneList(Pageable pageable) {
+        return tRepo.findByDone(true, pageable);
     }
 
 
diff --git a/src/main/resources/templates/alllist.html b/src/main/resources/templates/alllist.html
index 8580517..c27c2b9 100644
--- a/src/main/resources/templates/alllist.html
+++ b/src/main/resources/templates/alllist.html
@@ -27,6 +27,24 @@
             <td>[[${todo.createdAt}]]</td>
         </tr>
     </table>
+    <div th:fragment="paginationbar">
+        <ul>
+            <li th:class="${todos.first}? 'disabled': ''" style="display:inline">
+                <span th:if="${todos.first}">&lt;&lt;</span>
+                <a th:if="${not todos.first}" th:href="@{${url}(page=0)}">&lt;&lt;</a>
+            </li>
+            <li th:if="${todos.totalPages} > 0" th:each="i: ${#numbers.sequence(0, todos.totalPages-1)}" th:class="(${i}==${todos.number})?'active': ''" style="display:inline">
+                <span th:if="${i} == ${todos.number}" th:text="${i+1}">1</span>
+                <a th:if="${i}!=${todos.number}" th:href="@{${url}(page=${i})}">
+                    <span th:text="${i+1}">1</span>
+                </a>
+            </li>
+            <li th:class="${todos.last}? 'disabled': ''" style="display:inline">
+                <span th:if="${todos.last}">&gt;&gt;</span>
+                <a th:if="${not todos.last}" th:href="@{${url}(page=(${todos.totalPages}-1))}">&gt;&gt;</a>
+            </li>
+        </ul>
+    </div>
 
     <h2>Done</h2>
     <table border="1">
@@ -43,7 +61,24 @@
             <td>[[${done.doneAt}]]</td>
         </tr>
     </table>
-
+    <div th:fragment="paginationbar">
+        <ul>
+            <li th:class="${dones.first}? 'disabled': ''" style="display:inline">
+                <span th:if="${dones.first}">&lt;&lt;</span>
+                <a th:if="${not dones.first}" th:href="@{${url}(page=0)}">&lt;&lt;</a>
+            </li>
+            <li th:if="${dones.totalPages} > 0" th:each="i: ${#numbers.sequence(0, dones.totalPages-1)}" th:class="(${i}==${dones.number})?'active': ''" style="display:inline">
+                <span th:if="${i} == ${dones.number}" th:text="${i+1}">1</span>
+                <a th:if="${i}!=${dones.number}" th:href="@{${url}(page=${i})}">
+                    <span th:text="${i+1}">1</span>
+                </a>
+            </li>
+            <li th:class="${dones.last}? 'disabled': ''" style="display:inline">
+                <span th:if="${dones.last}">&gt;&gt;</span>
+                <a th:if="${not dones.last}" th:href="@{${url}(page=(${dones.totalPages}-1))}">&gt;&gt;</a>
+            </li>
+        </ul>
+    </div>
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/main/resources/templates/list.html b/src/main/resources/templates/list.html
index a2939b9..4a21f1a 100644
--- a/src/main/resources/templates/list.html
+++ b/src/main/resources/templates/list.html
@@ -41,6 +41,24 @@
             </td>
         </tr>
     </table>
+    <div th:fragment="paginationbar">
+        <ul>
+            <li th:class="${todos.first}? 'disabled': ''" style="display:inline">
+                <span th:if="${todos.first}">&lt;&lt;</span>
+                <a th:if="${not todos.first}" th:href="@{${url}(page=0)}">&lt;&lt;</a>
+            </li>
+            <li th:if="${todos.totalPages} > 0" th:each="i: ${#numbers.sequence(0, todos.totalPages-1)}" th:class="(${i}==${todos.number})?'active': ''" style="display:inline">
+                <span th:if="${i} == ${todos.number}" th:text="${i+1}">1</span>
+                <a th:if="${i}!=${todos.number}" th:href="@{${url}(page=${i})}">
+                    <span th:text="${i+1}">1</span>
+                </a>
+            </li>
+            <li th:class="${todos.last}? 'disabled': ''" style="display:inline">
+                <span th:if="${todos.last}">&gt;&gt;</span>
+                <a th:if="${not todos.last}" th:href="@{${url}(page=(${todos.totalPages}-1))}">&gt;&gt;</a>
+            </li>
+        </ul>
+    </div>
 
     <h2>Done</h2>
     <table border="1">
@@ -57,7 +75,24 @@
             <td>[[${done.doneAt}]]</td>
         </tr>
     </table>
-
+    <div th:fragment="paginationbar">
+        <ul>
+            <li th:class="${dones.first}? 'disabled': ''" style="display:inline">
+                <span th:if="${dones.first}">&lt;&lt;</span>
+                <a th:if="${not dones.first}" th:href="@{${url}(page=0)}">&lt;&lt;</a>
+            </li>
+            <li th:if="${dones.totalPages} > 0" th:each="i: ${#numbers.sequence(0, dones.totalPages-1)}" th:class="(${i}==${dones.number})?'active': ''" style="display:inline">
+                <span th:if="${i} == ${dones.number}" th:text="${i+1}">1</span>
+                <a th:if="${i}!=${dones.number}" th:href="@{${url}(page=${i})}">
+                    <span th:text="${i+1}">1</span>
+                </a>
+            </li>
+            <li th:class="${dones.last}? 'disabled': ''" style="display:inline">
+                <span th:if="${dones.last}">&gt;&gt;</span>
+                <a th:if="${not dones.last}" th:href="@{${url}(page=(${dones.totalPages}-1))}">&gt;&gt;</a>
+            </li>
+        </ul>
+    </div>
 </body>
 
 </html>
\ No newline at end of file