概要
本日、株式会社ビズリーチ様主催の渋谷JVMに行ってきました。そして、LTをやりました。場所はビズリーチ様のオフィスでございます。勉強会と発表の場をご提供くださったビズリーチ様に深く感謝いたします。
いつものことですが、無論、発表内容はブログにまとめております。一部の発表はSlideshareなどにアップロードされておりますので、そちらもご覧ください。
僕のLTの内容はこちらとなります。
内容としては、こちらのQiita記事の紹介となっております。
参加の経緯
JVM自体は、仕事でScalaのプロダクトに携わっていることと、以前Javaのクラスファイルの勉強会に参加したことから、自分の中でなんとなくの関連性がありました。ので、JVMという言葉に釣られて参加しようと思ったのですが、勉強会の中身を見てみると、テーマはJVMそのものやクラスファイルあたりの低レイヤーなものではなく、JVM上で動く言語についての勉強会のようでした。
Scalaの話が出てくるようなので、参加しようと思ったのですが、参加ボタンをクリックしようとした時点で既にキャンセル待ちの状態で、LT枠を見てみるとまだ枠があるので、LT枠で参加しようと思った次第です。
参加枠がないから発表枠で参加しよう!というのは、なんかたまにやるメソッドなのでそんなに抵抗感はないのですが、JVM言語というScala以外にはほとんど馴染のない言語そのものがテーマの勉強会だったので、大丈夫かなっていう感じはしていました。
感想
Scalaについて
他の言語のことはあまり良くわからないのでScalaについての感想ですが、竹添さんの仰るとおりだと思います。異論はありません。
オダスキー先生が志向されているように、Scalaは関数型言語っぽくも書けて、オブジェクト指向っぽくも書けて、Javaっぽくも書けるようになっているハイブリッドで実践的な言語で、(軽量言語とは別の意味で)間口の広い言語なのだと実感しております。
LTについて
ここで発表者たる僕の身の上話をしますが、僕は大学を卒業するまではプログラミングはほとんどやったことがありません。大学を卒業してからプログラミングを始めたクチです。
現職はScalaですが、それまではPHP Ruby JavaScript Pythonといわゆる軽量言語を中心に仕事をしておりました。なので、大学を卒業してから今まで関数型言語はおろかコンパイル言語さえ触ったことがない状態でした。
LTではそういう経緯を交えつつ、Scalaの関数型言語っぽい機能をHaskellから移植した話をしました。で、マサカリをくださいで〆たところ、それまでの発表ではあんまり質問が飛んでこなかったのに僕のところにどんどんマサカリが飛んできたのでした。これはちょっと謎です。
これについては懇親会でも@kamekoopaさんとちょっと話をしましたが、Scalaは通常はJavaの人がbetter Java的に始めるパターンが多くて、僕みたいにほとんど全くJavaを経由せずに軽量言語からいきなり関数型言語をかじってScalaを始める人は結構レアらしいです。
そういうのがあるので、たぶん色々マサカリが来たのだと思います。質問内容は、Scalaで可変長引数は出来るのか、PHPer視点から見るPHPとJavaの文法上の類似点、Scalaのカリー化は厳密にはカリー化じゃないといったご指摘をいただきました。ありがとうございます。
あと件のQiita記事についてですが、再帰でごにょごにょするとスタックオーバーフローになるので、末尾再帰でやったほうがよい、というご指摘をいただきました。これにつきましては、そもそも再帰にあまり馴染のない人間にとってはいきなり末尾再帰では難易度が高すぎるのではないかと思っております。
考えてみると、Javaの人がかなり多いところにいきなりJavaの人ではない人間が突然カチコミをかけたような感じなので、いささか勉強不足かつ準備不足な感じが否めませんでした。
そういったマサカリに対し、いかに精神的なダメージを少なくしつつ自分の技術的な成長につなげることが出来るかが、今後の鍵になるのではないかと痛感しております。
最後に
重ねて申し上げますが、株式会社ビズリーチ様と、Haskellラムダ超入門の作者 id:7shi さんに深く感謝いたします。ありがとうございました。