LoginSignup
0
0

社内でElm勉強会をやってみた

Last updated at Posted at 2023-05-20

はじめに

自分がプライベートでElmを触り始め、公式チュートリアルを一通り終えて「Elmめちゃくちゃ面白え~~~~~」となり、開発途中の個人開発アプリをReactからElmにリプレイスしたりしていました。
そんなタイミングで、社内の若手でテーマを出し合って勉強会をしようという話になり、Elm勉強会を立ち上げてみました。
一旦キリの良いところまで終わったので、振り返りたいと思います。

参加者のレベル感

入社1年未満~2, 3年ぐらいの若手を対象にした勉強会でした。
1人はHaskell経験者で、他は関数型言語未経験者でした。
(なお、候補者10名弱に対し、参加希望者は3人でした...(´・ω・`))

いずれも前職などである程度開発経験があり、かつ言語仕様などをしっかり勉強する傾向のある人が集まりました。

やったこと

公式チュートリアルの日本語版を見ながら、私が説明していきました。
ハンズオン等はやっていません。
(チュートリアル内で出てきたコードの実行や書き換えなどはした)

週1回、1時間程度時間を取り、チュートリアルの以下を読み進めました。

  • はじめに
  • 言語の基礎
  • The Elm Architecture
  • エラーハンドリングのMaybeのみ
  • 付録
    また、公式チュートリアルではありませんが、Cmdの説明をしたかったので以下記事も説明させて頂きました。
    https://qiita.com/ababup1192/items/2b86ade96651716fc3a8

目論見としては、まずはWebアプリケーションや各副作用を学ぶ前の下地を整えようと思っていました。

工夫点

自分がプライベートでElmチュートリアルを進めていて詰まった点などを回避したり、詳細に説明するようにしました。

読む順番

私の時は最初横メニューの上から順番に見ていったのですが、「言語の基礎」の後に「TEA」の内容があり、
言語の基礎で基本的な文法は見たものの、型の定義や読み方などは全く分かっておらず読み進めるのに苦労していました。
なので、勉強会では「言語の基礎」の後に「型」を説明し、Elmのコードがある程度読めるようになってから「TEA」をやりました。
これは割と良かったと思います。

Elmの思想を伝える

私自身Elmの思想に共感したため個人で勉強する気になった部分もあったので、最初にElmとはどういう思想のもと作られた言語なのかを説明しました。
また、チュートリアルを読み進める中でも「こういう思想だからこういう仕様になっているんだよ」みたいな話をしました。
ただ説明するだけでなく、「なぜそのような仕様になっているのか」という部分を理解してもらうことで、今後Elmをやらないにしても他言語でElmの思想を活かして貰えたらいいなと思っていました。

積極的に寄り道をする

チュートリアルの途中で付録へのリンクが貼ってある部分は、参加者が興味ありそうであればそちらへの寄り道を実施しました。
また、「この関数の実装ってどうなってるの?」という質問があればパッケージのドキュメントを一緒に読んだり、
「こういうコード書いた時はどんなコンパイルエラーが出るの?」という疑問があればEllieで書いてみたりしました。

勉強会の区切り

やったことにも書きましたが、意図的に各副作用(HTTP, JSON, Random, Time)やWebアプリケーションまで進めませんでした。
これも私がチュートリアルを駆け抜けたときに、CmdやJsonDecoderあたりでかなり脳に負荷を感じたためです。
これらを飲み込む下地を整えるため、その手前までのチュートリアルを理解してもらおうと思っていました。

今後

今後は副作用、Webアプリケーションのところも読み進めていきたいと思います。
それが終わったら以下などをしようかな~と思っています。

感想

好きな言語のことを喋るのはかなり楽しかったです。
参加者も積極的に質問等してくれて嬉しかったです。
Elmには、意識が高い(というと語弊があるが)人が勉強したくなるような魅了があるな~と感じました。
仕事でElm使いたさが高まりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0