この記事は クソアプリのカレンダー | Advent Calendar 2023 - Qiita の2つ目のカレンダーの18日目です。
- 本記事では「ポエム記事」の良し悪しについては特に言及していません。
- また、本記事における 「ポエム記事」の定義は大雑把 で正確性は何もありません。
デモ
Qiitaのポエム記事を除外するChrome拡張を作りました。
これは何?
Qiitaの記事一覧画面内からポエム記事へのリンクを除外するChrome拡張機能です。
ここでいう「ポエム記事」とは、「本文中にコードブロックを含まない記事」を指します。
(勝手に定義しました)
# コードブロックとはこれのこと
# QiitaのMarkdownなどでは ``` で表現できるやつ
例えば、下記画像は筆者のユーザページです。
この画像内の記事を分類すると、
- ポエム記事(=本文中にコードブロックを含まない記事)
- それ以外の記事
となります。
そのため、拡張機能を実行するとポエム記事へのリンクが下記の通り除外されます。
ちなみに、「非表示にしてしまうと、どの記事が除外されたかわかりにくい」「本当にページ内の全記事をチェックしたのか不安」といった声が筆者自ら上がってきたので、
- ポエム記事のリンクテキストなどを薄くする
- ポエム記事には
ポエム
タグを付与する - ポエム記事以外には を付与する
といった機能を追加しました。
(冒頭のデモ画像では、わかりやすさ重視のためにこちらの機能を利用)
これらを適用した結果が下記画像です。
Qiitaのサーバに負荷をかけすぎない配慮
ポエム記事の定義として「本文中にコードブロックを含む記事」としていることからわかるように、この拡張機能はページ内に存在するリンクに都度リクエストを送信しています。
GETリクエストのためそこまでサーバへの負荷は大きくないと予想していますが、さすがに秒間で1000とか2000とか投げるのはよろしくないでしょう。
そのため、リクエスト頻度や回数を抑える工夫をいくつか設けました。
まず、デモ段階では 安全を期して秒間1リクエスト になるようリクエスト間隔を調整しています。
(軽くしか調べてQiitaAPIのrate limit くらいそれっぽい情報見つけられなかったので、とりあえず怒られなさそうな範囲に留めた)
また、Qiitaの記事のみにリクエストを送信できれば良いので、 リクエスト先を https://qiita.com/<ユーザID>/items/<記事ID>
に限定 しています。
2023年12月時点で、ホーム や トレンド ページに一度に表示される記事は30件なので、最大でも1回に30リクエスト程度に抑えることができています。
(つまり、ページ内のポエム記事リンクを除外するために毎回最大30秒要している、という意味 )
さいごに
Chromeウェブストアでの公開は間に合わなかったので、この記事が投稿されてから申請します。
(気力があれば)
そして、改めて注意書きを。
本記事はポエム記事が有害であることを主張するものではありませんし、むしろ筆者はポエム記事から得られる知見もたくさんあるよ派の人間です。
最後まで保身のための文章を色々と散りばめましたが、そもそもこのchrome拡張はコードブロックの有無でしかポエム記事判定を行なっていない性質上、
- ポエム的な内容ではないがコードブロックを含まない、例えばアーキテクチャ解説のような記事も除外されてしまう
- 懇切ご丁寧に
ポエム
タグが付与されている記事であっても、コードブロックが含まれていれば除外されない
といったクソアプリ仕様なので問題ないか。
お疲れ様でした。