闘魂Elixir ── 23. Elixirに闘魂注入

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>

https://qiita.com/advent-calendar/2022

https://qiita.com/advent-calendar/2022/elixir

# はじめに

闘魂と[Elixir](https://elixir-lang.org/)が出会いました。
闘魂 meets [Elixir](https://elixir-lang.org/).です。
[Elixir](https://elixir-lang.org/) meets 闘魂.でもよいです。

本日は、[Elixir](https://elixir-lang.org/)に<font color="#d00080">闘魂</font>を注入します。

```elixir
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}
```

# [Elixir](https://elixir-lang.org/)に<font color="#d00080">闘魂</font>を注入するとは?

[Elixir](https://elixir-lang.org/)を拡張して、<font color="#d00080">闘魂</font>モジュールを追加、つまり注入します。
これが、[Elixir](https://elixir-lang.org/)に<font color="#d00080">闘魂</font>を注入するということです。

[Elixir](https://elixir-lang.org/)は言語そのもののカスタマイズも容易にできます。

# 資料

@ohr486 さんの資料です。

https://speakerdeck.com/ohr486/hacking-elixir-how-to

[Hacking Elixir How-To](https://speakerdeck.com/ohr486/hacking-elixir-how-to)

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">本日の資料です<a href="https://t.co/zwV6aMewqI">https://t.co/zwV6aMewqI</a><a href="https://twitter.com/hashtag/tokyoex?src=hash&amp;ref_src=twsrc%5Etfw">#tokyoex</a> <a href="https://twitter.com/hashtag/beamlangtokyo?src=hash&amp;ref_src=twsrc%5Etfw">#beamlangtokyo</a> <a href="https://twitter.com/hashtag/fukuokaex?src=hash&amp;ref_src=twsrc%5Etfw">#fukuokaex</a></p>&mdash; おーはら (@ohrdev) <a href="https://twitter.com/ohrdev/status/1178150005544144897?ref_src=twsrc%5Etfw">September 29, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# ハンズオン

それではさっそくハンズオンをしてみましょう。

## 準備

`make`コマンドが使える必要があります。
他にもいろいろ必要なのだとおもいます。

私はmacOS Ventura 13.1を使いました。
おもいつく限り関係ありそうなものを並べておきます。

- XCode Command Line Tools
- Erlang 25.2
- Elixir 1.14.2-otp-25

ここはどなたかぜひ編集リクエストをください :pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:

## <font color="#d00080">闘魂</font>注入

いよいよ[Elixir](https://elixir-lang.org/)に<font color="#d00080">闘魂</font>を注入しましょう！

### ソースコードの入手

`git clone`でソースコードを入手します。

```:CMD
git clone https://github.com/elixir-lang/elixir.git
cd elixir
git checkout -b v1.14.2-with-toukon v1.14.2
```

### VERSION変更

トップディレクトリにある`VERSION`ファイルを書き換えます。

```:VERSION
1.14.2-with-toukon
```

### 闘魂注入

`lib/elixir/lib/toukon.ex`ファイルを追加します。

```elixir:lib/elixir/lib/toukon.ex
defmodule Toukon do
  @moduledoc false

  def 挨拶 do
    "元氣ですかーーーーッ！！！ 元氣があればなんでもできる！"
  end

  def 夢 do
    """
    わたしが長年夢であった本当の
    プロレスを通じて
    スポーツを通じて
    世界平和と
    必ず実現します！
    わたしは、橋本と蝶野、もう今日は立っているのがやっとでした。
    本当に強くなりました。
    でも、俺たちは命がある、続く限り、闘い抜きます！
    ありがとうございました。
    またよろしくお願いいたします。
    """
  end

  def 説明 do
    "「闘魂」とは、己に打ち克つこと。そして闘いを通じて己の魂を磨いて行くことだとおもいます"
  end

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

### ビルド

```:CMD
make
```

もしビルドに失敗することがありましたら、コケている箇所を修正したあとに`make clean`をしてから再度`make`するとよいでしょう。

## 実行

迷わず動かしてみましょう！！！

```:CMD
bin/iex
```

バージョンの表記が`1.14.2-with-toukon`になっています。

```elixir:
Erlang/OTP 25 [erts-13.1.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit:ns]

Interactive Elixir (1.14.2-with-toukon) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
```

[IEx](https://hexdocs.pm/iex/IEx.html)で **闘魂** モジュールを実行してみます。

```elixir:
iex(1)> Toukon.挨拶
"元氣ですかーーーーッ！！！ 元氣があればなんでもできる！"
iex(2)> Toukon.夢
"わたしが長年夢であった本当の\nプロレスを通じて\nスポーツを通じて\n世界平和と\n必ず実現します！\nわたしは、橋本と蝶野、もう今日は立っているのがやっとでした。\n本当に強くなりました。\nでも、俺たちは命がある、続く限り、闘い抜きます！\nありがとうございました。\nまたよろしくお願いいたします。\n"
iex(3)> Toukon.説明
"「闘魂」とは、己に打ち克つこと。そして闘いを通じて己の魂を磨いて行くことだとおもいます"
iex(4)> Toukon.道  
"この道を行けば\nどうなるものか\n危ぶむなかれ\n危ぶめば道はなし\n踏み出せば\nその一足が道となり\nその一足が道となる\n迷わず行けよ\n行けば分かるさ\n"
```

闘魂注入ができました :tada::tada::tada::tada::tada::tada:


<font color="red">$\huge{闘魂}$</font>

# 参考記事

https://qiita.com/mnishiguchi/items/f53eb7d239cb7a740e6e

モジュール名を`:闘魂`で注入したかったのですが、以下のエラーがでました。私はこの件の解決は目指しませんでした。
解決してくださった方がいらっしゃいましたら、ぜひ編集リクエストをくださいませ :pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:

```text
==> elixir (compile)
escript: exception error: no match of right hand side value {error,badarg}
  in function  erl_eval:expr/6 (erl_eval.erl, line 496)
  in call from escript:eval_exprs/5 (escript.erl, line 869)
  in call from erl_eval:local_func/8 (erl_eval.erl, line 644)
  in call from escript:interpret/4 (escript.erl, line 780)
  in call from escript:start/1 (escript.erl, line 277)
  in call from init:start_em/1 
  in call from init:do_boot/3 
make[1]: *** [lib/elixir/ebin/elixir.app] Error 127
make: *** [lib/elixir/ebin/Elixir.Kernel.beam] Error 2
```


# 今日の<font color="#d00080">闘魂</font>

今日の<font color="#d00080">闘魂</font>のコーナーです。

##  孟子

孟子の言葉を紹介します。

---
志士は<ruby>溝壑<rt>こうがく</rt></ruby>にあるを忘れず。勇士はその<ruby>元<rt>こうべ</rt></ruby>を<ruby>喪<rt>うしな</rt></ruby>ふを忘れず。
---

解説は、[こちら](https://blog.goo.ne.jp/misky730/e/9376f8f3ffdf2d07d5ad0e090a0512fd)をご参照ください。

## 星一徹

星一徹の言葉を紹介します。
星一徹曰く、坂本竜馬が言ったとされる言葉です。

---
死ぬ時は　たとえ　ドブの中でも　前のめりに　死にたい
---

解説は、[こちら](https://yoshiokuno.com/kyojinnohoshi-ryoma/)をご参照ください。

https://yoshiokuno.com/kyojinnohoshi-ryoma/

## 佐藤一斎

言志録から言葉を二つ引きます。

---
<ruby>性分<rt>しょうぶん</rt></ruby>の<ruby>本然<rt>ほんぜん</rt></ruby>を尽くし、職分の当然を<ruby>務<rt>つと</rt></ruby>む。<ruby>此<rt>か</rt></ruby>くの<ruby>如<rt>ごと</rt></ruby>きのみ。
---

解説は、[こちら](https://genshishiroku.blog.jp/archives/10413248.html)をご参照ください。

---
天<ruby>尊<rt>たか</rt></ruby>く地<ruby>卑<rt>ひく</rt></ruby>くして、<ruby>乾坤<rt>けんこん</rt></ruby>定まる。君臣の<ruby>分<rt>ぶん</rt></ruby>は、<ruby>已<rt>すで</rt></ruby>に<ruby>天定<rt>てんてい</rt></ruby>に属す。<ruby>各<rt>おのおの</rt></ruby><ruby>其<rt>そ</rt></ruby>の職を尽くすのみ。<ruby>故<rt>ゆえ</rt></ruby>に<ruby>臣<rt>しん</rt></ruby>の君に於ける、<ruby>当<rt>まさ</rt></ruby>に<ruby>蓄養<rt>ちくよう</rt></ruby>の<ruby>恩<rt>おん</rt></ruby><ruby>如何<rt>いかん</rt></ruby>を<ruby>視<rt>み</rt></ruby>て<ruby>其<rt>そ</rt></ruby>の<ruby>報<rt>むくい</rt></ruby>を<ruby>厚薄<rt>こうはく</rt></ruby>にせざるべきなり。
---

ここでは、「各自は全力を尽くすべきである」の意の部分を特に強調して取り上げておきます。

## 猪木さん流に言うと

猪木さん流に言うと、「**プロレスとは、選ばれた人間同士が、鍛えに鍛え、闘いを通じて大衆を酔わせ、感動させるスポーツなのだ**」です。

:book:『[アントニオ猪木自伝](https://www.shinchosha.co.jp/book/129721/)』:book:より引用します。

> 「国家の代表として闘うオリンピックなどと違って、プロレスはレスラー個人の闘いだ。この四本の柱（受け身、攻撃、感性と表現力、信頼）を理解すれば、一万人でも二万人でも、大観衆を自分の手の上に乗せることが出来る。お客さんに感動を与えることが出来る。そのときの満足感というものは、例えようもないほど素晴らしい。ハラショーだ！」
> そう言い終わると、（ソビエト連邦の）レスラーたちは一斉にテーブルをダーンと叩いた。皆、興奮している。彼らは口々に、それこそ自分たちがやりたいものだと言ってくれたのだ。

（）内は、私が言葉を補いました。
新日本プロレスの初の東京ドーム興行[’89格闘衛星☆闘強導夢](https://ja.wikipedia.org/wiki/%E6%96%B0%E6%97%A5%E6%9C%AC%E3%83%97%E3%83%AD%E3%83%AC%E3%82%B9%E3%81%AE%E6%9D%B1%E4%BA%AC%E3%83%89%E3%83%BC%E3%83%A0%E8%88%88%E8%A1%8C)に、ソビエト連邦の選手をリングにあげるべく交渉をしていたときの話です。
国交、通信環境などいろいろな面で今とは違って不自由が多かった時代です。なんとか選手と話ができる状態までこぎつけ、ソビエト連邦の選手と猪木さんが会話をしたときの述懐です。

私たちは、[エンジニア](https://help.qiita.com/ja/articles/qiita-community-guideline#qiita)です。プロです。プロの矜持を持って日々新たに挑戦（開発）を続けていく必要があります。それがプロです。
自分自身に言っています。

ここでは、Qiitaの[コミュニティガイドライン](https://help.qiita.com/ja/articles/qiita-community-guideline)の定義を紐解いてみます。

> Qiitaでは、以下の定義に当てはまる人は全て「エンジニア」と呼ぶことにします
> プログラミングの知識と経験を活用している人

猪木さんの言葉をQiitaの[エンジニア](https://help.qiita.com/ja/articles/qiita-community-guideline#qiita)の定義で読み替えてみます。

**プログラミングとは、選ばれた人間同士が、鍛えに鍛え、製品を通じて大衆を酔わせ、感動させる芸術なのだ**

一言で言うと、つまりは **闘魂** です。
「闘魂」とは、 **「己に打ち克つこと、そして闘いを通じて己の魂を磨いて行くことだとおもいます」**  と猪木さんはおっしゃられています。
「**迷わず行けよ、行けばわかるさ**」です:rocket::rocket::rocket:
一歩一歩着実に挑戦を続けることができるもののみが成功の果実にたどり着けるのです。
大衆を酔わせ、感動させることができるのです。

:book:『[アントニオ猪木自伝](https://www.shinchosha.co.jp/book/129721/)』:book:
みなさまもぜひこの本をお手にとられて、猪木さんが残されたメッセージを通じて、直接猪木さんから「元氣」をもらってください。

https://www.shinchosha.co.jp/book/129721/

https://presidentstore.jp/item/008105.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/be8933f5-e3e2-d5f4-1561-f65f75abdf38.png)

**歴史に名を残す人は、チャンスが巡ってきたときに勝っています。**

人智を超えた運、天運を持っている方々なのです。チャンスが巡ったときに結果を残せる準備を継続していたのです。
**運をも家来にしている人たちなのでしょう。** その域に至るには、自分自身でできるあらゆることに最善を尽くし、続けることが前提なのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/968f48b5-283f-8643-e623-fb2eeff663ca.png)



# さいごに

[Elixir](https://elixir-lang.org/)に、<font color="#d00080">闘魂</font>を注入しました。

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

<font color="red">$\huge{１、２、３ ぁっダー！}$</font>


<iframe width="910" height="512" src="https://www.youtube.com/embed/AWxwmqzbOaw" title="燃える闘魂 アントニオ猪木  追悼VTR" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

https://www.youtube.com/watch?v=FSz7N5hCltw

---

https://qiita.com/torifukukaiou/items/5e96f4e9f12ec3c4b3f4

---

# Twitter

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Elixir Advent Calendar 3の23日目、いつも元気な <a href="https://twitter.com/torifukukaiou?ref_src=twsrc%5Etfw">@torifukukaiou</a> さんで、…Elixirに闘魂注入…？？？😅<a href="https://t.co/YjcmkVbzCY">https://t.co/YjcmkVbzCY</a><br><br>えっと中身は、Elixir本体を改造する、昔tokyo.exでやったネタで、けっこうマトモだった（良かった）😜 <a href="https://t.co/M6fUVqZRY0">pic.twitter.com/M6fUVqZRY0</a></p>&mdash; piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) <a href="https://twitter.com/piacere_ex/status/1606897233777274881?ref_src=twsrc%5Etfw">December 25, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


---


<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>