Slide 1

Slide 1 text

N O D E . J S I S D E A D ͳ ͥ ࢲ ͕ N o d e . j s Λ ࣺ ͯ ͯ E l i x i r ʹ ৐ Γ ׵ ͑ ͨ ͷ ͔ M a s a a k i H i r a n o ( @ F L 4 T L i N 3 )

Slide 2

Slide 2 text

͸ ͡ Ί ʹ • ͜ΜͳλΠτϧʹͨ͜͠ͱΛͱͯ΋ޙչͯ͠·͢ • ݴޠdisͬͨΓରཱἤͬͨΓɺͦ͏͍͏ͷ͸ͪΐͬͱ… • ύοͱ಄ʹු͔ΜͩλΠτϧͰಥͬ૸ͬͯ͠·ͬͨ • ༑ਓ਺໊ʰେৎ෉ʁϚαΧϦతͳҙຯͰʢসʣʱ • ΄Μͱ͍͢·ͤΜ

Slide 3

Slide 3 text

͓ લ ͩ Ε Α • Masaaki Hirano (@FL4TLiN3)ɺ31ࡀɺೋࣇͷ෕ • Server (Node.js/Perl/PHP/Java…) • Web BrowserʢReact/CanJS/Angular/Ext JS…) • AppsʢiOS/Androidʣ • اըશൠʢαʔϏεاըɺήʔϜσβΠϯɺϓϩσϡʔεʣ • ࣸਅ͕झຯʗྺ࢙޷͖ʗήʔϜ޷͖ʗөը޷͖ʗԻָ޷͖ • اը → ։ൃ → ӡ༻ ʹ ͍͢͜͝ͱ͍͓ͨ͠͡͞Μ

Slide 4

Slide 4 text

͓ ͡ ͞ Μ ͷ ͜ ͜ ࠷ ۙ • 2015೥ɺ੯͠·Εͭͭ΋αϥϦʔϚϯΛ༐ୀɻ౰࣌30ࡀͰ͋ͬͨ • ϞϥτϦΞϜظؒதɺ1೔20͔͚࣌ؒͯੵΈήʔΛ΍Γਚ͘͢ • YouTuberʹͳΔͨΊͷࣄલௐࠪʢYouTubeΛݟΔʣΛ։࢝ • Ո଒͔Βͷྫྷ΍΍͔ͳࢹઢʹ଱͑ΒΕΔ͸ͣ΋ͳ͘ɺ෕਌ͷᔗ݊ΛकΔͨΊ αʔϏεΛҰਓͰ࢝ΊΑ͏ͱܾҙ • ʰࢄʑJSॻ͍ͯͨΜ͔ͩΒɺֶशίετෆཁ΍ΖʱͱߴΛ͘͘Γ Node.jsͱReactͰαʔϏεΛ࡞Γ͸͡ΊΔ • ͔ͬ͠Γͱϑϥάճऩɻരࢮ͍ͭͰʹαʔϏεΛElixirͰॻ͖௚͢

Slide 5

Slide 5 text

ࠓ೔͸ݸਓͷײ૝ʹج͍ͮͨ࿩Λ͠·͢

Slide 6

Slide 6 text

TA B L E O F C O N T E N T S • ୈҰষɿΘͨ͠ͷNode.jsࣦഊஊʢ10minʣ • ୈೋষɿͳͥ࣍ͷݴޠʹElixirΛબΜͩͷ͔ʢ5minʣ • ୈࡾষɿElixirͷԿ͕Θͨ͠ͷ৺Λଧͬͨͷ͔ʢ15minʣ ※ ࿩͕ඈͼ·͘Δ͔Β஫ҙͯ͠Ͷʂ

Slide 7

Slide 7 text

Θ ͨ ͠ ͷ N o d e . j s ࣦ ഊ ஊ ୈ Ұ ষ ɾ ౖ Γ ͷ σ ε ϊʔ υ

Slide 8

Slide 8 text

Կ ͕ ى ͬ͜ ͨ ͷ ͔ ࡾ ߦ 1. ҰਓͰNode.js࢖ͬͯαʔϏε࡞ͬͯͨ 2. ϩʔϯν௚લʹ͍Ζ͍Ζมߋ͕ඞཁʹͳͬͨ 3. ؾ͕͍ͭͨΒมߋ࡞ۀΛ΄ͬͨΒ͔ͯ͠Elixirʹॻ͖׵͑࢝Ίͯͨ

Slide 9

Slide 9 text

ͳ ͥ N o d e . j s • ͔ͭͯPHPͱ͍͏ίϯϐϡʔλʔݴޠ͕ଘࡏ͍ͯͨ͠ • खܰͰ͍͍ݴޠͳΜ͚ͩͲɺ৭ʑ΍Βͤ͗ͯͨ͢ • ϑΝο!?͍ͬͯ͏஍ཕ͕ଟ͍ • Ͱ΋པΕΔख़࿅ϓϩάϥϚ΋पΓʹ୔ࢁ͍ͯɺͳΜͱ͔΍͍͚ͬͯͯͨ • ΋ͬͱָͰ͖Δ؀ڥʹߦ͖͍ͨͱߟ͑Δʢ2011೥͋ͨΓʣ • ख़࿅PHPϓϩάϥϚ͕࣍ʑ৽ੈքʹཱཱྀ͍ͬͯ͘ • ϑϩϯτΤϯυͷॏཁੑ͕ߴ·͖ͬͯͨͷͰɺͦͬͪʹूத͍ͨ͠

Slide 10

Slide 10 text

ָ͕͍ͨ͠ is ӬԕͷςʔϚ ͱΘ

Slide 11

Slide 11 text

Θ ͨ ͠ ʹ ͱ ͬͯ ͷ ָ ͱ ͸ • ҰਓͰαΫοͱॻ͚ͯɺαΫοͱಈ͔ͤΔͱָ • ͍ͭΰϛശߦ͖ʹͳΔ͔෼͔Βͳ͍͔Θ͍ͦ͏ͳίʔυΛॻ͘ͷ͕࢓ࣄ • খن໛։ൃ͕ϝΠϯʗνʔϜ։ൃ͸͋·Γߟ͑ͳ͍Ͱ͍͍ • গͳ͍खؒͰγεςϜશମͷ݈શੑΛอͯΔͱָ • Ͱ͖Δ͔͗Γॻ͔ͳ͍Ͱ͍͍ͱָ • CPANɺRubyGemsΈ͍ͨͳ೤͍ΤίγεςϜ • ϑϩϯτΤϯυͱͷιʔεڞ༗

Slide 12

Slide 12 text

N o d e . j s ΁ ͷ ظ ଴ • ͱʹ͔͘αΫοͱॻ͚ͦ͏ • άάͬͨίʔυΛͦͷ৔Ͱ࣮ߦʂ • V8଎ͦ͏ʗඇಉظϓϩάϥϛϯάָͦ͠͏ • രൃతʹ૿͑ΔnpmϞδϡʔϧͷ਺͔Βͯ͠੝Γ্ ͕ͬͯͦ͏ • ৽͍͠؀ڥ㱺๯ݥ৺Λ͙͘͢Δߥ໺ʂV8ʂ

Slide 13

Slide 13 text

࣮ ࡍ ͷ ͱ ͜ Ζ • ࣮ࡍαΫοͱॻ͚ͨ • ࣮ࡍύϑΥʔϚϯεྑ͔ͬͨ • ࣮ࡍૉఢͳnpmϞδϡʔϧ͕େྔʹੜ·Εͨ • V8ͩͬͨɻ V8ʂ

Slide 14

Slide 14 text

೥౰࣌ͷΘͨ͠

Slide 15

Slide 15 text

͔͠͠

Slide 16

Slide 16 text

4 ೥ ͘Β ͍ N o d e . j s ΍ ͬͯ ײ ͡ ͨ ͜ ͱ • JavaScriptͱ͍͏ݴޠʹىҼ͢Δ֤छॻ͖ํ໰୊͕ͭΒ͍ • ௕Β͘ଓ͍ͨCallback Hell໰୊ • ES6ʗES7 • ϕετϓϥΫςΟεతͳ΋ͷ͕ͣͬͱͳ͍ͷ͕ͭΒ͍ • RoRతͳʰͱΓ͋͑ͣ͜͏͠ͱ͚ʱͱڭ͑ͯ͘ΕΔଘࡏ • ҰݸϒϨΠΫεϧʔ͕ى͖ΔͱͦͷϑΥϩϫʔ͕ࢁఔग़ͯ͘Δ໰୊͕ͭΒ͍ • λεΫϥϯφʔ͚ͩͰ͍ͭ͘౉Γา͍ͨʁjake, grunt, brunch, gulp… • AltJS΋େྔʹ͋Δ͚ͲɺࠓޙͲ͏ͳΜͷʁ • ͜Ε͸ϑϩϯτΤϯυͰ΋ى͖ͯΔ

Slide 17

Slide 17 text

৭ ʑ ݴ ͍ ͨ ͍ ͚ Ͳ · ͱ Ί Δ ͱ ͜ Ε • ઈࢍਐԽதɻϕετϓϥΫςΟεແͯ͘౰ͨΓલ • ͦͯ͠Nodeboys͸BKSS։ൃ(*)ʹ๩͍͠ • ͦΜͳதɺES6͕தܧ͗ొ൘ʗES7͕ϒϧϖϯೖΓ • ·ͩ͠͹Β͘͸ΧΦε͕ଓ͖ͦ͏ • ·͞ʹߥ໺ɻָͳΜͯͳ͍ (*) ΅͘ͷɹ͔Μ͕͑ͨɹ͍͖͞ΐ͏ͷɹαϜγϯά

Slide 18

Slide 18 text

ߥ໺ͰͷαʔϏε࡞Γͱݴ͏ͷ͸͜Μͳײ͡

Slide 19

Slide 19 text

ͦ Μ ͳ ߥ ໺ Ͱ Ұ ਓ α ʔ Ϗ ε ࡞ ͬ ͨ • ։ൃ͢Δͱ͖ʹܾΊͨ͜ͱ • ES6Ͱॻ͘ • ඇಉظॲཧ͸co + yieldͰ • WAF͸koa • Promise-basedͳORM sequelizeΛ࠾༻ • ग़དྷΔݶΓϑϩϯτΤϯυͱιʔεΛڞ༗͢Δ • ϑϩϯτΤϯυ͸Ract (JSX)Ͱॻ͘

Slide 20

Slide 20 text

α Ϋ α Ϋ ࡞ Ε ͪ Ό ͏ N o d e . j s ͢ ͝ ͍ ͕ ɺ ͠ ͔ ͠ … • ϓϩτλΠϓ͸͙͢׬੒ɻ͕ɺ͍ͬͯ͡Δ͏ͪʹΦϨΦϨΞʔΩςΫνϟ ͕Ϋιͩͱؾ͕ͭ͘ • Koa MiddlewareͷnpmϞδϡʔϧΛ͋Ε͜Εม͑Δ • ΞʔΩςΫνϟʹखΛೖΕͯͨΒ݁ߏ࣌ؒܦͭ • ػೳΛੵΈ૿͢ˍΠϚΠνͩͬͨػೳΛ࡟Δ • ·ͨΞʔΩςΫνϟʹҧ࿨ײΛײ͡खΛೖΕΔ • ϦϦʔε൛͕ग़དྷ্͕Δ΋ͷͷେ͍ʹͭ·Βͳ͍ɻػೳΛ͋Ε͜Ε͍͡Δ • ·ͨΞʔʢry • ऴΘΒͳ͍

Slide 21

Slide 21 text

ͦ ͯ͠ ࢥ ͏ ࣗ෼ͷٕज़ྗͷ௿͕ͦ͞΋ͦ΋ݪҼ ͚ͩͲ͞ɺ ͜Ε؀ڥม͑ͯղܾ͢Δ໰୊΋݁ߏ͋ΔΜ͡Όʁ

Slide 22

Slide 22 text

ͦ ͯ͠ ࢥ ͏ • Ͳ͏͍͏αʔϏεͳΒ࢖ͬͯ໯͑Δ͔ʁͱݴ͏͜ͱ͹͔Γ ߟ͑ΔҰํɺίʔυͷߦ͘຤͸ߟ͍͑ͯͳ͔ͬͨ • ೴CPU࣌ؒ͸༗ݶϦιʔεɻϨʔϧʹ৐ΕΔͱ͜Ζ͸৐ͬͯઅ໿ • ҰݸҰݸnpmϞδϡʔϧΛධՁ͠૊ΈࠐΉαΠΫϧ͸ͭΒ͍ • ϛεΔͱϘσΟϒϩʔͷΑ͏ʹޮ͍ͯ͘Δ • ͲͷݴޠͰ΋ϓϩδΣΫτʹ͋ͬͨϥΠϒϥϦΛ୳͢ͷ͸େม • Ͱ΋ಛʹnpmͷ৔߹ɺಉҰ՝୊ʹରͯ͠ෳ਺ͷϥΠϒϥϦ͕ಉ࣌ʹ։ ൃதͩͬͨΓ͢ΔͷͰɺԿબ΂͹ྑ͍͔શવ෼͔Βͳ͍

Slide 23

Slide 23 text

ཧ ૝ ڷ Λ ୳ ͠ ʹ ཱྀ ཱ ͭ • Rails΍Ε͹Α͔ͬͨ͡ΌΜײ൒୺ͳ͍ • ߥ໺Ͱ΍ΜͪΌ͔ͨͬͨ͠ΜͩΑ…ڐͤ… • αʔόʔαΠυ͸΋ͬͱ΋ͬͱָ͍ͨ͠ • ͩͬͯϢʔβʔ͕௚઀৮ΕΔͷ͸ϑϩϯτΤϯυͩ΋Μ • V8৴ڼ͸ྫྷΊͯͳ͍͠ɺϑϩϯτΤϯυ͸શྗͰॻ͖ଓ͚·͢ • ͦͯ͠ɺཱཱྀͪΛܾҙ ϢʔτϐΞ σύʔνϟʔ

Slide 24

Slide 24 text

ิ ଍ • co + koa + sequelize͸ϑπʔʹྑ͔ͬͨ • generator, Promise, yieldͰඇಉظॲཧ͸όονάʔ • koa͸Middleware͕๲େʹ͋ΔͷͰɺͦͷลͷϑϧελοΫWAFΑΓߴػೳ • ͨͩ͠NodeboysͷBKSS։ൃ͕Ճ೤͗ͯ͢͠طʹΧΦεͬͯΔ • co+koaͰඇಉظॲཧதͷΤϥʔϋϯυϦϯά΋͠΍͘͢ͳ͖ͬͯͨ • Ͱ΋ಉ࣌ʹෳ਺ϦιʔεΛߋ৽͠ʹߦ͘ࡍͷτϥϯβΫγϣϯॲཧͱ͔ɺ ΍ͬͺͲ͏ͯ͠΋໘౗͍͘͞ॻ͖ํʹͳͬͪΌ͏ • ͜ͷลͰ࢛ۤീۤͨ͠ܦݧ͸ͦͷ͏ͪ·ͱΊ͍ͨ

Slide 25

Slide 25 text

ͳ ͥ ࣍ ͷ ݴ ޠ ʹ E L I X I R Λ બ Μ ͩ ͷ ͔ ୈ ೋ ষ ɾ ߥ ໺ ͔ Β ͷ ཱྀ ཱ ͪ ฤ

Slide 26

Slide 26 text

Θ ͨ ͠ ʹ ͱ ͬͯ ͷ ཧ ૝ ڷ ͱ ͸ 1. ֩ͱͳΔ෦෼͸ރΕٕͨज़͕࢖ΘΕ͍ͯΔ 2. ಡΈ΍͍͢ίʔυΛ໎ΘͣαΫοͱॻ͚Δ 3. ҆৺ͯ͠৐͔ͬΕΔϕετϓϥΫςΟε͕͋Δ 4. ଎ͯ͘ඇಉظత͕ͩɺͦΕΒΛΘ͟Θ͟ҙࣝͤ͞ͳ͍ 5. มߋʹڧ͘ɺςετ͠΍͍͢ 6. vimͰॻ͚Δ ϢʔτϐΞ

Slide 27

Slide 27 text

ཧ ૝ ڷ ީ ิ • Scala • Pros • JVMϕʔεͰJavaࢿ࢈࢖͑Δ͠଎ͦ͏ • ੩తܕ෇͚+ܕਪ࿦Ͱมߋʹڧͦ͏ • Play2 • Cons • ίϯύΠϧ஗͍Έ͍ͨͳҙݟ͕ଟ͘ɺαΫοͱॻ͘ྨͷݴޠ͡Όͳ͍Ά͍ • vim͸͓ݺͼͰͳ͍ײ • কعͷίϚͷಈ͖͢Β֮͑ΒΕͳ͍ࢲ͕IDEΛ࢖͍͜ͳͤΔؾ͕͠ͳ͍

Slide 28

Slide 28 text

ཧ ૝ ڷ ީ ิ • Go • Pros • ΊͪΌ଎ͰฒྻԽ͕ಘҙ • ΘΓͱαΫοͱॻ͚ΔಡΈ΍͍͢ίʔυ • ͓͏ͳΜͰ΋೚ͤͱ͚Αɹײ • Cons • ॏ͍ͨॲཧΛීஈ͔Β୔ࢁॻ͘Α͏ͳਓʹ͸޲͍ͯͦ͏͚ͩͲɺࢲ͸ͦ͜·Ͱٻ Ίͯͳ͍ • golangͰWebΞϓϦέʔγϣϯ࡞Δ࣌ͷϕετϓϥΫςΟε͕݁ہԿͳͷ͔࠷ ޙ·ͰΘ͔Βͳ͔ͬͨʢ·ͩͳ͍Ά͍ʣ

Slide 29

Slide 29 text

ཧ ૝ ڷ ީ ิ • Elixir • Pros • Erlang VM্Ͱಈ࡞ɻ଎͍͠ɺErlangͷࢿ࢈΋ੜ͖Δ • ڧྗͳύλʔϯϚον • Phoenix Framework • γϯλοΫετϨϯσΟ • σʔλͷෆมੑ ✕ ࢀরಁաੑ ✕ υΩϡϝϯςʔγϣϯػೳͷॆ࣮ → มߋʹڧ͍ • ϝλϓϩάϥϛϯά • Cons • ৘ใ͕গͳ͗͢ • ͍͏΄ͲRuby෩ຯͰ͸ͳ͍

Slide 30

Slide 30 text

݁ ࿦ • Ͳͷݴޠ΋ັྗత • Ͱ΋࠷ऴతʹ͸… • ʢScalaͷํΛݟͳ͕ΒʣΧοϓϥʔϝϯͷ3෼͢Β଴ͯͳ͍ͷʹɺίϯύΠϧ࣌ؒ௕ ͍ͷ͸ͳ͋… • ʢGoͷํΛݟͳ͕ΒʣΦϨʹ͸ϑΥʔϛϡϥʔΧʔͰߥ઒αΠΫϦϯάϩʔυ૸Δ Α͏ͳ΋ΜͩΖ͜Ε… • ͡Ό͋·ͣ͸Elixir΍ͬͯΈΔ͔͋ • ͜͜2ϲ݄ElixirΛॻ͍ͨ → ͍͍ • ཧ૝ڷʢԾʣ͔΋

Slide 31

Slide 31 text

E L I X I R ͷ Կ ͕ Θ ͨ ͠ ͷ ৺ Λ ଧ ͬ ͨ ͷ ͔ ୈ ࡾ ষ ɿ ཧ ૝ ڷ ʢ Ծ ʣ Ͱ ͷ ί ʔ σΟ ϯ ά ϥ Π ϑ

Slide 32

Slide 32 text

E l i x i r ͷ ඒ ఺ • ؔ਺ܕʗσʔλͷෆมੑʗࢀরಁաੑ • ύλʔϯϚονϯά • ߴ͍ฒྻॲཧೳྗ • ߴ͍৴པੑʗ଱ো֐ੑͷߴ͍ΞʔΩςΫνϟ Erlangͷඒ఺

Slide 33

Slide 33 text

E l i x i r ͷ ඒ ఺ • Erlang͍͢͝ • Կे೥΋ి࿩໢Λࢧ͑ͯΔ • WhatsApp͸1αʔόʔͰ2ඦສͷಉ࣌઀ଓΛॲཧ • Erlangʹଟݴޠ͔ΒͷελσΟΛऔΓೖΕɺൃలͤͨ͞ͷ͕Elixirɻ͍͢͝ • Ruby෩ຯͷτϨϯσΟͳγϯλοΫε • ϚΫϩʹΑΔϝλϓϩάϥϛϯά • ϓϩτίϧʹΑΔϙϦϞʔϑΟζϜ ͳͲ • ΤίγεςϜ΋͍͢͝ • RoRΠϯεύΠΞͳWAFɺPhoenix Framework

Slide 34

Slide 34 text

͍͢͝΋ͷͷ্ʹ ͍͢͝΋ͷ࡞ͬͯΔ ͔ͩΒ ߥ໺ग़਎31ࡀͷཧղ ͍͢͝

Slide 35

Slide 35 text

E l i x i r ͷ ͢ ͝ ͞ Λ Ұ ෦ ঺ հ • ύλʔϯϚον • ଱ো֐ੑͷߴ͍ΞʔΩςΫνϟ • ฒྻॲཧ • Phoenix Framework

Slide 36

Slide 36 text

ύλ ʔϯ Ϛ ο ν ͬͯ ͳ ʹ Α ʁ • Elixirͷ=͸Ϛονԋࢉࢠ • ύλʔϯϚονͱ͸ɺࠨลͰهड़ͨ͠ύλʔϯͱӈลͷม਺ͷத ਎͕߹க͢Δ͔ΛධՁɻ߹க͢Δ৔߹ࠨลͰࢦఆͨ͠ม਺ʹ֨ೲ ͯ͘͠ΕΔ • ্ͷྫͷ৔߹ɺmapʹʢmap͸%{}Ͱදݱ͢Δʣɺstatusͱbody ͷ2ͭͷΩʔ͕͋Δ͔ධՁ͠ɺ஋ΛͦΕͧΕmatched_statusͱ matched_bodyʹ֨ೲ͍ͯ͠Δ %{status: matched_status, body: matched_body} = %{status: 200, body: “V8!”}

Slide 37

Slide 37 text

ύλ ʔϯ Ϛ ο ν ͬͯ ͳ ʹ Α ʁ • ؔ਺એݴͰ΋࢖͑ΔͷͰɺif-elseͰ৚݅෼ذͤͯ͞ݺͼग़ؔ͢਺Λಛఆ͢Δඞཁ͕ͳ͍ • ͲͷҾ਺ͷύλʔϯͳΒɺͲͷؔ਺͕ݺ͹ΕΔ͔Ұ໨ྎવ • ؔ਺໊ͱҾ਺ͷύλʔϯΛಡΊ͹ɺΠνΠνத਎Λಡ·ͳͯ͘΋ཧղͰ͖Δ defmodule Sample.PatternMatchSample do def get(url) do process_response http_get(url) end defp process_response(%{status_code: 301, headers: headers}) do redirect headers end defp process_response(%{status_code: 302, headers: headers}) do redirect headers end defp process_response(%{status_code: 200, body: body}) do IO.puts body end defp redirect(headers) do headers |> Dict.get(:Location) |> get end end Ref. Elixir ͷύλʔϯϚονΛ߈ུ͠Α͏

Slide 38

Slide 38 text

ύλ ʔϯ Ϛ ο ν ͬͯ ͳ ʹ Α ʁ • A. Ϋϥογϡ͠·͢ • Q. ͖ͬ͞ͷྫͰ404ͱ͔ฦ͖ͬͯͨΒͲ͏ͳΜͷʁ

Slide 39

Slide 39 text

E l i x i r ͷ ϓ ϩ η ε Ξʔ Ω ς Ϋ ν ϟ • Elixir/ErlangͰ͸૝ఆ֎ͷೖྗ஋͕དྷͨ࣌ɺͲ͏ʹ͔Τϥʔϋϯ υϦϯάͯ͠ϓϩηεΛਖ਼ৗʹ͍࣋ͬͯ͘ͷͰͳ͘ɺͦͷ··Ϋ ϥογϡͤͯ͞͠·͏ͷ͕͓࡞๏ • Ϋϥογϡͨ͠ϓϩηε͸ผͷϓϩηεͰ؂ࢹ͓͖ͯ͠ɺΤϥʔ ϋϯυϦϯά͸؂ࢹϓϩηεଆͰߦ͏ • ͜͏͢Δ͜ͱͰɺϩδοΫͱΤϥʔϋϯυϦϯά͕෼཭Ͱ͖ɺίʔ υͷอकੑ޲্΍ɺ଱ো֐ੑͷ޲্ͳͲ༷ʑͳԸܙ͕ಘΒΕΔ • ࢖͍ࣺͯΒΕΔ͘Β͍ʹErlang VMͷϓϩηεੜ੒ίετ͸͍҆ Ref. [຋༁] ElixirͷϓϩηεΞʔΩςΫνϟ ·ͨ͸ࢲ͸೗Կʹͯ͠৺഑͢ΔͷΛࢭΊͯΫϥογϡΛѪ͢ΔΑ͏ʹͳ͔ͬͨ

Slide 40

Slide 40 text

– N A O YA I T O ΫΠζ൪૊Ͱ ○ ͔ × ͔౴͑ΛબΜͰนʹಥͬࠐΜͩઌʹɺਖ਼ղͳΒΫο γϣϯ͕ɺෆਖ਼ղͳΒటਫ͕͋Δͱ͍͏اը͕͋Δ͕ɺͦΕʹᄻ͑ΔͳΒ టਫͩΖ͏͕ԿͩΖ͏͕᪳᪯ͤͣμΠϒ͠Ζ! ͱ͍͏ͷ͕ Elixir ྲྀ Ref. Elixir ͷϓϩηεΛ࢖ͬͯϑΣΠϧηʔϑͳΞϓϦέʔγϣϯΛ࡞Δ ᴷ ࣦഊ͸ڪΕͣటਫʹμΠϒ

Slide 41

Slide 41 text

E l i x i r ͷ ϓ ϩ η ε Ξʔ Ω ς Ϋ ν ϟ • લड़ͷΞϓϩʔνͰฒྻॲཧ΋͘͢͝γϯϓϧʹɺ҆શͳ΍ ΓํͰॻ͚ͪΌ͏ • ΍Γ͍ͨॲཧΛॻ͖ɺͦͷϓϩηεΛ؂ࢹ͢ΔSupervisorΛ࣮૷ • Supervisor͔ΒTask.asyncͱTask.awaitΛ࢖͍ɺλεΫͷඇಉظݺͼग़͠ Λ͢Δ • ͋ͱ͸ඞཁʹԠͨ͡ฒྻ౓ͰλεΫΛฒྻ࣮ߦ͢Ε͹OK • async/awaitͰ։࢝ͨ͠λεΫ͸ผϓϩηεͰ࣮ߦ͞ΕΔͷͰɺҰ෦ͷλ εΫ͕Ϋϥογϡͯ͠΋શମʹӨڹͤͣ͞ʹɺSupervisorͰΤϥʔϋϯ υϦϯάͰ͖Δ

Slide 42

Slide 42 text

R o R ͷ ఋ • ʰεϐʔυͱϝϯςφϯεੑͰଥڠ͠ͳ͍ɺߴ͍ੜ࢈ੑͷWAFʱ • ࣮ࡍ଎͍ɻϚΠΫϩඵΦʔμʔͰԠ౴͕ؼͬͯ͘Δ • ࣮ࡍߴ͍ϝϯςφϯεੑɻRoRͷϕετϓϥΫςΟεΛ౿ऻ • ࣮ࡍߴ͍ੜ࢈ੑɻඞཁͳ΋ͷ͸શ෦ἧͬͯΔ͠ɺ͙͢ʹ։ൃʹೖΕΔΑ͏ஸೡͳ ϑΥϩʔͱπʔϧ܈͕͋Δ • ָ͍͜͠ͱʹ͚ͩूதͰ͖ΔWAF • WebΞϓϦέʔγϣϯ։ൃͷ90%͸طࢹײͷ͋Δୀ۶ͳίʔυΛॻ͘͜ͱ • Phoenix͸ͦͷ90%ͷ΄ͱΜͲΛ΍ͬͯ͘ΕΔ • ϓϩάϥϚ͸ָ͍͠10%ʹଧͪࠐΊΔʂ

Slide 43

Slide 43 text

΄ ͔ ʹ ΋ ͍ Ζ ͍ Ζ ͋ Δ ͧ E l i x i r • ঺հ͖͠Εͳ͍ັྗͷ਺ʑ • ؔ਺ܕϓϩάϥϛϯάʗσʔλͷෆมੑʗࢀরಁաੑ • ϚΫϩʹΑΔϝλϓϩάϥϛϯά • ϑΝʔετΫϥευΩϡϝϯτʗDoctests • ͱΓ͋͑ͣͪΐͬͱ΍ͬͯΈΑ͏ʂͳͬʂʁ • http://elixir-lang.org/getting-started/introduction.html

Slide 44

Slide 44 text

࣮ ࡍ ࢖ ͬͯΈ ͯ • Elixirʹ຋༁͚ͨͩ͠ͱ͸͍͑ɺ2ϲ݄͔͔ͬͯ࡞ͬͨαʔϏεΛ2िؒऑͰϦϥΠτग़དྷ ͯ͛͑͢ͱࢥͬͨ • ॻָ͍͍ͯͯ͠ɻͱʹָ͔͍͘͠ • ύλʔϯϚον͕ແ͍ͱແཧͳମʹͳͬͯ͠·ͬͨ • Phoenix͕ތΔૉ੖Β͍͠ੜ࢈ੑʗมߋ΁ͷڧ͞ • ֶशίετ͸ɺʰ·͋·͋͋Δʱ • RoRܦݧऀͰ΋ମײ৭ʑҧ͏Μ͡Όͳ͍͔ͳʁ • Ͳ͔ͬͪͱ͍͏ͱErlangʹ͍ͭͯͷ͓ษڧ͕࣌ؒ୔ࢁඞཁ • ৭ʑ஍ཕ΋౿Μ͚ͩͲͦΕ͸·ͨࠓ౓ͳʂ • ։ൃதͷαʔϏε΋ͦͷࠒʹ͸…

Slide 45

Slide 45 text

D I V E I N TO E L I X I R !