the industrial

ブログと言うより自分のためのメモ以外の何モノでもないです。でも読んでくださってありがとうございます。

Elm Meetup へ行ってきました。 #elm_meetup

elm-jp.connpass.com

Elm Meetup に行ってきたよ。

ぶわーーーーーーっとメモったのを残しておきます。

内容に問題あったらご指摘ください〜。

メモ

Elmとは

Elm https://elm-lang.org/

Elmは、ウェブブラウザベースのグラフィカルユーザインタフェースを宣言的に作成するためのドメイン固有プログラミング言語である。Elmは純粋関数型言語であり、ユーザビリティ・パフォーマンス・堅牢性を重視して開発されている。静的かつ強力な型検査によって「事実上一切の実行時例外が起こらない」ことを売りにしている。 Wikipedia)

特徴は Wikipedia を読むだけでもかなり分かるとおもうのだけど、とにかく「事実上一切の実行時例外が起こらない」とうたってしまっているのがアツイ。

TEAとは

The Elm Archtecture

いわゆる Flux機構 の原型となった概念かな。

テストどうしてるのかな?

elm-test を使えば良いのかな?

アクセント

えるむすてっち

@miyamo_madoka さん

資料

エンジニア向け刺繍ハンズオンはやらないw

Elm で刺繍用アプリを作ってきたとのこと。

刺繍は再帰構造。他分岐。

使っているのは Elm / SVG / CSS3 のアニメーション。

ポーカーアプリも作った。

自動で順序性が定義されると便利で嬉しいが、Elmには無い。

愚直に書くことも必要。

「私たちは絶対に絶対にPortsを頼ったりしない」

@y047aka さん

Ports とは Elm から JSライブラリを利用出来るもの。

ただし、Ports は利用せず Elm だけで完結させたい。

なぜなら

  • パターンマッチとかパイプラインが使えるから
  • 宣言的に記述出来る
  • テストやデバッグをより簡単に出来る
  • 第一言語としてのElmを提示することが出来る

などなど

Elm にも D3 などを利用出来るいろいろなパッケージがある。

つまり、Elm だけでも十分実装出来る。

elm-mapbox すごい。

Elmのあるきかた2019

@sy_izumi さん

みなさん、Elmどうやって学んでますか?

深く楽しく学ぶためのリソースについて紹介

ellie

Elm 用のオンライングラウンド

外部パッケージインストラーやタイムトラベルデバッガがある。

オススメ書籍

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 さん

資料

DRF はあまり知名度無いかも。(1人くらい)。

ニコカレ、作りきれなかった。

BeProud でフルスタックエンジニア。

Elm の覚え方としては、公式ガイドの課題を解いたり、Braian P. Hogan 氏の Expericises for Programming

天気予報アプリを作った - openweathermap.org

でも天気予報アプリだし、外見ればわかるし・・・。(会場内大爆笑)

ニコカレ作った。

  • API: Django Rest Frameworkを使った。 Netlify Lambda+DBも行けそう。
  • Client: create-elm-app
  • CSS: Tailwind.css

苦戦したこと

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に導かれることで、初心者でもすぐコードが掛けて楽しめる。安全なものが作れる。

ものづくりをもっと楽しめる。

トークライブ

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 で書ける。メッセージを共有できる。

https://github.com/Lamdera

飯食える?

@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

是非気軽に勉強会を開いてください。

懇親会

こんしんかいへ〜