Elm Meetup へ行ってきました。 #elm_meetup
Elm Meetup に行ってきたよ。
ぶわーーーーーーっとメモったのを残しておきます。
内容に問題あったらご指摘ください〜。
メモ
Elmとは
Elmは、ウェブブラウザベースのグラフィカルユーザインタフェースを宣言的に作成するためのドメイン固有プログラミング言語である。Elmは純粋関数型言語であり、ユーザビリティ・パフォーマンス・堅牢性を重視して開発されている。静的かつ強力な型検査によって「事実上一切の実行時例外が起こらない」ことを売りにしている。 Wikipedia)
特徴は Wikipedia を読むだけでもかなり分かるとおもうのだけど、とにかく「事実上一切の実行時例外が起こらない」とうたってしまっているのがアツイ。
TEAとは
The Elm Archtecture
いわゆる Flux機構 の原型となった概念かな。
テストどうしてるのかな?
elm-test を使えば良いのかな?
@ababupdownba くんに聞いたらそのとおりとのこと。DOMを生成しないからテストも超早くて良い感じらしい。良いなあ。#elm_meetup https://t.co/aYpqmPbdeo
— -\/(オミ・エンドリクス) (@omiend) August 25, 2019
アクセント
elm のアクセントは?
— -\/(オミ・エンドリクス) (@omiend) 2019年8月25日
#elm_meetup
えるむすてっち
エンジニア向け刺繍ハンズオンはやらないw
Elm で刺繍用アプリを作ってきたとのこと。
刺繍は再帰構造。他分岐。
使っているのは Elm / SVG / CSS3 のアニメーション。
ポーカーアプリも作った。
自動で順序性が定義されると便利で嬉しいが、Elmには無い。
愚直に書くことも必要。
「私たちは絶対に絶対にPortsを頼ったりしない」
@y047aka さん
Ports とは Elm から JSライブラリを利用出来るもの。
ただし、Ports は利用せず Elm だけで完結させたい。
なぜなら
などなど
Elm にも D3 などを利用出来るいろいろなパッケージがある。
つまり、Elm だけでも十分実装出来る。
elm-mapbox すごい。
Elmのあるきかた2019
@sy_izumi さん
みなさん、Elmどうやって学んでますか?
深く楽しく学ぶためのリソースについて紹介
ellie
Elm 用のオンライングラウンド
外部パッケージインストラーやタイムトラベルデバッガがある。
オススメ書籍
- 基礎からわかる Elm
- WEB+DB PRESS VOL.111
elm-spa-example
リチャード・フェルドマンによる実践的なSPAアプリケーション
参考に出来るコード例が豊富。
https://github.com/rtfeldman/elm-spa-example
izumiSy/slipit2
動画で学ぶ
リチャード・フェルドマン
わいわい
ミートアップなどなど
海外カンファレンスも良いよ
に〜と のためのキマるスタイリング🐐
@arowM_ さん
elm-neat-layout を使ってスライドも作ってるよ。
NEAT = きちんとした、こざっぱりとした などの意味
余白は難しい。
elm-neat-layout をつかうと、とっても NEAT になる。
型自体に余白の大きさが定義されてしまっている。
別々の型だと余白の合体が出来ない。(コンパイルエラー)
つまり、型でレイアウトを定義していく。
型が合わないとレイアウトが崩れる=その前にコンパイルエラー。
静的型付けでデザインしてくみたいな。
レイアウトの話
CSS を置き換えるものではない。
CSS のつらいところはレイアウトするところ。(横並び、中央配置)
どんな人が使うと良い?(質問)
CSS 使いたくない人には向いてない。→ elm-ui 使う。
CSS 使いつつ、レイアウトを NEAT に構築したい人に向いている。
Elm と DRF でニコカレを作ってみた話
@matspod さん
ニコカレ、作りきれなかった。
BeProud でフルスタックエンジニア。
Elm の覚え方としては、公式ガイドの課題を解いたり、Braian P. Hogan 氏の Expericises for Programming
天気予報アプリを作った - openweathermap.org
でも天気予報アプリだし、外見ればわかるし・・・。(会場内大爆笑)
ニコカレ作った。
苦戦したこと
I was coding the entire time and all the code worked on the first try.
しんどくならないモジュール分割
misoton さん
普段は Unipos で Elm 書いている!
モジュールの分割について
モジュール分割は、無闇矢鱈に分割してはいけない。来たるべきときに分割するべき。でも、やっぱりいつかは分割しないといけない。
親モジュールと子モジュールの関係について。
Nuxt のProps とか みたいな話。
TEA++
@jinjor さん
基礎からわかるElm 著者!
Elmの歴史についてのお話。
- Function パラダイムでViewを作る!
- Reactive Programming をやめて FP だとよ言っちゃった。 などなど
Elm のアーキテクチャーはだいぶ良くなったけど、改善の余地がまだあるとのこと。
elm-spa-exampleについてのお話
Session にグローバルな情報があるので、ユーザーなどの情報を取得できる。なかったら NotFound にするなど。
ボイラープレートが増えてしまう。
うーん、ここらへんは実際に書いて体感しないと難しい話かも。 ただ、Nuxt と似通った問題もありそう。
Elmでチーム開発。~TEAに導かれし者たち~
@ponkikizzz さん
資料 + 2019/08/25 22:14:17 update
新プロダクトの一部 Elm で作った(2ヶ月)。
Elm を導入してみてどうだったかな話。
Angular 実行時例が結構つらい → 堅牢な Elm 使おうぜ → 仕事でも書きたいだけなんじゃ? → メリットを出してくれた。 → フォームのテストも簡単に書ける → 品質の高いコードを重視したい → Elm 採用
TEA の恩恵を存分に受けた。シンプルでわかりやすく、TEAい導かれるままやっていったことで、初心者でも開発に入れた。
1ヶ月もやれば仕事が回った。
TEAさえ理解すればある程度書ける。
ユーザーとのやり取りに集中できる。
開くべき場所が決まっている安心感がある。設計思想がずれてこない。
チームにElm を導入するとシンプルで素晴らしいTEAに導かれることで、初心者でもすぐコードが掛けて楽しめる。安全なものが作れる。
ものづくりをもっと楽しめる。
トークライブ
- @ababupdownba
- @jinjor さん
- @miyamo_madoka さん
- @arowM_ さん
- @gada_twt さん
Elm歴・始めたキッカケ
@jinjor さん
2〜3年。
仮想DOMが早いという Evan さんの記事がキッカケ。
@miyamo_madoka さん
5年くらい前から。4年前に FRP の記事を書いていた。
Webの勉強をする中で、色々見ていたら Elm に行き着いた。
@arowM_ さん
3年くらい。
JS 書きたくないから関数型で書きたい。PureScript を書いていたけど、なかなか・・・。
その時 Elm の大きいアップデートがあり、これが欲しかったから。
@gada_twt さん
Scala や Elixir を書いていた。Dも使っていた。
社内勉強会でいろいろ触れているうちに Elm を知った。
React/Redux やってみたらめんどくさかった。Elm やってみたら簡単だった。
@ababupdownba さん
4年くらい。
日本でやっている人を探したら、みんないい人だった。
コミュニティーへの発展に貢献したくなった。24H AI。
コミュニティーについて思うことは?
@gada_twt さん
Elm Meetup Tokyo でコミュニティーの将来を知った。
今回80人以上あつまることが感慨深い。
ハンズオンもやっていたり、コミュニティーが盛り上がっているので嬉しい。
WEB+DBで記事が出てからこれだけの盛り上がりがあるように思いますが、どうですか?
@jinjor さん
こんなことになるとは、ありがとうございます。
始めの勉強会?は15人。
型クラス無いから〜と離れて行く人もいたりした。
記事を書いたら人が増えてきた。嬉しい。
普段実際の業務ではどういうところで Elm を書かれていますか?
@jinjor さん
今の会社では1年ちょっとで、特に何事もなく書いている。
一年以上やっていると普通で、逆に特に言うことない感じです。
@miyamo_madoka さん
業務的なところではあまり話せない。
@arowM_ さん
出版社を作ったので、ホームページを Elm で作ろうとしている。
他の会社様から「Elm で作って欲しい」というお声がけをいただく。
@gada_twt さん
社内勉強会やったり、Qiita やったり。
普通になると書かなくなる?言うことがなくなる。
ポジティブに捉えると、普通に掛けて普通に仕事になる言語だと思う。
バックエンド: はElixir API: はGraphQL Front: Elm
GraphQL x Elm のライブラリがある。
これかな??わからん。 https://package.elm-lang.org/packages/dillonkearns/elm-graphql/latest/
やっていれば普通になる Elm...
登壇している人たちはみんな「普通」になってしまう。
逆に言うことがなくなる。
それって洗練されたモノだよね。
初心者でも「普通」まで持っていければ、レビューも任せられるようになってしまう。
からの、採用の話
@arowM_ さん
Elm の経験は見ない。いまなにが書けるかは関係無い。
どちらかと言うと、「一週間でマスターします」みたいな話。
本質的に物事を見れる人。
なんでもかんでも Elm でやる必要はない。
割と経験は見ないところが多いかも。
@gada_twt さん
現在絶賛開発中&エンジニア大募集中。
Elm 書いてみたい人是非。
Elm はVerision Up ごとに機能が減っていき、シンプルになることでアプリ開発に集中できる。
書けるようになってしまう言語。
@ababupdownba さん
Elm 未経験者でも1からみっちり鍛えられる。
教えるのが好き。
Elm の嫌いなところ、つらいところ
ここらへんは色々聞き逃しちゃったから適当。
@miyamo_madoka さん
あの範囲内で使っているから不満はない。
アレ↓ https://qiita.com/arowM/items/dfb38d1c5f3dfde8b8bf
Ports を発行するときにIDをつけるのがちょっとめんどくさい的なお話?
@jinjor さん
良いも悪いも「遊べない」。ガッチガチ。マクロ作ったりみたいなことは出来ない。
@gada_twt さん
テンプレート生成が出来ない的な。ボイラープレートだらけになる。
@jinjor さん は改善できないかなといろいろ試されていそう。
エディターの機能やCLIの機能を駆使しつつ、腕力で解決する言語。
考えるところがない。(遊ぶところが無い)。
逆に言うと、それで製品開発に出来る。そこに幸せを感じることが出来る。
@ababupdownba さん
他の JS のフレームワークを使うと、Redux を使ったりしないといけなくなる。その議論をしているくらいなら、Elm のボイラープレートで良いのかな。
今後Elm に期待すること
@miyamo_madoka さん
期待したら駄目だと思っている。
バージョンで機能は削られているが、私はついていく。
@jinjor さん
機能の発展に対して期待しないということですよね?w
むしろ機能を減らしていくが、現実的に必要なところで追加されていくのが嬉しい。
言語としてシンプルなので、「すべての関数型言語の基盤になるといいなあ」と思っている。
andthenを100回書いてツラいってなって、モナドを知るっていう順番で覚えたい的な話。
@arowM_ さん
Haskell 書いてて、 Elm に行って、関数型言語フリークになった。
Elm っぽい書き方だとベタ書き。
Elm 以外で注目している言語はありますか?
@gada_twt さん
F# 面白そう。
Elixir を業務で書いているのでずっと注目している。
Elm と親和性が高いので両方やっている人が多いイメージ。
Elixir はパターンマッチが強い。バイナリーフォーマットでもパターンマッチ出来る。IoT関連でも使ったり。
@jinjor さん
TypeScript の話。使い分け。比較してみて。
主にテストなどでしか使わないので比較は出来ない。
サーバーサイド Elm
Elm Euro で見た、Lamdera
?というのでフロントエンドとサーバーを Elm で書ける。メッセージを共有できる。
飯食える?
@arowM_ さん
いろいろあって、めっちゃ食える。
これから Elm を始める人へ。
@miyamo_madoka さん
勉強用のリポジトリがあるので、是非やってみてください。
https://github.com/miyamoen/elm-form-decoder-katakata
ガイドの翻訳のお疲れ様会が無いので、やろう?だれか?
@ababupdownba さん
いろんな人にお願いした。
@arowM_ さん
1人で翻訳をするのではなくて、コミュニティーで翻訳をするのが大事。
1人で書いてもわからないところが出ている。
(いい意味で)指摘しあうのが大事ですね。
@ababupdownba さん
コミュニティーで技術書展へ出したりなんかしたりしたいですね。
@gada_twt さん
Discord 来て〜!質問してね〜!
是非公式フォーラムの Discourse とか公式 Slack とか物怖じせずに Join してくださいね!
意外とゆるい質問も多いし、第一線で活躍しているエンジニアが返答してくれる。
@ababupdownba さん
Elm 始めたばかりの人は、アウトプットがコミュニティーへの貢献になる。
初心者しか躓かないし、ベテランはどこで躓くかわからない。
是非アウトプットを!
質問の仕方
@y047aka さん
Elm について質問をしたいときに、どう切ったら良いかわからず怖い。
どうやって質問すればよいのか?
@ababupdownba さん
作りたいものをイメージとして伝えて貰えれば、TEA に乗っ取って応えられる。
@arowM_ さん
Distにコードを貼ってくれれば応えやすい。
@ababupdownba さん
恥かしがらずにはってくれれば24時間タダで教えますw
Elm 始めたばかりで読書会などを開いていただければ、Elm やってる人は全員暇なので行きますw
是非気軽に勉強会を開いてください。
懇親会
こんしんかいへ〜