- elm-lifecycle/README.md at master · plaxdan/elm-lifecycle
- evancz / elm-architecture-tutorial: How to create modular Elm code that scales nicely with your app
Elm は The Elm Architecture を使うためのプログラミング言語.この The Elm Architecture を他の言語,他のフレームワークで例えるのであれば TypeScript と React,Redux,Redux のミドルウェアを合わせたものに近い.
型推論があり,副作用が分離されている.TypeScript とは異なり any
を許容する設定ができないため,型システムによって型に起因する不具合が存在しないことを保証できる.また,よく Haskell と比較されるが,Haskell の特徴ともいえる型クラスやモナドは存在しない.機能や構文も制限されており比較的学習コストは低い.
2015 年から Elm を用いて運用されているサービスの話で,これまで実行時例外が一度も発生していない.コンパイルさえできれば実行時例外が発生しないという安心感がある.
型システムによって API の変更を検出できる.Elm Packages に公開されるパッケージはセマンティックバージョニングが強制されるため,基本的にパッケージの更新に起因する不具合は発生しない.
Elm での開発に必要な機能は elm
コマンド上でほぼ全て提供されている.インストール · An Introduction to Elm の「ターミナル用ツール」を参考にすると良い.
コンパイラの出力するエラーメッセージの内容がわかりやすい.
- Small Assets without the Headache
- Methodology for the asset sizes reported with Elm 0.19
- How to optimize Elm code
コンパイラが出力する JavaScript のサイズが小さい.
- Ellie
- はじめに・A Introduction to Elm
- 2019年 Elmをはじめる人が最初に読むページ - Qiita
- Elmはどんな人にオススメできないか - Qiita
- 基礎からわかる Elm | 鳥居 陽介 |本 | 通販 | Amazon
Elm をブラウザ上で試せる Ellie を使いつつ,A Introduction to Elm を読み進めると良い.Yosuke Torii さんの 基礎からわかる Elm もオススメ.しっかりと雛形を使って開発をしたい場合は,halfzebra/create-elm-app や calmery/boilerplate を使うと幸せになれる.
また,お互いの幸せのために 2019年 Elmをはじめる人が最初に読むページ と Elmはどんな人にオススメできないか は必ず読む.
Elm-jp は山羊が苦手な人にはオススメしない🐐
- jah2488/elm-companies: 🌲 A list of companies using Elm in production.
- Unipos | 共に働く仲間と送り合う新しい成果給「Unipos」
- アートをコーディング - JetBrains
- Netlify's Playground
- Concourse CI
- プレゼンソフト | オンラインプレゼンツール | Prezi
- Pivotal Tracker
- Futurice
- Web Strategy + Design + Development | Gizra
内容が少し古いが jah2488/elm-companies にまとまっている.国内での採用事例はまだまだ少ない.
インストール · An Introduction to Elm の「エディタの設定」にまとまっている.
基本的には Elm Packages で検索する.関数の型で検索したりできる Elm Search を使うのも良い.それでも見つからなければ作って公開する!
- Style Guide
- NoRedInk/elm-style-guide: NoRedInk style guide for our Elm code
- rtfeldman/elm-spa-example: A Single Page Application written in Elm
- vh4/elm-format: elm-format formats Elm source code according to a standard set of rules based on the official Elm Style Guide
Style Guide に従う.フォルダの構成は NoRedInk/elm-style-guide や rtfeldman/elm-spa-example を参考にすると良さそう.ソースコードのフォーマットに関しては elm-format 使用する.
elm: Map.!: given key is not an element in the map
Elm のコンパイラの不具合.そのうち直る.現状としては elm-stuff を削除する.またはコンパイラの --debug
オプションを消すと上手くいくことが多い.
Browser.Events の onAnimationFrame
を使う.または Port を使用して JavaScript 側で requestAnimationFrame
を使うようにする.
Browser.sandbox
や Browser.element
,または Web Components を使う.
自分で実装するのはとてもつらいので elm-style-animation や elm-animation を使う.正直,これらのパッケージを使ってもまだつらさはあるので CSS を使ってしまうのも良い.個人的には他の要素に直接的に影響のないアニメーションに関しては CSS で記述している.
不具合の報告や要望の出し方は Elmにおけるバグ報告・機能要望の出し方 を参考にする.記事中のリポジトリの情報など内容が少し古いのでその辺は読み換える必要がある.よくわからなければ Elm-jp に投げると良さそう.
Maybe や Result を多用すると case
をネストすることになってしまいとてもつらい.Maybe.map
や Result.map
を使うと幸せになれる.
Elm ではなく以下のプログラミング言語,フレームワークを使うと幸せになれそう.
- ghcjs/ghcjs: Haskell to JavaScript compiler, based on GHC
- Miso: A tasty Haskell front-end framework
- Miso はいいぞ🍜
- PureScript
Debug に含まれる log
関数を使うことで同じことができる.ただし開発中しか使用できない.本番用にビルドする場合は Debug.log
がソースコード中に含まれているとビルドに失敗するので注意する.