diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..73a1f7d
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,16 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "java",
+ "name": "Launch Spring Boot App (local profile)",
+ "request": "launch",
+ "cwd": "${workspaceFolder}/backend",
+ "mainClass": "com.example.todoapp.TodoApplication",
+ "projectName": "todo-app",
+ "args": "",
+ "envFile": "${workspaceFolder}/backend/.env",
+ "vmArgs": "-Dspring.profiles.active=local"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/example/todoapp/controller/StocksController.java b/backend/src/main/java/com/example/todoapp/controller/StocksController.java
new file mode 100644
index 0000000..8de929c
--- /dev/null
+++ b/backend/src/main/java/com/example/todoapp/controller/StocksController.java
@@ -0,0 +1,148 @@
+package com.example.todoapp.controller;
+
+import com.example.todoapp.dto.ResponseStockDTO;
+import com.example.todoapp.dto.DeleteStockRequest;
+import com.example.todoapp.dto.StockDTO;
+import com.example.todoapp.model.Stocks;
+import com.example.todoapp.model.User;
+import com.example.todoapp.repository.UserRepository;
+import com.example.todoapp.service.StocksService;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 在庫管理のコントローラー
+ *
+ * このコントローラーは在庫の取得、作成、更新、削除などの
+ * エンドポイントを提供します。すべてのエンドポイントは認証が必要です。
+ *
+ */
+@RestController
+@RequestMapping("/stocks")
+public class StocksController {
+
+ @Autowired
+ private StocksService stockService;
+
+ @Autowired
+ private UserRepository userRepository;
+
+ /**
+ * ログインユーザーのすべての在庫を取得する
+ *
+ * @param authentication 認証情報
+ * @return ユーザーの在庫リスト
+ */
+ @GetMapping("/get")
+ public ResponseEntity> getAllStocks(Authentication authentication) {
+ List stocks = stockService.getALLStocksByUser(authentication.getName());
+ // エンティティからDTOへの変換
+ List stockDTOs = stocks.stream()
+ .map(ResponseStockDTO::fromEntity)
+ .collect(Collectors.toList());
+ return ResponseEntity.ok(stockDTOs);
+ }
+
+ /**
+ * 指定されたIDの在庫を取得する
+ *
+ * @param authentication 認証情報
+ * @param stockId 在庫ID
+ * @return 在庫情報
+ */
+ @GetMapping("/{id}")
+ public ResponseEntity getStockById(
+ Authentication authentication,
+ @PathVariable("id") Long stockId) {
+ Stocks stock = stockService.getStockById(authentication.getName(), stockId);
+ return ResponseEntity.ok(StockDTO.fromEntity(stock));
+ }
+
+ /**
+ * 新しい在庫を作成する
+ *
+ * @param authentication 認証情報
+ * @param stock 作成する在庫の情報
+ * @return 作成された在庫
+ */
+ @PostMapping("/add")
+ public ResponseEntity createStock(
+ Authentication authentication,
+ @Valid @RequestBody Stocks stock) {
+ Stocks createdStock = stockService.createStock(authentication.getName(), stock);
+ return ResponseEntity.ok(StockDTO.fromEntity(createdStock));
+ }
+
+ /**
+ * 指定されたIDの在庫を更新する
+ *
+ * @param authentication 認証情報
+ * @param stockId 更新する在庫のID
+ * @param stockDetails 更新内容
+ * @return 更新された在庫
+ */
+ @PutMapping("/update")
+ public ResponseEntity