LoginSignup
20
2

闘魂Elixir ── 03. 完走賞を目指してみましょう!【自動更新記事】

Last updated at Posted at 2022-11-26

$\huge{元氣ですかーーーーッ!!!}$

はじめに

闘魂とElixirが出会いました。
闘魂 meets Elixir.です。
Elixir meets 闘魂.でもよいです。

本日は、Elixirでこんなことができますよー を紹介します。
題材は、一つのカレンダーに各人が何件投稿したのかを調べるプログラムをElixirで作ることを楽しみます。
つまり、完走賞の応援記事です。

スクリーンショット 2022-11-23 11.55.52.png

この記事は定期的に実行結果を自動更新しています。

Elixirのプログラム

さっそくプログラムを示します。
闘魂Elixirを一通り学んだあとはより理解が進むでしょうし、なにかしらプログラミングの経験があればなんとなくご理解いただけるものとおもっております。

sample.exs
Mix.install [{:req, "~> 0.3.0"}, {:floki, "~> 0.34.0"}]

with %{status: 200, body: html} <- Req.get!("https://qiita.com/advent-calendar/2022/elixir"),
    {:ok, parsed_doc} <- Floki.parse_document(html),
    [{_tag, _attrs, json} | _] <- Floki.find(parsed_doc, "[data-js-react-on-rails-store=AppStoreWithReactOnRails]"),
    {:ok, decoded} <- Jason.decode(json),
    [table_advent_calendars | _] <- get_in(decoded, ["adventCalendars", "tableAdventCalendars"]) do
  table_advent_calendars
  |> Map.fetch!("items")
  |> Enum.frequencies_by(&get_in(&1, ["user", "urlName"]))
  |> Enum.sort_by(fn {_user, cnt} -> cnt end, :desc)
else 
  _ -> :error
end
|> IO.inspect()

実行

Dockerで実行します。
sample.exsを作ったディレクトリでdocker runしてください。

CMD
docker pull hexpm/elixir:1.14.2-erlang-25.1.2-alpine-3.16.2

docker run --rm -v $PWD:/app hexpm/elixir:1.14.2-erlang-25.1.2-alpine-3.16.2 sh -c "mix local.hex --force && mix local.rebar --force && cd /app && elixir sample.exs"

2日目の「闘魂Elixir ── 02. インストール」を参考に、Elixirをインストールしてくださった方は、IExを起動して動かしてみてください。

実行結果 (2024-07-27 11:00:18.256454Z現在)

実行結果です。
(ここは自動的に更新しています)

[
  {"torifukukaiou", 70},
  {"RyoWakabayashi", 60},
  {"mnishiguchi", 34},
  {"piacerex", 31},
  {"Yoosuke", 31},
  {"nako_sleep_9h", 31},
  {"zacky1972", 30},
  {"t-yamanashi", 20},
  {"the_haigo", 15},
  {"Alicesky2127", 13},
  {"GeekMasahiro", 11},
  {"ShigeItoEx", 7},
  {"miwacchi", 5},
  {"koga1020", 4},
  {"naritomo08", 3},
  {"westbaystars", 3},
  {"ShozF", 3},
  {"ta_to_jp", 2},
  {"tamanugi", 2},
  {"k-j-y", 2},
  {"pojiro", 1},
  {"akiraarika932", 1},
  {"koyo-miyamura", 1},
  {"curry_on_a_rice", 1},
  {"kikuyuta", 1},
  {"mokichi", 1},
  {"kentaro", 1},
  {"ohr486", 1},
  {"Gsann", 1},
  {"nanbut14", 1},
  {"myasu", 1},
  {"hisaway", 1},
  {"a_utsuki", 1},
  {"tomoaki-kimura", 1},
  {"GKBR", 1},
  {"k41531", 1},
  {"hiro_1107", 1},
  {"Goody27", 1},
  {"gx3n-inue", 1},
  {"Shintaro_Hosoai", 1},
  {"tuchiro", 1},
  {"def_elixir", 1},
  {"MzRyuKa", 1}
]

記事の数が25を超えていると、完走賞の候補です。
現状、7名が候補です。

@t-yamanashiさん(あと5記事), @the_haigoさん(あと10記事), @Alicesky2127さん(あと12記事), @GeekMasahiroさん(あと14記事), @ShigeItoExさん(あと18記事), @miwacchiさん(あと20記事), @koga1020さん(あと21記事), @naritomo08さん(あと22記事), @westbaystarsさん(あと22記事), @ShozFさん(あと22記事), @ta_to_jpさん(あと23記事), @tamanugiさん(あと23記事), @k-j-yさん(あと23記事), @pojiroさん(あと24記事), @akiraarika932さん(あと24記事), @koyo-miyamuraさん(あと24記事), @curry_on_a_riceさん(あと24記事), @kikuyutaさん(あと24記事), @mokichiさん(あと24記事), @kentaroさん(あと24記事), @ohr486さん(あと24記事), @Gsannさん(あと24記事), @nanbut14さん(あと24記事), @myasuさん(あと24記事), @hisawayさん(あと24記事), @a_utsukiさん(あと24記事), @tomoaki-kimuraさん(あと24記事), @GKBRさん(あと24記事), @k41531さん(あと24記事), @hiro_1107さん(あと24記事), @Goody27さん(あと24記事), @gx3n-inueさん(あと24記事), @Shintaro_Hosoaiさん(あと24記事), @tuchiroさん(あと24記事), @def_elixirさん(あと24記事), @MzRyuKaさん(あと24記事)
がんばってください!
$\huge{闘魂}$
$\huge{元氣があればなんでもできる!}$

We Are The Alchemists, my friends!

ワンポイントレッスン

sample.exs中、"https://qiita.com/advent-calendar/2022/elixir"をお好みのカレンダーのURLに変えると、ユーザー毎の記事数がわかります。
ただし、無理やりなところがあるので、すべてのカレンダーで動くとは限りません。なんとなく、カレンダーのシリーズが複数あるカレンダーでは動作するようにおもいます。無理やりなところというのは、特にString.split("encryptedId")の部分です。
↑↑↑@mnishiguchi さんのスペシャルサンクスにより改善しました!↑↑↑

|>は、パイプ演算子と呼ばれます。

今日の闘魂

今日は、『南洲翁遺訓』から言葉を引きます。


人を相手にせず、天を相手にせよ。天を相手にして、己れを尽くし人をとがめず、我が誠の足らざるをたずし。

解説は、こちらをご参照ください。
猪木さん流に言うと、「闘魂」であり「夢というのは、純粋性がなければダメなんだ」ということです。

不純な夢は、人に見透かされる。けれども、純粋な夢は人に応援される。それだけで、夢の実現度は大きく変わってくるはずだ。(中略)彼が裏切ろうと真犯人が別にいようと、どうでもいい。わたしは、すべての過去を根に持たないからだ。

天つまりお天道様に恥ずかしくない、別の言い方をすると誰に対しても恥じることのない夢というものは、純なものだということです。純であるがゆえに賛同する人もでてくるのです。

稲盛和夫師の「動機善なりや、私心なかりしか」にも通じます。

ちなみに、稲盛和夫師は鹿児島県出身で西郷南洲翁を敬愛していることはよく知られていることだとおもいます。猪木さんも実は、鹿児島に縁があることはあまり知られてはいないのではいでしょうか。猪木さんのお生まれは神奈川県鶴見です。猪木さんの父は、鹿児島県出水の出身であるとのことが、『アントニオ猪木自伝:book:の中で述べられています。
また、稲盛経営12ヶ条の第8条には「燃える闘魂 ―経営にはいかなる格闘技にもまさる激しい闘争心が必要― 」が掲げられています。「燃える闘魂」といえば、今度は猪木さんのことを思い浮かべる方が多いのではないでしょうか。
「鹿児島県(つまりは郷中教育、西郷南洲翁、示現流)」「燃える闘魂」になにやら目に見えないたて糸、否、そんな細いものではなくぶっとい柱が通っていることを私は感じます。

:book:アントニオ猪木 最後の闘魂:book:から引きました。
みなさまもぜひこの本をお手にとられて、猪木さんが残されたメッセージを通じて、直接猪木さんから「元氣」をもらってください。

image.png

さいごに

Elixirでこんなことができますよー を紹介しました。
題材は、一つのカレンダーに各人が何件投稿したのかを調べるプログラムをElixirで作ることを楽しみました。
つまり、完走賞の応援記事でもあるわけです。

あわせて、 @RyoWakabayashi さんの記事もお楽しみください。

奇しくも、猪木さんの引退試合のときに古舘伊知郎さんがおっしゃったように、「闘魂は連鎖する!」のです。

$\huge{闘魂は連鎖する!}$

1998年4月4日 東京ドーム 燃える闘魂アントニオ猪木引退試合 アントニオ猪木 VS ドン・フライ

試合後の05:45から、古舘伊知郎さんのナレーションが始まります。
ぜひお聞きになってください。

闘魂 の意味は、 「己に打ち克ち、闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。

$\huge{1、2、3 ぁっダー!}$



Twitter


$\huge{元氣があればなんでもできる!}$

20
2
5

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
20
2