『Elixir in Action』を読んで写経とかも合わせてやった

Elixir in Actionは

ここら辺で買えるやつです。

motivation

大学院の頃、Byzantine problemを題材に扱ってました。その主な対象が、現実問題だと分散システムやその信頼性だったこともあって、比較的、分散環境に対するシステム的な話に、技術的な興味を持っています。

今のWeb/Mobileなど含んだ様々な端末から構成されるサービスだったり、例えば、 The Wisdom of Crowds という、いっときかなり有名だった「集合知」に関する話題なんか。そういったものも分散システムですね。

ここ数年の間、Erlangは興味あったけれど、学ぶほどまでモチベーションがわかなかった…(多少、あることをきっかけにかじった程度)

そんな折、Elixirを知って、Getting Statedをざーっと通して面白みを感じたので学んでみました。そして、興味の対象の理解に支障が無いくらいの書き物を身につけて、Elixir in Actionに手を出してみました。

成果

ざっと、書きながら、読みながら、有した時間は2週間程度でしょうか。だいたい、きりがよい段階でBlogに簡単なメモ残して、トントン、と。

読む前の能力としては、以下をざーとやったあと、のものです。

  • Getting Startedを一通りやった
  • Hex.comに数個ライブラリをあげてみた
  • Phoenixを使った、簡単なWebアプリを開発してみた
  • EctoやPhoenixに本当にちょっとしたPRを送ってみた

以下、Blogを列挙。

  1. [Elixir in Action]No technology is a silver bullet.
  2. [Elixir in Action]Read building blocks
  3. [Elixir in Action]Erlang/Elixirの再帰計算におけるnon-tail recursionとtail recursion
  4. [Elixir in Action]Guard clauseの優先度
  5. [Elixir in Action]polymorphismで拡張していく
  6. [Elixir in Action]BEAMとしてのprincipleとその実現のための処理系
  7. [Elixir in Action]OTP/GenServerを学んで非同期/並行処理を学ぶ
  8. [Elixir in Action]fault toleranceを保つための特別な責務を負うprocess~Supervisor~
  9. [Elixir in Action]Supervision Tree ~ ネストされたSupervisor ~
  10. [Elixir in Action]Erlang Term Storageを知る
  11. [Elixir in Action]Elixirで分散システムを構成するための諸要素を知る

GenServerや分散システムあたりは、また必要な時が来れば再度読み返したいものですね。

所感

Elixir in Actionは、分散システムに特化した内容なだけあって、結構思想含めて面白かったです。なるほどなーというところや、こうしたらこういう障害も耐えられるかな…という妄想も含めて。

ところで、Elixir、個人的には技術的な関心ごとの範囲でいうとちょっと製品として関わってみたいなーという感じ。ただ、今のサービスはサービスとして好きなので、内々でElixir使った話でないかな…あればテストエンジニアとして手伝いたいな。

テストエンジニアとしては、ExUnitを少しコード追いたいなという気分。ここはメタプログラミングが必要そうな感じなので、今度はメタプログラミングにどっぷりつかってみようと思ってます。

あまり価値ないけれど、AppiumのElixirクライアントアプリとか作ってみたい。でも、ちょっとやろうとして、やっぱRubyでええやんってなるのかな。(そういえば、Ruby Clientのメンテナー募集中だな…)

2 Comments

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.