『Scala実践プログラミング』を一通り読み終わった。
Scalaの初心者がステップアップするには、そしてJavaからScalaへの移行を考えるにはとても良い本だと思う。
上級者にとっても、デザインパターンとか継続とか、他のScala本ではあまり見られない(と思う)内容は興味深いのではないかな?
まずはさらっと1章でインストールと簡単な使い方、2章で基本的な文法のおさらい。基本なので他のScala本でも触れられている事だけれども、けっこう色々網羅されているし、「あれ、こんなのも出来たんだ!」という発見もある。ただ、みっちり詰まっているので、Scalaを全く知らない人には少々厳しい気もする^^;
で、3章から徐々に本領発揮。関数型言語の特徴について。
4章、ちょっとだけだけど他言語との比較。Javaとの比較はよく聞くけれど、HaskellやらOCamlやらとの比較は初めて見た。コーディング例も載ってて、まぁ見慣れてないから違和感あるわな^^; 頭も硬くなってきてるし、やっぱり慣れているALGOL系(C言語やJava)に近いScalaが分かりやすいやw
で、5章・6章・8章のテーマが良い。この辺りがタイトルの「実践」をイメージしている感じ。
JavaからScalaへの移行を考えると、当然現在Javaで行っている業務・やり方がScalaでどうなるのかが気になるだろう。コンパイル方法・IDE・コーディング規約・テスト方法・Webフレームワーク、そういったものに触れられている。実際に業務に使うなら、どれも重要なポイント。
(自分は最近Scalaの勉強をしてきたけれど、「Scalaの文法」を勉強してきたのであって、実際的な使い方はあまり考えてなかったなーと感じた)
(しかし、IntelliJが見事にスルーされているのは何故だ!?w)
それぞれ文量が少ないのが惜しいけれど、まぁそこを深堀りしていったら、別の本が書けちゃうだろうな^^;
9章のScalaとJavaの連携も、実際に業務で使うときには気にかけなければならないポイント。
7章のデザインパターン、目の付け所が面白い。Javaのデザインパターンの置き換えと、Scala独特のパターン。(自分はJavaのデザインパターンもあまり理解してないんだけどね(爆))
7-2-6『Generalized Type Constraints』(これ、日本語では何て言うんだろう?)で、「<:<」の使い方が初めて理解できた!
Builderパターンとか、格好よすぎるw 値のコピー部分が似たソースになっているので、ここを統一できればもっと良さげ。case classのcopyメソッドを使えばいけるか…?
10章がライブラリーの紹介ということで、Actorと継続。Actorは他でもよく紹介されているけれども、継続はあまり無い気がする。(継続はやっぱり難しい(苦笑) 使い方だけはなんとなくイメージできた、といったところか…。しかも実際に使われてたら、ソースを見たときに動作を絶対誤解しそうだ。Scalaが仕事で使われだしたら、コーディング規約で真っ先に制限されそう(爆))
ライブラリーという題だったので、STMとかAkkaとかscalazとか(聞いたことはあるけどよく知らないもの)も採り上げられていればなーと思ったけれども、標準に入ってない(?)ライブラリーの紹介は雑誌とかの方が向いているかな。
最後、Appendix(よく使うメソッドの一覧)も隠れた高評価だと思う。
仕事でJavaを使う初心者によく言う事があって、それは「StringやList・Map等のよく使うクラスは、API(メソッド一覧)を全部見ておけ!」ということ。初心者は自分が知ってる数少ないメソッドを駆使して事を成し遂げようとするんだけど、(努力するのは良い事だけど、コードが膨らんで見通しが悪くなったりバグが入ったりするので、)提供されている機能を知って、それを使うべき。
Scalaの場合、特にコレクションのメソッドがやたら多くてさすがに大変なので^^;、「まずはこの本のAppendixを全部見とけ」って一言で言えるのはとても良いと思う(笑)
※コメント投稿者のブログIDはブログ作成者のみに通知されます