※随時更新中です。
自己紹介
駆け出しエンジニア。
前社はハズレSESでエンジニアとしての経験が積めずに今は2社目。
エンジニアとして経験を積めるようにアピールする材料として学習記録の記事を書いていきます。
概要
C#を使ってToDoアプリを作る。
簡単でもいいので実務想定で作っていく。
ChatGPTに頼りまくる。
流れ
- 環境構築
- プロジェクトの作成
- 要件定義
- 設計
- 構築
- テスト
- Gitの使用
- Dockerの使用
- デプロイと改善
環境構築
- .NET SDK のインストール
- VScodeのインストール
- Gitのインストール
- Dockerのインストール
プロジェクトのファイル構成
dotnet new webapi -n ToDoApp
WEB APIプロジェクトの作成
cd ToDoApp
プロジェクトに移動する
プロジェクト構成↓
ToDoApp/
├── Controllers/
│ └── ToDoController.cs # APIエンドポイント
├── Models/
│ └── ToDoItem.cs # ToDoアイテムのデータ構造
├── Repositories/
│ └── IToDoRepository.cs # リポジトリインターフェース
│ └── ToDoRepository.cs # データ操作のロジック
├── Services/
│ └── ToDoService.cs # ビジネスロジック
├── Dockerfile # Dockerの設定ファイル
├── docker-compose.yml # Docker Compose設定
├── Program.cs # アプリケーションのエントリーポイント
└── Startup.cs # アプリケーション設定
要件定義
機能一覧:
1. ToDoアイテムの追加: ユーザーが新しいタスクを追加できる。
2. ToDoアイテムの一覧表示: すべてのタスクを表示できる。
3. ToDoアイテムの編集: タスクの内容や完了状態を更新できる。
4. ToDoアイテムの削除: 不要なタスクを削除できる。
5. 状態の更新: タスクが完了済みか未完了かを設定できる。
基本的な仕様:
• データの保持方法: 初期はインメモリ(後でデータベースに変更)
• APIエンドポイント:
• POST /api/todo(新規追加)
• GET /api/todo(一覧表示)
• PUT /api/todo/{id}(更新)
• DELETE /api/todo/{id}(削除)
設計
モデルの設計
・ToDoItem.csをModelsフォルダに作成し、ToDoアイテムの構造を定義します。
public class ToDoItem
{
public int Id { get; set; }
public string Title { get; set; }
public bool IsComplete { get; set; }
}
リポジトリパターンの設計
・IToDoRepository.cs: リポジトリのインターフェースを作成し、CRUDメソッドのインターフェースを定義します。
・ToDoRepository.cs: リポジトリ実装クラスを作成し、メモリ内でのデータ管理を行います。
サービスの設計
・ToDoService.cs: ビジネスロジック(タスク管理)をサービスクラスに分離します。
コントローラの設計
・ToDoController.cs: Controllersフォルダに作成し、APIエンドポイントとリクエスト処理を定義します。