$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
関数型言語と私/function-and-me
Search
color_box
July 12, 2017
Technology
0
250
関数型言語と私/function-and-me
2017-07-12 の(car (cdr ファンクション倶楽部)) で使用したスライドです。
color_box
July 12, 2017
Tweet
Share
More Decks by color_box
See All by color_box
バグから生まれたgem太郎
colorbox
0
150
108-days-project
colorbox
1
1.4k
永和システムマネジメントのご紹介/introducing esm
colorbox
0
470
顔文字を3万個集める技術/kaomoji_over_30_thousand
colorbox
1
2.3k
Kataの作り方 / how to make Kata
colorbox
3
470
『esmメンバーの関心事_開発手法と開発環境編』/esm_member_concern.pdf
colorbox
0
470
2018オブラブカレンダー配布会
colorbox
0
1.2k
1人開発体制からチーム開発体制移行時にやることやったこと+α
colorbox
0
1k
Other Decks in Technology
See All in Technology
生成AI活用の型ハンズオン〜顧客課題起点で設計する7つのステップ
yushin_n
0
250
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
870
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/09 - 2025/11
oracle4engineer
PRO
0
170
Reinforcement Fine-tuning 基礎〜実践まで
ch6noota
0
190
CARTAのAI CoE が挑む「事業を進化させる AI エンジニアリング」 / carta ai coe evolution business ai engineering
carta_engineering
0
2k
Lessons from Migrating to OpenSearch: Shard Design, Log Ingestion, and UI Decisions
sansantech
PRO
1
150
ウェルネス SaaS × AI、1,000万ユーザーを支える 業界特化 AI プロダクト開発への道のり
hacomono
PRO
0
160
OCI Oracle Database Services新機能アップデート(2025/09-2025/11)
oracle4engineer
PRO
1
210
Python 3.14 Overview
lycorptech_jp
PRO
1
120
AWS re:Invent 2025で見たGrafana最新機能の紹介
hamadakoji
0
430
RAG/Agent開発のアップデートまとめ
taka0709
0
190
【U/day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
2
790
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5k
Amusing Abliteration
ianozsvald
0
62
Making Projects Easy
brettharned
120
6.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
A better future with KSS
kneath
240
18k
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
71
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
11
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
120
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։ൃ࣌ͷ͋Ε͜Ε