Shinjuku.ex #10 行ってきたメモ

shinjukuex.connpass.com

新宿で迷子になっていたので、2つめの途中から参加しています。

パーフェクト"Elixir情報収集" @keithseahus さん

www.slideshare.net

exgettextの話 @k1complete さん

www.slideshare.net

ドキュメントの地域化

gnu gettextとほぼ同じような地域化

ElixirユーザのためのOTP入門 @mururururu さん

shinjuku.ex #10 発表資料

Elixirアプリケーションの設計

  • どう設計するのか、他の言語とは異なる設計になる
    • コード読むしかない
    • よく出てくるパターンを知る
    • 闇雲に読んでもダメ。OTPを勉強するのは大事

OTPとは何か

  • Erlangでシステムを設計するときの原則
  • それに従って実装するためのライブラリ群
  • 木構造の設計をする
    • スーパーバイザ:ワーカの監視などを行う
    • ワーカ:実際に仕事を行う

ビヘイビア

よくあるパターン

  • GenServer
    • クライアント、サーバ
  • Agent
    • 状態を持つ
  • GenEvent
    • イベントハンドリング
  • Task
    • ただ計算を行うなど
  • Supervisior
    • プロセスの監視
  • Application
    • 始点

実際に何が起きているのか、実際にどんな風にできているのか、サンプルアプリ(KVS)を作ってみていくことで学ぶ

samples for shinjuku.ex #10

OTPをよしなに選択して使えるとElixirがかけると言って良いのでは?

Phoenix

使うのに意識することはないが…

まとめ

OTPはパターン

Eilixirを書くということは、スーパーバイザツリーを設計するということ

Ruby on Rails vs Phoenix @ma2ge さん

speakerdeck.com

ここ2、3ヶ月海外でも記事が増えている。流行りだしている

  • Elixir/Phoenixはバックエンド、ミドルウェアだけ?
  • そろそろRails置き換える力があるのでは
    • scaffold
    • eex like erb
    • ドキュメント充実
    • WebSocket
    • Performance Railsアプリのパフォーマンスを改善するにはPhoenixと言いたい

Ruby on Rails

プログラマの幸せと生産性

Phoenix

  • Speedと開発環境を楽しくあろうと作られている
  • Phoenixのスター数はRailsの10分の1
  • 今年中に1.0?

違い

  • ウェブソケット
  • アセットパイプラインがない
    • nodeに頼る
  • SQLite Adapterなかったが開発されている

開発における違い

  • ファイル構造
  • scaffold
    • 同じ
    • named_routeほぼ同じ
  • controller
    • Rails
      • renderを明示的に指定する必要がない
  • View/Template
    • Phoenix
      • templateとViewは独立
        • Viewはプレゼンテーションレイヤのみ
      • form_forが最近実装された
      • ラベル未対応くらい
  • Model
    • Elixir
  • Query
    • ecto
  • Mailer
  • assets
    • brunch.io, gulp, etc..
      • JSはJSに任せる
  • Test
    • Rails
    • Elixir
      • ExUnit
        • アサートがマクロで読みやすい
        • Rspec likeはライブラリもある
  • Ecosystem
    • Rails
      • gems
    • Eilxir
      • hex
        • 数は少ない
        • よく出来ていて作りやすい
        • 他の言語のいいところを吸収していて、可能性がある

PhoenixRails

  • Performance
    • Phoenix > Rails
      • development: 1.7倍
      • production: 3倍
      • 並列: 9倍

まとめ

ミドルウェアだけでなくウェブアプリケーションに使ってもいいのでは

ポテンシャルはある


個人的には、@mururururuさんのOTP入門で、実際にOTPが何をどういう風に抽象化しているのかというところをライブコーディングで学べたのが良かったですね。また機会があれば参加したいです。