はじめに
本資料は、ドワンゴオリジナルの、新卒エンジニア向けの研修資料です。
本資料を用いた講義を受講することで
- プログラミング言語Scalaを用いたアプリケーションを開発できるようになること
- 『Scala スケーラブルプログラミング』(第三版)(通称コップ本)を通読して理解できるようになること
- 『Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド』(通称FP in Scala)を通読して理解できるようになること
が主な目的です。
『Scalaスケーラブルプログラミング』は、Scalaの言語設計者であるOderskyさんらにより書かれた解説書で、Scalaの言語機能について詳細に書かれており、Scalaプログラマにとってはバイブルと言える本です。この本は決して読みにくい本ではないのですが、本の分量が多いのと、関数型など他の言語でのプログラミング経験がないとわかりにくい箇所があります。本テキストを通じてScalaに入門することによって、この『コップ本』も読みやすくなるでしょう。
『Scala関数型デザイン&プログラミング』は、Scalaz1コントリビューターであるPaul Chiusanoさん、Rúnar Bjarnasonさんらにより書かれた関数型プログラミングについての本です。あくまで関数型プログラミングの本なのでScalaやScalazについての解説はあまりありません。ただしScalaについての最低限の文法の説明は随時行われています。「本文中で一から自作」というスタンスが徹底されており、型クラスのみならず、List、Stream、Futureなど、Scala標準ライブラリに存在するものまで、一から自作しています。そのため「単にパターンを覚えて使う」のではなく、それぞれの関数型の色々な型クラスやパターンが「なぜそういう仕組になっているのか?」という根本的な考え方が分かるようになっています。細かいScala自体の言語仕様やテクニック、(標準ライブラリと外部のライブラリ含めた)既存の実在するライブラリの使い方は一切説明せず、とにかく「考え方や概念」のみを重点的に説明しているので、この本を読んで身につけた知識は古くなりにくいという点でおすすめできる一冊です。
読者層としては、
- 大学の情報学部卒である
- Java言語の基本知識がある
- 何か意味のあるアプリケーションを作ったことがある
- 趣味でTwitter APIなどを触ったり、プログラミングを行っている
人(相当)を仮定しています。なお、上記の指標はこの資料を読むにあたってのあくまで目安であり、特に大学の情報学部卒でなければ理解できないといったことはありません。ただし、本資料は1つ以上のプログラミング言語でアプリケーションを作れることを最低限の前提にしていますので、その点留意ください。
フィードバック
- 誤字・脱字の指摘や修正、および明確な技術的誤りの指摘や修正:
- scala_textのissue欄およびpull requestへ
- それ以外の改善要望や感想:
よろしくお願いいたします。
ライセンス
本文書は、CC BY-NC-SA 3.0
の元で配布されています。
1. 関数型プログラミングを行うための純粋なデータ構造や、ファンクターやモナドといった型クラスとそのインスタンスを提供するライブラリのこと。 ↩