16
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?

More than 1 year has passed since last update.

ElixirAdvent Calendar 2023

Day 5

闘魂Elixir ── Slack上でタイピングしている風の演出をElixirでやってみる

Last updated at Posted at 2023-11-15

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

$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います}$

はじめに

ChatGPT流行っていますね。AIブームです。つまりアントニオ猪木ブームです。闘魂のブームがきているのです。
これに乗るしかありません。

プログラマーのチャットツールといえばSlackですよね。

ChatGPTが流行った理由の背景にはタイピングしている風の演出が一役買っているのだと私は思っています。
私が思っているのです。そう思っているのです。合っているのかどうかはわかりません。私はそう思っていると言っているだけです。私はそう思っているのです。

Slack上でタイピングしている風の演出をやってみたくなりました。
chat.update APIを使えばいけるんじゃないかと思いました。
Elixirでやってみます。

What is Elixir ?

Elixirという素敵なプログラミング言語があってがですね。
その素敵具合は「Elixir Saves Pinterest $2 Million a Year In Server Costs」によく現れています。開発者も経営者もこの事実に瞠目することでしょう。 $2 Million/年の節約ですってよ!、奥さん。

サンプルプログラム

デモです。

output.gif

サンプルプログラムです。

chat_update = (fn json -> 

    url = "https://slack.com/api/chat.update"

    headers = [
      "Content-type": "application/json; charset=UTF-8",
      Authorization: "Bearer #{System.get_env("SLACK_BOT_TOKEN")}"
    ]

    {:ok, _response} = HTTPoison.post(url, json, headers)
end
)

%{ts: "1692320035.004929", channel: "C02LWMFD3KK", text: "    "} |> Jason.encode! |> chat_update.()
# 1692320035.004929 はメッセージのタイムスタンプ

"We are the Alchemists, my friends!!!"
|> String.codepoints
|> Enum.reduce("", fn char, acc ->
    Process.sleep(33)
    new_acc = acc <> char
    %{ts: "1692320035.004929", channel: "C02XXXXXX", text: new_acc} |> Jason.encode! |> chat_update.()
    IO.inspect new_acc
end)
# C02XXXXXXはチャンネルIDのサンプル値

一直線のタイピングなので演出としてはまだまだイマイチですが、それっぽいものはできそうです。

ただRate LimitsWeb API Tier 3ですので1分間に50回くらいの制限がありそうです。APIコールは計画的に。

さいごに

Slack上でタイピングしている風の演出の試作をElixirでやってみました。

人類は不老不死の霊薬を意味する素敵なプログラミング言語Elixirを手に入れました。並行処理を他のプログラミング言語よりも比較的容易に書くことができます。それはきっとコンピュータ資源を有効活用できることにつながるでしょう。巡り巡って本当の世界平和を必ず実現します。世界文化の進展に寄与できます。

さあ、そこのあなたもElixirの世界へようこそ。
手始めにエリクサーチなんていかがでしょうか。私のオススメです。


闘魂とは、 「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
アントニオ猪木さんのメッセージから元氣をもらったものとして、それを次代に語り継ぎ、自分自身が「闘魂」を体現するものでありたいとおもいます。


$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{1、2、3 ぁっダァー!}$

16
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
16
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?