読者です 読者をやめる 読者になる 読者になる

Scala 関西ビギナーズに参加した

2012/12/22 に Scala関西ビギナーズ 第1回 が開かれた。「みんなで Scala やろうぜ」という勉強会だ。

僕の中では最近関数型言語の興味が高まっていて、実際にバシバシ書いてみたいと思っていた。そんなときにこの勉強会のことを知って、Scala で課題を解く時間もあるみたいで丁度いいと思って参加することにした。

内容

まずは前半は @aa7th さん、 @mumoshu さんの発表。

@aa7th さんの発表は、Scala の概要とか長所短所など基本のお勉強。ScalaJVM で動作するプログラム言語です、とかふむふむ聞いてた。

と思いきや途中からコードゴルフに。

こんなダサいコードが、

val start = args(0).toInt
val end = args(1).toInt

var sum = 0
for (num <- start to end)
  sum += num

println(sum)

Scala ならこんなにおしゃれになります!

println((0 /: (args(0).toInt to args(1).toInt)) (_+_))

Scala すげー!

まあ別に短ければそれで良いって訳でもないし、記号が多くて正直やり過ぎの感はあるけど、でも短くする過程でさり気なく var (再代入可能な変数) が無くなってるってのがポイント。Scala はこうやって自然に関数型言語のメリットを受けられる言語だと思う。

というわけで、今回学んだ Scala の特徴は以下。

  • 手続き型言語のようにもかける
  • 関数型言語のようにもかける
  • 冗長な記述が不要
  • しかし型のチェックなど静的型付けの特徴は失われていない

書きやすくて、それでいて安全な言語という事で、やっぱり Scala 便利。

発表資料は slideshare で公開されてるので復習しておこう。

課題

前半でいい感じに盛り上がったところで、いよいよ後半の課題の時間。Project Euler の問題Scala で解いていった。

1問目はけっこう簡単な感じで「こりゃ楽勝、ばんばん解くぜ」とか思ってたけど、2問目からいきなり難しくなった。ごり押し計算では終わらなさそうなやつとかにくじけそうになりつつも、なんとか problem 1と4を解答した。

問題数としてはあんまり進まなかったけど、色々考えながらコーディングできたし、困った時に教えてくれる先生もいて、ほんとに勉強になった。

感想

Scala はやってる人が少ないとかとっつきにくいとか言われてるみたいだけど、こういうイベントがあると勉強するきっかけになるし、全体としても盛り上がると思う。今回の勉強会は良いきっかけになりました。開催してくれた @aa7th さん、ありがとうございました!

あとは、この手の勉強会は予習復習が大事だと思う。僕の目標はこんな感じ。

  • コップ本を読む
  • 何か Web サービスを作る

がんばる。

あと、今回の会場のオオサカンスペースは駅から近いし、おやつもあるし、楽しそう。普段の勉強の時とかにも使ってみたくなった。こっちにも注目。