Javaによる関数型プログラミング ―Java 8ラムダ式とStream

  • オライリージャパン
4.18
  • (10)
  • (14)
  • (3)
  • (1)
  • (0)
本棚登録 : 117
感想 : 9
本ページはアフィリエイトプログラムによる収益を得ています
  • Amazon.co.jp ・本 (236ページ)
  • / ISBN・EAN: 9784873117041

感想・レビュー・書評

並び替え
表示形式
表示件数
絞り込み
  • 【書誌情報】
    『Javaによる関数型プログラミング――Java 8ラムダ式とStream』
    原書:Functional Programming in Java
    著者:Venkat Subramaniam
    寄稿:Brian Goetz  Java Language Architect
    訳者:株式会社プログラミングシステム社
    2014年10月 発行
    頁数:236
    ISBN:978-4-87311-704-1
    定価:2,860円

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

    【目次】
    日本語版まえがき(櫻庭祐一 Java Champion) [v-vi]
    まえがき(Brian Goetz 2013年9月) [vii]
    はじめに [ix-xv]
      誰が本書を読むべきか
      本書の内容
      本書で使用するJavaのバージョン
      サンプルコードの読み方
      オンラインリソース
      意見と質問
      謝辞
    目次 [xvii-xx]

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

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

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

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

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

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

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

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

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

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

    付録B 構文の基礎 197
    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上のリソース 203

    付録D 参考文献 207


    訳者あとがき(和田祐一郎 2014年8月) [208]
    索引 [209-212]
    著訳者紹介 [213]

  • よく見かけるコードが、どのような関数型スタイルに置き換わるのかを見比べるとかなり刺激的。見た目の「形」が大きく変わるので、一歩踏み出すには勇気が必要。

Venkat Subramaniamの作品

  • 話題の本に出会えて、蔵書管理を手軽にできる!ブクログのアプリ AppStoreからダウンロード GooglePlayで手に入れよう
ツイートする
×