1
JUN SUMIDA
INTRODUCTION TO PLUG
Tokyo.ex #5 2016/08/31
Slide 2
Slide 2 text
2
Introduction
@junsumida
Jun Sumida
XFLAG™ STUDIO
mixi, inc.
developing internal platform
servers in Elixir
Slide 3
Slide 3 text
Plugͬͯͳʹ?
3
What is Plug?
Slide 4
Slide 4 text
4
What is Plug?
Elixirʹ͓͚Δ
RubyͰ͍͏Rackͱ͔
PerlͰ͍͏PSGIͱ͔
PythonͰ͍͏WSGIతͳͷ
Slide 5
Slide 5 text
7
What is Plug?
defmodule MyPlug do
import Plug.Conn
def init(options) do
# initialize options
options
end
def call(conn, _opts) do
conn
|> put_resp_content_type("text/plain")
|> send_resp(200, "Hello world")
end
end
Slide 6
Slide 6 text
5
What is Plug?
request/connection
Cowboy
Plug
Phoenix
Plug
Cowboy
Phoenixʹ͓͚ΔॲཧͷྲྀΕ
Slide 7
Slide 7 text
Plugͷಛ
6
• (Rackతͳ)webαʔόʔؒͷΞμϓλʔ
• Cowboyʹ͔͠ରԠͯ͠ͳ͍ (2016/8ݱࡏ)
• Req/Resp͡Όͳͯ͘ɺconnectionΛ࣋ͭ
• connectionimmutable
What is Plug?
Slide 8
Slide 8 text
PlugͬͯԿ͕Ͱ͖Δͷ
6
• CSRF Protection, ΤϥʔϋϯυϦϯάɺ҉߸
Խɺηογϣϯཧ, ੩తϑΝΠϧ৴
• ͪͳΈʹɺPhoenixͷEndpoint, Router,
ControllerplugͰͰ͖͍ͯ·͢
What is Plug?
=> ͍Ζ͍ΖͰ͖·͢
Slide 9
Slide 9 text
5
What is Plug?
request/connection
Cowboy
Plug
࣮࣭ Plug
Plug
Cowboy
Phoenixʹ͓͚ΔॲཧͷྲྀΕ
Slide 10
Slide 10 text
8
What is Plug?
ͬͱPhoenixͷPlugʹ͍ͭͯ
ৄ͘͠Γ͍ͨํ….
Slide 11
Slide 11 text
10
What is Plug?
tokyo.ex #1 - phoenixframeworkͷճΓ
https://speakerdeck.com/hidetakakojo/tokyo-
dot-ex-number-1-phoenixframeworkfalsezu-
hui-ri
Slide 12
Slide 12 text
References
11
• https://github.com/vikram7/plug-example
• https://github.com/elixir-lang/plug
• https://speakerdeck.com/hidetakakojo/tokyo-
dot-ex-number-1-phoenixframeworkfalsezu-
hui-ri
• Programming Phoenix - Chris McCord
What is Plug?