Slide 1

Slide 1 text

Rubyist から見た Elixir 2023/06/22 @マネーフォワードオフィス mokichi / 齋藤 和也

Slide 2

Slide 2 text

自己紹介 名前:齋藤 和也 (35) HN:mokichi 居住:東京都 出身:福岡県 🍜 Twitter:@mokichi_s12m 株式会社スマートアルゴリズム 代表取締役 / エンジニア 複数社で技術顧問を務める クラウドインフラを含むバックエンド開発や DevOpsが得意 Ruby歴は10年⤴、Elixir歴は5年⤴、マネフォ課金歴も5年⤴

Slide 3

Slide 3 text

2022年2月 WEB+DB PRESSデビューしました 🎉 WEB+DB PRESS Vol.127 特集2 「Elixirによる高速なWeb開発!作って学ぶPhoenix」 Elixirコミュニティのメンバーと共著 担当:第5章(全5章) 「LiveViewによるフロントエンドの開発」

Slide 4

Slide 4 text

Ruby と Elixir の比較

Slide 5

Slide 5 text

表面上は似てるところが結構多い Ruby Elixir 型システム 動的型付け 動的型付け 命名規則 クラス  :camel case 関数・変数:snake case モジュール:camel case 関数・変数:snake case 関数定義 def foo … end def foo do … end パッケージマネージャ rubygems.org hex.pm 依存関係管理、タスク実行 Bundler, Rake Mix Webアプリケーションフレームワーク Ruby on Rails (MVC) Phoenix (MVC) というのも... Elixir は元 Rails コミッターの José Valim さんが作ったプログラミング言語です!

Slide 6

Slide 6 text

● Ruby はオブジェクト指向型言語、Elixir は関数型言語 ● 関数型言語というと学術的な印象だが、Elixir は実用的な側面が強い ○ モナドや圏論といった小難しい言葉は出てこない ○ 純粋関数型言語ではなく、副作用も入れ放題!(適度に …ね) ● Elixir は並行・並列・分散処理が得意で、耐障害性にも優れる ○ Erlang VM 上で動く故の特徴を備えている ● 注:1プロセスあたりの計算能力は高くはない ○ Ruby < Elixir(Erlang VM) < JavaScript(V8) パラダイムも違うし、向いている領域も違う

Slide 7

Slide 7 text

Ruby を使っていて困ること

Slide 8

Slide 8 text

● Dockerイメージのサイズが大きくなりがちで、起動にも時間がかかる ● 1プロセスあたりの並列処理性能が低いため、大量リクエストに備えて多くの プロセスを起動しておく必要がある ● バッチ処理など大量データを扱う場合、ActiveRecordを使うと大量にメモリを 使うし時間もかかる 主に Rails の話。基本的には困らないが... サービスが成長してくると不得意な部分が顕在化する

Slide 9

Slide 9 text

Elixir 実際どう?

Slide 10

Slide 10 text

● パターンマッチやパイプ演算子をうまく書けたときの気持ちよさ ● 変数がイミュータブルなため、破壊的変更の心配がない ● HexDocs がとにかく見やすい & 結構みんなちゃんと書いてくれてる ● 全体的にレスポンスがサクサクで、安定して動き続ける ● Ecto というORM的なものがあるが、ActiveRecordほどの手軽さはない ● 何かやろうとしたときに、情報/ライブラリの多さや知見を持つ人の多さは Ruby のほうが圧倒的に上(Elixir も少なくはないよ!) 楽しさと同時に Ruby の偉大さを感じる日々

Slide 11

Slide 11 text

前編:https://findy-code.io/engineer-lab/ruby-elixir1 後編:https://findy-code.io/engineer-lab/ruby-elixir2 2年前にも Ruby と Elixir のイベントに出てました

Slide 12

Slide 12 text

とある Elixir のプロジェクトが進行中🏃💨 年内には出せるはず...お楽しみに!!