Python

【Python】第9章第15回:応用プロジェクトの完成例

本記事では、Pythonを使った応用プロジェクトの例として、タスク管理、データ可視化、API連携を組み合わせた実用的なアプリケーションを作成します。基礎を活かして複数の技術を統合する方法を学びます。

0. 記事の概要

この記事を読むメリット

  • 実用的なPythonプロジェクトを学べる:複数の技術を活用したプロジェクト構築方法を習得できます。
  • スキルの統合:データベース、API、データ可視化を組み合わせた開発スキルを磨けます。
  • 実務に応用可能:学んだ内容を応用して、業務効率化や自動化に活用可能です。

この記事で学べること

  • Pythonを使った応用プロジェクトの設計方法
  • データベース、API連携、データ可視化技術の統合
  • 実用的なアプリケーションの構築例

1. 応用プロジェクトの基本構造

1.1 プロジェクトの概要

今回作成するアプリケーションは、以下の3つの要素を統合したタスク管理ツールです。

  • タスク管理:SQLiteでタスクを保存し、状態を管理
  • API連携:天気情報APIを利用して、タスクに関連付けた天気データを取得
  • データ可視化:matplotlibを使ってタスクの進捗をグラフ化

1.2 使用するライブラリ

以下のPythonライブラリを使用します。

  • sqlite3: データベース管理
  • requests: APIからのデータ取得
  • matplotlib: データの可視化

2. Pythonを使った応用プロジェクトの実装例

2.1 タスクデータの管理

# 必要なライブラリをインポート
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,
            date TEXT NOT NULL
        )
    """)
    conn.commit()
    conn.close()

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

# 初期化
init_db()
add_task("レポート作成", "2025-01-30")

2.2 天気情報APIの利用

# 必要なライブラリをインポート
import requests

# 天気情報を取得
def get_weather(city):
    API_KEY = "your_api_key"  # OpenWeatherMapのAPIキー
    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        return f"{city}の天気: {data['weather'][0]['description']}, 温度: {data['main']['temp']}°C"
    else:
        return "天気情報を取得できませんでした。"

# 天気情報を確認
print(get_weather("Tokyo"))
動作解説
  • init_db: SQLiteデータベースを初期化し、タスクを保存するテーブルを作成。
  • get_weather: OpenWeatherMap APIを使って天気情報を取得。

3. タスク進捗の可視化

3.1 matplotlibを使ったグラフ化

# matplotlibでタスク進捗を可視化
import matplotlib.pyplot as plt

def plot_progress():
    tasks = {"未完了": 5, "進行中": 3, "完了": 7}  # サンプルデータ
    labels = tasks.keys()
    sizes = tasks.values()

    plt.pie(sizes, labels=labels, autopct='%1.1f%%')
    plt.title("タスクの進捗状況")
    plt.show()

# グラフを表示
plot_progress()

4. 練習問題

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

  1. APIで取得した天気情報をタスクに関連付けて保存してください。
  2. タスク進捗のデータをリアルタイムで更新できる機能を追加してください。

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

問1の解答例

# タスクに天気情報を関連付け
def add_task_with_weather(name, date, city):
    weather = get_weather(city)
    conn = sqlite3.connect("tasks.db")
    cursor = conn.cursor()
    cursor.execute("INSERT INTO tasks (name, status, date) VALUES (?, ?, ?)", (name + f" ({weather})", "未完了", date))
    conn.commit()
    conn.close()

6. まとめ

本記事では、Pythonを使った応用プロジェクトの完成例を解説しました。タスク管理、API連携、データ可視化を組み合わせることで、実用的なツールを作成するスキルを身につけることができました。さらなる応用で、業務に役立つツールを開発してみてください。