LoginSignup
2

posted at

updated at

Organization

connpass APIで振り返るautoracex 100回(は単なる通過点)

志士は溝壑(こうがく)に在るを忘れず、勇士は其の元(かうべ)を喪うことを忘れず

Advent Calendar 2022 130日目1の記事です。
I'm looking forward to 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
私のAdvent Calendar 2022 一覧


はじめに

Elixir を楽しんでいますか:bangbang::bangbang::bangbang:

この記事は、2022-06-15(水)開催の「ElixirImp#21:kokura.ex/autoracexキリ番+fukuoka.ex5周年」にて、autoracexの話をする予定でして、その発表資料です。

What's autoracex ?

091bab86ad6e1d1581d0d0c8c066d32b.png

  • Elixirのもくもく会です
  • 週2回開催しています
    • 2021-01-15に第一回を開催
    • 第50回は、2021-10-16
    • 第100回は、2022-05-20
  • オートレースのよくある一般開催とあわせています(後付けです。数増し!?
  • オートレースの場合は以下の通りです
    • 金曜日: 前検日
    • 土曜日〜月曜日: 選手宿舎に缶詰で外部との接触は禁止(八百長などの防止)
  • テーマ曲はElixirの紫色にちなんで、もちろんセクシャルバイオレットNo.1です
    • 桑名正博さんの名曲です
    • You make me feel good.
    • 発売されたのは1979年です
    • その1979年の1月1日は私の誕生日です
    • KinKi Kidsの堂本光一さんとは全く同じ日です
    • ちょっとしたはずみがあれば私が歌って踊っていたはずです
  • 読み方は、「オートレースエックス」と私は読んでいます
    • 「オートレースイーエックス」でも他の読み方でもなんでもいいです
  • fukuoka.exkokura.exは大先輩、主筋にあたります
    • 一門の末席を汚しております
  • elixir.jp Slackの#autoracexチャンネルで活動しています
    • 英語、日本語の併記が望ましいですがどちらか一方だけでもよいです
  • 24時間開催にしているので、時差を気にせず参加できます
  • 海外(北米、南米)から参加してくださる方もいる、国際色豊かなコミュニティです
    • autorace (of course)
    • enjoy Elixir
    • freedom (anything, anytime, anywhere) ※「いつ何時、誰の挑戦でも受ける」のストロングスタイル

What's autorace ?

  • オートバイの競争(公営競技)です
    • 日本のみのルール
    • 一周500メートルのオーバルコースを6周回
    • ハンデ戦(速い選手ほど後ろから走る)
    • 公営競技とは、「国が認め、国の定めた法律のもとで運営されている『ギャンブル』のこと!」
  • 1レースあたり、8台の競争車で1着を競います
  • オートバイにブレーキはありません
  • オートレース場は2022年06月現在、全国に五場あります
    • 伊勢崎(群馬県)
    • 川口(埼玉県)
    • 浜松(静岡県)
    • 山陽(山口県)
    • 飯塚(福岡県)
  • 元SMAPの森且行さんが選手として活躍されています
  • いくつかレース映像をご紹介します(ぜひご覧になってください!)

第52回SG日本選手権オートレース 優勝

connpass API

各種情報の取得ができます。

  • グループごとにseries_id(グループID)が割り当てられていますのでこれを指定すると検索しやすいです
  • このseries_id(グループID)の値は一度、connpass APIをコールしてみないとわからないです
  • autoracexのseries_id(グループID)は、11144です
  • ちなみに主筋のfukuoka.ex/kokura.ex/ElixirImp -Elixir Communitiesは、一門みな統一番号でして、5294です

プログラムで書くとこんな感じです。

Mix.install [:req]

keyword = "autoracex"
%{body: body} = Req.get!("https://connpass.com/api/v1/event/?keyword=#{keyword}")

Map.get(body, "events")
|> Enum.find(fn %{"event_url" => event_url} -> String.contains?(event_url, keyword) end)
|> Map.get("series")
|> Map.get("id")

series -> idとネストしているところはこんな書き方で取得することもできます。

Map.get(body, "events")
|> Enum.find(fn %{"event_url" => event_url} -> String.contains?(event_url, keyword) end)
|> get_in(["series", "id"])

connpass APIで振り返るautoracex 100回

Livebookで実行してみます。
Dockerを使います。

docker run -p 8080:8080 -p 8081:8081 --pull always livebook/livebook

上記は、公式に書いてあります。
実行すると、http://localhost:8080/?token=bajcxod355oaerqxn65j5dkwv5mkgrirのようなものが表示されるので、迷わずブラウザでアクセスしてみましょう。
あ、tokenの値は都度かわりますので適宜読み替えてください。
そうすると、Livebookが立ち上がるので、画面右上のNew notebookボタンを押してElixirのプログラミングを楽しんでいきます。

Reqのインストール

HTTPクライアントReqをインストールしておきます。

Mix.install [:req]

イベントの取得

まずはこれまで登録したイベントを取得します。

count = 100
series_id = 11144

events = Stream.iterate(1, &(&1 + count))
|> Enum.reduce_while([], fn start, acc ->
  Process.sleep(5000)
  IO.inspect(start)
  %{body: body, status: 200} = Req.get!("https://connpass.com/api/v1/event/?series_id=#{series_id}&count=#{count}&start=#{start}&order=2")
  %{"events" => events, "results_available" => results_available} = body
  new_acc = acc ++ events
  cont_or_halt = if Enum.count(new_acc) < results_available, do: :cont, else: :halt
  
  {cont_or_halt, new_acc}
end)

以降、eventsに対してあれこれしてみます。

イベント登録数は?

Enum.count(events)

第一回目の開催は?

eventsは、開催日時順に取得しています。
説明が前後しますが、order=2(開催日時順)の指定です。
直近の開催が先頭にきています。
ですから第一回目を取得するには

events |> Enum.reverse |> Enum.at(0)

と逆順にして先頭を取得するか

events |> Enum.at(-1)

というふうに一番うしろを取得するとすればよいわけです。
2021-01-15が取得できました。

ちなみに、この2021-01-15という日は、私が日本マイクロソフト賞④を受賞した日です :tada::tada::tada:

「elixir azure 愛」で検索してください。
YouTube動画がみつかるはずです。

ちなみに一年間は、365日 ÷ 7日/週で、だいたい52週くらいあります。
週1で開催していると年間で50回を達成できます。
週2で開催すると年間100回を達成できます。

キリ番はいつ?

events
|> Enum.find(fn %{"title" => title} -> String.contains?(title, "#50") end)
|> Map.take(["title", "started_at"])

第50回は、2021-10-16でした。
第100回は、2022-05-20でした。

延べ参加者数は?

events
|> Enum.map(fn %{"accepted" => accepted} -> accepted end)
|> Enum.sum()

一番参加者が多かった会は?

events
|> Enum.max_by(fn %{"accepted" => accepted} -> accepted end)

参加者が0人の会は?

events
|> Enum.filter(fn %{"accepted" => accepted} -> accepted == 0 end)
|> Enum.map(& Map.take(&1, ["title", "started_at"]))

そうだ参加者が0人の会はなかったことにしよう!

events
|> Enum.reject(fn %{"accepted" => accepted} -> accepted == 0 end)
|> Enum.all?(fn %{"accepted" => accepted} -> accepted > 0 end)

connpass APIで振り返るautoracex 100回 は、単なる通過点

We are the Alchemists, my friends!!!

autoracexへの参加との明確な因果関係はありませんが、一門からは世界に認められたメンバーを輩出:interrobang:しております:bangbang::bangbang::bangbang:

@mnishiguchi さん

初期のころから頻繁に参加してくださっている常連です。
実は共同代表者になっています。
ペンパルです。

@the_haigoさん

スクリーンショット 2022-06-06 3.29.50.png

お坊さんなので「辻説法」ならぬ「辻参加」をよくされています。
おそらくconnpassには一度も参加登録をされていないのかもしれません。
むしろでそうあってほしい。

これからもautoracexはただ前へ歩みを続けます。
進撃を続けます。
「最後に、これから自分たちは何があっても前を見て、ただ前を見て進みたいと思いますのでみなさん、よろしくお願いいたします。」
志士は溝壑(こうがく)に在るを忘れず、勇士は其の元(かうべ)を喪うことを忘れず
「死ぬときはたとえドブの中でも前のめりに死にたい」

It goes on and on and onです。

まとめ

connpass APIautoracexを振り返ることを楽しみました。
そして、この記事自体がEnumモジュール、|>(パイプ演算子)、LivebookといったElixirでよく利用されるものを解説した記事となっております。

Enjoy Elixir:bangbang::bangbang::bangbang:
$\huge{Enjoy\ Elixir🚀}$

We are the Alchemists, my friends!!!

Qiita Engineer Festa 2022 2022年6月1日〜7月18日

QiitaEngineerFesta2022 タグと
fukuoka.ex:福岡Elixirコミュのオーガナイゼーション指定
をお忘れなく!

明日2022/06/16(木)は、NervesJP #26 Nerves tips, /bin/sh & nerves_heartでお会いしましょう!


We are the Alchemists, my friends!!! について

  • 私は、Queenのにわかファンです
  • 映画『ボヘミアンラプソディ』をみてからの筋金入りの、正真正銘のにわかファンです
  • We Are The Championsの替え歌です
  • 最初は単なる冗談でしたが、いまではそれなりに深い意味が秘められているようにおもう今日このごろです
  • 特に「my friends!!!」と呼びかけるところがポイントです

Elixirを私は楽しんでいる。
そしてそのよさをまわりに伝えたいとおもいはじめた。
私がElixirをはじめたばかりのころに憧れた錬金術師たちはQiitaに記事を書いていた。
それまでのQiitaは見るものであったが、自分でも書いてみることにした。

時は経ち、同時期にElixirをはじめた友であり、ライバルである友人たちは世界へと羽ばたいていく。
それを応援したり、自分のことのようにうれしく思う一方で、指をくわえて座しているだけでいいの? という煩悶、忸怩たる思い。
まだまだやれるはずだという根拠の無い自信。

志士は溝壑(こうがく)に在るを忘れず、勇士は其の元(かうべ)を喪うことを忘れず
It goes on and on and onです。

091bab86ad6e1d1581d0d0c8c066d32b.png


I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
I hope someday you'll join us.

We Are The Alchemists, my friends!

  1. @kaizen_nagoya さんの「「@e99h2121 アドベントカレンダーではありますまいか Advent Calendar 2020」の改訂版ではありますまいか Advent Calendar 2022 1日目 Most Breakthrough Generator」から着想を得て、模倣いたしました。

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
What you can do with signing up
2