この記事は、「プログラミング技術の変化で得られた知見・苦労話【PR】パソナテック Advent Calendar 2020」 5日目です。
あいていたので埋めました。
後述の通り、Qiita Advent Calendar 2020に記事を投稿することは私の趣味です。
関数型言語というもの自体の歴史は古いとおもっています。
ここ2年くらいElixirを「私が」接するようになって、「公式ドキュメントを読みましょう」というごくごく当たり前のことの大切さにようやく「私が」気づいたということを書いています。
結論
- 公式ドキュメントを読むのが一番いい
Elixir
- Elixir (エリクサー) は並行処理の機能や関数型といった特徴を持つ、Erlangの仮想マシン (BEAM) 上で動作するコンピュータプログラミング言語である。ElixirはErlangで実装されているため、分散システム、耐障害性、ソフトリアルタイムシステム等の機能を使用することができるが、拡張機能として、マクロを使ったメタプログラミング、そしてポリモーフィズムなどのプログラミング・パラダイムもプロトコルを介して実装されている。1
現在の「私の」位置
- 2020/11/25 Interface 2021年1月号にElixir(Nerves)の記事を執筆
- @takasehideki 先生にお声がけいただいて、この仕事をはじめてから20年くらいたちますが、ようやく雑誌に記事が載りました
- 名乗るほどのものではない名前を載せてもらいました
- 2020/07/10 Elixir/Nerves入門!堅牢なIoT Edgeデバイスプログラミングをお手軽ににて登壇
- IoT ALGYAN初参加がパネラーとして登壇
- いいコミュニティです !!! 案内文で特に印象に残っている言葉たちです
- 参加者の皆さんは「お客様」ではありません。
- 寛容な気持ちで温かく応援
- 一緒になって、より良いイベントを作り上げるというスピリッツをお持ちください
- 2020/12/27 豪華プレゼント付!Elixir/Nerves(ナーブス)体験ハンズオン!にも登壇予定です
- 2020/06/18-19 Elixir Conf EU VirtualにてLT登壇
- 2019/11/09 ElixirConfJP 2019 小倉城にてLT登壇
- NervesのJustin Schneck氏の前で歌を披露
- I was born to love Elixir ♪
- 全力で、Elixir好きですと言っているだけ
得られた知見
- 公式ドキュメントを読むのが一番いい
- プログラミングElixirは、Elixirを学ぶ上で最高の教材・傑作
- Elixirのコミュニティーには優しく教えてくれる人が多い(優しく教えてくれる人しかいない)
なれそめ
- 2016年ごろに大学生から$\huge{「これからは関数型です! 副作用がないのです!」}$と言っているのを聞きました2
- このころはすごいHaskellたのしく学ぼう!ですこ〜し学んでみましたが、あんまり理解は進みませんでした
- ひょんなことから参加した 2019/01/25 kokura.ex#1:小倉Elixirコミュニティ発足【セッション/LTと懇親会】が私とElixirの出会いです
- 昔から再帰プログラムは書けなかった(いまでも苦手ではある)のですが、不思議とElixirでは書けました
- その後、いろいろありますがとにかくQiitaでElixirタグをつけて記事を投稿しました
- いつも温かく見守ってくださり、をつけてくださる、みなさまありがとうございます !
- 励みになっています !
- 特に @piacerex さん、 @twinbee さん、 @takasehideki 先生、@im_miolab さんからは私の初投稿のころからいっつもをつけていただいておりまして、感謝しても感謝しきれません
- 私に海外のカンファレンスに参加、LTしてみようと背中を押してくださった3 @zacky1972 先生
- OkazaKirin.beam、NervesJPでほぼ毎週のようになにかとお世話になっている @pojiro さん
-
Phoenix Guide 日本語訳やfukuoka.exでお世話になっている@koga1020 さん
- Phoenix入門 API構築からLiveViewまでへのサイン、ありがとうございます!
- Phoenix Guide 日本語訳は最近、貢献できていなくてすみません
- ほぼ毎週Sapporo.beam開催されている @niku さん
- 最近では、Elixir その2 Advent Calendar 2020でたすきをガッチリ受け取ってくださった@mnishiguchiさん
- と、書き出すと全員分書かないといけなくなるですいません、このへんまでにさせてください
- $\huge{「ありがとうございます!」}$
- 記事を書くにあたり、できるだけ公式のドキュメントを確認し、そのリンクを貼ることを心がけています
- だって、公式ドキュメントが一番正しいのですもの
Elixirプログラム例
"https://icanhazdadjoke.com/"
|> HTTPoison.get!(["Accept": "application/json"])
|> Map.get(:body)
|> Jason.decode!()
|> Map.get("joke")
-
- APIのアクセスポイントがあります
-
- HTTP Getします
-
- レスポンスから
:body
キーの値を取り出します
- レスポンスから
-
-
:body
キーの値をJSONとしてデコードします
-
-
- JSONの中から
"joke"
キーの値を取り出します
- JSONの中から
- パイプ演算子 |>で言葉に書いた通りにキレイに書けます
- どうでしょうか、とても**美しい**ですよね
"If you’re struggling to think of what to get someone for Christmas. Get them a fridge and watch their face light up when they open it."
- 「美しい」と言っているのはなにも私一人だけではありません
- たとえば
-
プログラミングElixir 第2版
- 私は、このプログラミングモデルの力と美しさについての思想を贈りたい。(はじめに(正当化のむなしい試み、再び))
-
Programming Phoenix 1.4
- Simply put, Phoenix is about productive, concurrent, beautiful, interactive, and reliable applications.(Chapter 1. page 2)4
- ほんの一例です
-
プログラミングElixir 第2版
Webアプリケーションやるなら
IoTやるなら
Wrapping up
- 公式ドキュメントを読むのが一番いい
- Elixirにおいては特にそうだし
- たいていの他のことも公式ドキュメントを確認することは良いこと
- 特にElixirは例も豊富で、言語自体の公式ドキュメントと各種ライブラリのドキュメント形式が同じなので読みやすいです
- I was born to love Elixir.
- We are the Alchemists, my friends.
- 不老不死の霊薬という意味をもつプログラミング言語Elixirの使い手のことを錬金術師ーーアルケミストと呼ばれます
- アルケミスト 夢を旅した少年
- Enjoy Elixir !!!
おまけ
- 趣味: Qiita Advent Calendar 2020を書くこと
https://qiita.com/advent-calendar/2020/my-calendar
で参加中のカレンダーがみえるでありますよ。
私の場合
-
だから何 っておもった方、大丈夫です。私はいまだによくわかっていません。簡単に「わかりました」なんて言えない領域だと思っています。並列? だか並行? だかその区別も意識していませんが、ただ私から言えることは、Flowって書くと速くなる のです。副作用がないというのはそのへんにつながるのですが、とにかくFlowって書くと速くなるとおぼえておけば大丈夫です。それだけ覚えておけば、海外でもLTできます。Amazing!!! Unbelievable!!!, Oh, my お釈迦様ness って叫んでおけばOKです。(注釈なのに言葉足らずですが) ↩
-
@zacky1972 先生にはそんなつもりは全くなく、私の勝手な思い込みなのかも ↩
-
PhoenixはElixirあってのWebアプリケーションフレームワークですから、Elixirがbeautifulだと言っているのだと私は解釈しています ↩