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
soukouki
March 12, 2022
Technology
260
0
Share
友人にElmを布教してみた
関数型プログラミングを学ぶにあたって、Elmをすすめる理由と、友人にElmを通して関数型プログラミングを布教した結果。
soukouki
March 12, 2022
More Decks by soukouki
See All by soukouki
ゲーム画面をブラウザから見られるサイトを作った話
soukouki
0
56
Simutrans CityView (日本語版)
soukouki
0
110
Simutrans CityView (English)
soukouki
0
60
10分で学ぶ すてきなモナド
soukouki
1
180
Misskey自鯖を建ててみた
soukouki
1
94
1年前の日記を要約するツールをローカルLLM&自作MCPサーバーで作った話
soukouki
0
490
自作Cコンパイラ 8時間の奮闘
soukouki
0
1.9k
定理証明支援系Coq(セキュリティキャンプLT会)
soukouki
1
270
Coqで選択公理を形式化してみた
soukouki
0
510
Other Decks in Technology
See All in Technology
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
4
1.7k
AWS DevOps Agentはチームメイトになれるのか?/ Can AWS DevOps Agent become a teammate
kinunori
6
740
EarthCopilotに学ぶマルチエージェントオーケストレーション
nakasho
0
300
目的ファーストのハーネス設計 ~ハーネスの変更容易性を高めるための優先順位~
gotalab555
8
2.2k
Chasing Real-Time Observability for CRuby
whitegreen
0
120
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
210
ネットワーク運用を楽にするAWS DevOps Agent活用法!! / 20260421 Masaki Okuda
shift_evolve
PRO
2
210
こんなアーキテクチャ図はいやだ / Anti-pattern in AWS Architecture Diagrams
naospon
1
450
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.1k
実践ハーネスエンジニアリング:TAKTで実現するAIエージェント制御 / Practical Harness Engineering: AI Agent Control Enabled by TAKT
nrslib
11
4.6k
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
430
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
360
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
The Spectacular Lies of Maps
axbom
PRO
1
700
Bash Introduction
62gerente
615
210k
GitHub's CSS Performance
jonrohan
1032
470k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Done Done
chrislema
186
16k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
180
Are puppies a ranking factor?
jonoalderson
1
3.3k
Claude Code のすすめ
schroneko
67
220k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Into the Great Unknown - MozCon
thekraken
41
2.4k
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