🤖
アドベントカレンダー要約ツールをAI使って2時間で作った
アドベントカレンダーはたくさんあって面白いけど読むの大変、と思ったのでまとめて要約するツールを作りました。
このツールは以下の流れで動きます。
- アドベントカレンダーのURLを入力すると、各日の記事を自動でスクレイピング
- 記事の内容をAI(Gemini)で分析し、ジャンルと要約を生成
- 結果をCSVファイルに出力
開発環境とツール
- Python 3.13
- 使用したAI:
- 設計: Claude 3.5 Sonnet
- コード補完: GitHub Copilot + o1-mini
- コンテンツ分析: Gemini 2.0 Flash Experimental
- 主要ライブラリ:
- aiohttp: 非同期HTTPクライアント
- beautifulsoup4: HTMLパース
- litellm: LLMクライアント
- click: CLIインターフェース
開発アプローチ
要件定義
要件定義と大まかな設計方針は自分で作ります。
アーキテクチャ設計フェーズ
コードを生成する前にアーキテクチャを作らせます。
以下のように作成されます。(これは完成形なので最初はもう少しシンプルです)
# アーキテクチャの主要コンポーネント
- models.py: データモデル(Article等)の定義
- scraper.py: アドベントカレンダーのスクレイピング
- content_processor.py: 記事本文の取得と前処理
- ai_processor.py: Geminiを使った記事の分析
- csv_writer.py: 結果のCSV出力
- main.py: エントリーポイントとオーケストレーション
コンポーネントごとの実装
各コンポーネントを実装していきます。
- コンポーネントの詳細な要件を定義
- Claudeにコード生成させる
- 生成されたコードをプロジェクトに統合
- VSCodeとCopilotで型エラー等を修正
開発のTips
AIが知らないツールを使う
新しいライブラリ(litellm等)を使う際は、必要なドキュメントをAIに提供することで、適切な使い方を理解させることができます。
スクレイピング処理の実装
スクレイピング対象のHTMLをそのままClaudeに渡せばパース処理は簡単に書けます。
まとめ:AIを使ったコード生成のコツ
実際に開発してみて、AIを使ったコード生成で重要だと感じたポイントをまとめておきます。
まず、「AIにすべてを任せない」というのが大事です。要件定義や設計方針は自分で考えます。これは単にAIの出力の質を上げるためだけでなく、自分が作りたいものを明確にするためにも重要です。
また、AIに適切な情報を与えることも重要です。新しいライブラリのドキュメントやスクレイピング対象のHTMLソースなど、AIが処理するのに必要な情報は全て与えましょう。
Discussion