Elixir ご紹介
by
Naoya Ito
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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ͷ#VOEMFSSVCZHFNT – /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