🤖

アドベントカレンダー要約ツールをAI使って2時間で作った

2024/12/26に公開

アドベントカレンダーはたくさんあって面白いけど読むの大変、と思ったのでまとめて要約するツールを作りました。

https://github.com/shiumachi/acsummary

このツールは以下の流れで動きます。

  1. アドベントカレンダーのURLを入力すると、各日の記事を自動でスクレイピング
  2. 記事の内容をAI(Gemini)で分析し、ジャンルと要約を生成
  3. 結果を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: エントリーポイントとオーケストレーション

コンポーネントごとの実装

各コンポーネントを実装していきます。

  1. コンポーネントの詳細な要件を定義
  2. Claudeにコード生成させる
  3. 生成されたコードをプロジェクトに統合
  4. VSCodeとCopilotで型エラー等を修正

開発のTips

AIが知らないツールを使う

新しいライブラリ(litellm等)を使う際は、必要なドキュメントをAIに提供することで、適切な使い方を理解させることができます。

スクレイピング処理の実装

スクレイピング対象のHTMLをそのままClaudeに渡せばパース処理は簡単に書けます。

まとめ:AIを使ったコード生成のコツ

実際に開発してみて、AIを使ったコード生成で重要だと感じたポイントをまとめておきます。

まず、「AIにすべてを任せない」というのが大事です。要件定義や設計方針は自分で考えます。これは単にAIの出力の質を上げるためだけでなく、自分が作りたいものを明確にするためにも重要です。

また、AIに適切な情報を与えることも重要です。新しいライブラリのドキュメントやスクレイピング対象のHTMLソースなど、AIが処理するのに必要な情報は全て与えましょう。

Discussion