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

概 要

Javaプラットフォーム上で動作するオブジェクト指向と関数型の特徴をあわせもったプログラミング言語「Scala」の解説書です。強力な型システム、柔軟性の高い文法、型安全性と利便性を両立したコレクションライブラリ、オブジェクト指向と関数型の融合など、Scalaには多くの魅力があります。本書ではJavaなどのオブジェクト指向型プログラミングの経験がある中級者以上を対象に、Scalaについて解説。クラスの概念などの初歩は省略し、基本的な文法についても深くは触れず、関数型言語における基本的な考え方やWebアプリケーションフレームワークの紹介、Scalaならではのパターンなど、よりレベルの高い実践的な内容となっています。サンプルコードのダウンロードサービス付き。

著者 小笠原啓、尾崎智仁、関隆、水島宏太、今井敬吾
価格 本体2800円(税別)
ISBN 978-4-7980-2998-6
発売日 2011/6/16
判型 B5変
色数 1色
ページ数 472
CD/DVD
対象読者 中級
シリーズ オープンソース徹底活用
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

概要編

Chapter 1 Scalaの概要

1-1 プログラミング言語Scalaとは?

1-2 Real World Scala

■1-2-1 Scala Solutionsの設立

1-3 Scalaの特徴

■1-3-1 オブジェクト指向のサポート

■1-3-2 関数型プログラミング

■1-3-3 静的型付け

■1-3-4 簡潔な記述を可能とする文法

■1-3-5 JVMとJava資産の利用

■1-3-6 並行プログラミングのサポート

1-4 Quick Start Scala

■1-4-1 Scalaのインストール

■1-4-2 対話型実行環境(REPL)

■1-4-3 スクリプトファイルによる実行

■1-4-4 scalacを使ったコンパイルと実行

■まとめ

コラム Scala 2.9.0の新機能紹介 (1) scala.sys.processパッケージ

Chapter 2 文法・構文・言語としてサポートする機能

2-1 Scalaの構文

■2-1-1 変数の宣言

■2-1-2 データ型

■2-1-3 比較演算

■2-1-4 リテラル

■2-1-5 コメント

■2-1-6 配列型、List、Map

■2-1-7 予約語

■2-1-8 制御構造

■2-1-9 例外処理

2-2 関数について

■2-2-1 関数の宣言

■2-2-2 関数の呼び出し

■2-2-3 ファーストクラス関数

■2-2-4 関数の型

■2-2-5 関数を引数に取る関数

■2-2-6 関数リテラル

■2-2-7 プレースホルダー構文

■2-2-8 高階関数とクロージャ

■2-2-9 ネストした関数

■2-2-10 可変長引数

■2-2-11 デフォルト引数

■2-2-12 名前付き引数

■2-2-13 型推論

2-3 オブジェクト指向

■2-3-1 クラスの宣言

■2-3-2 メソッドの呼び出し

■2-3-3 メソッドのオーバーロード

■2-3-4 インスタンスフィールドの公開

■2-3-5 プライベートなメンバ

■2-3-6 コンストラクタでの処理

■2-3-7 複数のコンストラクタ

■2-3-8 サンプル:HttpURLクラス

2-4 オブジェクト

■2-4-1 Scalaオブジェクトの特徴

■2-4-2 シングルトンオブジェクトとは?

■2-4-3 コンパニオン関係のクラスとオブジェクト

■2-4-4 コンパニオンオブジェクトによる特権的アクセス

2-5 継承と抽象クラス

2-6 トレイト

■2-6-1 トレイトによる実装の継承

■2-6-2 トレイトと抽象メンバ

2-7 インナークラスについて

2-8 パッケージとインポート

■2-8-1 パッケージを作成する

■2-8-2 インポートの基本

■2-8-3 様々なインポート

■2-8-4 インポートとスコープ

■2-8-5 オブジェクトに対するインポート

■2-8-6 パッケージオブジェクト

2-9 アクセス修飾子

2-10 ケースクラスとパターンマッチ

■2-10-1 ケースクラス

■2-10-2 immutableなオブジェクトとは?

■2-10-3 HttpURLクラスをケースクラスにする

■2-10-4 パターンマッチの基本

■2-10-5 様々なパターンマッチ

■2-10-6 よく使われるパターン

■2-10-7 ケースクラスとパターンマッチの組み合わせ

2-11 ジェネリックス - 型のパラメータ化

■2-11-1 ジェネリックなクラスを利用する

■2-11-2 ジェネリックなクラスを定義する

■2-11-3 上限境界と下限境界

■2-11-4 共変と反変

■2-11-5 ジェネリックなメソッド

2-12 Scalaの型階層について

2-13 暗黙的な型変換と引数

■2-13-1 暗黙の型変換(implicit conversion)

■2-13-2 暗黙の引数(implicit parameter)

2-14 オブジェクトへの様々な機能追加

■2-14-1 演算子のオーバーロード

■2-14-2 代入のように見える演算子定義

■2-14-3 オブジェクトを関数のように呼び出す

■2-14-4 抽出子によるパターンの拡張

2-15 構造的部分型(structural subtyping)

■まとめ

Chapter 3 関数型プログラミング

3-1 副作用の問題点

3-2 再帰の基本

■3-2-1 再帰によるループ処理

■3-2-2 ループと末尾再帰

■3-2-3 再帰の勧め

■3-2-4 再帰で考えるためのコツ

3-3 不変なデータ構造とリスト

■3-3-1 身近にある不変データ

■3-3-2 リスト

■3-3-3 再帰による基本的なリスト操作の定義

3-4 高階関数

■3-4-1 普通の関数の限界

■3-4-2 ファーストクラスの関数と高階関数

3-5 リスト上の高階関数

■3-5-1 foldLeft

■3-5-2 map

■3-5-3 flatMap

■3-5-4 filter

■3-5-5 find

■3-5-6 span

■3-5-7 再帰と高階関数の使い分け

3-6 カリー化と部分適用

3-7 遅延評価

■3-7-1 lazy val

■3-7-2 名前渡し引数

■3-7-3 Streamクラス

3-8 サンプルプログラム - 簡易grep

3-9 副作用は悪なのか?

■まとめ

コラム Scala 2.9.0の新機能紹介 (2) scala.Appトレイト

Chapter 4 他言語との比較・関連

4-1 静的型付け言語(Java、Haskell、OCaml)との比較

■4-1-1 代数的データ型

■4-1-2 モジュール化機構

4-2 スクリプト言語(Perl、PHP、Ruby、Pythonなど)との比較

■4-2-1 開発環境・スタイル

■4-2-2 拡張性・オープンクラス

■4-2-3 多重継承・Mixin

■4-2-4 Duck typing

■まとめ

コラム Scala 2.9.0の新機能紹介 (3) Dynamicトレイト

実践編

Chapter 5 開発環境

5-1 scalacとREPL

■5-1-1 コンパイルして実行

■5-1-2 スクリプト起動

■5-1-3 対話実行環境REPL(Read-Evaluate-Print Loop)

5-2 Simple Build Tool

■5-2-1 プロジェクトの作成

■5-2-2 プロジェクトのコンパイルと実行

■5-2-3 Mavenリポジトリの利用

■5-2-4 テストの実行

■5-2-5 リポジトリへのプロジェクトのコミット

5-3 Maven

■5-3-1 Mavenを使ったScalaプロジェクトの構築

■5-3-2 Scalaプラグインの機能

5-4 IDE(Eclipse、NetBeans)

■5-4-1 Eclipse

■5-4-2 NetBeans

5-5 ScalaTest - いくつかの書き方とMatcher

■5-5-1 テスト対象のサンプルクラス

■5-5-2 ScalaTest

■5-5-3 ScalaTestからJUnitを利用する

■5-5-4 BDDスタイルのテスト

■5-5-5 関数型のテストスタイル

■まとめ

Chapter 6 Webフレームワークを利用してアプリケーションを作成してみる

6-1 Lift

■6-1-1 Liftプロジェクトの作成

■6-1-2 Liftのアーキテクチャ

■6-1-3 オンラインブックマークアプリケーションの開発

6-2 Play!

■6-2-1 インストール

■6-2-2 ディレクトリ構成

■6-2-3 ルーティング

■6-2-4 コントローラ

■6-2-5 ビュー

■6-2-6 サンプルアプリ

■6-2-7 Google App Engineで動かす

■まとめ

Chapter 7 デザインパターンとScala

7-1 GoFデザインパターンとケースクラス

■7-1-1 Stateパターンとクラス不変条件

■7-1-2 Visitorパターンとオブジェクト構造の走査

7-2 Scalaのためのデザインパターン

■7-2-1 Loanパターン

■7-2-2 CONCEPTパターン

■7-2-3 Cakeパターン

■7-2-4 バイナリメソッドへの対処

■7-2-5 モナドパターンとfor内包表記

■7-2-6 Generalized Type Constraints

■7-2-7 Phantom Types

■7-2-8 型安全なBuilderパターン

■まとめ

Chapter 8 現場でのScala

8-1 NGMSプロジェクトとScala

■8-1-1 プロジェクトの定量データ

■8-1-2 開発環境とツール

■8-1-3 コーディングルール

8-2 Scalaを用いた設計の留意点

■8-2-1 構文解析が身近に

■8-2-2 例外とOption型に関する方針

■まとめ

Chapter 9 Javaとの連携

9-1 ScalaからJavaの呼び出し

■9-1-1 Javaのオブジェクトの生成

■9-1-2 Javaのクラス/インタフェースの継承

■9-1-3 staticメソッド/フィールドの呼び出し

■9-1-4 Scalaの型とJavaの型のマッピング

■9-1-5 配列型のマッピング

■9-1-6 暗黙の型変換による関数からインタフェースへの変換

■9-1-7 JavaのコレクションとScalaのコレクションの暗黙的な相互変換

■9-1-8 JavaのコレクションとScalaのコレクションの明示的な相互変換

9-2 JavaからScalaの呼び出し

■9-2-1 Scalaのクラス/トレイトの継承

■9-2-2 メソッド名の変換規則

■9-2-3 シングルトンオブジェクトの参照

■9-2-4 フィールド(val/var)の参照

■まとめ

Chapter 10 特徴的なライブラリ

10-1 アクター(Actor)

■10-1-1 簡単な例

■10-1-2 簡単なメッセージ

■10-1-3 receiveとreact

コラム ScalaとErlangの比較

■10-1-4 メッセージの送受信

■10-1-5 RemoteActor

10-2 継続

■10-2-1 Javaプログラマのための継続

■10-2-2 限定継続とshift/reset

■10-2-3 限定継続の応用

■10-2-4 限定継続を使ったフレームワーク/アプリケーション

■10-2-5 限定継続と型システム

■10-2-6 継続および限定継続についてもっと知りたい読者のために

■まとめ

資料 標準API簡易リファレンス

A-1 Predefとscalaパッケージオブジェクト

■A-1-1 Predefのメンバ

■A-1-2 scalaパッケージのメンバ

A-2 コレクション

■A-2-1 メソッドの選択基準について

■A-2-2 TraversableOnce

■A-2-3 Traversable

■A-2-4 Iterable

■A-2-5 Iterator

■A-2-6 ArrayBuffer

■A-2-7 Map(mutable)

■A-2-8 Set(mutable)

■A-2-9 List

■A-2-10 Map(immutable)

■A-2-11 Set(immutable)

■A-2-12 Vector

■A-2-13 Stream

A-3 Source

A-4 XML

■A-4-1 XMLシングルトンオブジェクト

■A-4-2 class NodeSeq

■A-4-3 class Node

■A-4-4 class Elem

■A-4-5 class Text

A-5 Actor

■A-5-1 Actorトレイト

■A-5-2 Actorシングルトン

A-6 Richラッパー系

PR

秀和システム