Skip to content

Instantly share code, notes, and snippets.

@mururu
Last active September 26, 2022 18:21
Show Gist options
  • Save mururu/371cb188a477e15423b4 to your computer and use it in GitHub Desktop.
Save mururu/371cb188a477e15423b4 to your computer and use it in GitHub Desktop.
shinjuku.ex #10 発表資料

Elixir ユーザーのための OTP 入門 (Shinjuku.ex #10)

話すこと

  • OTP とは何か
  • 「よくわからないけど使ったほうがいいっぽい」から「なぜ使うのかを意識して使う」になるための導入(になるといいな)
  • 詳細な API とかには触れません

だれ?

HPC系の研究室の M1

対象

一応以下のような人が対象です。

  • Elixir でちょっとでも何か書いたことある人
  • Elixir の「プロセス」がどんなものかを知っている人
  • Elixir (Erlang) のコードを全く見たことないとつらいかも

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

  • プロセスってどんな単位で作るの?
  • そもそも Elixir の設計って?
  • コード読もう

OTP とは何か

OTP Design Principles http://www.erlang.org/doc/design_principles/des_princ.html

  • Erlang でシステムを設計するときの原則
  • それに従って実装するためのライブラリ群
  • Elixir でも同様
  • スーパーバイザツリー
  • ワーカーとスーパーバイザからなる
  • ワーカーは実際に仕事を行うプロセス
  • スーパーバイザは設定に基づきワーカー(もしくは他のスーパーバイザ)を監視し問題が合った場合に再起動したり

ビヘイビア

  • スーパーバイザやワーカーでよくあるパターンを抜き出したもの
  • GenServer : サーバー
  • Agent : 状態をもつやつ
  • GenEvent : イベントハンドリング
  • Task : 他のプロセスとのやりとりというよりただ仕事をこなすやつ
  • Supervisor : プロセスの監視
  • Application : 始点

KVS を作ってみよう

(デモ)

もう一度ビヘイビアの種類

  • スーパーバイザやワーカーでよくあるパターンを抜き出したもの
  • GenServer : サーバー
  • Agent : 状態をもつやつ
  • GenEvent : イベントハンドリング
  • Task : 他のプロセスとのやりとりというよりただ仕事をこなすやつ
  • Supervisor : プロセスの監視
  • Application : 始点

まとめ

  • OTP は Elixir でシステムを設計する際に頻出するパターンをまとめたもの
  • スーパーバイザツリーを設計する
  • Enjoy OTP!
@mururu
Copy link
Author

mururu commented Jun 2, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment