Python学習およびポートフォリオ作成を目的として開発した、CLIベースのタスク管理アプリケーションです。
Python3エンジニア認定実践試験の学習範囲を、実際のアプリケーション開発を通して体系的に学ぶことを目的として作成しました。
ターミナル上で動作するTodo管理ツールです。
タスクの追加・更新・削除・検索に加え、JSONによる永続化、CSVエクスポート、ログ出力、GitHub ActionsによるCI環境を実装しています。
また、Richによる見やすいUI表示やQuestionaryによる入力補助を導入し、CLIアプリケーションとしての操作性向上にも取り組みました。
- Todo追加
- Todo一覧表示
- Todo更新
- Todo削除
- Todo検索
- 優先度管理(Enum)
- ステータス管理
- 締切日時管理
- 期限超過判定
- UUIDによる一意管理
- JSON保存・読込
- CSVエクスポート
- 自動バックアップ
- RichによるUI表示
- Questionaryによる対話型入力補助
- argparseによるコマンドライン引数対応
- logging出力
- デコレータによる処理時間計測・操作ログ出力
- GitHub ActionsによるCI
| 分類 | 技術 |
|---|---|
| Language | Python 3.13 |
| Package Management | uv |
| Testing | Pytest |
| Linter | Ruff |
| Type Check | Mypy |
| CLI UI | Rich, Questionary |
| CLI Parser | argparse |
| CI/CD | GitHub Actions |
src/
└── todo/
├── cli.py
├── main.py
├── models.py
├── todo_manager.py
├── json_storage.py
└── decorators.py
tests/
└── test_todo_manager.py
data/
├── backup/
├── exports/
└── logs/
- Python 3.13以上
- uv
uvがインストールされていない場合は以下を実行してください。
pip install uvgit clone <repository-url>
cd Python-Todo-Cli
uv syncメニューを選択しながら操作できます。
uv run python -m src.todo.mainTodo一覧表示
uv run python -m src.todo.main listTodo検索
uv run python -m src.todo.main search "タスク名"uv run pytestuv run ruff check .uv run mypy .GitHub Actionsを利用したCIパイプラインを構築しています。
ジョブを以下の2段階に分離し、静的解析に成功した場合のみテストを実行する構成としています。
- Ruff
- Mypy
- Pytest
test:
needs: lint上記により、Lintエラーが発生した場合は不要なテスト実行をスキップできます。
- Todo生成
- UUID生成確認
- 期限超過判定
- Todo ⇔ dict変換
- Todo追加
- Todo更新
- Todo削除
- Todo検索
- Todo一覧ソート
- JSON保存
- JSON読込
- JSON破損時の動作確認
- CSVエクスポート
- 存在しないTodoの検索
- 存在しないTodoの更新
- 存在しないTodoの削除
本プロジェクトでは以下の技術要素を重点的に学習・実践しました。
- dataclass
- Enum
- UUID
- datetime
- JSON
- CSV
- 例外処理
- logging
- デコレータ
- functools.wraps
- デコレータ適用順
- 型ヒント
- pytest
- GitHub Actions
- Ruff
- Mypy
- リファクタリング
- 責務分離
- pytest-covによるカバレッジ測定
- SQLite対応
- 検索・フィルタリング機能強化
- ログローテーション
- Docker対応
- パッケージ化(PyPI公開)
MIT License


