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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shuufei
May 15, 2020
Technology
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elmについて
Elmとは何かについて調査してまとめた資料
shuufei
May 15, 2020
More Decks by shuufei
See All by shuufei
Angular with RxJS
shuufei
0
430
OOUI(オブジェクト指向UIデザイン)
shuufei
2
860
Angularにおける状態管理
shuufei
0
54
AngularにおけるComponent分割
shuufei
0
67
Other Decks in Technology
See All in Technology
Claude Code公式skillで 自分の仕事を少しずつ手放そう!(Claude Code開発ノウハウ大公開スペシャル by クラスメソッド)
kaym
1
440
穢れた技術選定について
watany
17
5.1k
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
270
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
520
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
430
CIで使うClaude
iwatatomoya
0
280
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
180
そのドキュメント、自動化しませんか?
yuksew
1
230
ポストモーテム! DDoSからサイトは守れた。 でもビジネスは守れなかった。
bengo4com
1
3.2k
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
280
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
4.7k
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
350
Ruling the World: When Life Gets Gamed
codingconduct
0
280
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
The Invisible Side of Design
smashingmag
301
52k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Optimizing for Happiness
mojombo
378
71k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Six Lessons from altMBA
skipperchong
29
4.3k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
580
Transcript
Elm
Elmとは
Elmとは わざわざ学ばなくてもいい言語 No.1 https://www.codementor.io/blog/worst-languages-2019-6mvbfg3w9x
Elmとは Elm は JavaScript にコンパイルできる関数型プログラミング言語です。 ウェブサイトやウェブアプリケーションを作るツールという面では React のようなプロジェクトだと言えます。 Elm はシンプルであること、簡単に使えること、高品質であることを大切にしています。
https://guide.elm-lang.jp/
Elmとは 関数型プログラミング言語 Elm は JavaScript にコンパイルできる です。 ウェブサイトやウェブアプリケーションを作るツールという面では React のようなプロジェクトだと言えます。
Elm はシンプルであること、簡単に使えること、高品質であることを大切にしています。 https://guide.elm-lang.jp/
Elmとは なぜ関数型を採用しているのか ?
Elmとは なぜ関数型を採用しているのか ? ・実用上ランタイムエラーがでないし、nullもないし、 undefinedが関数だなんて話はあえません。 ・とてもわかりやすい親切なエラーメッセージによって より素早くあなたのコードに機能を追加できます。 ・コードの規模が大きくなっても全体の設計が壊れることがありません。
・すべてのElmパッケージにおいて、決められたルールに則って 自動的にバージョン番号が付与されています。 https://guide.elm-lang.jp/
Elmとは 他の人の声 Elmはアンチパターンを実装できない。 人の目を介さず、人的リソースを使わずにソフトウェア品質の最低ラインを 強力な形で担保できる。 https://qiita.com/lambda_funtaro/items/2d4d82412d0bb7179cf3
Elmとは ・困った時にコンパイラが助けてくれます。エラーメッセージがわかりやくて便利です。 コンパイラと型システムのおかげでElmでは普通、実行時例外 (runtime exception)が 起こりません。 ・リファクタリングが簡単で、コンパイルが通ればまた正確に動きます。
最初に書くときもそれが多いです。コンパイルで問題がなければバグが 驚くほど少ないです。 ・テストしやすい。純粋(つまり副作用がない)関数でテストしやすく、 Elmアーキテクチャーならアプリの状態が簡単に再現できます。 https://nulab.com/ja/blog/typetalk/elm-introduction-tutorial 他の人の声
Elmとは 強めの制約がある状態で開発を行うことで、 より安全に、より保守しやすい状態で開発していくことができそう。
関数型プログラミングとは
関数型プログラミングとは 関数プログラミングにおける関数
関数プログラミングにおける関数 関数プログラミング実践入門 命令型言語 特定の命令/手続きの列に付けられたラベル 関数プログラミング 「与えられた入力の値のみから出力となる値をただ1つ決める規則」 という数学的な意味 関数型プログラミングとは
関数プログラミングにおける関数 関数プログラミング実践入門 関数型プログラミングとは
関数プログラミングにおける関数 関数プログラミング実践入門 命令型言語 特定の命令/手続きの列に付けられたラベル という数学的な意味 「与えられた入力の値のみから出力となる値をただ1つ決める規則」 この性質を参照透過性という。 参照透過性をもつ関数を純粋関数という。 関数型プログラミングとは
関数プログラミングにおける関数 関数プログラミング実践入門 関数型プログラミングとは
副作用 関数型プログラミングとは
副作用 関数プログラミング実践入門 状態を参照し、あるいは状態に変化を与えることで、 次回以降の結果にまで影響を与える効果のことを副作用と呼ぶ。 副作用をもつ手続きは、前述した 「関数」 ではない。 関数型プログラミングとは
関数プログラミング実践入門 関数型プログラミングとは 副作用
関数が副作用のない純粋関数であることで、 テストのしやすさや、モジュラリティが向上する。 関数型プログラミングでは、 モジュラリティを活かし、関数を組み合わせて新たな合成関数を定義したり、 それらの関数を使って、求めたい結果の性質を宣言する形でプログラミングする。 関数型プログラミングとは 関数プログラミング実践入門
関数型プログラミング言語
関数型プログラミングを実践することに特化した言語 (?) 関数型プログラミング言語
関数型プログラミング言語 関数型プログラミング言語の特徴
関数型プログラミング言語 関数プログラミング実践入門 言語使用で定義されていない動作を発生させないことを、安全性という。 型検査に成功すれば安全性が保証される型付けを強い型付けという。 ・強い型付け 型検査をコンパイル時に行うのが静的型付け、ランタイムに行うのが動的型付け。 ・静的型付け 参照透過性という性質を持っているということ。 ・純粋 与えられた型の情報から、与えられていない部分の方も推論してくれる機能。
・型推論 関数型プログラミング言語の特徴
なんだかランタイムでのエラーが起きにくそうな特徴 関数型プログラミング言語 関数型プログラミング言語の特徴
より安全に、より保守しやすい状態で開発する (ということでいいかもしれない) Elmをやるモチベーション
Elmアーキテクチャ
https://guide.elm-lang.jp/architecture/ Elmアーキテクチャ
Elmでアプリケーションを開発する
Elmでアプリケーションを開発する 1つのjsファイルにバンドルし、index.htmlで読み込む。 1 1 2 初期化処理 2 https://guide.elm-lang.jp/webapps/
Elmでアプリケーションを開発する https://guide.elm-lang.jp/interop/ports.html JSのエコシステムと組み合わせる場合は、ポートという機能を利用し、 相互でメッセージのやりとりを行う。 Javascript Elm subscribe send
Elmでアプリケーションを開発する https://guide.elm-lang.jp/interop/ports.html JavascriptでElmからのメッセージを受け取る
Elmでアプリケーションを開発する https://guide.elm-lang.jp/interop/ports.html JavascriptからElmにメッセージを送る
まとめ
まとめ より安全に、より保守しやすい状態で開発していきたい場合はElm良さそう。 関数型プログラミング好きな人には良さそう。 個人的には、がっつりやるモチベーションはまだ生まれなかった。 関数型プログラミングは面白いとよく聞くので、まずそこから学んでみたい。
Elm