Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

Pythonでプロジェクト管理ツールを自作する方法

LYPプレミアム会員 python

プロジェクト管理って、複雑で手間がかかると感じること、ありますよね?進捗を把握したり、タスクを管理したりするために、専用のツールを使うことが一般的ですが、なかなか自分たちにぴったりのものが見つからないことも多いです。だったら、自分で作っちゃおう!ということで、Pythonを使ってシンプルで使いやすいプロジェクト管理ツールを自作してみましょう。

Pythonでプロジェクト管理ツールを作るための基本

Pythonを使えば、簡単なタスク管理ツールやプロジェクト進捗管理ツールを手軽に作れます。ここでは、タスクを追加、表示、完了にするシンプルなツールを作成します。もちろん、発展させて機能を追加することも可能です。

必要なライブラリ

まずは、Pythonのsqlite3を使って、データベースでタスクを管理できるようにします。SQLiteは軽量で扱いやすいデータベースで、ファイルベースなので環境構築も楽です。

pip install tabulate

tabulateはデータを表形式で見やすく表示するためのライブラリです。

データベースのセットアップ

まずは、SQLiteを使ってタスクを保存するためのデータベースを設定しましょう。

import sqlite3

# データベースの作成と接続
conn = sqlite3.connect('tasks.db')
c = conn.cursor()

# タスク管理用のテーブルを作成
c.execute('''
    CREATE TABLE IF NOT EXISTS tasks (
        id INTEGER PRIMARY KEY,
        title TEXT NOT NULL,
        status TEXT NOT NULL
    )
''')

conn.commit()
conn.close()

このコードを実行すると、tasks.dbというデータベースが作成され、その中にtasksというテーブルが用意されます。このテーブルは、タスクのID、タイトル、そしてタスクの状態(pendingcompleted)を保持します。

実行結果

データベースが作成され、タスク管理用のテーブルが準備完了!

タスクを追加する機能

次に、ユーザーが新しいタスクを追加できるようにします。例えば、「Pythonの勉強をする」「ブログ記事を書く」などのタスクをリストに追加できます。

def add_task(title):
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('INSERT INTO tasks (title, status) VALUES (?, ?)', (title, 'pending'))
    conn.commit()
    conn.close()
    print(f'タスク「{title}」が追加されました。')

このadd_task関数を使えば、指定したタイトルのタスクをデータベースに保存できます。

実行結果

タスク「Pythonの勉強をする」が追加されました。

タスクの一覧を表示する機能

次に、現在のタスク一覧を表示する機能を作ります。これにより、どのタスクがまだ残っているのか、どのタスクが完了したのかを一目で確認できるようになります。

from tabulate import tabulate

def show_tasks():
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('SELECT id, title, status FROM tasks')
    tasks = c.fetchall()
    conn.close()
    print(tabulate(tasks, headers=['ID', 'Title', 'Status'], tablefmt='grid'))

この関数を実行すると、現在のタスク一覧が表形式で表示されます。

実行結果

+----+---------------------+-----------+
| ID | Title               | Status    |
+----+---------------------+-----------+
| 1  | Pythonの勉強をする    | pending   |
| 2  | ブログ記事を書く      | pending   |
+----+---------------------+-----------+

タスクを完了にする機能

タスクが完了したら、その状態をcompletedに変更したいですよね。次のコードでそれを実現できます。

def complete_task(task_id):
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('UPDATE tasks SET status = ? WHERE id = ?', ('completed', task_id))
    conn.commit()
    conn.close()
    print(f'タスクID {task_id} が完了しました。')

complete_task関数にタスクのIDを指定することで、そのタスクの状態をcompletedに変更します。

実行結果

タスクID 1 が完了しました。

タスクを削除する機能

不要になったタスクを削除するための機能も作っておきましょう。これにより、完了したタスクや不要なタスクを整理できます。

def delete_task(task_id):
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('DELETE FROM tasks WHERE id = ?', (task_id,))
    conn.commit()
    conn.close()
    print(f'タスクID {task_id} が削除されました。')

このdelete_task関数を使うと、指定したIDのタスクをデータベースから削除できます。

実行結果

タスクID 2 が削除されました。

プロジェクト管理ツールの全体像

ここまでのコードを組み合わせると、シンプルなプロジェクト管理ツールが完成します。これを使えば、タスクの追加、表示、完了、削除が可能です。ぜひ、自分のプロジェクトや勉強の進捗管理に活用してみてください。

全体コード

import sqlite3
from tabulate import tabulate

def create_db():
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('''
        CREATE TABLE IF NOT EXISTS tasks (
            id INTEGER PRIMARY KEY,
            title TEXT NOT NULL,
            status TEXT NOT NULL
        )
    ''')
    conn.commit()
    conn.close()

def add_task(title):
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('INSERT INTO tasks (title, status) VALUES (?, ?)', (title, 'pending'))
    conn.commit()
    conn.close()
    print(f'タスク「{title}」が追加されました。')

def show_tasks():
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('SELECT id, title, status FROM tasks')
    tasks = c.fetchall()
    conn.close()
    print(tabulate(tasks, headers=['ID', 'Title', 'Status'], tablefmt='grid'))

def complete_task(task_id):
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('UPDATE tasks SET status = ? WHERE id = ?', ('completed', task_id))
    conn.commit()
    conn.close()
    print(f'タスクID {task_id} が完了しました。')

def delete_task(task_id):
    conn = sqlite3.connect('tasks.db')
    c = conn.cursor()
    c.execute('DELETE FROM tasks WHERE id = ?', (task_id,))
    conn.commit()
    conn.close()
    print(f'タスクID {task_id} が削除されました。')

# 実行例
create_db()
add_task("Pythonの勉強をする")
add_task("ブログ記事を書く")
show_tasks()
complete_task(1)
delete_task(2)
show_tasks()

実行結果

+----+---------------------+-----------+
| ID | Title               | Status    |
+----+---------------------+-----------+
| 1  | Pythonの勉強をする    | completed |
+----+---------------------+-----------+

これで、シンプルなプロジェクト管理ツールが完成しました!自分だけのオリジナルツールを作って、進捗管理をもっと楽しく、効率的にしてみてください。

次回のテーマ

次回は、「PythonでAPIを使ってタスクの自動化を実現する方法」をご紹介します。お楽しみに!

  翻译: