10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ElixirAdvent Calendar 2024

Day 1

完走賞を目指してみましょう!2024 on Livebook

Last updated at Posted at 2024-11-27

はじめに

今年も Advent Calender の季節がやってきました

というわけで 2024 年も「誰が何記事投稿しているか」を Livebook で視覚化しています

2023 年の最終的な結果はこちら

visualization.png

最大が @piacerex さんの 62 投稿で、 7 名もの完走者がいます

14 シリーズ * 25 記事 = 350 記事という怒涛の勢いです

スクリーンショット 2024-11-27 0.11.21.png

というわけで、 $\huge{2024 年も Livebook でカレンダーの状況を見ていきましょう!}$

実装したノートブックはこちら

実装

昨年のノートブックを少し更新し、 2024 年の現時点のカレンダーを確認します

セットアップ

Mix.install([
  {:req, "~> 0.5"},
  {:req_easyhtml, "~> 0.1"},
  {:explorer, "~> 0.9"},
  {:kino, "~> 0.14"},
  {:kino_vega_lite, "~> 0.1"}
])

エイリアス、マクロの設定

alias Explorer.DataFrame
alias Explorer.Series
require Explorer.DataFrame

リクエストの準備

req =
  Req.new(http_errors: :raise)
  |> ReqEasyHTML.attach()

Elixir Advent Calendar 2024 のデータフレームへの読込

calendar_df =
  req
  |> Req.get!(url: "https://qiita.com/advent-calendar/2024/elixir")
  |> then(& &1.body["[data-js-react-on-rails-store=AppStoreWithReactOnRails]"].nodes)
  |> Floki.text(js: true)
  |> Jason.decode!()
  |> get_in(["adventCalendars", "tableAdventCalendars"])
  |> hd()
  |> Map.fetch!("items")
  |> Enum.frequencies_by(&get_in(&1, ["user", "urlName"]))
  |> then(fn map ->
    %{
      name: Enum.map(map, fn {name, _} -> name end),
      count: Enum.map(map, fn {_, count} -> count end)
    }
  end)
  |> DataFrame.new()

データテーブルの表示

calendar_df
|> DataFrame.arrange(desc: count)
|> Kino.DataTable.new()

スクリーンショット 2024-11-27 0.14.03.png

グラフ表示

x = Series.to_list(calendar_df["name"])
y = Series.to_list(calendar_df["count"])

VegaLite.new(width: 800, height: 400)
|> VegaLite.data_from_values(x: x, y: y)
|> VegaLite.mark(:bar)
|> VegaLite.encode_field(:x, "x", type: :nominal, sort: "-y", title: "アカウント名")
|> VegaLite.encode_field(:y, "y", type: :quantitative, title: "記事数")

visualization (1).png


2024 年 12 月 1 日時点の更新です

私がまだ 41 記事で独走しています

きっと、誰かが追い抜いてくれるはず

ac2024_table.png

ac2024_graph.png


2024 年 12 月 6 日時点の更新です

完走予定者が 4 名に増えました!

私は 65 記事まで来ました

100 まで行けるか!?

qiita_ac_1206.png

qiita_ac_1206.png


2024 年 12 月 11 日時点の更新です

完走予定者 5 名!

私はついに 3 周完走しました

スクリーンショット 2024-12-11 22.03.06.png

ac2024.png

まとめ

開始前から 3 名の完走予定者がいる状況

さすが Elixir ですね

この記事は今後も定期的に更新していきます

10
3
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
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?