2
Help us understand the problem. What are the problem?

posted at

updated at

最もLGTMを獲得したのはあの記事!プロトアウトスタジオ2021年のアウトプットを振り返る

今年も始まりました!アドベントカレンダー!

この記事はプロトアウトスタジオのカレンダー | Advent Calendar 2021 - Qiitaの1日目の記事です。

みなさんこんにちは。プロトアウトスタジオ講師の光岡(@mitsuoka0423)です。
今年も残すところ1ヶ月ですね。今年はどのような1年でしたでしょうか??
毎年恒例のアドベントカレンダーもスタートしました。プロトアウトスタジオも毎日投稿していきますので、ぜひご覧ください。

プロトアウトスタジオのQiita記事が1000件に到達しました!

2021年もプロトアウトスタジオ学生によるたくさんのアウトプットが行われ、Qiita記事の投稿数が1000件に到達しました!祝
(10000LGTMも目の前ですね!)
Image from Gyazo
本記事では、Qiita APIを利用して、2021年に作成されたQiita記事の中からLGTMを多く獲得した記事をピックアップして紹介していこうと思います。

2021年最もLGTMを獲得したのは...

1位: 227LGTM 疑似彼氏、作りました。 @mnana

image.png
1位は227LGTMを獲得した「疑似彼氏、作りました。」でした!888888888

"彼氏を作ろう"という見出しから始まり、"タケシ(仮)"というポケモンのジムリーダーを連想させる名前の彼氏が出来上がる様子が見事に描かれています。
またネタ記事と見せかけて、いろんな返信パターンを持っていたりや天気APIのデータから傘が必要か教えてくれるなど、細かいところまで実装されている点も評価につながったのではないでしょうか。

2位: 142LGTM たかしくんに時速10kmで日本全国を最短距離で走らせました @canonno

Image from Gyazo
2位は142LGTMで「たかしくんに時速10kmで日本全国を最短距離で走らせました」でした。

数年後の中学校くらいの教科書に載ってきそうな内容ですね。
こちらもネタ記事と見せかけて、離散最適化問題を解くアルゴリズムが実装されています。
たかしくんは18日と4時間で日本を全国を走り切ることができるそうです。以外と早いですね。

3位: 138LGTM 「ひらがな化API」を使って、給食メニュー変換Botを作ったら、わが子に大好評だった話 @kokano23

Image from Gyazo
3位は138LGTMで「「ひらがな化API」を使って、給食メニュー変換Botを作ったら、わが子に大好評だった話」でした。

ひらがなが読めるようになったお子さんに向けてLINE Botを作成するファミリーテックな記事です。
リッチメニューにポケモンのイラストを使うなど、お子さんが使いたくなる工夫も施されています。

また、@kokano23さんはのびすけラジオにも登場されているので、興味がある方はぜひお聞きください。
事務職勤めのワーママがテクノロジーを身に付けたら仕事でもプライベートでも驚きの変化が #身の丈DX #事務職DX

4位〜10位

4位〜10位は以下の記事でした。

4位: 90LGTM @n0bisuke 【初見にオススメ】Raspberry Pi PicoをブラウザだけでLチカする入門 (Web Serial API)
5位: 90LGTM @shoito66 AIは増えすぎたガンダムを見分けることができるのか?Teachable Machineで作った分類モデルで検証してみた
6位: 68LGTM @canonno 強化学習で酔っ払いの挙動を見る
7位: 54LGTM @naokiuc 顔からラグビー部かサッカー部かを判断する
8位: 43LGTM @tkyko13 YouTubeの動画をQiita記事に埋め込んでみた
9位: 40LGTM @mitsuoka0423 【ハンズオン】写真を送るとAIが分析してくれるLINE Botを1時間で作ってみよう
10位: 37LGTM @chihirokubota これで若い子とのカラオケも安心?!COBOLしか経験なし!文系出身SE(23歳女)が若者の音楽を伝授します!

11位以降の記事はこちらから確認できます。→プロトアウトスタジオ2021アウトプット集計

Qiita APIを使って記事を取得する

以降は技術な解説です。長いので流し読み推奨です。
さっと読んで、他のアドベントカレンダーの記事を見にいきましょう。
Qiita API v2を利用してデータを取得しています。

取得対象

取得対象は以下のとおりとします。

プロトアウトスタジオOrganizationに属しているメンバー
②2021/01/01〜2021/12/01の期間に作成された記事

②の条件は、検索クエリでcreated:>2021-01-01を指定すれば良さそうです。
しかし、検索時に利用できるオプション - Qiita:Supportを見てみても、①を絞り込む方法は今のところ公式に提供されていないようです。

プロトアウトスタジオOrganizationを眺めていると、メンバーアイコンのリンクからQiitaのユーザーIDが取得できそうです。
Image from Gyazo
今回は、Organizationに属する全メンバーのユーザーIDを取得して、それぞれのユーザーが投稿した記事の情報からLGTM数を取得していきます。

DevToolsを使って、OrganizationメンバーのユーザーIDを取得する

今回は手軽に、DevToolsを活用してユーザーIDを取得します。

まずは取得したい要素を特定できる属性を調べます。
Image from Gyazo
メンバーアイコンは、class="op-Members_member"を持つliタグの要素として実装されているようです。
ユーザーIDは、liタグの子要素のaタグのhref属性に含まれているので、それを取得していきます。

DevToolsのコンソールタブで、以下のコードを実行します。

Array.from(document.getElementsByClassName('op-Members_member')).forEach(element => console.log(element.children[0].href.split('/')[3]));

Image from Gyazo
これで、プロトアウトスタジオメンバーのユーザーIDを取得できました。

Qiita APIを叩くプログラムを書く

axiosを使ってQiita APIを叩くプログラムを書いていきます。

クリックしてプログラム全量を表示
'use strict';

const axios = require('axios');

const main = async () => {
  const users = [
    'cog1t0',
    'n0bisuke',
    'tseigo',
    'tkyko13',
    'mitsuoka0423',
    'ukkz',
    'shima-07',
    'takeaship',
    'UhRhythm',
    'RatchoTetsugaku',
    'kmaepu',
    'Toshiki0324',
    'banboo',
    'sksk_go',
    'MikH',
    'suo-takefumi',
    '3yaka4',
    'tatsuya1970',
    'zerozeronineking',
    'grayhamchan',
    'iizuka2019',
    'karu',
    'mihoko-funatsu',
    'taichi0128',
    'dashgo5go',
    'doikatsuyuki',
    'takeatakea',
    '13sayu',
    'marumaruchan',
    'harach19k',
    'kyanchi',
    'khoahv',
    'Teru_3',
    'hiromae0213',
    'cazzz',
    'Naru0607',
    'kaiser355',
    'canonno',
    'twtjudy1128',
    'PmanRabbit',
    'heihei15408697',
    'Sugizo50073508',
    'm3do',
    'sawakoshi_yy',
    'misa_m',
    'ranchi1977',
    'shoito66',
    'kkyosuke17',
    'kokano23',
    'ShinsukeSutou',
    'yuta-proto-biz',
    'boriko',
    'okinakamasayoshi',
    'dsvvpxgcseldie',
    'aya2648',
    'Ziyasumin01',
    'Junno',
    'yudiramaruyama',
    'kensyu20210726',
    'komona',
    'tanaka_LV5',
    'NagaharaHitomi',
    'tanakahiroki',
    'naokiuc',
    'Izumi0711',
    'watanabe-tsubasa',
    'TAKA_xedge',
    'kk_puruzera',
    'yui-kouy',
    'mnana',
    'ikumi623',
    'chihirokubota',
    'tishiyama',
  ];

  for (const user of users) {
    const response = await axios.get(
      `https://qiita.com/api/v2/items?query=created:>2021-01-01+user:${user}&per_page=100`,
      {
        headers: {
          Authorization: 'Bearer [アクセストークン]',
        },
      }
    );
    response.data.forEach((content) =>
      console.log(
        `${content.created_at},${content.user.id},${content.title},${content.likes_count},${response.data.length}`
      )
    );
  }
};

main();

(オプション)StackBlitzを使って実行する

今回、オンラインIDEであるStackBlitzを利用して実行してみました。(ローカルで実行しても全然問題ありません。)
Image from Gyazo
無料プランでもコードを書くだけでなく、ターミナルでコードを実行できました。
Pricingを見ても、現時点(2021/12/01)では実行時間の上限もなさそうです。
(これはgitpodの代替サービスとなりうるかも。引き続き調査します。)

結果は以下のように出力されます。
Image from Gyazo
CSV形式で出力されるので、Googleスプレッドシートに読み込んでLGTM数でソートしてランキングを作成しました。

まとめ

2021年もたくさんのアイデアが形になり、Qiita記事として投稿されました。
疑似彼氏のような自分が作りたいから作ったというタイプのアウトプットや、ひらがな変換Botのように誰かのために作ったタイプのアウトプットのどちらもQiita上でLGTMを集められているというのは面白いですね。
残り1ヶ月で、疑似彼氏を超えるLGTMを獲得する記事は生まれてくるのでしょうか...?

12/25までアドベントカレンダーは続きますので、今後の記事もぜひご覧ください!
明日の担当は @suo-takefumi さんです!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?