Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
72
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Qiitaいいな〜ランキング

「いいな〜」とは、いいねした人のことです。(「iine」に〇〇した人を表す「er」をつけて「iiner」)

QiitaのContributionsはいいねされた数(被いいね数)を中心に算出されますが、ここでは逆にいいねした数でランキングしてみました。

ここで取得したデータの分析については以下にまとめてあります。

Qiitaいいな〜分析

以下、「いいね数」という表記はいいねした数を表します。

データの取得方法

先ずはデータの取得方法を説明します。

全ユーザーリストの取得

現在Qiitaの登録ユーザー数は30万人超です。
Qiita API ではユーザーリストを取得することができますが、最近ユーザー登録された1万人までしか取得できません。

Qiita API v2ドキュメント - ページネーション
Qiita API v2ドキュメント - GET /api/v2/users

そこで、ユーザー一覧のページをスクレイピングして全ユーザーのリストを取得しました。

ユーザー毎の取得データ

ユーザー毎に以下のデータを取得しました。

  • いいね数
  • 最終いいね日
  • 記事数
  • Contributions

いいね数

Qiita API ではユーザー単位でいいね数やいいねした記事を取得することはできません。

そこでユーザーページの「いいねした記事」から取得しました。
ここの(ページ数-1)x20 + (最終ページの記事数) がそのユーザーのいいね数になります。

最終いいね日

最終いいね日とは、ユーザーが最後にいいねした日です。

ユーザーページからは記事をいいねした日は取得することはできませんが、いいねした記事の投稿日から推測できます。記事が投稿される前にいいねできるわけないので、いいねしたのは記事の投稿日以降になります。
ここでは、ユーザーの「いいねした記事」の1ページ目の中から最新の投稿日を取得してこれを最終いいね日としました。

いいねした直近20件がたまたま古い記事ばかりだとズレてしまうのですが、アクティブユーザーであるかどうかの大まかな判断に使えそうです。

取得データ統計

2019/01/08頃に取得したデータです。

件数
全ユーザー数 308,635
停止アカウント 15,532
エラー 2
有効ユーザー 293,101
いいな〜 117,494

以下のユーザーは何度かリトライしましたが502: Bad Gatewayで取得できませんでした。いいね数が多すぎるんでしょうかね?

  • kasumani
  • selious

有効ユーザー数は全ユーザー数 - 停止アカウント - エラーです。
「いいな〜」はいいねした記事があるユーザーの数です。

他にももっと詳細な統計と分析を書いていたのですが長くなるので別記事にしました。

Qiitaいいな〜分析

いいな〜ランキング

それではいいな〜ランキング上位300位の発表です。300位までにしたのは単に自分を入れたかっただけです。

ランク ユーザー いいね数 記事数 contributions 最終いいね日
1 @hiro_matsuno2 30,990 6 71 2019/01/06
2 @morika-t 27,487 0 2 2018/12/27
3 @Noboruhi 22,988 5 53 2019/01/07
4 @Reds 14,737 0 0 2018/07/28
5 @Neos21 12,155 0 0 2019/01/07
6 @wivern888 8,331 0 0 2019/01/04
7 @rentalname@github 7,140 15 139 2019/01/07
8 @snona 6,928 1 32 2019/01/06
9 @alt 6,856 0 6,214 2018/12/29
10 @tos-miyake 5,726 39 892 2018/12/31
11 @tsuyoshi_cho 5,707 41 450 2018/07/29
12 @mero 5,414 0 0 2017/05/16
13 @okumurakengo 5,230 18 320 2019/01/07
14 @ykominami 5,021 0 0 2018/12/15
15 @7of9 4,763 5,831 4,892 2019/01/08
16 @fumiyasac@github 4,655 43 2,855 2018/12/31
17 @mono0926 4,618 94 15,740 2019/01/07
18 @hnakamur 4,520 187 5,589 2018/12/29
19 @ThisIzuLove 4,340 0 0 2018/12/05
20 @bells17 4,232 35 211 2018/12/18
21 @zaoriku0 4,170 18 87 2019/01/01
22 @tomookaku 4,068 0 0 2018/03/14
23 @heliac2000 4,026 0 154 2018/12/22
24 @Spike 3,955 0 0 2018/12/23
25 @bonk 3,893 137 388 2019/01/03
26 @daicon-oroshi 3,872 0 0 2019/01/06
27 @minewebstaff 3,824 2 39 2018/10/16
28 @n_slender 3,822 147 1,385 2019/01/06
29 @tatsuya6502 3,711 42 1,735 2018/12/23
30 @mpyw 3,668 282 20,376 2018/12/27
31 @cutmail 3,667 10 844 2018/12/21
32 @ishideo 3,601 0 0 2017/10/13
33 @morozumi_h 3,582 21 943 2018/12/24
34 @sibukixxx 3,466 7 42 2018/12/25
35 @silverskyvicto 3,341 77 160 2019/01/05
36 @JunSuzukiJapan 3,329 179 1,535 2019/01/07
37 @teruichi81 3,309 2 76 2019/01/05
38 @kimihiro_n 3,305 28 1,425 2019/01/06
39 @sora0077@github 3,247 38 617 2018/12/27
40 @fantm21 3,227 72 1,716 2018/12/09
41 @tenmyo 3,220 16 289 2019/01/03
42 @osawasatoru 3,203 0 0 2019/01/05
43 @ndxbn 3,058 58 792 2019/01/04
44 @yuta_oxo 3,048 0 0 2019/01/05
45 @NaohiroKashimoto 3,008 0 0 2018/10/22
46 @hiromichinomata 2,997 9 68 2018/12/26
47 @Hiro_Matsuno 2,992 0 0 2018/12/13
48 @intermezzo-fr 2,985 10 324 2018/12/22
49 @karumado 2,969 19 100 2019/01/05
50 @nasum 2,967 57 826 2019/01/06
51 @m0a 2,958 87 2,239 2019/01/05
52 @bluepicky 2,947 0 11 2019/01/07
53 @haiju 2,940 0 0 2018/10/24
54 @kimukou 2,937 0 32 2018/12/25
55 @riocampos 2,921 80 3,029 2018/11/14
56 @typista 2,915 11 134 2017/07/21
57 @blp1526 2,903 6 88 2017/12/24
58 @poad1010 2,844 72 504 2019/01/04
59 @SuguruOoki 2,827 88 166 2019/01/06
60 @junichi 2,812 2 31 2018/12/27
61 @QUANON 2,806 192 3,864 2019/01/04
62 @bzgyma 2,790 0 0 2015/09/19
63 @twinbee 2,789 27 259 2019/01/08
64 @croudsky 2,729 0 0 2019/01/01
65 @1-AizawaSatoshi 2,727 12 135 2018/12/15
66 @akmiyoshi 2,710 39 631 2014/12/18
67 @hmcGit 2,670 12 162 2019/01/04
67 @ozaki_shigenobu 2,670 0 0 2017/05/01
69 @kenichi_cc 2,628 16 3,345 2019/01/05
69 @nilfigo 2,628 6 92 2019/01/03
71 @shimabukuro 2,610 0 0 2019/01/05
72 @saicologic 2,605 89 708 2019/01/06
73 @takarake 2,575 28 125 2019/01/07
74 @funnything 2,556 9 178 2019/01/07
75 @shuu56 2,551 0 2 2019/01/07
76 @futoase 2,533 101 4,548 2019/01/05
77 @LightSpeedC 2,532 39 2,623 2018/12/28
78 @wint 2,485 1 46 2019/01/06
79 @kysnm 2,424 16 136 2018/09/19
80 @MegaBlackLabel 2,379 11 495 2019/01/03
81 @Ozuma 2,378 0 0 2018/05/11
82 @tokusyu 2,353 0 2 2019/01/07
83 @jkr_2255 2,333 370 4,129 2019/01/04
84 @thoriums 2,326 1 5 2018/12/24
85 @kjunichi 2,317 267 1,370 2018/12/25
86 @Reyurnible 2,308 22 4,197 2018/12/25
87 @sakebook 2,305 4 258 2019/01/06
88 @giwa 2,297 93 417 2018/12/27
89 @__2 2,287 0 0 2015/09/16
90 @__3 2,286 0 0 2015/09/17
90 @teracy 2,286 22 186 2019/01/06
92 @redshoga 2,285 44 641 2019/01/06
93 @myblue 2,282 0 0 2018/01/21
94 @Nimimal 2,275 142 1,277 2019/01/05
95 @Humangas 2,272 15 621 2018/12/19
96 @quenhulu 2,263 19 243 2018/12/12
97 @mAster_rAdio 2,251 33 144 2018/08/24
98 @touyoubuntu 2,236 40 1,012 2018/12/25
99 @perlunit 2,229 0 0 2018/12/22
100 @__4 2,226 0 0 2015/09/02
101 @opponitur 2,213 0 0 2018/04/02
102 @ktty1220 2,208 26 1,334 2018/12/12
103 @soyanchu 2,199 27 3,680 2018/10/25
104 @keisei_1092 2,179 63 405 2018/10/18
105 @nogaki 2,164 0 0 2019/01/06
106 @Alice_Season 2,158 0 0 2015/09/17
107 @kuro_kaeru 2,149 0 0 2015/09/19
108 @zaqz_yamato 2,141 0 1 2018/08/08
109 @kaizen_nagoya 2,132 1,242 3,227 2018/10/27
110 @Hakurei_Reimu 2,115 0 0 2015/09/18
111 @takuan_osho 2,114 15 399 2018/12/07
112 @tamanobi 2,113 22 286 2019/01/05
113 @mnuma 2,112 16 617 2018/12/20
114 @MasatoYoshioka@github 2,102 29 439 2018/12/17
115 @kaiware007 2,090 10 332 2019/01/07
116 @ats777 2,087 0 2 2019/01/06
117 @17number 2,082 2 49 2018/12/20
118 @Touhou 2,080 0 0 2015/09/15
119 @SatoTakeshiX 2,075 50 781 2018/12/09
120 @Twin_Drive 2,070 0 0 2015/09/19
121 @taku1201 2,060 6 50 2018/12/27
122 @LordOfNightmare 2,056 0 0 2018/12/22
122 @sounisi5011 2,056 42 1,496 2018/12/20
124 @cisco_gxr 2,034 0 0 2015/09/19
125 @cvusk 2,032 67 1,631 2019/01/04
126 @applideveloper 2,019 11 548 2019/01/06
127 @tadsan 2,004 192 10,841 2018/12/31
128 @hiroaki-dev 2,001 2 34 2019/01/06
129 @makopy_inside 2,000 9 25 2019/01/07
130 @suica 1,999 0 0 2019/01/05
131 @ktykogm 1,997 1 12 2019/01/05
132 @morinpic 1,974 0 0 2018/12/25
133 @yshr446 1,973 0 0 2019/01/05
134 @licht 1,968 0 0 2019/01/06
135 @webgyo 1,953 1 4 2018/10/30
136 @DolphinJP 1,951 0 0 2018/11/27
137 @shima11 1,946 0 0 2018/09/10
138 @acro5piano 1,942 201 4,808 2019/01/04
139 @travitu 1,941 0 0 2018/12/10
140 @shiozaki 1,940 79 2,271 2019/01/07
140 @hndr 1,940 0 0 2018/12/11
142 @saitotak 1,935 45 4,465 2018/12/29
143 @satotin 1,932 151 848 2019/01/07
144 @konaka 1,931 0 0 2018/05/10
145 @manzyun 1,930 31 419 2019/01/05
146 @droibit 1,928 21 805 2018/12/21
147 @hamu502 1,926 0 0 2018/08/10
147 @uri 1,926 59 1,475 2019/01/04
147 @ukisoft 1,926 38 439 2018/12/31
150 @TomoyaIgarashi 1,925 15 69 2018/12/08
151 @yahihi 1,909 30 600 2018/12/31
152 @doorfkin 1,908 0 0 2018/09/22
153 @mesiobass 1,904 1 21 2018/12/20
154 @piacere_ex 1,896 91 1,853 2019/01/06
155 @sekka 1,893 0 0 2016/12/02
156 @takehito-koshimizu 1,890 6 77 2018/12/31
157 @susieyy 1,887 50 12,110 2018/12/09
158 @tamadon 1,884 12 176 2018/12/27
159 @mfks17 1,881 30 429 2018/12/25
160 @umeneri 1,876 23 101 2018/12/24
161 @daikiojm 1,871 95 1,040 2018/12/31
161 @kesuzuki 1,871 11 238 2019/01/04
163 @kyamane 1,868 0 0 2018/06/17
164 @tadauki 1,866 0 0 2018/11/12
165 @KatagiriSo 1,860 49 363 2018/12/14
166 @tukiyo3 1,852 1,604 10,117 2018/12/18
167 @ytakky 1,847 0 0 2017/05/04
168 @daichan4649@github 1,844 0 0 2018/12/28
169 @cheezenaan 1,840 1 4 2018/12/29
170 @htomine 1,826 4 656 2019/01/04
170 @yyano 1,826 43 415 2018/12/27
172 @dkt 1,822 0 0 2018/06/05
173 @sakatuba@github 1,817 4 88 2019/01/07
173 @syug 1,817 4 38 2018/12/28
175 @teradonburi 1,815 101 5,660 2019/01/04
176 @tripmatango 1,813 3 11 2019/01/03
176 @nrhide 1,813 0 0 2018/12/18
178 @yousan 1,808 126 2,717 2019/01/05
179 @sh1928kd 1,803 2 18 2019/01/03
180 @a_yasui 1,796 156 1,560 2019/01/07
181 @hirokaki 1,788 0 0 2016/11/29
182 @opengl-8080 1,781 264 19,969 2018/12/24
183 @manners 1,777 0 0 2017/12/13
183 @ykhroki 1,777 0 0 2018/07/09
185 @xxxDATxxx 1,773 7 43 2019/01/06
186 @takecy 1,768 4 68 2019/01/01
187 @sasurai_usagi3 1,766 34 626 2018/12/27
188 @toshiyuki 1,764 0 0 2017/10/23
189 @idahobean 1,751 5 15 2019/01/02
190 @naari3 1,747 7 74 2019/01/03
191 @p-o-t-s 1,746 6 25 2019/01/04
192 @t44cd 1,745 2 12 2019/01/01
193 @helloinfoloth 1,743 1 2 2016/11/15
194 @b4b4r07 1,739 57 14,809 2017/06/21
195 @aki77 1,731 16 245 2018/12/15
196 @tammifull 1,730 0 0 2019/01/01
197 @ynott 1,728 86 730 2019/01/06
198 @takaken 1,720 5 15 2018/12/22
199 @samuraijap 1,714 5 34 2019/01/06
200 @pirohiropiro 1,711 0 4 2019/01/03
201 @shy_azusa 1,703 20 332 2018/10/23
202 @ongaeshi 1,693 153 2,335 2018/12/25
203 @st450 1,681 30 136 2018/12/26
204 @SaitoTsutomu 1,676 223 2,986 2019/01/05
205 @hidepon4162 1,675 0 0 2019/01/04
205 @singo405 1,675 2 123 2018/12/27
207 @mm36 1,667 73 1,868 2018/12/27
208 @letusfly85 1,649 61 565 2018/12/24
209 @usiusi360 1,642 34 1,247 2018/12/25
210 @koara-local 1,641 237 3,083 2018/12/07
211 @syokenz 1,639 16 605 2018/12/25
211 @HideNaka 1,639 4 20 2018/12/28
213 @veryblue 1,636 2 63 2018/12/21
214 @n-oshiro 1,634 61 1,088 2019/01/01
215 @dnby 1,632 0 0 2017/02/14
216 @ken0nek 1,622 31 1,241 2019/01/02
217 @ysk_brave 1,615 3 10 2019/01/05
218 @umihico 1,613 2 37 2018/12/04
219 @kkawauchi 1,609 2 1 2019/01/07
220 @iskw 1,607 0 0 2019/01/03
221 @snaka 1,601 385 3,466 2018/12/26
222 @kanase 1,600 1 41 2018/12/18
223 @tell 1,597 17 77 2018/12/13
224 @kiimiiis 1,592 73 1,042 2018/12/31
225 @gachakra 1,589 0 0 2018/12/04
225 @snowholic 1,589 0 0 2019/01/03
227 @seiiichi_o 1,585 2 52 2019/01/06
228 @delta93815 1,584 0 0 2017/11/28
229 @sgr-ksmt 1,577 44 1,368 2019/01/07
229 @sukune332 1,577 0 0 2018/09/13
231 @yumios 1,576 0 0 2019/01/01
232 @yoshifuji 1,572 16 41 2018/12/25
233 @shunsuke 1,569 0 0 2018/12/21
234 @yoshimaa 1,566 0 0 2018/12/15
235 @yu01 1,563 10 33 2018/05/27
236 @koogawa 1,553 70 6,002 2019/01/05
237 @r-ngtm 1,552 138 1,897 2018/12/27
238 @polidog 1,550 38 623 2018/12/27
239 @shogito 1,549 2 81 2018/08/27
239 @spiegel-im-spiegel 1,549 91 2,292 2018/12/03
241 @Shunta_Suzuki 1,545 0 0 2018/07/13
242 @mom0tomo 1,541 45 475 2019/01/03
243 @kurosawa_kuro 1,536 29 745 2019/01/01
243 @wonton14 1,536 12 79 2019/01/06
245 @Blacpans 1,533 4 22 2019/01/03
246 @ayaniimi213 1,532 20 208 2019/01/03
247 @hkwid 1,527 7 119 2019/01/07
248 @terrierscript 1,525 131 6,671 2018/12/14
249 @tomiacannondale 1,517 5 9 2018/03/27
250 @morizotter 1,513 49 2,129 2018/12/10
251 @htks0720 1,512 0 0 2017/08/17
252 @okoppe8 1,506 61 1,625 2019/01/06
253 @uni 1,503 0 0 2018/12/28
253 @ymiyamae 1,503 30 274 2018/06/05
255 @ainame 1,497 28 854 2018/12/17
256 @shinriyo@github 1,492 25 574 2018/10/31
256 @sirokujira 1,492 5 1 2018/12/28
258 @COBRA0318 1,488 0 0 2018/02/12
258 @moto_pipedo 1,488 8 76 2019/01/06
260 @igiy 1,485 1 2 2019/01/06
261 @cigalecigales 1,481 45 1,872 2018/12/30
262 @plasticstraw 1,480 13 472 2018/09/21
263 @61503891 1,477 53 538 2018/12/26
264 @ozw_sei 1,473 78 1,030 2018/12/24
265 @wgkoro@github 1,465 3 98 2018/12/25
266 @yusabana 1,464 34 2,817 2018/12/15
267 @nagakenjs 1,461 2 104 2018/08/24
268 @carotene4035 1,456 13 2,987 2019/01/06
269 @yuyawata 1,455 0 0 2018/04/18
270 @SNAMGN 1,454 7 13 2019/01/06
271 @te20 1,453 11 146 2018/12/30
272 @jTakasuRyuji 1,450 107 431 2018/12/19
272 @ddsystem 1,450 1 8 2019/01/03
274 @jack-low 1,447 38 220 2019/01/05
274 @tjun1 1,447 0 0 2018/10/11
276 @scivola 1,446 79 3,841 2019/01/08
277 @hogenishi 1,441 1 4 2019/01/04
278 @yuku_t 1,438 205 18,693 2018/12/27
279 @SuperAlloyZZ 1,436 0 0 2018/08/14
279 @soundTricker 1,436 86 4,281 2018/12/23
281 @dyoshikawa 1,433 32 121 2019/01/05
282 @ono_tug 1,432 1 7 2018/12/22
283 @gonjitti 1,430 0 0 2018/09/03
284 @ikemura23 1,429 60 161 2018/12/26
285 @AnzNetJp 1,428 14 162 2019/01/03
286 @hironow 1,427 0 0 2018/12/25
287 @ina_ryu 1,424 4 13 2018/05/13
288 @diamonddai 1,422 1 6 2019/01/01
289 @naohta 1,420 0 1 2019/01/07
290 @amaron518 1,419 0 0 2018/01/21
290 @sujii 1,419 0 0 2018/12/25
292 @redamoon 1,418 54 1,915 2018/12/20
293 @uasi 1,417 118 10,655 2019/01/06
294 @usagimaru 1,406 177 9,669 2018/12/22
295 @gungle 1,405 5 52 2019/01/05
295 @shuheilab 1,405 0 0 2018/12/07
297 @tag1216 1,404 110 9,764 2019/01/06
298 @ygkn 1,401 31 1,074 2018/11/14
299 @taka_kobayashi 1,393 0 0 2018/05/13
300 @yyh-gl 1,392 11 93 2019/01/05

いいね数が1万を超えるユーザーがいるというのはすごいですね。でもちゃんと記事を読んで評価しているんでしょうか。。。

それよりも驚きなのは、いいね数が多くても記事数・Contributionsが0のユーザーが目立つことです。
いいね数が多いユーザー = 活発なユーザー = 記事も書くユーザー だと思っていたのですが、どうやら違うようです。
Qiitaのいろいろランキング2018のContributions TOP100にランクインしている人は14人しかいませんでした。

最終いいね日を見るとほとんどが2018年12月以降ですが、中には1年以上前のユーザーもいます。
TOPいいな〜のほとんどはアクティブユーザーのようですが、休眠ユーザー・離脱ユーザーも少なからずいるようです。

ソースの一部抜粋

データ取得に使用したコードの一部です。TypeScriptで書いています。
HTTPリクエストには node-fetch、HTMLパースには cheerio を使用しています。

qiita.ts
import {URL, resolve} from "url";

import * as cheerio from "cheerio";
import fetch from "node-fetch";

const QIITA_URL = "https://qiita.com/";

const opt = {
    headers: {
        'Accept-Language': 'ja'
    }
};

const fetchHtml = async (url: string): Promise<CheerioStatic> => {
    const response = await fetch(url, opt);
    if (response.status >= 500) {
        throw new Error(`status: ${response.status} ${response.text()}`);
    }
    const text = await response.text();
    return cheerio.load(text);
};

export class UsersPage {

    static CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_".split('');

    static async fetch(char: string, page: number): Promise<UsersPage> {
        const url = resolve(QIITA_URL, `/users?char=${char}&page=${page}`);
        const $ = await fetchHtml(url);
        return new UsersPage($, page);
    }

    constructor(readonly $: CheerioStatic, readonly pageNumber: number) {}

    get users(): string[] {
        const users = this.$('.UsersPage__user');
        return users.map((i, user) => this.$(this.$(user).find('.media__body a')[0]).text()).get();
    }

    get nextLink() {
        const nextLink = this.$('.pagination a[rel=next]');
        return nextLink ? this.$(nextLink).attr('href') : null;
    }
}

export class UserPage {

    static ITEMS_PER_PAGE = 20;

    constructor(readonly $: CheerioStatic, readonly username: string) {}

    get suspended(): boolean {
        return this.$('.er-SuspendedUser').length !== 0;
    }

    get contributions() {
        return parseInt(this.$(`a[href='/${this.username}/contributions'] span`).first().text());
    };

    get itemsCount() {
        return parseInt(this.$(`a[href='/${this.username}'] span`).first().text());
    }
}

export class LikeArticle {

    constructor(readonly $: CheerioStatic, readonly article: Cheerio) {}

    get date() {
        const text = this.article.find('.ItemLink__info').first().text();
        return text.match(/[0-9]{4}\/[0-9]{2}\/[0-9]{2}/)[0];
    }
}

export class LikesPage extends UserPage {

    static async fetch(username: string, page: number = 1): Promise<LikesPage> {
        const $ = await fetchHtml(resolve(QIITA_URL, `/${username}/like?page=${page}`));
        return new LikesPage($, username, page);
    }

    static async iterator(user: string) {
        const firstPage = await this.fetch(user, 1);
        const last = firstPage.lastPageNumber;
        return {
            page: 0,
            hasNext() {
                return this.page <= last;
            },
            async next() {
                this.page++;
                return this.page === 1 ? firstPage : await LikesPage.fetch(user, this.page);
            },
        };
    }

    static async getLikesCount(page: LikesPage): Promise<number> {
        const lastPageNumber = page.lastPageNumber;
        if (lastPageNumber <= 1) {
            return page.likes.length;
        }
        const lastPage = await this.fetch(page.username, lastPageNumber);
        return (lastPageNumber - 1) * this.ITEMS_PER_PAGE + lastPage.likes.length;
    }

    constructor(readonly $: CheerioStatic, readonly username: string, readonly pageNumber: number) {
        super($, username);
    }

    get likes(): LikeArticle[] {
        return this.$('.tableList article').map((i, article) => {
            return new LikeArticle(this.$, this.$(article));
        }).get() as LikeArticle[];
    }

    get lastPageNumber(): number {
        const pageLinks = this.$('.pagination a');
        if (!pageLinks.length) {
            return 1;
        }
        const lastUrl = resolve(QIITA_URL, pageLinks.last().attr('href'));
        return parseInt(new URL(lastUrl).searchParams.get('page'), 10);
    }
}

最後に、言いたいこと

良い記事を書くことはもちろんQiitaへの貢献なのですが、誰も評価(=いいね)しなかったら貢献とは見なされません。
そういう意味で、良い記事にいいねしていくことも立派な貢献ではないでしょうか。

良い記事というのはトレンドに上がったもの、みんながいいねしているものだけではありません。
例えば、初心者が書いた記事で自分にとって既知の情報であっても、良く書けている記事というのはたくさん存在します。
トレンド記事を後追いでいいねするのではなく、タグフィードなどをチェックしてこういった良記事を評価してあげることも大事だと思います。

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
72
Help us understand the problem. What are the problem?