Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
関数型言語と私/function-and-me
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
color_box
July 12, 2017
Technology
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
関数型言語と私/function-and-me
2017-07-12 の(car (cdr ファンクション倶楽部)) で使用したスライドです。
color_box
July 12, 2017
More Decks by color_box
See All by color_box
バグから生まれたgem太郎
colorbox
0
180
108-days-project
colorbox
1
1.5k
永和システムマネジメントのご紹介/introducing esm
colorbox
0
530
顔文字を3万個集める技術/kaomoji_over_30_thousand
colorbox
1
2.4k
Kataの作り方 / how to make Kata
colorbox
3
530
『esmメンバーの関心事_開発手法と開発環境編』/esm_member_concern.pdf
colorbox
0
510
2018オブラブカレンダー配布会
colorbox
0
1.3k
1人開発体制からチーム開発体制移行時にやることやったこと+α
colorbox
0
1.1k
Other Decks in Technology
See All in Technology
CIで使うClaude
iwatatomoya
0
230
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
160
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
5.9k
AI時代の EM への処方箋
staka121
PRO
0
130
AIに「使われる」時代のSaaS戦略 〜既存WebAPIのMCPサーバー化における開発ノウハウ〜
ekispert_api
0
310
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
110
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
2
3.4k
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
210
ゴールデンパスは敷いただけでは道にならない ─ 企画部門のエンジニアが技術標準を事業価値に変えるまで
mhrtech
0
110
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
190
AIを駆使した OSS脆弱性調査のすゝめ
saku0512
0
100
Empower GenAI with Agile - あなたのアジャイルが生成AIのバフになる仕組み
hageyahhoo
1
170
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Code Review Best Practice
trishagee
74
20k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
How GitHub (no longer) Works
holman
316
150k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
460
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
300
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
320
Scaling GitHub
holman
464
140k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.9k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Transcript
ؔܕݴޠͱࢲ • ϑΝϯΫγϣϯ۞ָ෦ • @color_box
ࣗݾհ • @color_box • ӬγεςϜϚωδϝϯτ • ͖ͳؔmap
ؔܕͷܦݧ • SML2ϲ݄ • Elixir3ϲ݄
ΞδΣϯμ • ࠷ॳʹ৮ͬͨؔܕݴޠ͔Βಘͨͷ • Elixirͷࣄ͔Βಘͨͷ
࠷ॳʹ৮ͬͨؔܕݴޠ • SML(StandardMetaLanguage) • 8͘Β͍લ • ֶੜ࣌ͷ՝
hd::tl • ͦΕ·Ͱ৮ͬͨ͜ͱͷͳ͍Ϧετͷѻ͍ํʹ ۤ࿑ͨ͠ • hd::tlͰϦετͷૢ࡞Λߦ͏֓೦Λशಘ • ؔܕݴޠʹର͢Δҙຯෆ໌ײ
ҙຯෆ໌ײ • ࠷ॳۤखҙ͕ࣝ͋ͬͨͷͷɺ՝Ͱ50 ݸͷجຊతͳؔΛ࠶࣮ • ͓ͳ͡ΈͷؔΛ࣮ • flatten,foldl,foldr,flat,map,filter,split
੍ݶ • ҰͭͷؔఆٛͷΈͰɺಗ໊ؔΛΘͣʹ ߦ͏ͱ͍͏੍ݶ • جຊతͳॲཧΛѲ͠࠶ؼॲཧʹ׳ΕΔ͜ ͱ͕Ͱ͖ͨ
جૅ࿉͕େࣄ • ॳݟͰΑ͘Θ͔Βͳ͍֓೦͕ग़͖ͯͨΒ • ͔ΔൣғͰशಘΛਐΊͯɺ܁Γฦ͢ɻ • ͢Δͱɺͦͷ͏ͪཧղͰ͖ΔΑ͏ʹͳΔɻ
༨ஊ • ͦͷ࣌ͷ՝Ͱ࡞ͬͨͷΦηϩͷAI • min−max๏ɺα-β๏
AI • 8*8ͷϚεʹରͯ͠ɺͲͷϚε͕Ͳͷఔڧ͍͔ɺͱ ͍͏ධՁؔΛ࡞ɻ • ͋ͱɺͲͷϚεʹஔ͔Ε͔ͨΛ࠶ؼతʹνΣοΫ͠ ͍͖ͯɺ࠷ऴతʹ࠷ධՁͷߴ͍ɺϚεΛબ͢Δ • దͳධՁؔͰ͋Δఔਂ͘ಡΉͱউͯͳ͍ •
ίπ࢛۱ϚεͷධՁΛߴ͓ͯ͘͘͜͠ͱ
None
Elixirͷࣄ͔Βಘͨͷ
ͦͦElixirͱ • ؆୯ʹݴ͏ͱElixirErlangΛॻ͖ͨ͘͢͠ ͷ
ͦͦElixirͱ • ElixirErlangͱಉ͡VM্Ͱಈ࡞͢Δؔܕݴޠ • ErlangwhatappͳͲͷϢʔβʔ͕ଟ͍ΞϓϦέʔ γϣϯͰಈ࡞͍ͯ͠Δ • ErlangҰൠతʹॻ͖ਏ͍ɺशख़ʹ͕͔͔࣌ؒΔͱ͍ ͏ଆ໘͕͋Δ •
Elixirॻ͖ਏ͍ͱ͍͏Λղܾͨ͠ݴޠ
Elixir Conf • 2017/4/1 • Elixir Conf 2017 • Elixir/ErlangͷࣄྫΛͨ͘͞Μฉ͘
• ߴෛՙʹڧ͍ݴޠͱͷ͜ͱͰɺϩϚϯΛײ͡Δɻ • ͍͔ͭElixirΛͬͯࣄͯ͠Έ͍ͨͳͱࢥͬͨ
whaapp • ͪͳΈʹ • whatappͷϢʔβʔ9000ສ • ͦΕΛ50ਓͷΤϯδχΞͰࢧ͍͑ͯΔ • Ұਓ͋ͨΓ180ສϢʔβʔΛࢧ͑ΕΔܭࢉ •
ࣈ 2015/09
ࣄͰElixir • Ҋ֎ૣͦ͘ͷΑ͏ͳػձʹܙ·ΕΔ • 4,5݄ElixirͰࣄ
ࣄ্Ͱಘֶͨͼ • ࣄͰೋϲ݄͘Β͍ElixirΛ৮ͬͨͷͰͦͷ࣌ ͷݟΛڞ༗
mix • ElixirͷϏϧυπʔϧɺґଘཧπʔϧͱͯ͠ͷଆ໘͋Δ • ElixirٴͼErlangͷϥΠϒϥϦಡΈࠐΊΔɻ • ґଘղܾ࣌ʹϓϩδΣΫτͰ༻͢ΔϥΠϒϥϦͷίʔυ ΛϓϩδΣΫτԼʹclone͢Δ • ElixirͰ͑ΔϥΠϒϥϦʹ໌Β͔ʹϝϯς͞Εͯͳ͍
ͷ͋ͬͨΓ͢ΔͷͰҙ͕ඞཁɻ
ࣄͰͬͨϥΠϒϥϦ • Cowboy • Ecto
Cowboy • ϚΠΫϩαʔϏεͷҰ෦ͱͯ͠ͷAPIαʔόΛ ͜ΕͰ࡞ • ElixirͷWebFWͱͯ͠Phoenix͕༗໊͕ͩɺ ࠓճ࠾༻ͤͣ • ୯७ͳAPIʹPhoenixେ͖͗͢ΔͨΊ
Cowboy REST Flowchart • CowboyΛ͏ͳΒ͓͑ͯ͘ͱศར • ֤ίʔϧόοΫ͕ͲͷΑ͏ʹݺΕΔ͔͕Θ ͔Δ • https://ninenines.eu/docs/en/cowboy/1.0/
guide/rest_flowcharts/
None
Ecto • DB wrapper • DBଓʹ༻͠ɺύϥϝʔλόϦσʔγϣϯʹ༷ • ֎෦APIΛୟ͘ࡍͷϦΫΤετߏମΛEctoͰఆٛ(DB ͷอଘߦΘͳ͍) •
ϦΫΤετΛ࣮ࡍʹߦ͏લʹɺߏମʹηοτ͞Ε͍ͯ Δ͕ຊʹਖ਼͍͔͠ͷόϦσʔγϣϯΛߦ͍͔ͨͬͨ
ࠔͬͨ࣌ͷࢀরઌ • HexDocͱ࣮ΛݟΕ͍͍͔ͩͨΔɻ
HexDoc • ॳΊͯݟΔϥΠϒϥϦؔΛ͏࣌·ͣ ͜͜ΛݟΔɻ • Ұ௨ΓΛ௨͢ͱͳΜͱͳ͍͘ํ͕Θ͔ Δɻ
࣮ • ͦΕͰΑ͘Θ͔Βͳ͍࣮࣌ݟΔ • ϓϩδΣΫτͰ༻͢ΔίʔυdepsԼʹ શͯೖͬͯ͘Δ • ͔ͩΒͦͷؾʹͳΕશ෦ಡΊΔ
ErlangϥΠϒϥϦ • ElixirErlangͰॻ͔ΕͨϥΠϒϥϦ༻Մೳɻ • ErlangͷϥΠϒϥϦಡΉඞཁ͕͋Δ • ElixirΛ৮ΔʹErlangͷࣝඞਢ • ޙड़ͷύλʔϯϚονΛཧղ͍ͯ͠ΔͱɺErlang ͷίʔυͳΜͱͳ͘ಡΊΔΑ͏ʹͳΔɻ
σόοά࣌ͷ͋Ε͜Ε • iexίϚϯυͰ্ཱ͕ͪΔREPLڥ͕ศར • iex -S mixͰϓϩδΣΫτͷίʔυΛऔΓࠐΜ ͰREPLڥΛ্ཱͪ͛Δ͜ͱ͕Ͱ͖Δɻ • ࣗ࡞ͷΫϥεΛݺͼग़ͯ͠ɺςετՄ
ೳɻ
σόοά࣌ʹΑ͘͏ͷ • IO.inspects() • IEx.pry
IO.inspects() • ΦϒδΣΫτΛೖΕΕͦΕʹؔ͢ΔใΛ ు͖ग़ͯ͘͠ΕΔ • printσόοά࣌ʹଟ༻
IEx.pry • σόοΨ • εςοϓ࣮ߦͰ͖ͳ͍ • Ұ࣌ఀࢭͨ͠ՕॴͰҙͷΦϒδΣΫτͷத Λ֬ೝՄೳ
ϨϏϡʔͰʹ͚ͭͨͷ • ύλʔϯϚονͷॏཁੑ • ύλʔϯϚονͷࢦఠΛͨ͘͞Μ͍ͨɻ
ύλʔϯϚονͷछྨ • caseΛ͏λΠϓ • ؔͷγάωνϟͰϚονͤ͞ΔλΠϓ • =୯ମͰϚονͤ͞ΔλΠϓ
caseΛ͏λΠϓ • ࠷Ұൠతʁ • ୯Ұͷؔͷதʹଘࡏ͢Δ
ྫ
ؔͷγάωνϟͰϚονͤ͞ ΔλΠϓ • ෳͷؔΛఆٛͯ͠ɺݺͼग़࣌͠ʹͦΕΒ ͕ΓସΘΔ
ྫ
=୯ମͰϚονͤ͞ΔλΠϓ • ೖͰͳ͘ύλʔϯϚον
ྫ
Մಡੑͷ্ • ύλʔϯϚονΛ͏·͘͏ͱՄಡੑΛ্͛ ΕΔ
None
None
ྫ • ؔͷҾʹରͯ͠caseʹΑΔύλʔϯϚο νΛ͢ΔͷNG • ؔͷγάωνϟͰϚον͢Δ • ͜ΕʹΑͬͯݸʑͷ͕ؔখ͘͞ͳΓɺՄಡ ੑ্͕͕Δ
༨ஊ • ύλʔϯϚον͕Θ͔ΔͱErlangԿͱͳ͘ ಡΊΔΑ͏ʹͳΔ(ؾ͕͢Δ) • ύλʔϯϚονʹ͍ͭͯ৭ʑࢦಋΛड͚ͨ ޙɺhexͷErlangϥΠϒϥϦΛಡΜͰΈΔ ͱɺલΑΓಡΊΔΑ͏ʹͳ͍ͬͯΔɻ
ࠓͨ͜͠ͱ • ؔܕݴޠͷ࠷ॳͷนΛಥഁ͢ΔͳΒ৭Μͳ ؔΛ࠶࣮͢Δͱ৭ʑΘ͔ΔΑ͏ʹͳΔ • Elixir։ൃ࣌ͷ͋Ε͜Ε