$30 off During Our Annual Pro Sale. View Details »

Rubyistから見たElixir

 Rubyistから見たElixir

【福岡x東京同時】Elixirで宇宙衛星/エッジコンピューティング/Web@マネーフォワードオフィス
https://moneyforward.connpass.com/event/284805/

mokichi

June 22, 2023
Tweet

More Decks by mokichi

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. Ruby と Elixir の比較

    View Slide

  5. 表面上は似てるところが結構多い
    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 さんが作ったプログラミング言語です!

    View Slide

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

    View Slide

  7. Ruby を使っていて困ること

    View Slide

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

    View Slide

  9. Elixir 実際どう?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide