モデル定義とサービス層の作成|Blazor Todoアプリ構築 |ASP.NET×Blazor入門 11.2
11.2 モデル定義、サービス層作成
このセクションでは、Todoアプリに必要なモデル(データ構造)と、それを操作するサービス層の作成について詳しく説明します。 モデルはアプリケーションの土台であり、サービス層はそれを操作する「ビジネスロジックの窓口」です。
1. Todoモデルの定義
タスクの1件を表すクラスとして TodoItem を定義します。最小限のプロパティから開始し、必要に応じて拡張します。
public class TodoItem
{
public int Id { get; set; } // 一意の識別子
public string Title { get; set; } // タスクのタイトル
public string? Description { get; set; } // 詳細説明(省略可)
public bool IsCompleted { get; set; } // 完了状態
public DateTime CreatedAt { get; set; } // 作成日時
}
2. サービスインターフェースの定義
テストや保守性を考慮し、インターフェース ITodoService を定義してから実装を行います。
public interface ITodoService
{
Task> GetTodosAsync();
Task GetTodoByIdAsync(int id);
Task AddTodoAsync(TodoItem item);
Task UpdateTodoAsync(TodoItem item);
Task DeleteTodoAsync(int id);
}
3. モック実装の作成
最初はAPIとの接続ではなく、インメモリで動作するモック実装を用意します。
public class TodoService : ITodoService
{
private List _items = new();
public Task> GetTodosAsync()
=> Task.FromResult(_items);
public Task GetTodoByIdAsync(int id)
=> Task.FromResult(_items.FirstOrDefault(t => t.Id == id));
public Task AddTodoAsync(TodoItem item)
{
item.Id = _items.Count + 1;
item.CreatedAt = DateTime.Now;
_items.Add(item);
return Task.CompletedTask;
}
public Task UpdateTodoAsync(TodoItem item)
{
var existing = _items.FirstOrDefault(t => t.Id == item.Id);
if (existing != null)
{
existing.Title = item.Title;
existing.Description = item.Description;
existing.IsCompleted = item.IsCompleted;
}
return Task.CompletedTask;
}
public Task DeleteTodoAsync(int id)
{
_items.RemoveAll(t => t.Id == id);
return Task.CompletedTask;
}
}
4. DIへの登録
最後に、Program.cs または Startup.cs に以下を追加してDIにサービスを登録します。
builder.Services.AddSingleton<ITodoService, TodoService>();
これでアプリ全体で ITodoService を介してタスクデータを扱う準備が整いました。 次のセクションでは、コンポーネント分割、リスト表示、編集機能 に進み、UIの実装へと入っていきましょう。
2025-05-18
下田 昌平
開発に関するインプットをアウトプットしています。タグ
検索ログ
Blazor API連携 1159
Blazor テスト 1152
Blazor リスト表示 1140
Razor入門 1101
フォルダ構成 1056
Blazor 自動化 1052
AIとPython 1049
HTMLとC 1043
Blazor JSON表示 1041
Blazor データ取得 1008
Blazor 運用 1002
使い分け 1002
フォーム入力 996
Blazor エラー処理 995
入門 995
UI操作 991
Blazor 非同期通信 989
Blazor サーバー通信 988
Blazor 初期処理 986
Python入門 983
依存性注入 979
Blazor 非同期処理 978
.NET HttpClient 使い方 967
HttpClient 例外処理 965
API呼び出し Blazor 957
Blazor入門 957
Blazor コンポーネント初期化 944
HttpClient 使い方 942
Pythonとは 927
bUnit使い方 907
開発・技術相談
システム開発や技術検証、要件定義の作成、アーキテクチャ設計、 テスト設計、運用設計まで、一気通貫で支援しています。 企画段階の「まず相談したい」レベルから、実装・運用まで 幅広く対応できますので、お気軽にお問い合わせください。
お問い合わせ