Slide 1

Slide 1 text

&MJYJS͝঺հ /BPZB*UP ,BJ[FO1MBUGPSN *OD  4IJCVZBFY

Slide 2

Slide 2 text

͜Μʹͪ͸ɺ࢒೦ͳ ೔ຊͷ8FCٕज़ऀͰ͢

Slide 3

Slide 3 text

ΞδΣϯμ •  ࿩͢͜ͱ – &MJYJSͷͬ͘͟Γಛ௃ – ݴޠతͳػೳ – 051पΓͷ֓ཁ •  ࿩͞ͳ͍͜ͱ – ࡉ͔͍γϯλοΫεŋŋŋࢀߟࢿྉΛͲ͏ͧ

Slide 4

Slide 4 text

&MJYJSɺͬ͘͟Γಛ௃

Slide 5

Slide 5 text

&MJYJS •  &SMBOH7.ͷ্Ͱಈ͘ •  ಈతܕ෇͚ͳؔ਺ܕݴޠ •  ͜ͳΕͨύοέʔδ؅ཧγεςϜ.JY •  ܰྔϓϩηεɺΞΫλʔʹΑΔฒߦॲཧ •  051

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

3VCZ  •  Ұݟ͢Δͱ3VCZͬΆ͍ •  ࣮ࡍͦΕ΄Ͳ3VCZͬΆ͘ͳ͍ •  Ή͠Ζ&SMBOH051 – γϯλοΫε͕ೃછΈ΍͍͢&SMBOH051 ͱଊ͑ͨ΄͏͕ྑ͍

Slide 8

Slide 8 text

ͳͥ&MJYJS  •  ϥϯλΠϜ͕ڧྗ – ΞΫλʔϞσϧʹΑΔฒߦॲཧج൫Λݴޠ  ϥϯλΠϜͰඪ४౥ࡌ ͱ͍͏Θ͚Ͱɺॏཁͳͷ͸ 3VCZΈ͍ͨdͰ͸ͳ͘ɺ &SMBOH051ͷ্ʹ৐ͬͯ Δͬͯͱ͜

Slide 9

Slide 9 text

ؔ਺ܕݴޠͱͯ͠ͷ&MJYJS

Slide 10

Slide 10 text

ಈతܕ෇͚ͷؔ਺ܕݴޠ

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

ؔ਺ܕݴޠͱͯ͠ͷ&MJYJS •  ୈҰڃؔ਺ɺߴ֊ؔ਺ •  ύλʔϯϚον •  ෆมͳσʔλܕ •  ࠶ؼ ຤ඌݺͼग़͠࠷దԽ͋Γ 

Slide 13

Slide 13 text

ͳ͍΋ͷ •  Ͱ͸ ͳ͍ – ੩తܕ෇͚ – ७ਮؔ਺ܕ ෭࡞༻͋Γ  – ෦෼ద༻ΧϦʔԽ – 0QUJPOܕ .BZCF  •  ͋ΔΑ – Ϧετ಺แදه – ஗ԆධՁɺແݶϦετ ˞ݴޠશମͰ͸ͳ͍ 

Slide 14

Slide 14 text

ύλʔϯϚον •  &MJYJSͷจ๏ͷجૅʹͳͬͯΔػೳ – ؔ਺ܕݴޠͰ͸݁ߏΈΔŋŋŋ)BTLFMMͱ͔ – JGจͳͲΛ࢖Θͳ͍એݴతͳهड़ʹߩݙ •  ஋ͷύλʔϯΛهड़͠ɺ஋ͱর߹͢Δ – ύλʔϯͱ஋͕Ϛονͨ͠ΒɺԿ͕͔͕͠ߦ ΘΕΔ – ͸࣮͸ύλʔϯϚονԋࢉࢠ

Slide 15

Slide 15 text

ύλʔϯϚον h"p://www.slideshare.net/Joe_noh/elixir-­‐01

Slide 16

Slide 16 text

ύλʔϯϚον εςʔλείʔυͷ ͱ͖͚ͩؔ਺͕ݺ͹ΕΔ ஋͕͜ͷߏ଄ΛؚΉͱ͖͚ͩ ݺ͹ΕΔɻ·ͨɺߏ଄಺ͷ஋ ͕XFBUIFSม਺Λଋറ

Slide 17

Slide 17 text

ύλʔϯϚον ࠶ؼ Ϧετ͕ۭͷͱ͖ ఀࢭ৚݅  Ϧετͷઌ಄ཁૉ͕@IFBE Λଋറɺ࢒Γ͕UBJMΛଋറ

Slide 18

Slide 18 text

ύλʔϯϚονͷϢʔεέʔε •  ม਺ଋറ •  σʔλߏ଄ͷ෼ղ •  Ϧετॲཧ X࠶ؼ  •  DBTFจ •  ύλʔϯຖͷؔ਺ఆٛ – ஋ʹΑΔؔ਺ͷબ୒

Slide 19

Slide 19 text

cŋŋŋύΠϓϥΠϯԋࢉࢠ ؔ਺ͷ໭Γ஋Λɺ࣍ͷୈҰҾ਺ʹ౉͢ɻ 'ΠϯεύΠΞΒ͍͠  ؔ਺Λܨ͛ͯॻ͚ͯ ؾ͍͍࣋ͪ

Slide 20

Slide 20 text

খ͞ͳؔ਺ΛύΠϓϥΠϯ Ͱܨ͍͛ͯ͘ͷ͕&MJYJSྲྀ ͏ʔΉɺ.BZCFཉ͍͠ŋŋŋ 

Slide 21

Slide 21 text

ෆมͳσʔλܕ •  σʔλܕ͸ෆม – 4USJOH -JTU 5VQMF .BQ )BTI%JDU  )BTI4FU •  ཁ͢Δʹഁյతૢ࡞͕ෆՄೳ͚ͬͯͩ •  dict2  =  Dict.put(dict,  :foo,  3)   – dict  ͸ෆมɺߋ৽͞Εͨ  dict2

Slide 22

Slide 22 text

GPS XIJMF͕ͳ͍ •  ࠶ؼΛ࢖͏͔ ຤ඌݺͼग़͠࠷దԽ  •  ͞΋ͳ͘͹ϧʔΫɺ&OVNΛ࢖͑ iex>  [1,2,3]  |>  Enum.each  fn(x)  -­‐>  IO.puts(x)  end   1   2   3   :ok     iex>  [1,2,3]  |>  Enum.reduce(0,  fn(x,  acc)  -­‐>  x  +  acc  end)   6

Slide 23

Slide 23 text

Ϧετ಺แදه •  )BTLFMM౳Ͱ͓ͳ͡Έͷ – [x  |  x  <-­‐  xs,  x  <  p]     •  &MJYJSͰ͸ – for  x  <-­‐  xs,  x  <  p,  do:  x   ਖ਼௚͜Εʹؔͯ͠͸ &SMBOHͦͷ··Ͱྑ͔ͬ ͨͷͰ͸ŋŋŋ ݸਓͷײ૝ 

Slide 24

Slide 24 text

ϐλΰϥε਺Λ୳͢ " #$ Λຬͨ͢" # $ͷ੔਺ͷ ૊Λݟ͚ͭΔ

Slide 25

Slide 25 text

4USFBN •  ߹੒ՄೳͰ஗ԆධՁͳ&OVNFSBCMFT – &OVN͸(SFFEZ – 4USFBN͸-B[Z •  ແݶϦετ΍஗ԆධՁ͕ཉ͍͠ͱ͖͸͜ Ε

Slide 26

Slide 26 text

3BOHFΛ4USFBNʹม׵ɺ ύΠϓϥΠϯԋࢉࢠͰ pMUFSͱNBQΛ߹੒ UBLF  ͨ͠ͱ͜ΖͰॳΊͯ ධՁˠ݅ͷΈܭࢉ ஗ԆධՁ 

Slide 27

Slide 27 text

ϑΟϘφονετϦʔϜ 4USFBNVOGPME͸ΞΩϡϜ Ϩʔλʹܭࢉ݁ՌΛੵΜͰ࠶ ؼతʹؔ਺Λద༻ &OVNUBLF  ͨ͠ͱ͜Ζ ͰॳΊͯܭࢉ

Slide 28

Slide 28 text

ϙϦϞʔϑΟζϜ •  ϙϦϞʔϑΟζϜͷ࣮ݱ – +BWBŋŋŋΠϯλϑΣʔεͳͲͷ্ҐͷܕͰ – 3VCZŋŋŋμοΫλϐϯάͰ – )BTLFMMŋŋŋଟ૬ܕͰ – &MJYJSŋŋŋϓϩτίϧͰ

Slide 29

Slide 29 text

ϓϩτίϧ ҟͳΔσʔλܕʹಉ໊͡લ ͷؔ਺Λద༻ɻܕʹԠͯ͡ ৼΔ෣͍͕มΘΔ

Slide 30

Slide 30 text

ϓϩτίϧͷྑ͍ར༻ྫ h"p://blog.drewolson.org/building-­‐an-­‐elixir-­‐web-­‐app/

Slide 31

Slide 31 text

&MJYJSΒ͍͠ίʔυ •  ύλʔϯϚονΛੵۃతʹ࢖͏ •  ෭࡞༻͸ՄೳͳΒආ͚Δ෼཭ •  &OVN౳ͷؔ਺Λ૊Έ߹Θͤͯએݴతʹ ॻ͘ •  ύΠϓϥΠϯԋࢉࢠ|>  ࢖͍୯Ұͷ໾ׂ ͷখ͞ͳؔ਺Λܨ͛Δ  

Slide 32

Slide 32 text

&SMBOH051ͱ&MJYJS

Slide 33

Slide 33 text

&SMBOH7.ͷ্Ͱಈ͘ BEAM  (Erlang  VM) OTP Elixir

Slide 34

Slide 34 text

ܰྔϓϩηε •  &SMBOH7.಺ͷ࣮ߦίϯςΩετͷ୯Ґ – 04ͷϓϩηεͰ͸ͳ͍ •  ϓϩηεϫʔυఔ౓ɻ௒ܰྔ – ϊʔυ಺Ͱ਺ඦʙ਺ઍϓϩηεͱ͔ฏؾͰ ࢖͍·͘Δ –   ϓϩηεͰʙͱ͔ͦ͏͍͏࿩΋ฉ ͘

Slide 35

Slide 35 text

ܰྔϓϩηεͱฒߦ •  ܰྔϓϩηε͸7.ͰεέδϡʔϦϯά ͞Ε࣮ͯߦ͞ΕΔ •  7.͸εϨουϓʔϧ ͔֬ Ͱ࣮૷͞Ε ͍ͯΔ – ܰྔϓϩηεͰͷฒߦॲཧ͸ϚϧνίΞͰΛ ࢖͑Δ

Slide 36

Slide 36 text

ΞΫλʔϞσϧ •  ϓϩηεؒ௨৴͸ϝοηʔδύογϯά – ϓϩηεͷதʹʮϝʔϧϘοΫεʯ •  ͦ͜ʹϝοηʔδΛૹΔ TFOE  •  ϝοηʔδʹ͸೚ҙͷ஋Λఴ෇Մ – ϓϩηε͸ͦΕΛड৴଴ͪ SFDFJWF  – ஋͸ඞͣίϐʔ͞ΕΔ ڞ༗͞Εͳ͍  •  σʔλΛڞ༗͠ͳ͍㱺ϩοΫ͕͍Βͳ͍

Slide 37

Slide 37 text

ΞΫλʔϞσϧ

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

051 •  ϓϩηεपΓͷඪ४ϥΠϒϥϦϑϨʔϜ ϫʔΫ܈ •  &SMBOHͷ࠷େͷࢿ࢈ – ΞΫλʔϞσϧ &SMBOH051͸ͳͲଞݴ ޠ΁େ͖ͳӨڹΛ༩͍͑ͯΔ •  ྫ4DBMBͷ"LLB

Slide 40

Slide 40 text

051ϏϔΠϏΞ (FO4FSWFS  ܰྔϓϩηεʹύλʔϯ ϏϔΠϏΞ ʹ৐͔ͬΔ ͚ͩͰαʔόΛ࡞ΕΔɻ ཁ͸ϑϨʔϜϫʔΫ 

Slide 41

Slide 41 text

BTZODBXBJUͷཪͰ͸Ξ Ϋλʔ͕ॲཧΛฒྻԽ͢ Δ 051ϏϔΠϏΞ 5BTL 

Slide 42

Slide 42 text

4VQFSWJTPS Supervisor use   GenServer   ؂ࢹ ʮಥવͷࢮʂʯ ϓϩηεࢮΜͩ͠ɺઓུ ʹ߹Θͤͯ࠶ىಈ͠ͱ͘ Θ crash

Slide 43

Slide 43 text

-FUJUDSBTI •  ࣦഊʹඋ͑ͳ͍ɻྫ֎Λั·͑ͳ͍ •  4VQFSWJTPSͰ؂ࢹ͓͍ͯͯ͠ɺͦͷ· ·ى͜͢ͳΓύϥϝʔλม͑ͯϦτϥΠ͞ ͤΔͳΓŋŋŋ

Slide 44

Slide 44 text

4VQFSWJTJPO5SFF h"p://qiita.com/naoya@github/items/ad18b49e9ed56a72cab6

Slide 45

Slide 45 text

ޠΓ͔͕ͨͬͨଟ෼͕࣌ؒͳ͍ʂ •  ܰྔϓϩηε͸γεςϜͷ৭ΜͳσβΠϯ ͱ૬৐ޮՌΛಇ͔͍ͤͯΔΑ – ύλʔϯϚονͰએݴతʹؔ਺Λબ୒͢Δ͜ ͱͱ-FUJUDSBTI͸૬ੑ͕ྑ͍Α – ϓϩηεͷΞυϨε͸ಁաੑ͕͋ͬͯɺଞͷ ϊʔυ΁ͷϝοηʔδύογϯά΋ҰॹͩΑ ˠ؆୯ʹεέʔϧ͢ΔΑ – ܰྔϓϩηε୯ҐͰ($͢Δ͔ΒϝϞϦ͍Β ͳ͘ͳͬͨΒϓϩηε͝ͱࣺͯΕ͹ྑ͍Α

Slide 46

Slide 46 text

3FBDUJWF 3FBDUJWF.BOJGFTUP ϦΞΫςΟϒએݴ  h"p://www.reacUvemanifesto.org/ja

Slide 47

Slide 47 text

ΞΫλʔʹΑΔ ϝοηʔδύογϯά

Slide 48

Slide 48 text

4VQFSWJTJPO5SFF -FUJUDSBTI

Slide 49

Slide 49 text

ܰྔϓϩηεͷ ΞυϨεಁաੑ

Slide 50

Slide 50 text

&SMBOHͱͷ૬ޓޓ׵ੑ •  &SMBOHͱ&MJYJS͸૬ޓޓ׵ – &SMBOHͷϥΠϒϥϦΛ&MJYJSͰ࢖͑Δ – &MJYJSͷΛ&SMBOHͰ΋࢖͑Δ

Slide 51

Slide 51 text

΄͔

Slide 52

Slide 52 text

.JY )FY •  Ϗϧυπʔϧύοέʔδ؅ཧ – 3VCZͷ#VOEMFS SVCZHFNT – /PEFKTͷOQN

Slide 53

Slide 53 text

IDDBXFTPNFFMJYJS •  ϥΠϒϥϦͷϦϯΫू

Slide 54

Slide 54 text

%JBMZ[FS ιʔεʹܕ৘ใΛΞϊςʔ γϣϯ͠ͱ͘ͱ ੩తܕνΣοΫ͸Ͱ͖Δ

Slide 55

Slide 55 text

ϚΫϩ

Slide 56

Slide 56 text

&MJYJSೖ໳ιʔε ೔ຊޠ  •  8FC %#13&44WPM –  IUUQHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM  •  +PF@OPI͞ΜͷεϥΠυू –  IUUQXXXTMJEFTIBSFOFU+PF@OPIQSFTFOUBUJPOT •  (FUUJOH4UBSUFEͷ຋༁ –  IUUQFMJYJSKBTFOBOFUXPSLTHFUUJOH@TUBSUFEIUNM •  2JJUBr&MJYJS –  IUUQTRJJUBDPNUBHTFMJYJS

Slide 57

Slide 57 text

&MJYJSຊ͓͢͢Ί

Slide 58

Slide 58 text

·ͱΊ •  &MJYJS͸&SMBOH051ͱζο༑ •  ಈతܕ෇͚ͷؔ਺ܕݴޠ – ͱɺݴͬͯ΋ා͘ͳ͍ – ύλʔϯϚονɺύΠϓϥΠϯԋࢉࢠɺ &OVN4USFBN •  051ͰΞΫλʔͳฒߦॲཧ •  -FUJUDSBTI