Qiita Engineer Festa 2023の『平均投稿数賞』を戦略的に狙おうと思ったら全然ダメでした

# Qiita Engineer Festa 2023 への参加

はじめまして、おうちからフルリモートでインフラエンジニアとして働く @yonex です。最近、データセンターのオンプレ環境をフルリモートで何とかすることを頑張っています。どうして今クラウドではなくデータセンターで頑張るのか、カジュアル面談で聞きに来てください！

さて最近、Qiita API から情報を取得する記事をちまちまと書いたりしていました。

https://qiita.com/yonex/items/ce04ef37685d0253bed7

そのすべては、6月14日〜7月21日の期間限定で展開された記事投稿キャンペーン **Qiita Engineer Festa 2023** の、**『平均投稿数賞』** を戦略的にとりにいくことが目的でした。

https://qiita.com/official-campaigns/engineer-festa/2023

キャンペーンの結果発表が 7/28(金) にライブ配信イベントでおこなわれることになっており、何らかの賞を獲得すると、そのイベントで会社名をアピールできそうです。エンジニアの採用活動の一環として Qiita に Organization を作ったからには、逃すにはもったいない絶好の機会です！
[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27471/1aa1912f-6492-1ccb-4a52-1423240954ff.png)](https://qiita.com/organizations/moicorp/profile)

# 弱小 Organization にもチャンスが与えられた

今回のキャンペーンでは、以下の条件で4つの賞が用意されており、それぞれを達成した Organization が表彰されるルールです。うしろ2つの賞は、私たちのような少人数の生まれたて Organization にもチャンスがありそうだと感じました。

- **総合いいね賞**：すべての Organization の中から、獲得したいいね数が最も多かった
- **記事投稿メンバー最多賞**：最も記事を投稿したメンバーが多かった
- **平均投稿数賞**：1人あたりの記事投稿数が最も多かった
- **少人数部門いいね賞**：メンバー数が10名以下で獲得したいいね数が最も多かった

特に **平均投稿数賞** は『1人あたりの記事投稿数』のみが条件になっていて、わが Organization はメンバーが少ないがゆえに、たとえ他のメンバーの協力が1ミリも得られなかったとしても、たとえ1つもいいねを貰えなかったとしても、自分1人だけがガムシャラに努力すれば達成可能となっています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27471/5cd822c7-aded-29de-6144-f9cf5652d51a.png" width="450">

Qiita Tシャツ、欲しい

# 結果どうなったか

出オチで申し訳ないのですが、爆死しました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27471/37286b79-55a3-6493-2abc-2dc508bce9f7.png)
自分が **新型コロナウイルスにかかってしまい** 速攻で記事の投稿がストップしてしまって一瞬で断念しました…。キャンペーンの後半になってから始めたのでもともと厳しい戦いになる予定ではあったのですが、わが Organization の平均記事投稿数、わずか『0.4』という結果です。

ワクチン4回も打ったのに普通にダウンして悔しいです。

# 実行するつもりだった戦略について

道半ばの記録だけでも残しておくので、これで供養とさせてください。

## キャンペーン期間中の、毎日の投稿数を知る

まず、Qiita API を利用してこちらのシステムを作りました

https://qiita-engineer-festa-2023-monitor.vercel.app/?qiita

1日あたりの Qiita 全体の投稿数と、Organization ごとの投稿数を観察できるようにしました。たとえばキャンペーン初日の6月14日だったら、Qiita 全体で339件の記事が投稿されており、Organization ごとの投稿では qiita-inc が9件で最多だとわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27471/7c5bf03a-d9cc-b3de-f4da-ed520242a4d7.png)
Qiita 株式会社さん、さすがに投稿数が多くてキャンペーン盛り上げの意識が高いです。ただしここで注意なのは、Qiita API のレスポンスからは **その記事がキャンペーンに参加しているかどうか** がわからないということです。

https://qiita.com/api/v2/docs#get-apiv2items

その記事に設定されている Organization は取得できるのですが、キャンペーンの参加状況は API からわからないので、正確な数字は目視などで確認するということになってきます。今回のシステムではあくまで戦略的に記事数をのばしていくための目安がわかればよい、という割り切り実装になっています。

まずこれでわかったのは、果てしなく無茶な投稿数ではないということです。しかも、1人あたりの記事数を競う『平均投稿数賞』においては、メンバーが多ければ多いほど1投稿あたりの威力が下がるため、目標はさらに低くなってきます。たとえば qiita-inc であればメンバー数は42人ということで、メンバー数5人の Organization と比べると1投稿あたりの威力が8倍は違ってきます。

1日あたり300前後という全体の投稿数を見たときにはビビってしまいましたが、光が差してきたような気持ちでした。

## キャンペーン期間中の、Organization ごとの合計投稿数を知る

開催期間が終了しているため、現在は最終状況を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27471/81e930f4-4737-ac69-75c3-3ed60dd73f9e.png)
KDDIアジャイル開発センター株式会社さんが Qiita 株式会社さんを抜いて、合計の投稿数としてはトップだったようです。38日間で119記事の投稿はスゴいですね！

さて、やはりここでも **キャンペーンに参加している記事がいくつなのかは API から取得できていないということに注意** ですが、これであとは各 Organization のメンバー数がわかれば、最終的に知りたかった『1人あたりの記事投稿数』の目安を出すことができます。

## いくつ投稿すれば『平均投稿数賞』を獲得できるのか

キャンペーン結果発表の前ですが、ここからは『平均投稿数賞』を誰が獲得するのか **ネタバレになっている気がするのでご注意** ください :bow: 

`TODO: 各 Organization のメンバー数が API で取れないので手動で数える` のように書いてしまったとおり、Organization のメンバー数は API から取得できないので、頑張って数えました。その結果、とんでもない強豪の存在が明らかになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27471/3daf5a5e-a292-0bcf-3bec-61df850df4fa.png)
1位のスコアは脅威の『38.0』で、Avis さんでした。2人のメンバーでキャンペーンの38日間は毎日投稿を続けたということだと思うので、こちらこそがまさに戦略的な勝利と呼べるものになりそうです！

なお Avis さんはガチで **『少人数部門いいね賞』** を目指されていて、そちらの賞も獲得されるのかもしれません。しっかり全記事でキャンペーンの設定もされているようなので、私のシステムが正しければ、『平均投稿数賞』とのダブル受賞になるのではないかと期待できます。スゴすぎます。

https://twitter.com/shota_appdev/status/1682346715201019904

自分たちが『0.4』だったことを考えると、風前の灯火というか、なんなら、自分の Organization メンバーのうち記事投稿をしていない社員は Organization から追放して人数を減らしスコアを上げるというズルは有効なのだろうか、などと考えるにまで至っていたので本当にはずかしいです。

# さいごに

まとめると、本当はこの Qiita Engineer Festa 2023 Monitor システムを使ってキャンペーン期間中に観察を続け、いくつの記事を投稿すれば賞を獲得できるのかを把握しながら、確実に優勝を掴むというのが当初の戦略だったのですが、全然ダメでした…
また機会があれば、このようなキャンペーンにぜひ参加したいと思います！

なお GitHub に今回のシステムのソースコードを上げております。Next.js のテンプレを業務の合間に少しイジってそのまま Vercel にデプロイした、という程度ですが、なにしろインフラエンジニアが初めてさわる Next.js ということで、何かヤバい点がありましたらご指摘いただけますとありがたいです。

https://github.com/yonex/qiita-engineer-festa-2023-monitor

最初、Next.js の最新構成である App Router でやってみたのですが、Qiita API から `fetch()` した内容がそのままキャッシュされるというところで、API のレスポンスサイズが大きすぎてキャッシュできませんのような警告が出ることになりました。たしかに Qiita の記事を100件ずつ取得するというのはサイズがそれなりに大きくなりそうですね。諦めて、ビルド時に生成した静的ページをキャッシュさせるというような感じにしたつもりですが、またチャレンジしてみたいです。

明後日の結果発表のライブ配信イベントを楽しみにしております！