Elm Tokyo Meetup #4 に行ってきた
8月22日にあった Elm Tokyo Meetup #4 に行ってきました.
すごく楽しかったです.
いきさつ
実は今,ひと月ほど東京に居まして,「勉強会行き放題じゃーーん」というモチベーションで,言語系の勉強会を探しての第1弾.
Elm は Haskell のシンタックスにしたような AltJS という認識しかなかった. ただ,たまたま勉強会のある日のちょうど朝から,仕事で Elm を使い始めて,「Elm は完全に理解した」という捨て台詞を吐いてから退社してきた.
Elm
Elm は JavaScript を生成する静的型付け言語であり,より簡単に,安全に Web アプリケーションを開発するというモチベーションで作成されたようである(要出典). 関数型プログラミング言語でもあり,シンタックスが Haskell に似ている点でも有名だと思う.
ただ,決して「Haskell のシンタックスにしたような AltJS」を作ったわけではなく,Haskell のシンタックスがたまたま良いと感じたから似せただけで,Haskell にある機能(例えば型クラスや Kind など)を何でもかんでも実装するわけではないらしい(要出典).
(一日使ってみて) Elm アーキテクチャが新しい思想で,そのためコードを読むのに多少時間がかかったが,コンパイラが丁寧に教えてくれるので JavaScript よりは全然簡単に書けた.
あと,コンパイラが Haskell で書かれている のも個人的には感動ポイント. Elm が流行れば,Haskell 人口も増えるに違いない!
Elm Tokyo Meetup
第3回以前は別サイトで管理されてるみたい. 消しちゃったご様子...
ざっと見た感じ,毎回 Elm に関するプレゼン大会って感じだ. 1-3回がひと月置きにやって,1年半ほど経ってからの第4回. みんな忙しかったのかしら.
ハイライト
飛び入りLT含めて,プレゼン3 + LT4 あった. 資料は connpass に結構上がってる.
今回は事前アンケートで初心者が半分ぐらいだってわかってたみたいで,結構初心者向けの発表をしてくれた(感謝).
あと,Togetter でまとめてみた(一度やってみたかった).
全体的に雑にメモしたので,抜けは多いと思います. すいません.
Designing Elm
遅れて行ったせいで前半は聞きそびれた.
発表者は jinjor さん. Elm のこと一番分かってる日本人らしい(要出典).
内容は Elm について初心者向けにイロイロってかんじだった.
- Elm は関数型プログラミング言語だけど(Haskellなんかに比べて)とっつきやすいはず
- イミュータブルと純粋関数型プログラミングぐらいしかサポートしてないし
- Lazy とか Type Class とか Kind とかは無いからね(今のところ)
- Elm は Elm App のフィードバッグを受け止めて成長する(まだメジャーリリースしてないから?)
- たぶん 0.17 で導入された Subscriptions とかをイメージすればいいのかな?
- Issue の書き方のコツがあるとかないとか
- 最悪,jinjor さんに添削を頼めばいいらしい(笑)
- 「基礎からわかる Elm」出版予定!
- 0.19 待ってるため遅れてるらしい
あと,質問があったので 0.19 の話を少ししてくれた.
複雑化するUIにどう立ち向かうか
発表者は arowM さん. Haskeller でもある気がする.
内容は,前半は Elm の思想についてで,後半は elm-css-modules-loader パッケージの話を前半の思想と実例を合わせて説明してくれた.
スライドも Elm で作ったらしい. すごい. おかげで,後半分はできてなかった(笑)
- Elm は今までの AltJS とは成り立ちが違う
- 今までの多くの AltJS は先にイケてる言語(基になる言語)があって,その言語使いのための AltJS
- Elm はそのような言語は無く,ただ純粋にWebアプリのフロントエンド制作を楽にするための DSL
- 目的が先にあって,手段は重要ではない
- 実例としてどのように Elm 製スライドを作ったかを説明
- 吹き出し読み込み中(もどき)は SVG
- 吹き出しアニメーションは CSS
- そうすれば楽だから(目的駆動,手段は二の次)
- CSS は elm-css-modules-loader を使用
- 他のパッケージ(例えば
elm-css
)もあったけど - CSSの疑似クラスかなんかを使うために elm-css-modules-loader にしたらしい
- あと CSS に厳密な型を付けなくていいからとか
- 他のパッケージ(例えば
Elm is a good teacher
発表者は hosomichi さん. 今回の会場を提供してくれた Fringe81 のエンジニア.
内容は Fringe81 の世にも珍しい Elm プロダクトに関してで,Elm をプロダクトに導入したおかげで,エンジニアがこんな風に変化したよって話だった. スライドはコチラ.
- Elm は採用している機能や概念が少ないため思考に専念できる
- オブジェクトや継承もないし,型クラスもないし
- 関数は全部純粋だし,フレームワークは Elm Architecture だけだし
- しっかり設計を考えて書かないと Elm 先生(コンパイラ)に怒られる
- 型で守られてる
- 例外も
Maybe
型でしっかりと処理しないといけない - JSON のパースもよしなにはやってくれない(JavaScriptとは違って)
- 例外も
- いい先生や...
LT
懇親会中のだったので,雑にしか聞いてなかった(笑)
- ElmとJavaScriptを組み合わせたアプリケーションの作り方 - Qiita
- Style Elements 使ってみたよ! - Qiita
- あと ABAB↑↓BA さんが研究も兼ねて作ってる Elm アプリを紹介してくれた
他にもう一人ぐらいいたかも...忘れた,もしいたらすいません.
感想
楽しかったです. やっぱ関数型良いですよね(雑). 次回も楽しみです. あと Elm 本も.はよ.
好きな Haskell はフロントがどうしても弱く感じちゃうので,フロント用のサブウェポンとして割と真剣に Elm やっても良いのかなと感じた. コンパイラは Haskell 製だし,何かコントリビューションできたらいいなぁ. まずはコンパイラを読んでみよう.
~あと懇親会で,hosomichi さんに Elm アーキテクチャを学ぶ日本語資料として Elm Tutorial を教えてもらった(感謝).~ 残念ながら Elm Tutorial はリンク切れっぽいです(今であれば Elm Guide がいいはず). Elm アーキテクチャの概念的なことを勉強してみたいのです.
それと,やっぱユーザーが少ないためユースケースで検索しても中々ヒットしないのが,個人的に使っててつらい. バージョンあがると一気に腐る可能性あるけど,みんなもっと記事を書いてくれるといいなー(お前がやれ).
おしまい
あと,完全に私事だけど,1年ぶりに師匠と会って話せてよかった.