日本語版書籍objc.io
Functional Swift日本語版 Functional Swift日本語版 Functional Swift日本語版

objc.io『Functional Swift』日本語版(Swift 3対応)

By Chris Eidhof, Florian Kugler, and Wouter Swierstra
和田祐一郎

* 本書はオンライン版(PDF/epub/mobi)のみの販売です。

アップデートでSwift 3に対応。Swiftで関数型プログラミングの真髄を学び、徹底的に実践活用!

Swiftは、プログラミングにおける新たな世界への扉を開きます。本書ではその新たな世界を探検します。Swiftの生みの親Chris Lattnerは次のように述べています。「『CのないObjective-C』は何か退化したように感じてしまうかもしれませんが、ジェネリクスと関数型プログラミングのコンセプトを導入したことでSwiftはデザイン領域を劇的に拡張しました。」

本書では、より明瞭かつ表現力の高いコードを書くために、関数型プログラミングのコンセプトを説明し、その実践的な活用をSwiftで簡単に行う方法を説明します。

目次

1. はじめに

2. 関数型で考える

3. ケーススタディ:Core Imageをラッピング

4. Map、Filter、Reduce

5. オプショナル型

6. ケーススタディ:QuickCheck

7. 不変性の価値

8. 列挙型

9. 純粋関数型データ構造

10. ケーススタディ:ダイアグラム

11. イテレータとシーケンス

12. ケーススタディ:パーサコンビネータ

パーサは便利なツールです。トークンのリスト(通常は文字のリスト)を取り、それを構造化データに変換します。シンプルな入力文字列のパースには正規表現を使ってもよいでしょうが、正規表現ができることは限られており、少し複雑になるとすぐに理解できないほど難解になります。一度パーサを書くことを覚えれば(または既存のパーサライブラリの使い方を覚えれば)、強力なツールになります。

パーサの構築には複数のアプローチがあります。まず、自分でパーサを書けます。おそらく、FoundationのScannerクラスを使うと少々楽になるかもしれません。そして、BisonYACCなどの外部ツールを使っても作成できます。また、多くの点でこれら2つの選択肢の間に位置するであろうパーサコンビネータライブラリも使えます。

パーサコンビネータは関数型のアプローチを使ったパース処理です。変異可能なパーサの状態(現在の対象文字など)を管理せず、変異を伴う状態を避けるために純粋関数を使います。本章ではパーサコンビネータはどのように動作するものなのか、そしてパーサコンビネータライブラリのコアとなる要素をいくつか実際に構築してみます。例として、1+2*3のようなシンプルな算術式をパースします。

本章のゴールは完全なコンビネータライブラリを書くことではありません。パーサコンビネータライブラリがどのような構成要素で動作するものなのかを学び、快適に利用できるようにすることです。また、ほとんどの場合は自作のライブラリよりも既存のライブラリを活用した方がよいでしょう。

13. ケーススタディ:スプレッドシートアプリを作る

14. 関手、アプリカティブ関手、モナド

15. 終わりに

著者・翻訳者紹介

Chris Eidhof

Chris Eidhof @chriseidhof

objc.ioの共同設立者。ここ最近の開発者人生をAppleのプラットフォーム上での開発に捧げるプログラマ。それ以前はHaskellプログラマという経歴を持つ。

Florian Kugler

Florian Kugler @floriankugler

objc.ioの共同設立者。長い間オブジェクト指向プログラミングを専門にしていた開発者だが、モナドや自己関手は常に支配下に置いてある。

Wouter Swierstra

Wouter Swierstra @wouterswierstra

15年以上の関数型プログラミングの経験を持つ。産業界で働き、教育機関で教え、研究論文を出版するが、それらすべてが関数型プログラミングに関連している。


Yuichiro Wada

翻訳 和田祐一郎 @yuichirowada

株式会社プログラミングシステム社代表取締役。「トラクション」「ハイパフォーマンスブラウザネットワーキング」「JavaScriptで学ぶ関数型プログラミング」等を翻訳。

FAQ

Swift 3に対応していますか?

対応しています。

サンプルコードはどこで入手できますか?

GitHubに置いてあります。

本書を読む前にSwiftを理解しておく必要はありますか?

本書はオブジェクト指向プログラミングについての実践的な知識と、Appleが提供するSwift言語ガイドを理解していることを前提としています。

eBookしか販売していないのですか?(紙の)書籍の販売は予定していないのですか?

現在はeBookのみの販売を予定しています。今後、多数のご要望をいただけば書籍化も検討いたします。

eBookにDRMはかけられていますか?

かかっていません。すべてのフォーマットがDRMフリーです。