3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

勝手にChatGPTチャレンジ (Python)

Last updated at Posted at 2025-12-01

ナニコレ?

  • 普段Pythonを適当に使用しているため理解していないことも多々あるはず。
  • 何か面白いことがしたい。
  • アドカレのネタがない。←ここ重要

これを解決する案です。

ChatGPTにPythonで学びを得られる課題を作成してもらい、一つづつ握りつぶしていきます。

※設計が…アンチパターンが…みたいな話は無視してのほほんとやります。

課題生成プロンプト

テキトウデス。

Pythonの学習用で作ってみると実力があがるアプリ/サービスを20個考えてください。
それぞれどのような学びが得られるか、どこが面白いかも教えてください。
また、1個当たりにかけられる時間は1時間くらいを想定してください。

回答

作ってもらった課題です。
(以下回答)


じゃあ、1時間くらいで「最低限の動くもの」が作れて、かつ Python のいろんな側面に触れられるネタを 20 個出しますね。
※「全部完璧に仕上げる」ではなく「MVP を作って動かす」前提です。


1. 数当てゲーム(CLI)

何を作る?
1〜100 のランダムな数を当てるゲーム。入力すると「大きい / 小さい / 正解!」を返すだけ。

学べること

  • while ループ・条件分岐
  • 標準入力 / 標準出力
  • random モジュール

面白いところ

  • 難易度調整(回数制限・ヒント追加)を自分で工夫しやすい
  • 最後に「何回で当てたか」でランキングを付けても遊べる

2. コマンドライン Todo リスト

何を作る?
python todo.py add "買い物" のようにタスク追加 / 一覧 / 削除できる簡単 CLI。

学べること

  • argparse でのコマンドライン引数処理
  • JSON / テキストを使った簡易データ保存
  • 関数分割・小さなアプリ設計

面白いところ

  • 自分の日常でそのまま使える
  • コマンドを増やして「完了済み」「締切」などに拡張していける

3. 単語帳クイズアプリ

何を作る?
words.csv(英単語, 日本語)からランダムに出題し、正解したかどうかを教えてくれる CLI。

学べること

  • csv モジュールでのファイル読み書き
  • リスト / 辞書の扱い
  • ランダム出題ロジック

面白いところ

  • 英単語・専門用語・社内略語など、学びたいものを何でも突っ込める
  • 正答率を記録して「苦手単語だけ出題」など工夫できる

4. ログ集計ツール

何を作る?
サーバログ風のテキストファイルから、1時間ごとのアクセス数などを集計するスクリプト。

学べること

  • ファイル I/O (pathlib, open)
  • 文字列処理・正規表現 (re)
  • 辞書での集計(カウンタ)

面白いところ

  • 自分のツールのログを実際に食わせられる
  • フォーマットが違えば「ログパーサを追加する」プラグイン風に進化させられる

5. テキストの単語頻度ランキング

何を作る?
テキストファイルを読み込んで、出現頻度トップ N の単語を表示するツール。

学べること

  • collections.Counter
  • 前処理(小文字化・句読点除去など)
  • ソートとスライス

面白いところ

  • 小説・ブログ・自分のコードコメントなどを分析して遊べる
  • 「自分はどんな言葉を多用しているか」が見えてちょっと恥ずかしい

6. CSV → グラフ自動生成ツール

何を作る?
data.csv の特定カラムを折れ線グラフや棒グラフにして PNG 出力するスクリプト。

学べること

  • pandas での CSV 読み込み
  • matplotlib での簡単な可視化
  • コマンドライン引数で「どのカラムを使うか」指定

面白いところ

  • 手元のログや家計簿をすぐ可視化できて気持ちいい
  • 少しずつグラフの装飾を変えて「見栄え改善」を楽しめる

7. Web ニュースタイトル取得(スクレイピング)

何を作る?
ニュースサイト(HTML)から記事タイトルを取得して一覧表示。

学べること

  • requests での HTTP GET
  • BeautifulSoup などを使った HTML パース
  • エラー処理・ユーザーエージェントなどの基礎

面白いところ

  • 「自分好みのニュースフィード」を作る第一歩
  • 正規表現や CSS セレクタを変えて「抽出チャレンジ」できる

8. ポモドーロタイマー(CLI)

何を作る?
25分作業 + 5分休憩を繰り返すタイマー。残り時間をコンソールに表示する。

学べること

  • time.sleep とループ制御
  • シンプルなステートマシン(作業 / 休憩)
  • Ctrl+C などの割り込み処理(KeyboardInterrupt

面白いところ

  • 実用的で、作った直後から自分の作業で使える
  • 終わったときに音を鳴らす / OS 通知するなど拡張余地が大きい

9. 画像一括リサイズ・サムネイル作成

何を作る?
フォルダ内の画像を全部、指定サイズのサムネイルにして別フォルダに保存。

学べること

  • glob / pathlib でファイル探索
  • Pillow で画像処理
  • 例外処理(壊れた画像のスキップ)

面白いところ

  • スマホ写真やスクリーンショットの整理に直結して便利
  • フィルタや透かしロゴを入れるなど、ちょっとした画像加工にも発展できる

10. ファイル整理ツール(拡張子ごとに仕分け)

何を作る?
1つのフォルダに散らばるファイルを、拡張子ごとにサブフォルダへ自動仕分けするスクリプト。

学べること

  • os / pathlib でのファイル運用
  • 辞書で「拡張子 → カテゴリ」をマッピング
  • ユーザー入力で「本当に移動していい?」確認

面白いところ

  • ダウンロードフォルダが一気に片付く快感
  • 実行前に「ドライラン(dry-run)」モードを作るとツール感が増す

11. シンプル電卓 GUI(tkinter)

何を作る?
足し算・引き算・掛け算・割り算ができる Windows 風電卓 GUI。

学べること

  • tkinter の基本(ボタン / ラベル / レイアウト)
  • イベント駆動プログラミング
  • 入力バリデーション

面白いところ

  • 「Python で GUI 動いた!」感が得られる
  • キーボードショートカットを足して、使い勝手を自分好みにできる

12. 小さな REST メモ API(FastAPI)

何を作る?
/memos に POST するとメモが追加され、GET で一覧取得できるだけのミニ Web API。

学べること

  • FastAPI の最小セット(エンドポイント定義・リクエスト / レスポンス)
  • Pydantic モデルでのバリデーション
  • uvicorn でのローカルサーバ起動

面白いところ

  • 後からフロントエンドや他ツールで叩ける「自作 API」が手に入る
  • 簡易的にファイル保存や SQLite を使うなど、バックエンドの入門に最適

13. 並列 Web ダウンローダ(asyncio)

何を作る?
URL リストを渡すと、非同期で一気にダウンロードするスクリプト。

学べること

  • asyncio / aiohttp の基本
  • 同時接続数の制限(セマフォ)
  • 例外発生時のリトライ

面白いところ

  • 同じ処理を同期と非同期で書いて速度差を体感できる
  • 「ネットワーク IO で非同期が効く」実感が得られる

14. 自作ロガー & デコレータ

何を作る?
関数の開始/終了時間と引数・戻り値をログ出力するデコレータを作る。

学べること

  • デコレータの記法
  • logging モジュールの使い方
  • 高階関数とクロージャ

面白いところ

  • 既存の自分のスクリプトに一行足すだけでログが付き始める
  • ログフォーマットを工夫して「見やすい実行トレース」を作れる

15. dataclasses を使った簡易家計簿

何を作る?
Entry(date, category, amount, memo) のような dataclass を作り、CLI で追加 / 集計。

学べること

  • dataclasses.dataclass の基本(型ヒント・デフォルト値)
  • リスト操作とフィルタ・合計
  • JSON / CSV 保存との組み合わせ

面白いところ

  • クラス設計の練習にもなる
  • カテゴリ別集計・グラフ表示などに広げる余地がある

16. Pandas でミニ分析(売上 or アクセスログ)

何を作る?
サンプルの売上 CSV を読み込んで、「月別売上」「トップ商品」などを一瞬で集計するスクリプト。

学べること

  • groupby, agg, sort_values
  • インデックス操作
  • 集計結果の CSV / Excel 出力

面白いところ

  • Excel でやっていた作業が一気に自動化される快感
  • 実データに近い形のサンプルで、データ分析っぽさを味わえる

17. Markdown → HTML の超簡易コンバータ

何を作る?
# 見出し<h1>* 箇条書き<li> など、最低限のルールだけで変換するスクリプト。

学べること

  • 行ごとのテキスト処理
  • 簡単なパーサ設計
  • 文字列フォーマット(f-string)や join

面白いところ

  • 「パーサを書く」楽しさをシンプルに体験できる
  • 対応するルールを増やして “なんちゃって Markdown エンジン” に育てられる

18. 設定ファイルローダ(YAML / TOML)

何を作る?
config.yaml を読み込んで、アプリ設定(DB 接続情報・ログレベルなど)をオブジェクトとして扱えるモジュール。

学べること

  • yaml または tomllib の使い方
  • 設定用 dataclass との組み合わせ
  • デフォルト値と上書き(環境変数からoverride するなど)

面白いところ

  • ほぼ全ての実務コードに出てくる「設定管理」のミニ版を体験できる
  • 他の自作ツールでもこのローダを再利用できて便利

19. 簡易コード Linter(行長・タブ混在チェック)

何を作る?
Python ファイルを走査して「80文字超えの行」「タブとスペースの混在」「print の残り」を警告するスクリプト。

学べること

  • os.walk でディレクトリ再帰探索
  • テキスト行単位での検査ロジック
  • 終了コードやレポート出力のデザイン

面白いところ

  • 自分のコードに対して「自作 Lint」をかけて遊べる
  • ルールを増やしていくと、だんだん本格的なツールっぽくなる

20. テキストベースの迷路生成&探索

何を作る?
ランダム生成した迷路を # とスペースで表示し、人間が矢印キーで動いてゴールを目指すゲーム(or 自動探索)。

学べること

  • 2次元リスト・グリッドの表現
  • 迷路生成アルゴリズム(穴掘り法など、シンプルなもの)
  • キーボード入力(curses や簡単版なら入力ごとに描画)

面白いところ

  • アルゴリズムが目に見える形で結果に出る
  • 自動的に最短経路を探すアルゴリズム(BFS/DFS)を追加して楽しめる

やってみよう!(明日から)

これらの課題をやると実力がアップ!!!…するのかはわかりませんが明日からやってみます。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?