mmag

ハマったことメモなど

社内でElixir勉強会をした

GMOペパボ社内で「おいお前らElixirやるぞ!!」なことをしました。

資料はこちら

一応社内のエンジニアに届くかたちで呼びかけはしましたが、諸々の都合で急遽開催したので、結果ワタシが同期4人に対して1時間ほど語りかける場になりました。続けていけば、Elixirのプロダクション採用という野望も達成されるのでは…。

喋った人としての感想

今回は誰もElixirを触ったことがないという前提でプレゼンしました。ここまで長く話をするのはほぼ初めてでしたし、"その人が触れたことのないモノを説明する"ということの難しさも知っているので、どういう構成にするか結構考えました。しかしながら、1度にやるには若干量が多く、第2回の内容を考え始めると「もっとココ喋っとかないとダメだったじゃん」と思い始め、多すぎて少なすぎる内容だったなとちょっと反省。

良かったかなと思うのは、「Rubyで言うとアレだよ〜」という感じで進めた点です。弊社の主な使用言語の1つはRubyなので、新卒といえどもある程度Ruby界隈の用語は通じるのです。あと最後に手を動かしてもらう簡単なお題を出したのは、聴いて終わりよりは学習効果が上がるかな思って入れました。まあまあ良かったのかな。

質疑

  • Q. 同じ名前の変数にブッ込めるのはシャドーイング
  • A. ごめんわからん。試してみて。

これは完全に自分の知識不足で答えられませんでした。試してみてもらった感じシャドーイングとのこと。調べてみるとそうっぽい。実際にプログラミングをするときは、こういうどっちだっけみたいなものが動作に影響する書き方は積極的に避けていくべきと思いますが、知識として知っておくと、より言語や計算機への理解が深まるのではと月並みなことを思いました。サンクスかすみん。

  • Q. 1 in 0..niltrueになるんだけど何これ?
  • A. 数値とAtomを比較すると、必ずAtomが大きいと判定される仕様です。number < atom < reference < functions < port < pid < tuple < maps < list < bitstringです。

帰ってきてから思い出したのでここで補足しておくと、今後どこかのタイミングでRangeの両端が異なる型だとエラーになるという仕様が追加されるようです。#2912

次回

諸事情により福岡へ行くので、第2回はもしかするとそこでやるかもしれません。今回の終盤に撒いた伏線を回収するため、次はメタプロをやろうかなと考えていますが、もしかすると不十分だった内容を第2回(または第1.5回)としてやるかもです。いずれにせよ、早くErlangプロセスやOTPの話をしなければ、「それRubyでできるよね?」と言われてしまうので、意識を高めていかねば。そして空調にも気を配りましょ。