1. はじめに:記事自動化システムを4時間で作りました
「初心者向けの記事で、最近どんな記事が読まれているのか」を定期的にキャッチアップしたいと思い、完全自動でランキングを更新する仕組みを作りました。
【実装したこと】
-
Qiita APIから「初心者」タグの記事を取得
-
直近1週間のいいね数を集計してTOP10をランキング化
-
Gemini APIで各記事を「一言要約」
-
Markdownを自動生成し、GitHub Actionsで定期実行・Qiitaを自動更新
実際の記事はこちら:
GitHub:
2. 実は「GitもActionsもAPIも」ほぼ未経験だった
今回の実装で使った以下の技術は、着手時点で実務レベルで触ったことがありませんでした。
-
Git / GitHub
-
GitHub Actions
-
Qiita API
「必要になったから調べながら作る」スタイルで進め、調査開始から約4時間後には本番処理が走り、自動更新されるところまで到達しました。
3. 4時間のタイムラインとシステム構成
爆速で完成させるまでの流れは以下の通りです。
0:00 完成系のイメージを固める
0:10 Gitの基本コマンドをキャッチアップ
0:30 Qiita APIの仕様を調査
0:40 Qiita記事取得・ランキング生成
1:00 Gemini APIによる要約を追加
1:30 GitHub Actionsで自動実行
1:50 エラー修正・出力調整
3:00 本番実行・動作確認
4:00 最終調整・ブラッシュアップ
【システム構成】
┌───────────────────────────┐
│ GitHub Actions (定期実行) │
└─────────────┬─────────────┘
▼
┌───────────────────────────┐
│ Qiita API: 記事取得&集計 │
└─────────────┬─────────────┘
▼
┌───────────────────────────┐
│ Gemini API: 要約&MD生成 │
└─────────────┬─────────────┘
▼
┌───────────────────────────┐
│ Qiita API: 記事を自動更新 │
└───────────────────────────┘
4. こだわりポイント:AIとプログラムの役割分担
ランキングの集計やデータ取得といった「決定的な処理」は通常のプログラムで行い、「この記事は結局何の記事なのか?」という「自然言語の解釈」はLLM(Gemini API)に任せました。
すべてをAIに丸投げするのではなく、適材適所で役割を分けることで、安定性と利便性を両立させています。
5. 開発中にハマった2つの壁と教訓
AIを活用して高速でコードを書いても、実環境でのデバッグにはやはり時間がかかりました。特に苦労した点と得られた教訓です。
① APIの 429 Too Many Requests との戦い
開発中、APIのレート制限に引っかかり処理が止まることが多発しました。闇雲に再実行するとトークンも時間も消費してしまいます。
💡 得た教訓:
AIを使った高速開発だからこそ「適切なログ出力」が命。どこまで進み、どんなエラーが返ってきたかを可視化することで、原因特定が劇的に早くなりました。
② 手元では動くのにGitHub Actionsで動かない
ローカルでは完璧に動いたコードが、本番(Actions)でコケる現象に遭遇。原因は恐らくはGitHub側のSecret Keyの設定不備でしたが、その切り分けと本番環境でのループ実行の検証にかなり時間を費やしました。
💡 得た教訓:
外部APIやActionsが絡む構成では「手元で動いた=完成」ではありません。本番実行をデバッグ手段にしないよう、「APIをモックした小さなテスト」を用意することの重要性を痛感しました。
6. おわりに
未経験の技術が複数あっても、AIのサポートと「とりあえず動かす」精神があれば、たった数時間で実用的な自動化ツールをデプロイできる時代になりました。
次回はファインチューニングについて理解を深めたいので題材を探して実装します。