Online.sg 第06回 「Scala」に参加した

本日、オンライン勉強会Online.sg 第06回Scala」に参加した。

Scala入門 〜手探りで(yayuguが)学ぶ関数型言語〜 - id:yayugu

Java のコードを Scala のコードに書き直したものを比較しながら見ていく形式。その前にコードを読むのに最低限必要な知識のレクチャー。
今回のプログラムの題材は「財布の小銭を減らす払い方ゲーム」。所持しているコインの種類と枚数、そして支払金額から最終的な所持コイン枚数がもっとも少なくなるようにはどのように払えばいいか、を解くプログラム。
参考に Ruby のコードもあって、しかも Ruby のコードが一番短いという…まあそこは言語経験の差だよね。誰だって使いなれた言語が一番書きやすい。

一通り見たところでGUI版を動かすデモを行う…はずだったのがまさかのトラブル。こういう時、すごい焦るよね。わかります。がんばれーとか言うと余計焦ると思われるので心の中で応援してました。
トラブルの原因はソースコード文字コードShift_JIS で書かれていたんだけど、Scala はデフォルトでは UTF-8 として処理するらしいので -encoding オプションでソースコード文字コードを指定するかソースコードUTF-8 に変換する必要があった。今回は後者で対応。
こういうトラブルも(発表者には悪いですが)生のいいところ。おかげで「文字コードには気をつけろ」と言う教訓が増えた。

そして最後はなぜか Ruby 談議になった。Rubyist 多し。

感想

元々 Scala は少しかじっていたので(と言ってもまだまだ実用で使えるレベルではないけど)、そこまで難しい内容ではなかったかな。GUI のサンプルが見れたのは良かった。
あとタプルで _1 とかで要素にアクセスできるのは知らなかった。タプルはマッチングするものだと思っていたので。

こういう機会がないとなかなか勉強とかできないので、そういう意味で勉強会は絶好の機会。そろそろいい加減 Scala の勉強を再開したいところ。