$\huge{元氣ですかーーーーッ!!!}$
はじめに
闘魂とElixirが出会いました。
闘魂 meets Elixir.です。
Elixir meets 闘魂.でもよいです。
本日は、Enumモジュールを説明します。
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}
モジュール
まずは、モジュールを説明します。
In Elixir we group several functions into modules.
モジュールとは、いくつかの関数をまとめたものです。
以下、もう少し詳しく説明します。
Elixirは、 世俗派関数型言語1 です。
大衆派関数型言語と言ってもいいかもしれません。
怖くない関数型言語です。ゆるふわっとした関数型言語です。
感覚的なことですのでこれ以上は話しません。話せません。
「世俗派」や「大衆派」などとの接頭辞を取っ払ってしまえば、 Elixirは、 関数型言語 なのです。
「世俗派」や「大衆派」などとの接頭辞を付けているのは、 関数型言語 だからと言ってそんなに力まずに、数学が分からなくても、なんとなくゆるふわっと使える素敵なプログラミング言語なのです。
「あれ? 私、気づいたら関数型言語使いこなしていましたわ」とそんなノリです。
繰り返します。とにかくElixirは、 関数型言語 なのです。
その中心にあるものは、 関数 です。
モジュールというのは、 関数 をまとめたものです。
Elixirには、標準で多くのモジュールがあります。
本「闘魂Elixir」シリーズでは代表的な3つのモジュールを解説します。
今回は、Enumモジュールを説明します。
Enumモジュール
Enumモジュールが取り扱うデータ型は、Enumerableプロトコルを実装したものです。
小難しいことは置いておいて具体例を示します。
- List
- Keyword List
- Map
- Range
などです。
Enumモジュールは、これらの型のデータを変換できます。
List
Listの例です。
[1, 2, 3, "da-"]
Keyword List
Keyword Listの例です。
[{:inoki, 102}, {:baba, 141}, {:rikidozan, 116}]
こういうふうにも書けます。
[inoki: 102, baba: 141, rikidozan: 116]
Map
キーと値の組です。
%{:inoki => 102, :baba => 141, :rikidozan => 116}
キーがAtomの場合は、こういうふうにも書けます。
%{inoki: 102, baba: 141, rikidozan: 116}
Range
Rangeの例です。
1..1000
Enumモジュールの関数一覧
こちらに一覧があります。
「闘魂Elixirシリーズ」では、私が独断と偏見で決めたよく使われるであろう関数を一つずつ丁寧に解説します。
お楽しみに!
ワンポイントレッスン
モジュールは自作できます。
defmodule です。
例を示しておきます。
defmodule Number do
def one, do: 1
def two, do: 2
end
#=> {:module, Number, <<70, 79, 82, ...>>, {:two, 0}}
Number.one()
#=> 1
Number.two()
#=> 2
今日の闘魂
今日は、将棋の大山康晴永世名人の言葉です。
『勝負のこころ』 から引きました。
勝負の世界では、自分だけが頼りである。その頼りになる自分を鍛え上げていくのが、プロ棋士の修業である。将棋に限らず、すべての職業についてもいえることだと思う。(中略)毎日毎日が自分との戦いであった。(中略)いま私は五十三歳。将棋の世界では老兵の部に属するが、私自身は、いまも新人だと思って戦っている。(中略)色紙を頼まれると、私はよく「克己」と書く。おのれに克つことは、何にも増して苦しい戦いである。それができれば、自然に明るい世界が開けてくる。(中略)理屈を越えて理解したことは、怠け心を捨てて自分に打ち克つ精神を養えば、将棋もまた上達するという事実であった。(中略)おのれに克つことは、将棋に勝つことであった。
猪木さん流に言うと、「闘魂」です。
猪木さんは、 「闘魂」とは、 「己に打ち克ち、闘いを通じて己の魂を磨いていくことである」 と述べられています。
大山康晴永世名人がおっしゃられている「克己」と同じです。
超一流の人は、見える景色が同じなのでしょう。
表面的なところだけしか私には理解できていないのだとおもいますが、同じことをおっしゃられているように感じて、感動を覚えております。
将棋にしても、プロレスにしてもトップで闘い続けたご両人が語る言葉 ーー 克己、闘魂には重みがあります。
さいごに
Enumモジュールを説明しました。
明日から代表的な関数を一つ一つ見ていきます。
闘魂の意味は、 「己に打ち克ち、闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
$\huge{1、2、3 ぁっダー!}$
Elixir Advent Calendar 3の6日目は、 @torifukukaiou さんの1人カレンダー6日目で、コレクションとEnumのお話😉https://t.co/w3RM0K0GLV
— piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) December 6, 2022
エモいとこを抜粋してみた😜
・Elixirは世俗派関数型言語
・大衆派関数型言語と言ってもいいかも知れない
・怖くない関数型言語
・ゆるふわっとした関数型言語
$\huge{元氣があればなんでもできる!}$