Elm…愛してます。
こんにちは、僕は2020年の4月からElmからエンジニアのキャリアをスタートさせました。
かれこれ8ヶ月がたった今、ぴーぴー(わからへんー!)って泣きながら手を動かしていた赤ちゃんレベルから、ようやくよちよち歩きをしながら毎日開発しております。
###そんな僕はElmが大好きです。
右も左もわからないあの日から、共に歩いてきました。
Elmは特にバージョンも変わってないので、歩いてたのは僕だけというガチレスは凹みます
今日はElmの愛おしい部分を語らせてください。
Elm愛を語るにはとんだ若造で恐縮なのですが、いかんせん僕はElmしか知らないのです。
(知らないと言うと語弊がありますが、実務で使える技術とは程遠いです)
なので、説明として間違っていることもあるかもしれません、感覚的で、抽象的な説明が多くなってしまうかもしれません。
それでも、恥を忍んで皆さんにElmの楽しさや面白さをできるだけ言語化し、お伝えしたいなと思うのです。
知ってほしい「Elmの、ここが愛らしいんだって。」
1. 厳しさと優しさを兼ね備えた、信頼できるイイヤツ。
Elmは何に厳しいって、**「型」**にめちゃくちゃ厳しいです。いわゆる静的型付け言語に分類されていて、いかなる例外を許さない、なんともストイックな言語です。Elmの公式HPでも、「実行時エラーは起きない(No Runtime Exceptions)」と明言し、特徴の第一個目に書いてあるくらいです。なんとも心強いですね。実際、僕の開発経験上コンパイル時に必ずElmのエラーに関しては検出してくれます。
それに、厳しいだけじゃないんです!実はすごく優しい部分も持っていて、コンパイル時のエラーメッセージが実に丁寧です。「ここの型とあそこの型が合ってないよー!こんな風に直してね!」くらいのテンションで教えてくれるのです。
「Elmってマイナーだし、とっつきにくそう…」って始めは思ってたのですが、個人的には、このコンパイルエラー時の優しさがあるからこそ初心者にElmを勧めたいくらいです。
2. 洗練されている(気がする)。
これは感覚的な部分にも近いかもしれません。なので、少し具体的にElmの数ある特徴の中でも僕が好きなカスタム型を紹介させてください。Elmにはカスタム型といって我々の手によって”型”を定義することができる特徴を有しています。(他の言語でも類似のものはあるそうですね!)
例えば、カスタムタイプを使えば「メッセージの送信ステータス」というのを表現する必要があるとき、
type alias Model =
{ sendMessageStatus : SendMessageStatus
}
type SendMssageStatus
= ReadyToSend String
| Sending
| Sent
こんな風に表現することができます。
昔の僕はこんなに不格好な書き方をしていてElmの特徴を全然活かしきれていませんでした。(レビューで恥ずかしい思いをしたと同時に、めちゃくちゃ感動した覚えがあります。)
type alias Model =
{ messageToSend : String
, isSending : Bool
, isSent : Bool
}
これだと、事実上ありえない状態(isSendingとisSentが同時にTrueになることはないはず!)が作れてしまうのでElm的にはナンセンスなModel設計なのです。いやーElm...かっこいいですね。
3. まだあまり注目されていない大物感。
Elmってまだまだ知名度低いなと感じます、ぶっちゃけ。社外のエンジニアの友人とかに「Elmで開発してるよ!」とかいっても、「Elm...はて?聞いたことはある気が...」くらいなことが多かったりするんです。おまけに、海外のとある記事によると、「2019年に今一番学ばないほうがいい開発言語で1位」を獲得してしまう始末。
「Elmは思ってるより悪くねーよ!!」と浅はかな僕は、ノーロジックで感情的に叫びたくもなりますが、そう思われているのも事実です。
でもなんだかそんな知名度の低さや人気の無さが嬉しかったりする気持ちもあるんです。「なんだかElmは一味違う。わかる人にはわかる。」そういった玄人好みの雰囲気を醸し出してくれている気がするのです。
みんながみんな、いいよ!最高だよ!っていうモノとか映画とかって逆に惹かれなかったりしませんか?笑 今でこそ大人気ですが、きっと初期のテスラも邪道と見られていたはずです。**「今に見てろよ!Elmはビッグになるからな。」**って、根拠もないのになんかそんな感じです。
もっともっと魅力があります!
今この記事は僕の背伸びしていない等身大で伝えられるElmの精一杯です。正直に言って、まだまだ浅いです。Elmの奥深さはこんなもんではありません!正直悔しい!
弊社にはElmに精通した、本当に尊敬できるメンバーが沢山います。**週に一回は”びわ会”という名で社内勉強会も開催しています。**そんなメンバーと切磋琢磨しながらこれからも精進していきます。
あとがき
改めて8ヶ月間を振り返って、自分が「Elmとどう向き合ってきたかな?どんな思いを持ってたかな?」というのを整理してこの記事を書きました。
ここまで、すごくポジティブに書きましたが、実際のところ未経験からエンジニアにキャリアチェンジをして、開発を始めた頃は七転八倒で、何度も開発に苦しんでいたのも事実です。幾度となく思い通りに行かない悔しさや、わからないことに対するフラストレーションを溜めてばかりでした。その度に周りに助けられました(感謝)。またそんな話も記事にしようかな。
おわり