Python

【Python】第9章第14回:プロジェクト管理ツールの開発

本記事では、Pythonを使ってプロジェクト管理ツールを開発する方法を解説します。簡単なタスク管理アプリを実装し、日々の業務やプロジェクトを効率的に管理するスキルを学びます。

0. 記事の概要

この記事を読むメリット

  • プロジェクト管理の基礎理解:タスクの整理や進捗管理の考え方が学べます。
  • Pythonの実践スキル向上:GUIツールやデータ保存機能の実装に挑戦できます。
  • 実用的なツールの開発:自身の業務効率化に役立つアプリを構築できます。

この記事で学べること

  • プロジェクト管理ツールの基本構造
  • Pythonを使ったタスク管理アプリの実装方法
  • GUIライブラリとデータ保存技術の活用

1. プロジェクト管理ツールの基本構造

1.1 プロジェクト管理ツールとは?

プロジェクト管理ツールは、タスクやリソースを効率的に管理するためのアプリケーションです。以下のような要素で構成されます。

  • タスク管理:タスクの登録、編集、削除
  • 進捗管理:タスクの状態(未完了、進行中、完了)を追跡
  • データ保存:タスクデータを保存して再利用可能にする

1.2 使用するPythonライブラリ

以下のライブラリを使用してツールを構築します。

  • tkinter: GUI(グラフィカルユーザーインターフェース)の構築
  • sqlite3: データベースでタスクを保存
  • datetime: タスクの期限管理

2. Pythonを使った簡単なツールの実装例

2.1 基本コード例:タスク管理アプリ

# 必要なライブラリをインポート
import tkinter as tk  # GUI構築用
import sqlite3  # データベース用

# データベースの初期化
def init_db():
    conn = sqlite3.connect("tasks.db")  # データベースを作成または接続
    cursor = conn.cursor()
    cursor.execute("""
        CREATE TABLE IF NOT EXISTS tasks (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            status TEXT NOT NULL
        )
    """)  # タスク用テーブルを作成
    conn.commit()
    conn.close()

# タスクを追加
def add_task(name):
    conn = sqlite3.connect("tasks.db")
    cursor = conn.cursor()
    cursor.execute("INSERT INTO tasks (name, status) VALUES (?, ?)", (name, "未完了"))
    conn.commit()
    conn.close()

# GUIの構築
def create_app():
    def handle_add_task():
        task_name = entry.get()
        if task_name:
            add_task(task_name)
            label["text"] = f"タスク '{task_name}' を追加しました!"

    root = tk.Tk()
    root.title("タスク管理ツール")

    label = tk.Label(root, text="タスクを入力してください:")
    label.pack()

    entry = tk.Entry(root)
    entry.pack()

    button = tk.Button(root, text="タスクを追加", command=handle_add_task)
    button.pack()

    root.mainloop()

# メイン処理
if __name__ == "__main__":
    init_db()  # データベース初期化
    create_app()  # アプリを起動
動作解説
  • init_db: SQLiteデータベースを初期化し、タスクを保存するテーブルを作成。
  • add_task: タスク名をデータベースに保存。
  • create_app: tkinterを使って、ユーザーがタスクを入力・追加できるGUIを構築。

3. 追加機能の実装例

3.1 タスクの一覧表示

# タスクを一覧表示
def show_tasks():
    conn = sqlite3.connect("tasks.db")
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM tasks")
    tasks = cursor.fetchall()
    for task in tasks:
        print(f"ID: {task[0]}, タスク名: {task[1]}, 状態: {task[2]}")
    conn.close()

# タスク表示機能を追加
def create_app():
    def handle_show_tasks():
        show_tasks()

    # 以下に既存のコードを追加し、タスク表示ボタンを設置
    button_show = tk.Button(root, text="タスクを表示", command=handle_show_tasks)
    button_show.pack()

4. 練習問題

以下の課題に挑戦してください。

  1. タスクの状態を「進行中」や「完了」に更新する機能を追加してください。
  2. 期限付きタスクの管理機能を追加してください。

5. 練習問題の解答と解説

問1の解答例

# タスクの状態を更新
def update_task_status(task_id, status):
    conn = sqlite3.connect("tasks.db")
    cursor = conn.cursor()
    cursor.execute("UPDATE tasks SET status = ? WHERE id = ?", (status, task_id))
    conn.commit()
    conn.close()

6. まとめ

本記事では、Pythonを使ったプロジェクト管理ツールの開発を解説しました。基本的なタスク管理機能から追加機能の実装まで、実用的なスキルを学べたかと思います。さらに機能を拡張し、使いやすいツールを作成してみてください。