SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2019】セッションレポート (AD)

並列処理に関数型…でも学習コストは高くない!? Web開発者のためのElixirのススメ【デブサミ2019】

【15-D-5】 これをまだ知らない Web エンジニアへ贈る - 私が愛する Elixir/Erlang の楽しさと辛さ -

  • このエントリーをはてなブックマークに追加

実は関数型由来の仕組みは少ない。学ぶことの取捨選択が大事

 Elixirの学習コストが高いと思われがちなもう1つの要素である「関数型」についても、「Elixirは純粋な関数型言語ではない」と、幾田氏は指摘する。

 関数型言語の純粋性の条件としては、演算子、例外、IOなどが関数で表現されていることや、副作用を起こさないことなどが挙げられる。Elixirはこれらに当てはまらず、実は関数型由来の仕組みは少ないという。

 「Elixirでも、繰り返しや条件分岐、例外処理、入出力などを使ってコードが書ける。ただ、これらを複雑に組み合わせるのはElixirのよさが損なわれるし、慣れるにしたがってシンプルに書けることがわかる」(幾田氏)

 続いて幾田氏は、Elixir入門者向けに最適な学習リソースとして次の4点を紹介。

プログラミングElixir

 Elixirらしさを学ぶのに最適な、Dave Thomas氏による解説書。Elixirの思想が詰まっている。入門者が読むべき範囲は11~157ページ。

Elixir入門

 「gumi TECH Blog」にて公開。解説の順番はElixirの公式サイトと同様。「11:プロセス」「16:プロトコル」「20:ビヘイビア」は上級者向けなので、読み飛ばしてよい。

Elixir School

 Elixir初学者用のWebサイト「Elixir School」の日本語訳。はじめは「基本」の章だけ読めばよい。

Phoenix GUIDES

 フレームワークPhoenixの解説サイト(英語)。「Up and Running」から読み始める。一般的なWebサービスの用途なら、「Channels」と「Presence」は読み飛ばしてよい。

 さらに幾田氏は以上のリソースを読む前に覚えておいてほしい要素として、リスト、Enum、パイプライン、doについて解説した。『プログラミングElixir』では、「プログラミングとはデータを変換することである」と紹介されているが、この4つはまさにデータ変換の道具だ。

リスト

 まず、[1 | 2] のようなペアという構造があり、リストとはペアで作ったリンクリスト(連結リスト)であることを理解する。[1] という1つのリストも、右が空リストのペアである [1 | []] と記述できる。3要素のリストは、[1, 2, 3] = [1 | [2 | [3 | []]]] となる。

 これを知ると、リストの性質が理解できる。例えば、リストの先頭に要素を追加する場合、末尾よりも先頭に追加するほうが高速なのは、ペアを1つ用意するだけで済むからだとわかる。この構造を前提に、再帰などについても学習していく。

リストを「ペアで作ったリンクリスト」として捉えると理解しやすい
リストを「ペアで作ったリンクリスト」として捉えると理解しやすい

Enum

 Enumモジュールの関数は、よく使うものから覚える。mapやfilterのほか、『プログラミングElixir』『Elixir School』で紹介されている関数などを参照。また、_by、_whileなどのサフィックスのルールを覚えておく。

パイプライン

 パイプラインの存在意義は可読性が上がることと、関数定義に一貫性が生じること。開発者にとって便利なので、「パイプライン演算子が使えるように関数を定義する」という習慣がつき、結果として予測のしやすい関数ができあがるようになる。

do

 doブロックを引数にとるものは、「変数のスコープと値(戻り値)を持つ」という法則を念頭に置くと、さまざまな構文を理解しやすくなる。

 「最初は学ぶことを取捨選択するのが大事。そうすることで学習コストは下げられる」と話す幾田氏。まず集中して学習すべきなのは「リストの扱い方」であり、ほかのことは「リスト処理に習熟してからゆっくり学ぶ」スタンスがよいそうだ。

 まとめとして幾田氏は、Webシステムの開発に限定すれば、Elixirの学習コストはほどほどで済むうえに、安全性および生産性の高い開発が実現できることをあらためて訴求。

 最後に、もっと理解を深めたい人向けに、「gumi TECH Drinkup」というgumi主催の技術交流イベントが度々開催されいてることや、「Erlang & Elixir Fest 2019」が6月1日に永田町 JA共済ビルで開催されることを紹介し、内容盛りだくさんのセッションを終えた。

お問い合わせ

 株式会社gumi

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【デブサミ2019】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11431 2019/04/25 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング