日々常々

ふつうのプログラマがあたりまえにしたいこと。

Scala本読書会で読んできました

プログラミングScala

プログラミングScala

集まってScalaの本でも読みましょーという集まり、対象は「プログラミングScala」通称バク本です。今回の範囲は2章から4章でした。

進めかた

  • 時間を区切って一章読む
  • 気になった点とかの雑談
  • 次を読む

非常にシンプルですね。1ページ2分換算でざーっと読む感じです。慌てて読むってほどでもないですが、ぼーっとしてると時間が足りなくなる程度のペースかな。うっかり脱線しちゃうと時間が足りなくなります。

内容

2章 Scala言語の利点…Javaの知識を前提としてScalaの紹介になります。「こう書きますよ」と言った内容です。型推論により型アノテーション*1の冗長な記述を軽減することが出来、記述性と可読性が向上します*2。実際は他の変数を渡すなどして推論させる*3とかになるらしい…です。型アノテーションはインタフェースの型を使用したい時などに明示的につける事もできます。インポートが何処ででも出来、かつインポートに別名をつける事ができる。読んだ時は「別名なんてつけないんじゃないの?」と思いましたが、JavaScalaで名称の被るクラス等があり、そういう時は別名を付けられると便利ってことでした。

3章 Scalaプログラミングの基礎…演算子も含めて全てがメソッド、省略できるもの出来ないもの、優先順位と束縛、ifが値を返すこと、for式、パターンマッチとScalaっぽさが出て来ました。表現力豊かな構文を支える仕組みが解説されています。Scalaでシンプルに書かれているものは「何をしているかは分かるけれど、なぜそうなるのか解らない」と言う印象を受けますが、そういう時は省略されているものを全て展開すれば「なるほどー」と思うこともしばしばです。読む上で必須の基礎知識ですね。ifが値を返すため、三項演算子はありません。書いてもコンパイルエラーになります。三項演算子便利なのにーとか思ってたりしますけど、ifが値を返すなら別に要らない気もしますね。

4章 トレイト…実装のあるインタフェース的なトレイトの定義と使い方についてあれこれ。読んでると何となく判る気もするのですが、適切に使用する自信がありません。一度トレイト厨を患ってみたほうがいい気がしました。記述自体は難解ではないのですが、abstractをつけてsuperの実装を期待する、実装の方向が逆な感じで唸りました。

感想

序盤と言う事もあってか「へーそうなんだー」で済んでしまうものも多かったなと。けれど読んだ内容と実際との話を聞かせて貰えるなど、初心者には非常に勉強になりました。
始まる前は「1時間近く黙々と読むのってどーなの?」とか思ったりもしたのですが、いざ読んでみると思った以上に時間があっさり過ぎて驚きました。周りの方々がまじめに読んでるとサボれないですね!
Scalaで何かが出来るって所までは至ってませんが、面白いことと難しいことは判りました。何とか活用できるように勉強したいと思いますが、これを業務で活かすのは少々厳しい気もしました。一部の業務ロジックだけ書く感じだと活かせているとは言い難いですし…うーん。まー言ってしまうと、Javaや他言語も活かされてないのでしょうけど。

とりあえず次回も楽しみです。6月になるみたいですけど。

*1:Javaで言う型パラメータ

*2:Java7のダイヤモンドが残念に見えてしまう…

*3:総称型を使う時は型アノテーション自体あまり登場しない?