プログラミング学習

ゼロから学ぶPython #5 ミニプロジェクトで学ぶPython【実用ツール作成】

記事内に商品プロモーションを含む場合があります

これまでの「ゼロから学ぶPython」シリーズでは、
基礎文法から標準ライブラリ、ファイル操作、データ可視化までを学んできました。最終回となる今回は、いよいよ実践編。
これまでの知識を活かして小さな実用ツール(ミニプロジェクト)を作ってみましょう。

実際に「自分の手で動くプログラム」を完成させると、理解が一気に深まり、次のステップ(副業・実務・ポートフォリオ作成)への自信につながります。

筆者も最初のミニプロジェクトを作ったときは、思うように動かず苦戦しましたが、完成した瞬間の「動いた!」という感動は忘れられません。

 

ミニプロジェクトのテーマ紹介

今回は、初心者でも取り組みやすく、実際の生活や仕事でも役立つ3つの題材を用意しました。

  • ToDoリストアプリ(テキスト保存機能付き)
  • 天気情報スクリプト(API利用)
  • 画像一括リサイズツール(Pillowライブラリ使用)

どれも「今すぐ使える実用性」があるテーマです。
自分の興味に合わせて、好きなものから試してみてください。

サンプルプロジェクト①:ToDoリストアプリ

Pythonの基本であるファイル操作・ループ・条件分岐を使って作る簡易アプリです。
テキストファイルにタスクを保存することで、実用性のある小さなツールになります。

# ToDoリストアプリ
# タスクを追加・削除して、テキストファイルに保存するシンプルなプログラム

def show_tasks(tasks):
    print("==== 現在のタスク ====")
    for i, task in enumerate(tasks, 1):
        print(f"{i}. {task}")

# タスクを読み込む
try:
    with open("tasks.txt", "r", encoding="utf-8") as f:
        tasks = [line.strip() for line in f]
except FileNotFoundError:
    tasks = []

while True:
    show_tasks(tasks)
    action = input("追加(a) / 削除(d) / 終了(q): ")

    if action == "a":
        new_task = input("新しいタスクを入力: ")
        tasks.append(new_task)
    elif action == "d":
        num = int(input("削除する番号: "))
        if 1 <= num <= len(tasks):
            tasks.pop(num - 1)
    elif action == "q":
        break

# 保存
with open("tasks.txt", "w", encoding="utf-8") as f:
    for task in tasks:
        f.write(task + "\n")

Colabでの実行結果

ToDoリストアプリ 実行例
  • ファイルが見つからない場合(FileNotFoundError)は自動で新規作成。
  • タスク削除時の番号指定に注意(存在しない番号を指定するとIndexError)。
このアプリを作ったとき、どこにテキストファイルが保存されたのか分からず一瞬戸惑いました。
Colabだとフォルダ内に保存されます。保存先も簡単に変えられるので任意で設定してみましょう。

サンプルプロジェクト②:天気情報スクリプト

API(外部サービス)を使ってデータを取得する例です。
Webから自動で情報を取ってくる体験は、プログラミングの面白さを実感できる瞬間です。

# 天気情報を取得するスクリプト(OpenWeatherMap APIの例)
import requests

API_KEY = "あなたのAPIキー"
CITY = "Tokyo"
url = f"https://api.openweathermap.org/data/2.5/weather?q={CITY}&appid={API_KEY}&lang=ja&units=metric"

response = requests.get(url)
data = response.json()

print(f"都市: {data['name']}")
print(f"天気: {data['weather'][0]['description']}")
print(f"気温: {data['main']['temp']}℃")
print(f"体感気温: {data['main']['feels_like']}℃")
print(f"湿度: {data['main']['humidity']}%")
print(f"風速: {data['wind']['speed']} m/s")

Colabでの実行結果

天気情報取得の例

OpenWeatherMap APIキーの取得方法

  1. OpenWeatherMap公式サイトにアクセスし、無料アカウントを作成。
  2. ログイン後、「My API keys」ページに進みます。
  3. 「Default key」として自動発行されるキーをコピー。
  4. このAPIキーをPythonスクリプトのAPI_KEYに貼り付けます。

新しいAPIキーは発行直後に使えない場合があります。最大で2時間ほど待ってから試してみましょう。

よくあるエラーと対処法

  • 401エラー(Invalid API key): 入力ミス、キーの未有効化、削除済みキーの使用が原因。
  • ConnectionError:ネットワークやVPN環境を確認。
  • KeyError:データが欠けているときに発生。print(data)でJSON構造を確認しましょう。
筆者も最初の頃、キーを発行してすぐ実行し「エラー401」で悩みました。
時間をおいて再実行したらあっさり動いた経験があります😅

サンプルプロジェクト③:画像一括リサイズツール

Pillow(PIL)という画像処理ライブラリを使い、フォルダ内の画像を一括でリサイズするスクリプトです。
ブログ運営や資料作成など、日常でも使える便利ツールになります。

# Pillowを使ってフォルダ内の画像を一括リサイズ
from PIL import Image
import os

input_folder = "images"
output_folder = "resized"
os.makedirs(output_folder, exist_ok=True)

for file in os.listdir(input_folder):
    if file.endswith((".jpg", ".png")):
        img = Image.open(os.path.join(input_folder, file))
        img_resized = img.resize((300, 300))
        img_resized.save(os.path.join(output_folder, file))
        print(f"保存しました: {file}")

フォルダ内の画像を一括で整形できるため、データ前処理やWeb素材作成にも役立ちます。

さらに、GUI(ウィンドウ)で操作できる改良版スクリプトも公開しています。

Pythonで画像を一括圧縮するGUIアプリの作り方【Tkinter + Pillow】今回は、Pythonを使って複数の画像を一括で圧縮できるGUIアプリを作ってみたので、その開発の流れをまとめます。 このアプリは以...

圧縮前
圧縮前
圧縮後(JPEG品質70%設定)
圧縮後

  • 画像サイズを変更するときは、縦横比を意識してトリミングする方法もあります。
  • 大きな画像を一括処理する場合は、メモリエラーを防ぐために逐次処理を意識しましょう。

まとめと次へのステップ

全5回のシリーズを通して、Pythonの基礎から標準ライブラリ、ファイル操作、データ可視化、そして実用的なツール作成までを学びました。

今回紹介したミニプロジェクトは、あくまで“入り口”です。
小さな成功体験を積み重ねることで、応用力がぐんと伸びます。

「こんなツールがあったら便利だな」と思ったら、それをPythonで作ってみることが上達への最短ルートです。

もし動かないコードやエラーに遭遇しても大丈夫。
AI(ChatGPTなど)にエラーメッセージを貼って質問すれば、具体的な解決策をすぐに得られます。
筆者も実際、AIに相談しながらコードを改良してきました。

あなたの次のステップは、今回のプロジェクトを「自分仕様」に進化させることです。
たとえば、

  • ToDoアプリに「期限」や「完了フラグ」を追加する
  • 天気スクリプトをSlack通知に変える
  • 画像リサイズをWebアプリ化して共有する

こうした改良を積み重ねるうちに、「作りたいものを自分で作れる力」が確実に身につきます。

最後に

Pythonを学ぶ最大のコツは、「手を動かすこと」です。
あなたも今日から、学びを形にする一歩を踏み出しましょう。

AIブロガー
筆者:yuki
Python未経験からAIと対話しながらコード作成。副業×自動化×プログラミングの可能性を模索中。 ▷詳細プロフィールはこちら
RELATED POST