小倉山峰のもみぢ葉心あらば今ひとたびのみゆき待たなむ
Advent Calendar 2022 76日目1の記事です。
I'm looking forward to 12/25,2022 ![]()
![]()
![]()
![]()
![]()
![]()
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか![]()
![]()
![]()
TwitterでRubyのワンライナーをみました。
ruby -e 'puts "いい国作ろう#{%w(キャバクラ 鎌倉).sample}幕府"'
— mattn (@mattn_jp) March 18, 2022
私は、Elixirで楽しんでみようとおもいます。
実行(Ruby編)
まずは兄貴分のRubyを実行してみます。
$ ruby -e 'puts "いい国作ろう#{%w(キャバクラ 鎌倉).sample}幕府"'
いい国作ろうキャバクラ幕府
$ ruby -e 'puts "いい国作ろう#{%w(キャバクラ 鎌倉).sample}幕府"'
いい国作ろうキャバクラ幕府
あれ? 鎌倉幕府にならない???
気を取り直して、
$ ruby -e 'puts "いい国作ろう#{%w(キャバクラ 鎌倉).sample}幕府"'
いい国作ろう鎌倉幕府
![]()
![]()
![]()
だよね!
%w(キャバクラ 鎌倉).sampleが肝で、'キャバクラ'か'鎌倉'が選ばれるわけです。
Rubyは、Elixirの兄貴?
Rubyは、Elixirの兄貴と言って過言ではないとおもいます。
兄弟船です。
波の谷間に命の花が ふたつ並んで咲いている♪
Elixirの作者José Valimさんは、 https://cognitect.com/cognicast/120 の中でThen in 2012 was when we started to work on the Elixir that we have today. The main, the top three influences are Erlang, Ruby, and Clojure.と発言されています。
鳥羽一郎さん
余談ですが、私は兄弟船を歌われている鳥羽一郎さんが、厳島神社のある宮島で植樹をされたという立て札をみたことがあります。
私は大興奮しました。
文字通りの大興奮です。
こんなにテンションが上がったのは人生にもう一度あるかないかくらいです。
鳥羽一郎さんの話はこのくらいにしておきます。
その当時の興奮をおもいだしました。
興奮そのままに書きたいことが増えたので続けます。
楽しむ
YouTubeの動画を埋め込んでみたところ奇しくも「楽な暮らしを させたくて」と表示されています。
「兄弟船」の世界感とその歌詞の文脈とは「楽」の意味が異なりますが、「Elixirは、『プログラミングは楽しいモノだと改めておもいださせてくれた言語』」です。
おもいだしました。
わたしは以前、まつもとゆきひろさんの前でLTをしたことがあります。
そのときに「Rubyは、『プログラミングは楽しいモノだと改めておもいださせてくれた言語です』」と告白をして、LTを締めました。
その後、しっかりとまつもとゆきひろさんのサインをいただきました。
家宝です。
この場をお借りして、御礼申し上げます。
ありがとうございます。
論語には「知好楽」という一節があります。
之を知る者は、之を好む者に如かず。之を好む者は、之を樂しむ者に如かず。
楽しんでいきましょう!
ついつい「がんばります!」と言いがちなのですが、「がんばります!」と力を込めることはたいてい長続きしません。
私は、40歳をすぎてやっとわかりました。
私は、「がんばります!」と言いそうになったら、ぐっとこらえて「楽しんでいます!」ということにしています。
(決して「がんばって」はいません! 「楽しんでいます!」というのを「がんばって」言っているわけではなく、「楽しんで」言っています!)
A PROGRAMMER'S BEST FRIEND
ここからは私の持論です。
Elixirは、海外、国内ともにコミュニティがあたたかいです。
ElixirがRubyの影響を色濃く受けているところは、親しみやすい文法はもちろんのことA PROGRAMMER'S BEST FRIENDなのだとおもっています。
ElixirもまたA PROGRAMMER'S BEST FRIENDです。
A PROGRAMMER'S BEST FRIENDというのは、 https://www.ruby-lang.org/ をご覧になってください。
ページの左上に書いてあります。
Elixirで書く
前置きが長くなりました。
この記事のハイライトです。
Elixirで書いてみます。
$ elixir -e '~w[キャバクラ 鎌倉] |> Enum.random() |> then(&"いい国作ろう#{&1}幕府") |> IO.puts'
Elixir 1.12 or laterを使ってください。
Elixirとまだ馴染みがない方のために説明を書きます。
- then/2が、1.12からです
-
~wは、 https://hexdocs.pm/elixir/Kernel.html#sigil_w/2 に説明がある通り、Stringのリストを作ってくれます - Enum.random/1は、リストの中から任意の一要素を選んでくれます
- |>は、Pipe operatorと呼ばれるものでして、前の計算結果を次の関数の第一引数にいれて次の関数を実行してくれる、まさしくすべからく畢竟パイプです
-
elixir -e '...'と実行するところなんて、ruby -e '...'を彷彿とさせますね
読者の方からお便りをいただきました
@mnishiguchi さんからお便りをいただきました。
こういうふうに、IO.putsの引数にリストを使う書き方ができます。
elixir -e '~w[キャバクラ 鎌倉] |> Enum.random() |> then(&["いい国作ろう", &1, "幕府"]) |> IO.puts'
参考リンクを教えていただきました。
ご紹介しておきます。
@mnishiguchi さん、ありがとうございます!
Wrapping up 



この記事は、elixir -e '~w[キャバクラ 鎌倉] |> Enum.random() |> then(&"いい国作ろう#{&1}幕府") |> IO.puts'を書きました。
鳥羽一郎さんの話が当初の予定よりも長くなりました。
予定はその通りにいかないからおもしろい ーー 「そこがいいんじゃない」です。
私はこの記事を書くことをとても楽しみました。
elixir -e '...'、Elixirはイー(良)!!! です
Enjoy Elixir![]()
![]()
![]()
$\huge{Enjoy\ Elixir🚀}$
以上です。
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!