Skip to content

shim369/Python-Todo-Cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Todo CLI

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

Screenshots

Main Menu

Main Menu

Todo List

Todo List

Search Result

Search Result


使用技術

分類 技術
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 uv

インストール

git clone <repository-url>
cd Python-Todo-Cli

uv sync

起動方法

対話モード(Questionary)

メニューを選択しながら操作できます。

uv run python -m src.todo.main

コマンドモード(argparse)

Todo一覧表示

uv run python -m src.todo.main list

Todo検索

uv run python -m src.todo.main search "タスク名"

品質管理・テスト

テスト実行

uv run pytest

Ruff

uv run ruff check .

Mypy

uv run mypy .

GitHub Actions (CI)

GitHub Actionsを利用したCIパイプラインを構築しています。

ジョブを以下の2段階に分離し、静的解析に成功した場合のみテストを実行する構成としています。

1. Lint Job

  • Ruff
  • Mypy

2. Test Job

  • Pytest
test:
  needs: lint

上記により、Lintエラーが発生した場合は不要なテスト実行をスキップできます。


テスト内容

Todoモデル

  • Todo生成
  • UUID生成確認
  • 期限超過判定
  • Todo ⇔ dict変換

TodoManager

  • Todo追加
  • Todo更新
  • Todo削除
  • Todo検索
  • Todo一覧ソート

永続化

  • JSON保存
  • JSON読込
  • JSON破損時の動作確認
  • CSVエクスポート

異常系

  • 存在しないTodoの検索
  • 存在しないTodoの更新
  • 存在しないTodoの削除

学習テーマ

本プロジェクトでは以下の技術要素を重点的に学習・実践しました。

Python基礎

  • dataclass
  • Enum
  • UUID
  • datetime
  • JSON
  • CSV
  • 例外処理

実践機能

  • logging
  • デコレータ
  • functools.wraps
  • デコレータ適用順
  • 型ヒント

開発プロセス

  • pytest
  • GitHub Actions
  • Ruff
  • Mypy
  • リファクタリング
  • 責務分離

今後の改善案

  • pytest-covによるカバレッジ測定
  • SQLite対応
  • 検索・フィルタリング機能強化
  • ログローテーション
  • Docker対応
  • パッケージ化(PyPI公開)

License

MIT License

About

CLI Todo application built with Python, featuring JSON persistence, Rich UI, automated testing, and GitHub Actions CI.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages