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
友人にElmを布教してみた
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
soukouki
March 12, 2022
Technology
0
260
友人にElmを布教してみた
関数型プログラミングを学ぶにあたって、Elmをすすめる理由と、友人にElmを通して関数型プログラミングを布教した結果。
soukouki
March 12, 2022
Tweet
Share
More Decks by soukouki
See All by soukouki
ゲーム画面をブラウザから見られるサイトを作った話
soukouki
0
41
Simutrans CityView (日本語版)
soukouki
0
97
Simutrans CityView (English)
soukouki
0
42
10分で学ぶ すてきなモナド
soukouki
1
170
Misskey自鯖を建ててみた
soukouki
1
91
1年前の日記を要約するツールをローカルLLM&自作MCPサーバーで作った話
soukouki
0
460
自作Cコンパイラ 8時間の奮闘
soukouki
0
1.8k
定理証明支援系Coq(セキュリティキャンプLT会)
soukouki
1
260
Coqで選択公理を形式化してみた
soukouki
0
500
Other Decks in Technology
See All in Technology
Keycloak を使った SSO で CockroachDB にログインする / CockroachDB SSO with Keycloak
kota2and3kan
0
170
「お金で解決」が全てではない!大規模WebアプリのCI高速化 #phperkaigi
stefafafan
4
1.8k
1GB RAMのラズピッピで何ができるのか試してみよう / 20260319-rpijam-1gb-rpi-whats-possible
akkiesoft
0
580
CyberAgentの生成AI戦略 〜変わるものと変わらないもの〜
katayan
0
280
ReactのdangerouslySetInnerHTMLは“dangerously”だから危険 / Security.any #09 卒業したいセキュリティLT
flatt_security
0
350
AWS CDK「読めるけど書けない」を脱却するファーストステップ
smt7174
3
200
新規事業×QAの挑戦:不確実性を乗りこなす!フェーズごとに求められるQAの役割変革
hacomono
PRO
0
130
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
kaomi_wombat
0
130
コンテキスト・ハーネスエンジニアリングの現在
hirosatogamo
PRO
6
600
欠陥分析(ODC分析)における生成AIの活用プロセスと実践事例 / 20260320 Suguru Ishii & Naoki Yamakoshi & Mayu Yoshizawa
shift_evolve
PRO
0
180
AlloyDB 奮闘記
hatappi
0
170
A Casual Introduction to RISC-V
omasanori
0
460
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
830
How GitHub (no longer) Works
holman
316
150k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Statistics for Hackers
jakevdp
799
230k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
310
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
250
Transcript
友人にElmを布教してみた NESSM(2022-03-12) sou7 / soukouki
sou7のあんなことやこんなこと 会津大学学部1年生です。 最近はプログラミング言語の仕組みや、その型の仕組みについて興味がありま す。 去年の秋、10人ほど集めてインタプリタを改造する勉強会を開きました。 出身 : 千葉県 落花生の品種を見た目・香り・味で当てられたり、当てられなかったりします。 オオマサリと千葉半立とナカテユタカくらいなら多分行ける・・・!
春から、この数年誰も使っていなかった制度を使って、お隣の会津短大の授業を 履修してきます。あっちの学食は美味しいのかな? 2
Marpはいいぞ Markdown形式でスライドを書きたい! もうWYSIWYG形式で消耗したくない! PowerPointやGoogle Slideのような、編集 画面と結果が同じやつ。 スライド作成もVSCodeで完結させたい! そんな方におすすめなのがMarpです。 今までのLTスライドは全てMarpを使って作成 しています。
3
各種アカウント Twitter Discord GitHub @sou7_ _ _ sou7#0094 @soukouki 4
関数型プログラミングを学んでおく利点 まず、Elmを始めとした関数型プログラミング言語(以下関数型言語)について学ぶメリ ットを挙げます。 1. 副作用を扱わないプログラムを作るのに慣れられる。 関数型言語では、副作用を狭い範囲にとどめたり、あるいは扱わないような仕組みに なっています。 副作用を扱わないことで、プログラムの流れが解りやすくなったり、テストが容易に できたりします。 関数型パラダイムを学ぶことで、設計の幅を広げられると考えます。
2. 関数型言語的な機能を利用することに慣れられる。 RustやSwiftなど、関数型を含むマルチパラダイムを指向した言語が人気になっていま す。 関数型言語的な機能に慣れることで、それらの言語を更に活用できるようになりま す。 5
Elmは関数型言語の第一歩におすすめ Elmは、その関数型言語を初めて学ぶ人にとって良い言語だと考えます。 1. 簡潔な言語仕様 2. 副作用を排除した言語設計 3. 豊富なエコシステム それぞれについて順番に説明していきます。 6
1. 簡潔な言語仕様 驚くことに、Elmはバージョンを重ねるごとに機能を削減しています。v0.18では関 数の中置記法が、v0.19ではユーザー定義演算子の機能が削減されています。 削減に残るようなElmの言語仕様は必要最低限かつ、それぞれが強力になっています。 また、ElmはLispのように独特な文法を持つこともなく、他のメジャーな言語と似た文 法で扱えます。 この簡潔さによって、言語の習得がとても簡単になっています。十分な知識を持って いる人であれば、後で述べるように1日でほぼすべての文法を使えるようになります。 7
2. 副作用を排除した言語設計 関数型言語を学ぶにあたって、副作用を排除したプログラミングに慣れる必要があり ます。Elmでは、副作用は正規の手段では扱えないようになっています。Elmを学ぶこ とで、副作用を扱わないプログラミングを半ば無理やり身に付けられます。 8
3. 豊富なエコシステム Elmを利用してプログラミングをするにあたって、きちんとした開発環境が揃っていま す。ライブラリのインストールもコマンド一つで行えますし、機能の豊富なエディタ 拡張を利用してスムーズにプログラミングができます。 パッケージマネージャー フォーマッター エディタ拡張 ユニットテストライブラリ 文法やライブラリを学ぶのに適したチュートリアル
9
Elmを学ぶために必要な知識 ここまでElmの利点を並べてきましたが、実際Elmを学ぶために必要な、基礎的な知識 も複数あります。 1. 最低限のHTMLの知識 Elmはフロントエンド開発用の言語であり、最低限のHTMLタグの知識は必要です。 2. 静的型付けプログラミング言語の経験 Elmは静的型付けであり、関数を組み合わせるときに型を意識したり、あるいはエラ ーメッセージを読み取る技術が必要です。
ちなみに、JavaScriptのコードを書いた経験は無くてもどうにかなります。(本人談) 10
友人にElmを布教してみた 犠牲者はしんぶんぶん(shinbunbun.info)くんで、学ぶ内容は以下のようになりまし た。 Elmを2日かけて学び、関数型パラダイムを把握する。 1日でElmの文法を把握する。 公式ドキュメントのリンクを渡して、デモを含めて改造させてみる。 そのあと1日で何かWebアプリケーションを作成してみる。 RustやScalaなど、大規模なマルチパラダイム言語に挑む。 彼は関数型パラダイムの経験さえないものの、他の静的型付け言語の経験は十分あ り、またフロントエンド開発の経験も多くありました。
11
結果:Elmは2日で学べる 結果から言うと、しんぶんぶんくんは見事に2日でアプリケーションを作ってきまし た。 もちろん彼の努力や、彼の今までの経験に依る部分も大きいと思うのですが、Elmの文 法の小ささも重要な要因だと考えます。 また彼以外にも、異なる人が行った2時間の勉強会x4回と、1日の作成期間でアプリケ ーションを作成した人何人か居ます。 12
学習向けリンク集 https://guide.elm-lang.jp Elmを扱うためのガイドで、基礎的な知識を得られます。 https://elm-lang.org/examples Elmによるアプリケーションの例がいくつかあり、これを元に改造したりしました。 https://package.elm-lang.org Elmのパッケージのドキュメントです。 13
まとめ 最近になって、関数型プログラミング言語を学ぶ利点が増えている。 関数型プログラミングを学ぶために、Elmはいくつかの理由により適している。 i. 簡潔な言語仕様 ii. 副作用を排除した言語設計 iii. 豊富なエコシステム しんぶんぶんくんを始めとして、Elmは2日あれば学べる。
14