1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに頼り切ってタスク管理アプリを作成する。:設計編

1
Last updated at Posted at 2026-05-11

はじめに

AIに頼ったアプリ開発の経験があまりないため、実験してみました。

仕様

開発環境 : C.net(WinForms)
アプリ仕様 :

winformsで動作 各タスクには子タスクを登録でき、階層は無制限
タスク情報は外部ファイル出力により管理

AIへ質問

まずは設計してもらいます。

プロンプト

C#.netでタスク管理アプリを作成したい。
winformsで動作 各タスクには子タスクを登録でき、階層は無制限としたい。
タスク情報は外部ファイル出力により管理したい。
画面は以下を想定している。

・タスク登録画面
・タスク詳細画面
・タスク一覧画面
・WBS表示

上記より、設計をしてください

回答結果

C#.NET タスク管理アプリ設計(WinForms)
要件から見ると、以下の特徴を持つ業務向けタスク管理システムになります。

WinForms デスクトップアプリ
無制限階層のタスク管理
WBS表示
外部ファイル保存
タスク詳細/一覧/登録画面
将来的な拡張性を考慮
そのため、以下方針を推奨します。

推奨アーキテクチャ

WinFormsでも、ロジック分離を強く推奨します。

TaskManager
├─ Domain         ← エンティティ
├─ Services       ← 業務ロジック
├─ Infrastructure ← ファイル保存
├─ Forms          ← WinForms画面
├─ ViewModels     ← 画面用データ
└─ Program.cs

全体構成

TaskManager
├─ Domain
│   ├─ TaskItem.cs
│   ├─ TaskStatus.cs
│   ├─ Priority.cs
│   └─ WbsNode.cs
│
├─ Services
│   ├─ TaskService.cs
│   ├─ WbsService.cs
│   └─ ValidationService.cs
│
├─ Infrastructure
│   ├─ ITaskRepository.cs
│   ├─ JsonTaskRepository.cs
│   └─ FileManager.cs
│
├─ ViewModels
│   ├─ TaskTreeNodeViewModel.cs
│   └─ TaskListItemViewModel.cs
│
├─ Forms
│   ├─ MainForm.cs
│   ├─ TaskListForm.cs
│   ├─ TaskDetailForm.cs
│   ├─ TaskEditForm.cs
│   └─ WbsForm.cs
│
└─ Data
    └─ tasks.json

ドメイン設計
TaskItem.cs

最重要クラスです。

無制限階層の考え方

親子関係を ParentTaskId で管理します。

タスクA
 ├─ タスクB
 │   ├─ タスクC
 │   │   └─ タスクD

この構造を再帰で扱います。

Repository設計
WinFormsではファイルアクセスを分離すべきです。

JsonTaskRepository.cs
JSON保存推奨です。
理由:
・人間が読める
・デバッグ容易
・階層構造と相性が良い
・DB移行しやすい

[
  {
    "Id": "xxx",
    "Title": "親タスク",
    "Children": [
      {
        "Title": "子タスク"
      }
    ]
  }
]

サービス設計:TaskService.cs

役割:
・タスク追加
・更新
・削除
・階層構築
・検索
・ソート

WbsService.cs
WBS表示専用ロジック。

画面設計

  1. メイン画面:MainForm
    役割:
    ・各画面への遷移
    ・全体メニュー

構成

+----------------------------------+
| メニュー                         |
+----------------------------------+
| [一覧] [WBS] [新規作成]         |
+----------------------------------+
  1. タスク一覧画面:TaskListForm
    最も利用頻度が高い画面。

推奨UI

+------------------------------------------------------+
| 検索BOX                                              |
+------------------------------------------------------+
| TreeView or DataGridView                             |
|                                                      |
| ▼ 親タスク                                           |
|    ▼ 子タスク                                        |
|       ▼ 孫タスク                                     |
+------------------------------------------------------+
| [追加] [編集] [削除]                                 |
+------------------------------------------------------+

推奨コントロール

用途 コントロール
階層表示 TreeView
表形式 DataGridView
検索 TextBox
  1. タスク詳細画面:TaskDetailForm
    表示項目
タスク名
説明
ステータス
優先度
開始日
終了日
進捗率
親タスク
子タスク一覧

UIイメージ

+------------------------------+
| タスク詳細                   |
+------------------------------+
| タイトル                     |
| [____________________]       |
|                              |
| 説明                         |
| [                    ]       |
| [                    ]       |
|                              |
| ステータス                   |
| [InProgress ▼]               |
|                              |
| 進捗率                       |
| [===== 50% =====]            |
+------------------------------+
  1. タスク登録/編集画面:TaskEditForm
    詳細画面と分離推奨。

理由:

View/Update責務分離
保守しやすい
将来的な入力チェック強化

入力項目

項目
タイトル TextBox
説明 TextBox(Multiline)
優先度 ComboBox
ステータス ComboBox
開始日 DateTimePicker
終了日 DateTimePicker
親タスク TreeView or ComboBox
  1. WBS画面:WbsForm
    このシステムの核。

WBS表示方法
WinFormsなら以下が現実的。

方法 推奨度
TreeView ★★★★★
DataGridView + インデント ★★★★
Gantt風自作描画 ★★★

推奨構成

+--------------------------------------------------+
| WBS                                              |
+--------------------------------------------------+
| ▼ プロジェクト                                   |
|   ├─ 要件定義                                    |
|   ├─ 設計                                        |
|   │   ├─ 基本設計                                |
|   │   └─ 詳細設計                                |
|   └─ 実装                                        |
+--------------------------------------------------+

WBS番号生成:自動採番推奨。

1
1.1
1.1.1
1.1.2
1.2

保存形式設計:JSON推奨
保存タイミング

タイミング 推奨
編集時即保存
アプリ終了時
手動保存
即保存推奨です。

将来拡張を考慮した設計
将来追加しやすい機能

機能 対応しやすさ
ガントチャート
SQLite化
ユーザー管理
タグ機能
通知
工数管理
CSV出力

技術的推奨事項
TreeViewの重要性

無限階層なのでTreeViewが中心になります。

TreeNode node = new TreeNode(task.Title);
node.Tag = task;
再帰処理必須

子タスク表示:

void BuildTree(TreeNode parent, TaskItem task)
{
foreach(var child in task.Children)
{
TreeNode node = new TreeNode(child.Title);

    parent.Nodes.Add(node);

    BuildTree(node, child);
}

}
推奨NuGet

JSON用:

System.Text.Json

または

Newtonsoft.Json
DB化する場合の推奨

将来的にはSQLite推奨。

理由:

階層検索しやすい
大量タスクに強い
排他制御しやすい

ただし初期はJSONで十分です。

最終推奨構成

以下構成が最もバランス良いです。

項目 推奨
UI WinForms
階層表示 TreeView
保存 JSON
ロジック Service分離
データアクセス Repository
WBS 再帰Tree構造
ID Guid
検索 LINQ
開発順序(重要)

以下順で作ると破綻しにくいです。

  1. Domain作成
  2. JSON保存作成
  3. TaskService作成
  4. TreeView表示
  5. タスク登録
  6. タスク編集
  7. WBS生成
  8. 検索
  9. バリデーション

最後に

今回は一旦設計まで
次回は実際のコードもAIに記載してもらい、実装していきます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?