ナニコレ?
- 普段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)を追加して楽しめる
やってみよう!(明日から)
これらの課題をやると実力がアップ!!!…するのかはわかりませんが明日からやってみます。