Qiitaアドベントカレンダー3年連続完走から記事作成を支えたAI運用システム設計を考えた
この記事の要点
- Qiita アドベントカレンダー参加は 4 年連続、完走は 3 年連続(2025 年分は執筆時点では公式には未確定だが、自分の認識では完走済み)、累計およそ 100 記事
- 今年は「完走」だけでなく「品質維持」が課題だった
- ポリレポ(リポジトリをまたいだ)AI 運用システムで解決
- 完璧ではないが、来年への土台ができた
4 年連続参加、でも今年は違った
2025 年も Qiita アドベントカレンダーに参加し、記事自体はすでに書き終えた。執筆時点では公式には完走扱いではないが、自分の認識では完走済みのつもりだ。残りの日も 25 日まで楽しんでほしい。参加は 4 年連続で、累計およそ 100 記事になる。
ただ、今年は例年と違った。「完走できるかどうか」ではなく、「品質を維持しながら完走できるか」が課題だった。
結論から言うと、AI 運用システムがなければ品質維持は難しかったと思う。この記事では、そのシステムの構成と、実際にどう活用したかを書く。
例年の完走パターンと今年の課題
これまでの完走方法
正直に書くと、これまでの完走はこんな感じだった。
- ネタは思いつきでメモ帳に書き出す
- 書き味やトーンは記事ごとにバラバラ
- 後半は気合いで乗り切る
- センシティブ情報のチェックは目視
完走はできていたが、振り返ると品質にムラがあった。
今年の課題
2025 年は、もう少しちゃんとやりたかった。具体的には以下の課題があった。
| 課題 | 詳細 |
|---|---|
| ネタ管理 | 25 記事分のネタを体系的に管理したい |
| 書き味の統一 | 記事ごとにトーンがバラバラになるのを防ぎたい |
| センシティブチェック | 企業名や実名が混入しないよう自動チェックしたい |
| 進捗可視化 | 今どこまで終わっているか一目でわかるようにしたい |
これらを「気合い」ではなく「仕組み」で解決したかった。
解決策:3 リポジトリの AI 運用システム
システム全体像
構築したシステムは、3 つの Git リポジトリで構成されている。以下の図は、各リポジトリの役割と連携を示している。
それぞれの役割を説明する。
AI 設定リポジトリ - AI の制御中枢
Claude Code(AI ツール)への指示書を管理するリポジトリ。
このリポジトリの特徴は「モードシステム」で、ユーザーのキーワードから自動的に作業モードを判定する。以下の図は、記事作成時のモード起動から執筆までの流れを示している。
アドベントカレンダーで特に使ったのは以下のモード。
| モード | 用途 |
|---|---|
| 記事作成モード | 構成提案、シード選択、執筆 |
| 記事レビューモード | センシティブチェック、書き味チェック |
| 日報作成モード | 1 日の作業を日報にまとめる |
また、gh 拡張コマンドで操作を効率化している。
注: gh quick-push と gh pr-ja はカスタムコマンド(gh 拡張)です。詳細は GitHub CLI Extensions を参照。
# 3コマンド → 1コマンド
gh quick-push "記事追加: Day 5"
# PR作成も1コマンド
gh pr-ja --title "記事追加"
共通ナレッジリポジトリ - 共通ナレッジベース
複数の AI(Claude Code、ChatGPT、Gemini 等)で共通して使うナレッジを管理するリポジトリ。
パス定義ファイル(YAML 形式)でパス情報を一元管理している。
# パス定義ファイルの例
記事化判断フレームワーク: {PATH:article_decision_framework}
Zennワークフロー: {PATH:zenn_workflow}
これにより、AI が「記事を書くときはどのルールを参照すればいい?」と迷わなくなる。
ルール自動同期の仕組みも便利で、ルールファイルを更新すると全 AI 環境に自動反映される。以下の図は、GitHub Actions を使ったルール同期の仕組みを示している。
ログリポジトリ - ログと自動化
セッションログと日報を管理するリポジトリ。26 個の GitHub Actions で自動化している。
特に便利だったのは以下。
| ワークフロー | 機能 |
|---|---|
| ナレッジ抽出 | 日報の「学んだこと」から Issue 自動生成 |
| 日報チェック | ユーザー所感の必須チェック |
| クリーンアップ | マージ後にセッションログ自動削除 |
日報を書くと、そこから「記事化候補」の Issue が自動生成される。アドベントカレンダーのネタ出しにも活用できた。
実際のワークフロー
Day 1〜4: 事前準備フェーズ
11 月中に以下を準備した。
- 記事管理用 JSON ファイルで 25 記事分のネタをリスト化
{
"year": 2025,
"day": 5,
"title": "非エンジニア系研修でエンジニア系講義を教えるコツと目標",
"status": "draft",
"seed": {
"opening": "きっかけ",
"structure": "やった→困った",
"tone": "手探り感"
}
}
-
過去記事ディレクトリに過去記事を配置してトーン参照できるように
-
シードテーブルで書き味のバリエーションを定義
| 要素 | 選択肢 |
|---|---|
| 書き出し | 雑談 / 本題直行 / データ / きっかけ |
| 構成 | 時系列 / Q&A / 比較 / 問題解決 |
| トーン | 軽め / 真面目 / 淡々 / 熱量高め |
Day 5〜24: 執筆フェーズ
毎日の執筆フローはこうなった。以下の図は、記事作成から投稿までの一連の流れを示している。
特にセンシティブチェックが役立った。研修講師という仕事柄、企業名や受講生の話が混入しやすい。AI がレビューモードで自動チェックしてくれるのは安心感があった。
Day 25: 振り返りフェーズ
12 月 25 日。最終日の記事を書きながら、日報を作成した。
すると、日報から「記事化候補」の Issue が自動生成された。その中に「アドベントカレンダー完走の振り返り」があり、今あなたが読んでいるこの記事につながっている。
Before / After
システム導入前後の比較をまとめる。
| 観点 | Before(導入前) | After(導入後) |
|---|---|---|
| ネタ管理 | メモ帳に箇条書き | 記事管理 JSON + Issue 自動生成 |
| 書き味 | 記事ごとにバラバラ | シードテーブルで意図的に変化 |
| 品質チェック | 目視のみ | センシティブチェック自動化 |
| 進捗管理 | 頭の中 | 日報 + Issue + GitHub Projects |
| トーン統一 | なし | 過去記事ディレクトリで参照 |
「気合いで完走」から「仕組みで完走」に変わった。
来年への課題
完璧ではない。来年に向けて以下を改善したい。
- 予約投稿の活用: 今年は毎日手動投稿だった。Qiita の予約投稿機能を使えばもっと楽になる
- ChatGPT/Gemini 連携の強化: 現状は Claude Code 中心。他の AI との連携をもう少しスムーズにしたい
- CI/CD のさらなる自動化: 投稿から Qiita へのデプロイまで自動化できないか検討中
- シードテーブルの改善: 25 記事書いてみて、パターンが増えすぎた感がある。整理が必要
気合いから仕組みへ
「完走」だけなら気合いでできる。参加は 4 年連続で、完走は 3 年連続だと自分では見ているからわかる。
でも「品質を維持しながら完走」するには仕組みが必要だった。
3 リポジトリの AI 運用システムは、今年のアドベントカレンダー完走までの走りを支えてくれた。来年はこの土台の上に、さらに改善を重ねていきたい。
Discussion