1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Denoを使って,QiitaのOrganizationsのフォロワー数を一括で取得するスクリプトを書いてみた

Last updated at Posted at 2025-04-01

これは何?

今年の自分はQiitaを始めとする発信に力を入れたいと思っている。
4月なので,目標を立てるにあたり,身近なライバルであるOrganizationsのメンバーのデータが取得したいと思い,スクリプトを書いた。
同じような用途に使いたい人の参考になれば幸いである。

半分はDenoを初めて触った人間の感想文なので注意。


できること

Organizationsを指定して実行し,フォローワーの多い順に並べて出力する。

GitHubのリポジトリで公開している。

docker compose run deno_app nri
Total members in nri organization: 140

Users ranked by follower count:
1. User: hoge, Followers: 1000
2. User: fuga, Followers: 900
3. User: hogehoge, Followers: 800
4. User: piyo, Followers: 700
5. User: fugafuga, Followers: 600
...

本当はContributionを取得したかったが,Qiita API v2がContributionの取得をサポートしていなかったのでフォロワー数を一旦取得してみた。


環境

Deno(TypeScript)を使ってみたかったので,選択した。

スクリプトの流れ

  1. 実行時の引数からorganizationを取得
  2. organizationからユーザ名のリストを作成
  3. Qiita APIを使い,各ユーザのフォロワー数を取得
  4. フォロワー順に並び替えて出力

詰まったところとか

Qiita API v2がOrganizationsのユーザを取得するAPIを持っていなかったので以下を参考に取得した。


Denoを使ってみての感想

  • 現状--allow-netをつけないと外部ネットワークへ通信が飛ばせないみたいなDeno特有のセキュリティ機能はあまり使いみちが思いついていない。APIの向き先を.envなどで管理していて,localhostのつもりで外部に飛ばしてしまうみたいな事故は防げるとか?
  • deno compile main.tsするだけで依存関係が解決してコンパイルが終わるのめちゃくちゃ便利。これはdeno runにもいえることだが,Dockerfileがめちゃくちゃすっきりする。
    FROM mcr.microsoft.com/devcontainers/base:bookworm AS devcontainers
    WORKDIR /app
    # install deno
    RUN curl -fsSL https://deno.land/install.sh | sudo DENO_INSTALL=/usr/local sh
    
    
    FROM devcontainers AS compile
    COPY . .
    WORKDIR /app/org_ranker
    RUN deno compile --allow-net --allow-env --allow-read --output main main.ts
    
    
    FROM gcr.io/distroless/cc-debian12:latest AS run
    COPY --from=compile /app/org_ranker/main /app/main
    ENTRYPOINT ["/app/main"]
    
    
  • deno fmtでフォーマットできるとかdeno checkで型チェックできるのとか地味に嬉しい。自分は通常のVS CodeとVS Code Insider,Windsurfを使っていて,それぞれのIDEをちゃんと設定するのは面倒なのでコマンドラインでなんでもできると普通に助かる。
  • taskは使いこなせていないが,普通に便利そうではある。長いコマンド覚えられないし。
  • node.jsと大きく書き方が違うわけではないと感じたので,一旦Denoやってみようかなと思った。書籍とかサンプルは圧倒的にnode.jsの方が多いのでnode.jsでinputしてDenoでアウトプットしたい。

最後に

Deno試した日記みたいになってしまったが,あとから見返すには良いかなと思っている。
Denoをもう少し使い込んだらまとめて記事にしたい。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?