はじめに
本資料は、Scala初学者向けの学習テキストです。本資料を読み進めることで、
- プログラミング言語Scalaを用いたアプリケーションを開発できるようになること
- 『Scala スケーラブルプログラミング』(第4版)(通称コップ本)を通読して理解できるようになること
- 『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自体の言語仕様やテクニック、(標準ライブラリと外部のライブラリ含めた)既存の実在するライブラリの使い方は一切説明せず、とにかく「考え方や概念」のみを重点的に説明しているので、この本を読んで身につけた知識は古くなりにくいという点でおすすめできる一冊です。
読者層としては、
- 大学の情報学部卒相当である
- 小さなものでも、何かアプリケーションを作ったことがある
- 趣味でプログラミングを行っている
を仮定しています。上記の指標はあくまで目安であり、大学の情報学部卒でなければ理解できないといったことはありません。ただし、本資料は1つ以上のプログラミング言語でアプリケーションを作れることを前提にしていますので、その点留意ください。
フォーマット
このテキストは下記のフォーマットで提供されています。
- HTML版:https://scala-text.github.io/scala_text/
- PDF版:https://scala-text.github.io/scala_text_pdf/scala_text.pdf
- EPUB版:https://scala-text.github.io/scala_text/scala_text.epub
フィードバック
- 誤字・脱字の指摘や修正、および明確な技術的誤りの指摘や修正:
- scala_textのissue欄およびpull requestへ
- それ以外の改善要望や感想:
よろしくお願いいたします。
ライセンス
本文書は、CC BY-SA 3.0の元で配布されています。
1. 関数型プログラミングを行うための純粋なデータ構造や、ファンクターやモナドといった型クラスとそのインスタンスを提供するライブラリのこと。 ↩
謝辞
本資料は、ドワンゴ社が作成した新卒エンジニア向けのScala研修資料が日本のScalaコミュニティに寄贈されたものです。