yujikawa
December 22, 2017
900

# PythonライブラリをElixirで開発してみた

PythonのnumpyをElixirで開発を行いました。

## yujikawa

December 22, 2017

## Transcript

1. &MJYJSͰ։ൃͯ͠Έͨ
1ZUIPOϥΠϒϥϦΛ
GVLVPLBFY
Ώ͔͡Θ!ZVKJLBXB@QZ

2. ࣗݾ঺հ
w ໊લ
w ઒্༞࢘ Ώ͔͡Θ

w ॴଐ
w ΧϥϏφςΫϊϩδʔ
w ৬छ
w όοΫΤϯυΤϯδχΞ
w 5XJUUFS
w !ZVKJLBXB@QZ
w ීஈͷ͓࢓ࣄ
w 1ZUIPOΛ࢖ͬͨγεςϜ։ൃ
w ͦͷ͏ͪ&MJYJSͷγεςϜ։ൃ΍ΔΑɾɾʁ
w ϓϥΠϕʔτ
w &MJYJSษڧதʢ̎Χ݄͙Β͍ʁʣ
w 1Z'VLVPLBͷ؅ཧਓ΍͍ͬͯ·͢

3. ͳͥϥΠϒϥϦ։ൃʁ
w ϓϩάϥϛϯά&MJYJSΛڭՊॻʹຖ೔ίπίπษڧ
w ڭՊॻͷ಺༰Λͣͬͱ΍͍ͬͯͯ๞͖͖ͯͨɻʢେࣄ͚ͩͲʣ
w Կ͔࡞Δ͜ͱͰ৭ʑௐ΂ΔͷͰɺษڧʹͳΔͱࢥͬͨɻ
w Կ͔࡞Δ͜ͱ͸Ϟνϕʔγϣϯ্͕͕Δɻ
w 8FCΞϓϦΑΓखܰͳ੒Ռ෺ʹ͔ͨͬͨ͠ɻ

4. ԿΛ࡞ͬͨͷ͔ʁ
w 1ZUIPOͷ/VNQZΛ&MJYJSͰ࣮૷ͯ͠Έ·ͨ͠ɻ
w /VNQZ
w ߦྻܭࢉͳͲΛߦ͑ΔϥΠϒϥϦʔ

5. ͦͷ໊΋ʮ/VNFYZʯ
w ಡΈํ͸ʮφϝΫγʔʯͰ͢

6. ͲΜͳײ͔͡ʁ
ϕΫτϧΛ࡞Δ
&MJYJS
iex> x = Numexy.new([1,2,3])
%Array{array: [1, 2, 3], shape: {3, nil}}
1ZUIPO
In [1]: numpy.array([1,2,3])

7. ͲΜͳײ͔͡ʁ
ϕΫτϧͷ಺ੵ
&MJYJS
iex> x = Numexy.new([1,2,3])
%Array{array: [1, 2, 3], shape: {3, nil}}
iex> y = Numexy.new([1,2,3])
%Array{array: [1, 2, 3], shape: {3, nil}}
iex> Numexy.dot(x, y)
14
1ZUIPO
In[1]: numpy.dot(x, y)

8. ͲΜͳײ͔͡ʁ
࿦ཧճ࿏ʢ903Λ࡞Δʣ
ANDճ࿏
def lgAND(x1,x2) do
x = Numexy.new([x1, x2])
w = Numexy.new([0.5, 0.5])
b = -0.7
Numexy.mul(x, w) |> Numexy.sum |> Kernel.+(b) |> output
end
NANDճ࿏
def lgNAND(x1,x2) do
x = Numexy.new([x1, x2])
w = Numexy.new([-0.5, -0.5])
b = 0.7
Numexy.mul(x, w) |> Numexy.sum |> Kernel.+(b) |> output
end
ORճ࿏
def lgOR(x1,x2) do
x = Numexy.new([x1, x2])
w = Numexy.new([0.5, 0.5])
b = -0.2
Numexy.mul(x, w) |> Numexy.sum |> Kernel.+(b) |> output
end

9. ͲΜͳײ͔͡ʁ
࿦ཧճ࿏ʢ903Λ࡞Δʣ
iex> lgXOR(0,0)
0
iex> lgXOR(1,0)
1
iex> lgXOR(0,1)
1
iex> lgXOR(1,1)
0
࣮ߦ݁Ռ
XORճ࿏
def lgXOR(x1,x2) do
lgAND(lgNAND(x1, x2), lgOR(x1, x2))
end

10. ͦͷଞؔ਺
ৄࡉ͸υΩϡϝϯτʹॻ͍͍ͯ·͢ɻIUUQTIFYEPDTQNOVNFYZ/VNFYZIUNM
w BEE
w NVM
w POFT
w [FSPT
w TVN
w BWH
w USBOTQPTF
w BSHNBY

11. ผࢴɿϥΠϒϥϦ։ൃखॱ
৽نϓϩδΣΫτ࡞੒
NJYOFXQSPKFDU@OBNF
޷͖ͳΑ͏ʹ։ൃɾɾɾ

12. ผࢴɿϥΠϒϥϦެ։खॱ
ᶃ)FYΞΧ΢ϯτͷ࡞੒ʢαΠτͰొ࿥΋Մʣ
ίϚϯυͰ΍Δ৔߹
NJYIFYVTFSSFHJTUFS
)FYͷαΠτͰొ࿥ͨ͠৔߹͸ೝূ͢Δ
NJYIFYVTFSBVUI

13. ผࢴɿϥΠϒϥϦެ։खॱ
ᶄNJYFYʹFY@EPDϥΠϒϥϦΛEFQTʹ௥Ճ
\FY@EPD POMZEFW^
NJYEJQTHFU
ᶅ)FY΁ެ։͢Δ
NJYIFYQVCMJTI

14. ·ͱΊ
w ਺ࣜΛؔ਺Λ࢖ͬͯදݱ͢Δͱ͍͏ͷ͸ָ͘͠·͍͍ͨײ
͡ʹߟ͑ΔςʔϚͩͬͨͨΊඇৗʹษڧʹͳΓ·ͨ͠ɻ
w ϥΠϒϥϦ։ൃલͱൺ΂Δͱ&OVNͷ࢖͍ํ্͕ୡͨ͠ɻ
w 'MPXͰॻ͖௚ͨ͘͠ͳͬͨɻ

15. ྑ͍ϥΠϒϥϦ։ൃϥΠϑΛʂ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠