関連サイト
本書の関連ページが用意されています。
内容紹介
◆関数型とオブジェクト指向の対立を解消する!
本書では、関数型言語のClojureとオブジェクト指向言語のJavaを比較しながら、ソフトウェア設計の原則や手法の違いを解説している。また、これまでオブジェクト指向特有のものと思われてきたUML、SOLID原則、デザインパターンなどを関数型言語に適用することで、両者は必ずしも対立する概念ではなく、共通点がいくつもあり、補完し合える関係にあることを明らかにしようとしている。最終的には、両者を融合したものが「ソフトウェアの本来あるべき姿」だと主張するに至っている。
書誌情報
- 著者: Robert C. Martin(著), 角 征典(訳)
- 発行日: 2024-05-31
- 最終更新日: 2024-05-31
- バージョン: 1.0.0
- ページ数: 328ページ(PDF換算)
- 対応フォーマット: PDF, EPUB
- 出版社: アスキードワンゴ
対象読者
著者について
Robert C. Martin
Robert C. Martin(アンクル・ボブ)は1970年からプログラマーである。Uncle Bob Consulting, LLCの創業者であり、息子のミカ・マーチンと共同でThe Clean Coders, LLCを創業した。さまざまな業界誌に寄稿し、国際的なカンファレンスや展示会でも頻繁に講演している。数多くの書籍の執筆・編集を担当しており、主な書籍には『Designing Object Oriented C++ Applications Using the Booch Method』『Pattern Languages of Program Design 3』『More C++ Gems』『Extreme Programming in Practice(邦訳:XPエクストリーム・プログラミング実践記―開発現場からのレポート)』『Agile Software Development(邦訳:アジャイルソフトウェア開発の奥義)』『UML for Java Programmers(邦訳:JavaプログラマのためのUML)』『Clean Code(邦訳:Clean Code―アジャイルソフトウェア達人の技)』『The Clean Coder(邦訳:Clean Coder―プロフェッショナルプログラマへの道)』『Clean Architecture(邦訳:Clean Architecture―達人に学ぶソフトウェアの構造と設計)』『Clean Craftsmanship(邦訳:Clean Craftsmanship―規律、基準、倫理)』『Clean Agile(邦訳:Clean Agile―基本に立ち戻れ)』などがある。ソフトウェア開発業界のリーダーとして「C++ Report」の編集長を3年間務め、Agile Allianceの初代委員長でもあった。
角 征典
ワイクル株式会社代表取締役。東京工業大学環境・社会理工学院特任講師。アジャイル開発やリーンスタートアップに関する書籍の翻訳を数多く担当し、それらの手法のコンサルティングに従事。主な訳書に『リーダブルコード』(オライリー・ジャパン)、『エクストリームプログラミング』(オーム社)、『Clean Craftsmanship』(アスキードワンゴ)、『プロダクトリサーチ・ルールズ』(BNN)、共著書に『エンジニアのためのデザイン思考入門』(翔泳社)がある。
目次
まえがき
序文
- 関数型プログラミングと手続き型プログラミングの簡単な歴史
- Clojureについて
- アーキテクチャと設計について
- オブジェクト指向について
- 「関数型」について
謝辞
著者について
第I部 関数型の基礎
第1章 不変性
- 関数型プログラミングとは何か?
- 代入の問題点
- なぜ関数型と呼ぶのか?
- 状態が変わらない?
- 不変性
第2章 永続的データ
- チートについて
- コピーを作成する
- 構造の共有
第3章 再帰と反復
- 反復
- 再帰
第4章 遅延
- 遅延の累積
- でも、どうして遅延させるの?
- 終わりに
第5章 ステートフル
- 変更が必要なとき
- STM
- 人生は難しい、ソフトウェアはさらに難しい
第II部 比較分析
第6章 素因数分解
- Javaのバージョン
- Clojureのバージョン
- 結論
第7章 ボウリングゲーム
- Javaのバージョン
- Clojureのバージョン
- 結論
第8章 ゴシップ好きなバスの運転手
- Javaのバージョン
- Clojureのバージョン
- 結論
第9章 オブジェクト指向プログラミング
- 関数型の給与計算
- 名前空間とソースファイル
- 結論
第10章 型
- 結論
第III部 関数型デザイン
第11章 データフロー
第12章 SOLID
- 単一責任の原則(SRP)
- オープン・クローズドの原則(OCP)
- リスコフの置換原則(LSP)
- インターフェイス分離の原則(ISP)
- 依存関係逆転の原則(DIP)
第IV部 関数型の実践
第13章 テスト
- だが、REPLはどうか?
- モックはどうか?
- プロパティベーステスト
- 診断のテクニック
- 関数型
第14章 GUI
- Quilのタートルグラフィックス
第15章 並行性
- 結論
第V部 デザインパターン
第16章 デザインパターンの評価
- 関数型プログラミングのパターン
- Abstract Server
- Adapter
- Command
- Composite
- Decorator
- Visitor
- Abstract Factory
- 結論
- 追記:オブジェクト指向の毒?
第VI部 ケーススタディ
第17章 Wa-Tor
- かゆいところに手を届かせる
- シャワーが問題を解決する
- 繁殖の時期
- サメは?
- 結論