(なんでロードマップが必要なのか書く)
Elm Guideをさらっと一周しましょう。
Elm Syntaxで文法を学びましょう。JSに慣れている人は、Syntax vs JSを見ても良いかも。
文法がなんとなく抑えられたら、Elm Coreを見てREPLやElm Reactorでいじってみましょう。特にBasic, Listパッケージなどを触っておくと良い。
とにかくElmをやっていく上で、Htmlと仲良くする必要がある。ネストさせたり分岐させたり、関数に分けたり感覚を掴んで。直前に学んだCoreの簡単な関数を使ってみると良いかも。Listを使えるようになっておくと後々楽。
ExamplesはPlayGround上で動く小さなサンプル。ちょこちょこコードをいじってみよう。
今度は、Elm Guideをじっくり一周してみましょう。The Elm Architecture(TEA)を意識すること。
Elm ReactorやParcelなどを使って腕試ししてみましょう。Elm Coreのパッケージのいろんな関数を意識して使ってみると良いかも。Listパッケージは必修。
Randomパッケージを覗いて、小さなアプリを作ってみよう。
Elmガイドのカスタム型とパターンマッチを使ってみよう。MaybeやResultパッケージはとてもよく使うカスタム型なので、ここで使い方をしっかり抑えておこう。mapやandThenなどの高階関数の使い方を覚えておくとなおよし。
MDNを見ながら、JSONを駆使していろんなイベントをハンドリングしてみよう。Htmlパッケージのソースコードを参考にしながらセレクトボックス・ラジオボタンなどを触ってみると良い。
HTTPとJSONパッケージを使って、GitHubやQiitaなどのAPIを叩いたWEBアプリを作ってみよう。Taskを使ってみると刺激的かもしれない。
Webアプリで時間をいじるのは必須テク。TimeパッケージでTaskのことを少し学んでみよう。Timeは筋力を要求されるので慣れておこう。
直前に学んだTimeパッケージなどを利用して、定期購読(Sub)を使ってみよう。Examplesを参考にいじくると良い。
portsでJSと会話しよう。初級編は、Local Strage。Firebaseとかを使えると実践的な力が付くかも。
既に穴が開くほど見ているであろうElmガイドのモジュールのところを見てみよう。また公式ライブラリなどのソースコードを見てモジュール分割の例を学ぼう。
既に穴が開くほど(ry ElmガイドのURLをパースするを見よう。Urlパッケージを学びながら、簡単なルーティングを試してみよう。
package.elm-lang.orgやelm-spa-exampleなどを参考にモジュール分割を含んだSPAを作ってみよう。これが実質ラスボス。何度も何度もチャレンジして絶望しながら体得しよう。SPAは難しい。
HtmlのKeyedやLazyパッケージを覗いて、パフォーマンスをチューニングしてみよう。
唯一いろんな記号を使える公式ライブラリelm/parserをいじってみよう。
Elmのコンパイラを覗きながら、Elm Effect Managersの仕組みとかを抑えてみよう。
自分の場合はほぼguideを見て試す、でしたが、何を作ったらいいのかわからない問題にぶつかりました。
よくある「TODOリストを作る」とか、具体的な課題があると迷いが少なくなるかもしれません。
あとは、自力で頑張って作るのではなくて、パッケージを探してきて使うということをし始めたら、道が開けた気がします。
つまずいたところは、関数型をやってこなかったので、高階関数の理解で立ち止まったり、カスタム型の使い道がわからなかったり。
理解できるまで立ち止まるよりも、使っていく中で覚えた方が早いんじゃないのというのは、abさんとみやもさんから学びました。
あと、ロードマップに載る話ではないかもしれませんが、meet upのときにいずみさんが紹介していたような、elmの学び方いくつかがあると、初学者にとっては参考になると思います。