Takuya71 のぶろぐ

外資系ソフトウェア会社で働いてます、認定スクラムマスター

Scala の学習を始めて6ヶ月経過

Scala の学習を始めて6ヶ月経過

今年の目標として関数型のプログラミングを身に付けようという目標を立てました。

当初 関数型のプログラミングが出来る言語として、
F#が気になっていたのでF#の元になっている OCaml をはじめに学習し始めたのですが、
命令型プログラミングにどっぷりつかった人間には、
今まで全く異なるアプローチ(に思える)の プログラムの書き方がなじめず、
周りにも 気軽にOcamlについて相談出来るような人もおらず行き詰まってました。
しょうがないので OCamlでの関数型プログラミングはとりあえずあきらめて、
Scala だと 命令型でも書けるし、関数型でも書けるから取っ付きやすいかな という安直な考えで始めたのがScalaの学習を始めたきっかけです。

結果的には 私にとっては OCaml から Scala に学習のターゲットを切り替えたことは正解だったと思います。
最初は命令型で書いてみて、その後関数的に書くことで 段々関数型的思考が 少しずつですが身に付いてきているように思います。
それに Javaの(負か正かわかりませんが)資産が使えるのも実用的でした。

そんなこんなで 約6ヶ月 勉強してみて 最近は Scalaが大好きになりつつあります。

仕事がプログラマではないので 逆に自分で使う仕事のツールをScalaで作っているのですが、
プログラムすることが楽しくなる言語に久しぶりに遭遇できました。

参考書

周りでScalaやっている人間は一人もいないで、
基本的に学習で使ったのは 市販されている本と、インターネットにある情報を中心に行ってきました。

書籍

以下の書籍が購入した書籍です。
このほか Web+DB PRESSScala記事も参考にしました。

  • Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版


この本は Scalaのプログラムを学習するなら是非持っておきたい本だと思います。
実際に手を動かしなら、動作を確認することで Scalaの作法を覚えて行きました。

細かいことは最初わからないことがあっても、
とりあえず、進めて一通り Scalaの作法を覚えてしまったほうがよいと思います。

いまだに、この本を読返しますが、
これはこういうことだったんだ と新たな発見があります。

オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門

オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門


Javaの経験のある人、関数型プログラムの経験のない人には
読みやすくて、Scalaの概要をつかむには良い本だと思います。
Actorの説明もよいと思います。
ただ Actorの部分が理解できるようになったのは最近だったりします。

Scala実践プログラミング―オープンソース徹底活用

Scala実践プログラミング―オープンソース徹底活用


Scalaの実例を集めたものです、進歩の早いScalaの為、
5章 開発環境、6章 Webフレームワークについては多少内容が古く感じますが
デザインパターンや継続に関しては、参考になります。
この本の対象は Javaの知識があるのが前提のように思えるので、
プログラム経験のない Scala 初心者には とくに後半はきついと思いますが、
ある程度 Scala理解した後で読むと内容的にやくにたちます。
Scalaの基本を理解した後で 読むのがよいと思います。

ネットの情報

Twitter 社による scalaの学習資料
体系的にまとまっているので 一通り Scalaの文法を学習した後で参考にするのが効果的と思います。

Scalaで99問のクイズを解く。
私の場合、解いていくのではなく、
最初から答えみて 「こういう時は こういう風に書くんだ」的な
書き方のイディオムとして解答のコードを参考にしました。

勉強会

勉強会への参加可能な方は是非参加されるほうがよいと思います。
とはいいつつ、私は時間的に参加出来てませんが、できれば参加したいと思っています。
特に 独学で学習されているかたには 壁になっていることがいとも簡単に壊すきっかけになることになる可能性があります。やはり 先人の方々のノウハウは大きなものがあります。

私自身、「Scala初心者向けハンズオン勉強会」#scalahandson に参加したのは非常に有意義な経験でした。正直このころは雲をつかむような状態だったのですが、この勉強会に参加したおかげでScalaの可能性を知ることができ、Scalaを学習しようというモチベーションにつながりました。
この勉強会に参加しなかったら Ocamlと同じようにあきらめていたかもしれません。