データ指向プログラミング(Yehonathan Sharvit)
書籍情報
- 著者:Yehonathan Sharvit(著), 株式会社クイープ(訳)
- 発行日:2023-04-19
- ISBN:9784798179797
- URL:https://www.shoeisha.co.jp/book/detail/9784798179797
書籍目次
- 本書に寄せて
- まえがき
- 謝辞
- はじめに
- 著者紹介
- Part1 柔軟性
- 第1章 オブジェクト指向プログラミングの複雑さ―― 気まぐれな起業家
- 1.1 OOPの設計:定番か、古典か
- 1.2 複雑さの原因
- 1.3 本章のまとめ
- 第2章 コードとデータの分離―― まったく新しい世界
- 2.1 DOPシステムの2つの部分
- 2.2 データエンティティ
- 2.3 コードモジュール
- 2.4 DOPシステムは理解しやすい
- 2.5 DOPシステムは柔軟
- 2.6 本章のまとめ
- 第3章 基本的なデータ操作―― 瞑想とプログラミング
- 3.1 データモデルを設計する
- 3.2 レコードをマップで表現する
- 3.3 ジェネリック関数を使ってデータを操作する
- 3.4 検索結果を計算する
- 3.5 異なる種類のレコードを処理する
- 3.6 本章のまとめ
- 第4章 状態管理―― タイムトラベル
- 4.1 システムデータの復数のバージョン
- 4.2 構造の共有
- 4.3 構造の共有を実装する
- 4.4 データの安全性
- 4.5 ミューテーションのコミットフェーズ
- 4.6 システム状態の完全性を保証する
- 4.7 以前の状態に戻す
- 4.8 本章のまとめ
- 第5章 基本的な並行性制御―― 家庭内での対立
- 5.1 楽観的な並行性制御
- 5.2 同時ミューテーション間の調整
- 5.3 コレクションの集約
- 5.4 構造的差分
- 5.5 調整アルゴリズムを実装する
- 5.6 本章のまとめ
- 第6章 単体テスト―― コーヒーショップでプログラミング
- 6.1 データ指向のテストケースの単純さ
- 6.2 データ操作コードの単体テスト
- 6.3 クエリの単体テスト
- 6.4 ミューテーションの単体テスト
- 6.5 前進
- 6.6 本章のまとめ
- 第1章 オブジェクト指向プログラミングの複雑さ―― 気まぐれな起業家
- Part2 スケーラビリティ
- 第7章 基本的なデータ検証―― おごそかな贈り物
- 7.1 DOPでのデータ検証
- 7.2 JSON Schemaの概要
- 7.3 スキーマの柔軟性と厳密性
- 7.4 スキーマの合成
- 7.5 データ検証の失敗に関する詳細
- 7.6 本章のまとめ
- 第8章 高度な並行性制御―― さようなら、デッドロック
- 8.1 ロックの複雑さ
- 8.2 アトムを使ったスレッドセーフなカウンタ
- 8.3 アトムを使ったスレッドセーフなキャッシュ
- 8.4 アトムを使った状態管理
- 8.5 本章のまとめ
- 第9章 永続的なデータ構造―― 巨人の肩の上に立つ
- 9.1 永続データ構造の必要性
- 9.2 永続データ構造の効率性
- 9.3 永続データ構造のライブラリ
- 9.4 永続データ構造の使用
- 9.5 本章のまとめ
- 第10章 データベースの操作―― 雲は雲
- 10.1 データベースからデータを取得する
- 10.2 データベースにデータを保存する
- 10.3 単純なデータ操作
- 10.4 高度なデータ操作
- 10.5 本章のまとめ
- 第11章 Webサービス―― 忠実な配達人
- 11.1 新たな機能の要求
- 11.2 外側と同じように内側を構築する
- 11.3 クライアントのリクエストをマップとして表現する
- 11.4 サーバーのレスポンスをマップとして表現する
- 11.5 情報を転送する
- 11.6 検索結果を拡張する
- 11.7 期限どおりに納品する
- 11.8 本章のまとめ
- 第7章 基本的なデータ検証―― おごそかな贈り物
- Part3 保守性
- 第12章 高度なデータ検証―― 手作りの贈り物
- 12.1 関数の引数の検証
- 12.2 関数の戻り値の検証
- 12.3 高度なデータ検証
- 12.4 データモデル図の自動生成
- 12.5 スキーマベースの単体テストの自動生成
- 12.6 新たな贈り物
- 12.7 本章のまとめ
- 第13章 ポリモーフィズム―― 田舎で動物とたわむれる
- 13.1 ポリモーフィズムの本質
- 13.2 シングルディスパッチのマルチメソッド
- 13.3 復数のディスパッチを使うマルチメソッド
- 13.4 動的ディスパッチを使うマルチメソッド
- 13.5 本番システムでのマルチメソッドの統合
- 13.6 本章のまとめ
- 第14章 高度なデータ操作―― 考え抜かれたものは明確に表現される
- 14.1 マップの値を巧みな表現で更新する
- 14.2 入れ子のデータを操作する
- 14.3 作業に最適なツールを使う
- 14.4 ほぐすのは簡単
- 14.5 本章のまとめ
- 第15章 デバッグ―― 博物館でイノベーション
- 15.1 プログラミングにおける決定論
- 15.2 数値と文字列での再現性
- 15.3 任意のデータでの再現性
- 15.4 単体テスト
- 15.5 外部のデータソースに対処する
- 15.6 送別会
- 15.7 本章のまとめ
- 第12章 高度なデータ検証―― 手作りの贈り物
- 付録A データ指向プログラミングの原則
- A.1 原則#1 コードをデータから切り離す
- A.2 原則#2 データを汎用的なデータ構造で表す
- A.3 原則#3 データはイミュータブルである
- A.4 原則#4 データスキーマをデータ表現から切り離す
- 付録B 静的型付け言語での汎用的なデータアクセス
- B.1 文字列マップの動的ゲッター
- B.2 文字列マップの値ゲッター
- B.3 文字列マップの型付きゲッター
- B.4 クラスメンバに対する汎用的なアクセス
- B.5 まとめ
- 付録C データ指向プログラミング:プログラミングパラダイムの一環をなす
- C.1 タイムライン
- C.2 ベストプラクティスとしてのDOPの原則
- C.3 DOPなとその他のデータ関連パラダイム
- C.4 まとめ
- 付録D Lodash リファレンス