Javaによる関数型プログラミング

―Java 8ラムダ式とStream

[cover photo]
TOPICS
Java
発行年月日
PRINT LENGTH
236
ISBN
978-4-87311-704-1
原書
Functional Programming in Java
FORMAT
Print PDF EPUB
Ebook
2,860円
Ebookを購入する
Print
2,860円

本書はJava 8で追加された新機能のうちラムダ式とStream APIに焦点を絞り、これらを使った関数型プログラミングについて解説します。今までのJavaには存在しなかったこの新しいパラダイムに踏み込むことで、冗長さを排し、より簡潔なプログラミングを実現します。しかし、これを使いこなすためには、従来のJavaにおける考え方を一旦捨て去り、新たな考え方をもってプログラミングを行わなければなりません。 本書では、従来の手法と対比させつつ、APIの使用方法や設計手法を詳解し、基礎を固めます。遅延評価や再帰、そして並列化についてもサンプルコードを使って詳しく解説します。日本語版ではJava Championである櫻庭祐一氏による「日本語版まえがき」を収録。Java 8の特性を十分に生かしたプログラミングを行う技術者必携の一冊です。

目次

まえがき
はじめに

1章 Hello、ラムダ式!
    1.1 考え方を変える
    1.2 関数型のコードによる大きな利益
    1.3 なぜ関数型で記述するのか
    1.4 革命ではなく、進化
    1.5 簡単にするためのほんの少しの砂糖
    1.6 まとめ

2章 コレクションの使用
    2.1 リストをイテレート
    2.2 リストの変換
    2.3 要素の検索
    2.4 ラムダ式の再利用
    2.5 静的スコープとクロージャ
    2.6 要素を 1つ選択
    2.7 コレクションを単一の値に集約(reduce)
    2.8 要素の結合
    2.9 まとめ

3章 文字列、コンパレータ、フィルタ
    3.1 文字列のイテレーション
    3.2 Comparatorインタフェースを実装
    3.3 複数のプロパティによる流暢な比較
    3.4 collectメソッドとCollectorsクラスの使用
    3.5 ディレクトリの全ファイルをリスト
    3.6 ディレクトリの特定のファイルだけをリスト
    3.7 flatMapで直下のサブディレクトリをリスト
    3.8 ファイルの変更を監視
    3.9 まとめ

4章 ラムダ式で設計する
    4.1 ラムダ式を使った関心の分離
    4.2 ラムダ式を使った委譲
    4.3 ラムダ式を使ったデコレーション
    4.4 defaultメソッドを覗く
    4.5 ラムダ式を使った流暢なインタフェース
    4.6 例外処理
    4.7 まとめ

5章 外部リソースを扱う
    5.1 リソースの解放
    5.2 ラムダ式でリソース解放
    5.3 ロックの管理
    5.4 簡潔な例外テストの生成
    5.5 まとめ

6章 「遅延させる」ということ
    6.1 初期化の遅延
    6.2 遅延評価
    6.3 Streamの遅延処理を活用
    6.4 無限の「遅い」コレクションを生成
    6.5 まとめ

7章 再帰の最適化
    7.1 末尾呼び出し最適化を使う
    7.2 メモ化でスピードアップ
    7.3 まとめ

8章 ラムダ式で合成
    8.1 関数合成の利用
    8.2 MapReduceの使用
    8.3 並列化への飛躍
    8.4 まとめ

9章 すべてをまとめて
    9.1 関数型スタイルで成功するために実践すべきこと
    9.2 パフォーマンスの問題
    9.3 関数型スタイルを採用

付録A 基本的な関数型インタフェース
    A.1 Consumer<T>
    A.2 Supplier<T>
    A.3 Predicate<T>
    A.4 Function<T, R>

付録B 構文の基礎
    B.1 関数型インタフェースの定義
    B.2 パラメータを持たないラムダ式の生成
    B.3 パラメータ 1つのラムダ式の生成
    B.4 ラムダ式のパラメータ型を推論する
    B.5 パラメータ 1つのラムダ式では括弧を省略可能
    B.6 複数パラメータを持つラムダ式の生成
    B.7 複数の型のパラメータを持つメソッドを呼び出す
    B.8 ラムダ式を変数に格納
    B.9 複数行のラムダ式を生成
    B.10 ラムダ式を返す
    B.11 ラムダ式からラムダ式を返す
    B.12 クロージャにおける静的スコープ
    B.13 インスタンスメソッドのメソッド参照を渡す
    B.14 メソッド参照をstaticメソッドに渡す
    B.15 メソッド参照を他のインスタンスのメソッドに渡す
    B.16 複数の引数を取るメソッドの参照を渡す
    B.17 コンストラクタ参照を使う
    B.18 関数合成

付録C Web上のリソース

付録D 参考文献
訳者あとがき
索引