LoginSignup
2

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

はじめに

リアクションはチームの雰囲気を良くしてくれます!

@taka-fujita さんの記事を読みました。

リアクションエンジニアというエンジニア像を定義されています。

スクリーンショット 2022-12-11 10.53.37.png

すごいです!
人は名前、定義により認識するのです。適切な名前が付くことで認知が広がります。
「ゆるキャラ」の広がりとおなじです。

「幼い子は『知らない人について行かない』と教育を受けているから、知らないキャラについて来ないんですよ」と"ゆるキャラ"の不遇の時代を伝えた。

その当時、「誰も握手もしないし、これはかわいそう」と同情したというみうら氏。「"キャラ"は有名なこと。ミッキーとかミニーちゃんのことなのに、大きい枠に入れられているから所在ないんだと思って、"ゆるいキャラ"で"ゆるキャラ"という世界さえあれば、堂々と生きていけるだろうと思って付けた名前だったんです」「所在なさ気な人の居場所ですよね」と命名に込めた思いを語った。

(「みうらじゅん、"ゆるキャラ"命名に込めた思い語る - 最近の注目は"ゆる人"」 より)

そして認知が広がり、その行き着く先は、命名者本人も知らないところでさまざまな語りがなされます。
ゆるキャラの場合は、大学の偉い先生なんかが「あの形状は、日本土着の民族信仰と結びついていて……」なんて説明がもっともらしくされているそうです。独自の解釈がいろいろ産まれているのです。それでいいのです!
これこそがブームの正体です。

リアクションエンジニアの話をします。

私も同じことをおもっていました

リアクションエンジニアという言い得て妙なネーミングは、はじめて知りました。

行動のみは、1年前から行っていました。

こちらの記事中「② とにかくメッセージが書き込みがあったら良リアクションをつける」です。

当時、6名で雑誌の執筆をしていました。みなそれぞれが別々の会社に所属しています。会社も違えば生活スタイルも違うので、執筆に割り当てている時間はバラバラです。原稿の締め切り間際でなんだかチャンネルがどんよりしていました。私が勝手にそう感じていただけかもしれません。それでメッセージの書き込みに対して良リアクションをつけるということを手動でしていました。しかしながら面倒くさくなってきたし、時間帯もあわないので「そうだ! ボット:robot:に任せよう」とボットに任せてみました。

これが功を奏したのかどうかは不明です。果たして原稿は、締め切りに間に合い、無事雑誌に掲載されました! :tada::tada::tada:

$\huge{全人類のみなみなさま!!!}$
ぜひお手にとって、お楽しみください!!!

私たちが担当したのは、作って学ぶPhoenixです。
Phoenixというのは、ElixirでWebアプリケーション開発を楽しめるフレームワークです。

WEB+DB PRESS Vol.127

リアクションエンジニア

初出はいつなのでしょうか。
Qiitaの中を検索してみました。

スクリーンショット 2022-12-11 10.18.39.png

2019年12月27日の記事です。
これよりも前から提唱されていた言葉なのかもしれません。
私にはそこんところわかっていません。

リアクションエンジニア」タグ!!!

リアクションエンジニア」タグがありました。


リアクションボット:robot: の制作とイゴかし方

ここではPythonを使って制作を楽しみます。
はじめての方は、Bolt 入門ガイドをまずそのまま実施されてみることをオススメします。
この記事では、Bolt 入門ガイドを一通り理解されていることを前提とします。

ソースコード

さっそくソースコードです。
のちほどDockerでイゴかすことを楽しみます。

ちなみに「イゴかす」は「動かす」の意味です。おそらく、西日本の方言です、たぶん。少し古いオートレースの映像ですが、実況アナウンサーが「針イゴきます」とはっきり言っています。

さらにちなみに「針」とは、大時計の針のことです。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図となります。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間ですので、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙なわけです。

ちなみにちなみにちなみに、上記レース映像は一般社会で最も有名な元SMAPの 森且行選手 が一着を決めるレース映像を選んでいます。

余計な話が続きました。
いよいよこの記事の一丁目一番地、レゾンデートル、一番大事なところです。

app.py
import os
import random
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler

# ボットトークンとソケットモードハンドラーを使ってアプリを初期化します
app = App(token=os.environ.get("SLACK_BOT_TOKEN"))

@app.event("message")
def handle_message_events(body, logger, client):
    logger.info(body)
    ts = body['event']['ts']
    channel = body['event']['channel']
    icons = ['thumbsup', 'tada', 'rocket']

    client.reactions_add(
        channel=channel,
        name=random.choice(icons),
        timestamp=ts)


# アプリを起動します
if __name__ == "__main__":
    SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"]).start()
Dockerfile
FROM python:3

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./app.py" ]
requirements.txt
slack_bolt

Slackアプリの設定

Bolt 入門ガイドの「アプリを作成する」をご理解いただいていることを前提とします。
設定のポイントのみを示しておきます。

Socket modeをON

Socket modeをONにしておきます。

Event Subscriptions

image.png

OAuth & Permissions Scopes

image.png

トークン

Slackアプリの設定画面から以下2つのトークンを控えておきます。

  • アプリレベルトークンと呼ばれる xapp-で始まるトークン
  • ボットトークンと呼ばれる xoxb- で始まるトークン

ビルド

ビルドします。
torifuku/reaction-manはお好きな値にしてください。
最後の.を忘れないようにしてください。Dockerfileの位置を示しています。

docker build -t torifuku/reaction-man .

もしpipインストールで失敗する場合は、--network=hostをつけるといいかもしれません。
Time4VPSで動かしているUbuntu 22.04、Docker 20.10.22で問題に遭遇しました。

docker build --network=host -t torifuku/reaction-man .

実行

イゴかします。
2つのトークンは、Slackのアプリ設定から取得した値を使ってください。
torifuku/reaction-manはビルドのときに指定した値を指定してください。

docker run -e SLACK_BOT_TOKEN="xoxb-xxxx" -e SLACK_APP_TOKEN="xapp-yyyy" -d --rm --network=host torifuku/reaction-man

もし、Failed to send a request to Slack API server: <urlopen error [Errno -3] Temporary failure in name resolution>でコンテナ実行後すぐに停止する場合は--network=hostをつけるといいかもしれません。
Time4VPSで動かしているUbuntu 22.04、Docker 20.10.22で問題に遭遇しました。

docker run -e SLACK_BOT_TOKEN="xoxb-xxxx" -e SLACK_APP_TOKEN="xapp-yyyy" -d --rmtorifuku/reaction-man

ワンポイント

icons = ['thumbsup', 'tada', 'rocket']はどのワークスペースでもデフォルトで使えるものにしました。
たとえば、 toukon 等のご自身で追加された絵文字も入れておくとよいとおもいます。

toukon.png

コラム

この記事ではランダムに絵文字を選ぶだけの動作となっています。
流行りのAIを活用して、人間らしい振る舞いというか、人間以上のリアクションをしてくれるボットの出現はそう遠くない話なのかもしれません。


まとめ

身の回りの困りごと(Slackチャンネルのどんよりとした空気感)を、ボット:robot:開発そのものを楽しんで、楽しく解決しました。

ところで、チャンネルという空間に感情を読み取ることができるのはギリギリ現代人だけの感覚なのかもしれません。100年後の人類は、「昔の人は会ってもいないのに雰囲気とか感じとっていたらしいよ、すげぇくない!?」と驚きをもってこの記事を読まれることであろうとおもいます。100年後の人類がこれをどう読むのか楽しみです。

「楽しむ」というのは尊いのです。素晴らしいのです。知・好・楽で最上のものとされています。これを知るものはこれを好むものに如かず、これを好むものはこれを楽しむものに如かず(論語)。楽しむものにはかなわないということです。

いろいろ書きましたが、結局は詰まるところ畢竟元氣なのだとおもいます。
元氣があればなんでもできるのです。その通りなのですが、そのやる氣、元氣、氣力は時にしぼんでしまうことがあります。
「志は氣の帥なり」とは、孟子の言葉です。
「志」がやる氣、元氣、氣力を支える将帥なのです。
「志」とは当世風に言えば、夢、ビジョン、大いなる目的、ゴールです。
「志」が元氣を支え、「元氣」が実行のエンジンとなり、実現へと至るのです。

このへんの話は、「闘魂Elixirシリーズ」と名付けて連載しています。
東洋道徳(闘魂)と西洋芸(Elixir)を一日一話形式で楽しんでいただけます。

闘魂Elixirシリーズ」は、Elixir Advent Calendar 2022のカレンダー3です。
興味のある方は、ぜひご購読ください。


さいごに

さいごにわたしからみなさんに、みなさまに、メッセージをおくりたいとおもいます。
人は、歩みを止めたときに、そして挑戦を諦めたときに、年老いていくのだとおもいます。

この道を行けば
どうなるものか
危ぶむなかれ
危ぶめば道はなし
踏み出せば
その一足が道となり
その一足が道となる
迷わず行けよ
行けばわかるさ


1998.4.4 燃える闘魂アントニオ猪木 引退試合(VS ドン・フライ)

試合後の05:40くらいから引退セレモニーがはじまります。
ぜひ! 猪木さんの声で、あなたもぜひお聞きになってください。
きっと元氣をもらえます。

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


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
2