『実践Scala入門』
https://gyazo.com/51cf5fe2dcddc68e4d1199e915ec6d9b
2018/10/27
第1章 Scalaひとめぐり
Scalaの誕生とこれまで
なぜScalaか?
ScalaはJVM上で動作する言語
著名なユーザ企業
開発環境
はじめてのScalaプログラミング
Scaladocの読み方
ビルドツールの利用
第2章 Scalaの基礎
基本的な型
クラスを定義する
トレイトを定義する
Scalaにおけるstatic
特別なメソッド名
ケースクラス ―― メソッドを自動生成する
制御構文
修飾子
ジェネリクスと型パラメータ
名前空間とモジュール分割
無名クラス
暗黙の型変換
暗黙クラス ―― 既存のクラスにメソッドを付け足す
暗黙のパラメータ
第3章 Option/Either/Tryによるエラー処理
Option ―― 「値がないかもしれない」を表す
Either ―― 失敗した理由を示す
Try ―― Option/Eitherと同じ感覚で例外を扱う
第4章 コレクション
コレクションのデータ型
コレクションを操作するAPI
コレクションの実装ごとの性能特性
Java標準クラスとScala標準クラスの変換
for式によるコレクション操作
第5章 並行プログラミング
並行プログラミングのメリットとデメリット
Futureの基本的な使い方
Futureを扱うためのAPI
第6章 Scalaプロジェクトのビルド
sbtの役割
はじめてのsbt
build.sbtの書き方
sbtシェルのコマンド
ビルドのスコープ
sbtプラグイン
sbtのトラブルシューティング
第7章 ユニットテスト
テストの重要性
Scalaにおけるユニットテスト
Scalaで使えるテストフレームワーク
ScalaTestを使ったはじめてのテスト
ScalaTestを使いこなす
Mockitoを使ったモックテスト
ScalaCheckを使ったプロパティベーステスト
第8章 知っておきたい応用的な構文
コンパニオンオブジェクト ―― 同名のクラスへの特権的なアクセス権を持つオブジェクト
部分関数 ―― 呼び出し前の引数チェック
デフォルト引数 ―― 引数を省略したときの既定値を指定する
名前付き引数 ―― メソッドの引数に名前をつけて呼び出せるようにする
値クラス ―― オブジェクト生成のオーバーヘッドを避ける
型メンバ ―― クラスやトレイト内だけで有効な型の別名を付ける
自分型アノテーション ―― トレイトやクラスに継承でない依存関係をもたせる
メソッド引数におけるブロック式 ―― メソッド呼び出しをより簡潔に記述する
複数の引数リストを持つメソッド ―― 部分適用を容易にする
η-expansion ―― メソッドを関数に変換する
名前渡し引数 ―― 引数の評価タイミングを制御する
抽出子 ―― 独自のパターンを定義する
implicitの探索範囲
特殊なメソッド
第9章 よりよいコーディングを目指して
可能な限り不変にする
式指向なスタイルで書く
そのほかのTips