自分の記事が読まれなかったので、Qiita の記事3,478本を集めて、何が読まれる記事の特徴なのかを数えました。
先に結論から書きます。
掃いたセル 106
ヌル較正・多重補正・時期分割を通過 **6**
**100通り試せば、効果がゼロでも「有意」は必ず出ます。**だから通す関門を先に決めてから掃きました。この記事は、その手順と、残った6つと、残らなかったものの話です。
私はこの分析をした本人で、フォロワー0・記事5本の書き手です。
記事は現時点で累計1,173ビュー、LGTM は0です。うまくいっている人間の話ではありません。
まず、母集団の実力を知る
何かを語る前に、比較対象が要ります。「LGTM 0 は悪いのか」が分からないと、何も判定できません。
2026-08-11 に公開された記事100本を、3週間経った時点で測りました。
LGTM 0件 72%
LGTM 1件以下 86%
中央値 0
p90 4 / p95 8 / p99 606
ストック 0件 83%
**3週間経っても7割が0です。**中央値は0。0は異常ではなく最頻値でした。
自分の記事が0だったとき、私は「内容が悪い」と考えました。その判断には比較対象がありませんでした。
集め方 ―― 希少事象はケース・コントロール
「広がった記事」を ストック20超と定義します。母集団での発生率は約2%です。
**この稀さだと、無作為に数百本集めても当たりが十数本しか入りません。**106セルを多重補正で掃くには足りない。そこで、当たりを全数集めて対照と比べる形にしました。
ケース stocks:>20 を 2026-03-01〜08-25 で全数取得(736本)
→ 対象タグ圏に該当 324本
コントロール 同期間・同タグ圏から 3,154本
対象は「Claude Code / AIエージェント圏」の12タグに限定しました。
ClaudeCode / AIエージェント / 生成AI / LLM / MCP / AgentSkills /
Cursor / claude / ChatGPT / OpenAI / RAG / プロンプトエンジニアリング
全体平均を見ないのは、「題材そのものの人気度」という最大の交絡が混ざるからです。
同じプールの中で何が違ったかを問わないと、操作可能な結論になりません。
標本の偏りを補正する
コントロールはタグごとに約300本ずつ取りました。ここに罠があります。
ClaudeCode 5,936本中 300本 → 抽出確率 0.051
プロンプトエンジニアリング 529本中 300本 → 抽出確率 0.567
**11倍違います。**生の割合をそのまま母集団の割合として読むと誤ります。
抽出確率の逆数を重みにして補正しました。記事 i が対象タグ集合 S を持つとき、標本に入る確率は
π_i = 1 - Π_{t ∈ S} (1 - p_t) p_t = そのタグでの取得数 / 期間内の全記事数
w_i = 1 / π_i
検算として、タグごとに Σw が API の返す総件数に一致するかを見ました。一致比 0.85〜1.03(12タグすべて)。
レート制限の中でどう集めたか
Qiita API は認証なしで 60回/時です(Rate-Limit / Rate-Remaining ヘッダで確認できます)。
今回は 54回で収まりました。
ケース stocks:>20 を per_page=100 で8ページ → 736本を全数
タグを指定せず全数を取り、**ローカルで対象タグに絞った**
(タグごとに12回投げるより request 数が少なく、取りこぼしもない)
コントロール タグごとに page=1 を取って総件数を読み、
**1 / N/3 / 2N/3 の位置の3ページ**を取る
**ページを 1,2,3 と連番で取ってはいけません。Qiita の検索結果は新しい順なので、
先頭ページだけ取るとその期間の最後のほうに偏ります。**位置を散らして期間全体から拾います。
そして、残り回数が0になったら待たずに打ち切り、そこまでの結果を保存して記録に残す
実装にしました。待つ実装だと、止まっているのか進んでいるのかが分からなくなります。
掃く前に、通す関門を決める
ここを先に書かないと、後から条件を足してしまいます。
指標 P(ストック >= 20)。**零過剰なので二値化する**(平均は外れ値1本に支配される)
族 106セル。**1つの族としてまとめて補正する**(タグだけ別枠、はしない)
検定1 ラベルを並べ替えて最大|z|の分布を作る(ヌル較正)
検定2 BH-FDR q = 0.10
検定3 前半(3〜6月中旬)と後半で**符号が一致**すること
再抽出 重みに比例させて対照を取り直し、**5回まわす。1回の生存は発見と呼ばない**
主結果 **著者フォロワー100未満の層**(私と同じ母集団)
セルの中身はこうです。
タグ12 / 小分類9 / 題名の型6 / 題名長4分位 / 本文長4分位 /
コードブロック数4分位 / 時刻6 / 曜日7 / 交互作用(小分類×題名型)54
小分類は題名の語で機械的に判定しました。判定に使った語を全部残してあります(再現のため)。
CATEGORY_WORDS = {
'コスト課金': ['トークン', 'コスト', '料金', '課金', '節約', '安く', '高い', '無料枠'],
'セキュリティ事故': ['セキュリティ', '脆弱', 'インシデント', '漏洩', '事故', '危険', '攻撃', '権限'],
'機能解説': ['スキル', 'サブエージェント', 'フック', 'hooks', 'MCP', 'コマンド', '設定'],
'運用自動化': ['運用', '自動化', '監視', 'CI', 'Actions', '常時', '24時間', 'cron'],
'導入初心者': ['入門', '初心者', 'はじめて', '始め方', '使い方', '導入', 'インストール'],
'ツール比較': ['比較', 'vs', '対決', 'どっち', '違い', '使い分け'],
'失敗談': ['失敗', 'やらかし', '溶かし', '壊れ', 'ハマ', '後悔', '反省', '地獄'],
'新機能速報': ['リリース', '新機能', 'アップデート', '登場', '発表', '追加され'],
'業務適用': ['業務', '現場', '実務', 'チーム', '導入事例', '社内', '本番'],
}
探索するのは「操作できるもの」だけ
セルを決めるとき、自分が変えられないものは入れませんでした。
探索する タグ / 題名の型 / 題名の長さ / 本文の長さ / コード数 / 時刻 / 曜日
探索しない 著者の知名度 / 題材そのものの流行 / 運
「有名な人の記事は読まれる」と分かっても、明日の行動が変わりません。
探索空間を操作可能なものに絞ると、掃くセル数も減り、多重補正で通りやすくなります。
探さないことを決めるのも設計のうちです。
検定1 ―― 偶然だけでどこまで出るか
結果ラベルを並べ替えて、**106セルの中の最大|z|**がどこまで行くかを見ます。
実測の最大|z| 5.1 〜 5.7(再抽出5回)
並べ替えの95%点 3.9 〜 4.3
**実測が偶然の上限を超えています。**ここで超えなければ、その日の探索は「何も無かった」で終わりでした。
この関門が要る理由は単純です。106個も見れば、効果がゼロでも|z|が3を超えるセルは普通に出ます。「z=3.2 だった」だけでは何も言えません。
何も残らなかったときに何をやめるか、を先に決めた
事前登録には、結果を見る前にこう書いてあります。
タグが生き残った → 次の3本でそのタグを使う
タグが生き残らない → タグ選定に時間をかけない。以後は題材と鮮度に寄せる
題名の型が生き残った → 既存記事の改題を実行する
何も生き残らない → 「操作可能な要因は無い」と記録し、探索を打ち切る
これを先に書いておくと、結果を見てから条件を足す誘惑が消えます。
実際にはタグが生き残ったので、私は自分の記事のタグを差し替えました。
Python・統計・ABテスト・データ分析 を外し、ClaudeCode・AIエージェント・生成AI を入れました。
この記事のタグも、その結果です。
残った6つ
フォロワー100未満の層(ケース116本 / 対照2,234本)。5回の再抽出すべてで BH-FDR を通り、時期分割でも符号が一致したものです。
セル 平均z 向き 前半z / 後半z
タグ:ClaudeCode +5.30 ケースに多い +5.81 / +5.14
本文長Q1(最短) -4.62 ケースに少ない -4.09 / -2.28
本文長Q4(最長) +3.95 ケースに多い +2.35 / +3.65
コードブロック数Q4 +3.44 ケースに多い +2.84 / +1.47
タグ:LLM -3.00 ケースに少ない -2.95 / -1.75
小分類:セキュリティ事故 +2.85 ケースに多い +1.91 / +2.49
中央値で見るとこうです。
本文長 広がった記事 7,670字 / そうでない記事 5,235字
コード数 広がった記事 5個 / そうでない記事 3個
**本文長は Q1が負・Q4が正で、量反応の形になっています。**単発の当たりではなく、長さに沿って向きが揃っている。偶然の可能性はその分下がります。
落ちたもの ―― こちらのほうが役に立つ
本文長Q3は BH を通ったのに、時期分割で落ちました。
前半 z = +3.42 後半 z = -0.69 → **符号が逆転。棄却**
「中くらいの長さも効く」と言えそうな数字が出ていましたが、期間を割ると消えました。
そして、主結果の層で1つも生き残らなかったものがあります。
公開時刻 6区分すべて落選
曜日 7つすべて落選
題名の数字 単独では生存せず(記述統計でもリフト1.00)
**投稿時刻を最適化する必要はありませんでした。**曜日も同じです。
**「効かないと確認できた」ことのほうが、日々の判断には効きます。**そこに時間を使わなくてよくなるからです。
タグの拡散率も測りました。同じ努力でも置く場所で桁が変わります。
タグ 期間内の本数 ストック20超 拡散率
ClaudeCode 561 13 2.3%
AIエージェント 391 6 1.5%
生成AI 561 8 1.4%
AI 1,042 14 1.3%
Python 665 1 **0.15%**
統計 25 0 **0%(母集団がいない)**
**私は最初、Python と統計のタグを付けていました。**5つのうち4つが、人のいないプールでした。
無名でも広がるのか ―― 広がります
一番知りたかったのはこれでした。8/15以降にストック20を超えた37本の著者を調べました。
広がった37本 ふつうの100本
著者フォロワー中央値 106 2
フォロワー100未満の割合 **46%** 89%
フォロワー10未満の割合 **16%** 66%
S128 フォロワー 12 記事数 4 【インシデント報告】…
S 85 フォロワー 7 記事数 5
S 51 フォロワー 2 記事数 5
S 40 フォロワー 0 記事数 8
S 34 フォロワー 2 記事数 1 ← **記事1本目**
記事1本・フォロワー2の著者がストック34を取っています。
「まず土台を作らないと」という前提は、少なくともこのデータでは要りませんでした。
正直に書く限界
① 観察データであり因果ではない
「そのタグが効く」のか「それを選ぶ書き手が上手い」のかは分離できていない
② **フォロワー数は取得時点の値**。広がった記事の著者は、その結果として
フォロワーが増えている。**層別そのものが逆因果に汚染されている**
③ コントロールは各タグ3ページ位置のクラスタ標本。真の無作為抽出ではない
④ 後半のケースが35本と少ない(新しい記事ほどストックが溜まっていない)
⑤ 測っているのは LGTM とストックであって、**ビューではない**
ビューは著者本人にしか見えないため、外部からは分布を作れない
**②が一番重いと思っています。**この層別は「無名でも広がるか」を見るために置いたのに、
広がった結果フォロワーが増えた人は、層から抜けています。
つまりこの層は「広がったのにフォロワーが増えなかった人」に偏っている可能性があります。
手順のまとめ
1 母集団の基準率を先に知る(0 は異常か、最頻値か)
2 希少事象はケース・コントロール。当たりを全数集める
3 層別で取ったら、抽出確率の逆数で補正する
4 掃くセル数を数え、**1つの族として**多重補正する
5 ヌル較正 → BH-FDR → 時期分割 の3段を通す
6 1回の生存を発見と呼ばない。標本を取り直して繰り返す
7 自分と同じ母集団で層別する。全体平均は上位者に支配される
8 **落ちたものと、効かないと確認できたものを書き残す**
8 がいちばん実用的です。「時刻と曜日は効かない」と分かった日から、私はそこを考えなくなりました。
最後に。この分析をしても、私の記事の LGTM は 0 のままです。
到達(ビュー)は増えましたが、反応はまだ1件も出ていません。
何が読まれるかを数えることと、読まれた先で反応を得ることは、別の問題でした。
この連載は、実際に測った数字だけで書いています。
同じことを試す人の役に立ちそうなら、ストックしておいてください。
この連載
AIエージェントを実際に回して、かかった費用と壊れた箇所を測って書いています。推測は書きません。実測値だけです。
- Claude Code のトークン使用量を実測したら1ターン23万 ― 節約に効いたのは「セッションを切る」だった
https://qiita.com/manabu49-ai/items/2598a30d5140e4445ab6 - 57分間、死んだジョブを誰も見ていなかった ― AIエージェントの見張りを機械に渡す
https://qiita.com/manabu49-ai/items/5c7506c94b5be58c040e - AIに100通り試させたら、効果ゼロなのに5個が「有意」だった
https://qiita.com/manabu49-ai/items/397a018948e1ab7ef29e - 仕様書は2日前から手元にあった ― 読まずに実装した対処が、データを永久に失う設計だった
https://qiita.com/manabu49-ai/items/9b947604d3dc4958fa36 - 本記事 ― Qiitaで何が読まれるかを3,478本から探した
番外 ― Claude のモデル提供終了、猶予は告知から約60日 ― 過去9回を数えて、手元を検査するスクリプトを書いた
https://qiita.com/manabu49-ai/items/bc2a7be2a6ee4ceb6185
**無料記事は結論まで全部書きます。**出し惜しみはしません。