Elmに初めて触れた感想

なにこれ

qiita.com

の19日目です

Elmの良いところ

  • コンパイラが親切すぎる。期間が空いても1日前まで触っていたかのように再開できる
  • コンパイラが親切なのでリファクタが怖くない。ぶっ壊さずにぶっ壊せる
  • フロントエンド特有のライブラリどうすんねんの悩みがない。環境構築が簡単でスグにやりたいことに着手できる
  • Elmコミュニティの人が親切で初心者に優しい。関数型言語のハードルを下げようと頑張ってくれている
  • TwitterでElmについて呟くとエゴサしまくって迷えるヤギを見つけて助けてくれる方がいる
  • ヤギがいる(?)

Elmに触れる上でハードルが高いと思う所

  • ネットによくある関数型言語=難易度が高い というイメージのせいで勝手にハードルが高くなる
  • 求人で多いのはVueやReactなので、新規に学ぶ価値が無いと思われてしまう
  • Elmに触れる人全体のレベルが高いのか、他言語にありがちなしょーもないエラーの解説記事がないため初心者お断りのイメージがある
  • Elmに関することを呟くと即補足されてRTされるのでビビる人はビビる
  • ヤギが可愛すぎて可愛さのハードルが高い(?)

個人的にはやはり関数型言語=難しいというイメージ、実務で使えるケースが他言語に比べて圧倒的に少ない。という部分が大きいと思っています
実際触れると他言語に活かせるノウハウがたっぷり詰まっていて、むしろElmから始めるべき。と思うぐらい素晴らしい言語なのですが
触れてみないとわからない部分なので、どうしてもハードルが上がってしまうのかな…という感じです。
あとヤギがNG(親をヤギに殺された、宗教上の理由でヤギに関われない等)な方は無条件でElmに触れられません。無念。

Elmで得た知識を実務に活かせて褒めてもらえた話

実務では主にPHPを書いているのですが、Elmで得た関数型のコードの書き方や考え方が自然と染み付いていて
PHPのコードを書く場合にも気づかないうちに活かせていました
Elmで得た知識はElmにしか使えないと思っていたので、こんなメリットがあったのかと自分でもびっくりしました
Elmというよりはプログラミングの基礎的な部分の話なのですが、この辺りが実際に実務で活かせました
- 1関数1処理にする
- 引数と返り値を用意する(引数なしとかvoidは極力避ける)
- 1機能で細分化して、再利用性を高める
- 1機能毎にメソッド化するとテスト容易性が上がる

一度根付いた関数型の意識は簡単には無くならず、最近もバグが少なく可読性/保守性の高いコードが書けている(はず)と思います
Elmを教えてくれた知人に感謝、全てのElmoに感謝、神に感謝

f:id:nekorollykk:20201218224346p:plain

ここから下は蛇足なので読まなくていいです Elmに触れて何やったかのまとめです

Elmとの出会い

静的型付け言語が好きで、可能な限り型をつけて人間のミスを減らしていきたい…と考えていたところに知人が教えてくれたのがきっかけでした
薦められて触れてみたもののJavaPHPのような言語とは毛色が全く違い、他言語の知識があるせいで余計に混乱して挫折してしまいました…

この段階では関数型言語はよくわからんしElmって怖い…ヤギしかわからん…という状態でした

恥を晒してブログにサンプルにコメントをつけまくった記事を書いた

nekoroll.hatenablog.com

自分が持っている知識を総動員して、どうにか他言語に例えて理解を進めようと頑張った記事です
この記事をTwitterでつぶやいた所、Twitterで日々Elmでエゴサしまくっている迷えるヤギを助けようとしてくれているABさんが沢山コメントをくれました

自分が学習する上でよくなかったのが「無理に内部実装を理解しようとしすぎ」という部分でした
Elmが隠蔽して使いやすくしてくれている部分を無理に深堀りして、勝手に混乱してわからん!となってしまっていました

ABさんから「考えるな、感じろ(意訳)」という助言を頂き、改めてコードを触ってみた所視界が開けサクサクと学習が進みました
一度理解が出来てからは詰まっても楽しさが勝り、悩むこと自体が楽しい状態になっていました

そして約一ヶ月でTODOアプリの完成までに至りました

nekoroll.hatenablog.com

一度は挫折して全くわからなかった状態だったにもかかわらず、ABさんの一言でTODOアプリ完成までたどり着けました

その後はSTACKERゲームを作ろうとしたり(座礁中)

nekoroll.hatenablog.com

社内ゲームジャムでElmでサクッとクソゲーを作ってみました(謎に評判が良かった)

nekoroll.hatenablog.com

最近はドット絵やらピアノやらに熱中してしまい、Elmは殆ど触っていませんがまた時間を作ってSTACKERゲームを完成させる予定です

Elmを学ぶ上で得た「無理に深堀りしすぎず俯瞰的に捉える」という考え方はプログラミングだけではなく、ドット絵やピアノの学習にも活かせています
2020年はElmに貰ってばかりの1年だったので、2021年は何かElmに返せるようなことが出来たら嬉しいな…と思っています