プロフェッショナル R―関数型プログラミング,オブジェクト指向,他言語インターフェースによる拡張― 

書籍情報
ISBN978-4-320-12448-6
判型B5 
ページ数400ページ
発売予定2019年04月24日
本体価格6,300円
プロフェッショナル R 書影
プロフェッショナル R

新刊

 Rは多くの分野において世界中で利用されています。Rを活用することによって,仕事の幅を広げ,アイディアを表現し,データサイエンスの新たな応用を生み出すことが可能になります。本書の著者であるJohn Chambers氏によれば,それはつまりユーザが「Rを拡張している」ということなのです。Rを拡張してパッケージの開発やRコミュニティへの貢献をしたいと考えるRユーザにとって,本書はそのガイドとなるでしょう。
 Chambers氏は現代のRの前身であるSの創始者であり,Rの主要開発者でもあります。本書ではRの核心にあるアイディアが語られるとともに,様々な規模の開発プロジェクトに対する助言が与えられています。また,Rの拡張に役立つ新しいテクニックも紹介されています。
 第Ⅰ部はRの本質に関わる特徴とその発展の歴史,そしてRの動作原理の解説です。第Ⅱ部では,Rを拡張するために役立つテクニックに重点を置きつつ,Rプログラミングにおける重要なトピックが議論されます。第Ⅲ部はRのオブジェクト指向プログラミングに関する詳細な解説です。第Ⅳ部では,RからPythonやJulia,そしてC++といった他言語へのインターフェースを作成するための新たなアプローチを扱います。


本書の特徴
・開発プロジェクトの規模に応じた,Rの重要概念とプログラミングテクニックの解説
・Rにおけるオブジェクト指向プログラミングの詳細かつ一般的な解説
・Rから他言語へのインターフェースを作成するための,新しい高水準なメカニズムの紹介
・現在のRにおける重要機能と関連付けて,Rの発展の歴史をひもとく

[原著名:Extending R]

目次

第I部 Rを理解する

第1章 オブジェクト,関数,インターフェース
1.1 三原則
1.2 すべてはオブジェクトである
1.3 すべては関数呼び出しである
1.4 インターフェースはRの構成要素である
1.5 関数型プログラミング
1.6 オブジェクト指向プログラミング

第2章 Rの発展
2.1 計算方法
  2.1.1 データ構造
  2.1.2 プログラムの構造
  2.1.3 アルゴリズムとライブラリ
2.2 最初のバージョンのS
2.3 関数型オブジェクトベースのS
2.4 Rの登場と発展
2.5 オブジェクト指向プログラミングの発展
2.6 SとRにおける関数型OOP
  2.6.1 例:関係データベース
2.7 S4とR

第3章 Rの動作
3.1 オブジェクトと参照
3.2 関数呼び出し
3.3 インターフェース
3.4 R評価器


第II部 Rによるプログラミング

第4章 小規模/中規模/大規模プログラミング

第5章 関数
5.1 関数型プログラミングとR
5.2 代入と置換
  5.2.1 置換式
  5.2.2 置換関数とメソッド
  5.2.3 局所的置換
5.3 言語に対する計算
  5.3.1 言語オブジェクトの構造
  5.3.2 言語オブジェクトに対する反復処理
5.4 インターフェースとプリミティブ
5.5 関数の高速化
  5.5.1 例:畳み込み

第6章 オブジェクト
6.1 オブジェクトの構造:型と属性
  6.1.1 属性
6.2 オブジェクト管理
6.3 参照オブジェクト:環境

第7章 パッケージ
7.1 パッケージの理解
  7.1.1 構造
  7.1.2 処理過程
  7.1.3 セットアップステップ
7.2 インストール
7.3 ロードとアタッチ
  7.3.1 インポート
  7.3.2 ロードアクション
  7.3.3 ロードアクションとセットアップステップ
  7.3.4 コンパイル済みサブルーチンのリンク
  7.3.5 検索リスト
7.4 共有

第8章 大規模開発


第III部 オブジェクト指向プログラミング

第9章 Rにおけるクラスとメソッド
9.1 RにおけるOOP
9.2 関数型OOPとカプセル化OOP
9.3 Rにおけるクラス作成
9.4 Rにおけるメソッド作成
  9.4.1 関数型メソッド
  9.4.2 カプセル化メソッド
9.5 例:モデルクラス

第10章 関数型オブジェクト指向プログラミング
10.1 Rの拡張における関数型OOP
10.2 クラス定義
  10.2.1 スロット
  10.2.2 継承
10.3 メソッドと総称関数の定義
  10.3.1 総称関数
10.4 Rパッケージにおけるクラスとメソッド
  10.4.1 クラスとメソッドのロード
  10.4.2 メソッドを書く権利
10.5 関数型クラスの詳細
  10.5.1 クラス継承:"data.frame"の例
  10.5.2 仮想クラス:クラスユニオン
  10.5.3 Rの基本データ型
  10.5.4 Rデータ型を拡張するクラス
  10.5.5 参照型の拡張
  10.5.6 オブジェクトの初期化
  10.5.7 参照オブジェクトと関数型クラス
10.6 総称関数の詳細
  10.6.1 Rセッション内の総称関数
  10.6.2 暗黙的総称関数
  10.6.3 新しい明示的総称関数
  10.6.4 総称関数のシグネチャ
10.7 関数型メソッドの詳細
  10.7.1 メソッド選択の例
  10.7.2 メソッド選択の手続き
  10.7.3 特殊なメソッド選択:as()
  10.7.4 次のメソッドまたは総称関数の呼び出し
10.8 S3メソッドとクラス
  10.8.1 S4内でのS3クラスの使用
  10.8.2 形式的クラスに対するS3メソッド
  10.8.3 S3のメソッド選択

第11章 カプセル化オブジェクト指向プログラミング
11.1 カプセル化OOPの構造
11.2 カプセル化OOPの使用
11.3 参照クラスの定義
  11.3.1 参照クラスにおける継承
  11.3.2 クラス設計の例
11.4 参照クラスにおけるフィールド
  11.4.1 フィールドの定義
  11.4.2 フィールドの参照
  11.4.3 フィールドの代入と修正
  11.4.4 参照フィールドと非参照フィールド
11.5 参照クラスにおけるメソッド
  11.5.1 メソッドの書き方
  11.5.2 参照クラスのメソッドのデバッグ
  11.5.3 参照クラスの$initialize()メソッド
  11.5.4 外部メソッドとクラス継承
11.6 参照クラスに対する関数型メソッド
  11.6.1 カプセル化メソッドを特殊化する関数型メソッド
  11.6.2 参照クラスのオブジェクトに対する関数型OOP


第IV部 インターフェース

第12章 インターフェースを理解する
12.1 導入
12.2 利用可能なインターフェース
12.3 サブルーチンと評価器
12.4 サーバ言語のソフトウェア
12.5 サーバ言語の計算
12.6 サーバ言語のオブジェクト参照
12.7 データの変換
12.8 性能のためのインターフェース

第13章 インターフェースのためのXR構造
13.1 導入
  13.1.1 目標
  13.1.2 プログラミングのレベル
13.2 XRインターフェース構造
13.3 評価器オブジェクトとメソッド
  13.3.1 評価器テーブル
13.4 アプリケーションプログラミング
  13.4.1 サーバ言語でのプログラミング
  13.4.2 アプリケーションパッケージの構成
13.5 サーバ言語への特殊化
13.6 プロキシオブジェクト
  13.6.1 プロキシオブジェクトの保存:シリアライズ
13.7 プロキシ関数とプロキシクラス
  13.7.1 プロキシ関数
  13.7.2 プロキシクラス
  13.7.3 サーバ言語からのメタデータ
  13.7.4 ロードアクションとセットアップステップ
13.8 データ変換
  13.8.1 基本的なオブジェクト変換
  13.8.2 任意のRオブジェクトの表現
  13.8.3 任意のサーバ言語オブジェクト
  13.8.4 Rオブジェクトの送信
  13.8.5 JSONにおける基本データ型
  13.8.6 オブジェクト送信用メソッド
  13.8.7 サーバオブジェクトの取得
  13.8.8 "vector_R"クラス
  13.8.9 例外用オブジェクト

第14章 Pythonへのインターフェース
14.1 RとPython
14.2 Pythonによる計算
14.3 Pythonプログラミング
14.4 Pythonの関数
14.5 Pythonのクラス
14.6 データ変換

第15章 Juliaへのインターフェース
15.1 RとJulia
15.2 Juliaによる計算
15.3 Juliaプログラミング
15.4 Juliaの関数
15.5 Juliaの型
15.6 データ変換
  15.6.1 RとJuliaにおけるベクトルと配列
  15.6.2 Juliaオブジェクトの変換
  15.6.3 一般のRクラスの表現例

第16章 C++によるサブルーチンインターフェース
16.1 R,サブルーチン,そしてC++
16.2 C++インターフェースプログラミング
  16.2.1 例
16.3 C++の関数
  16.3.1 例:RのためのC++
  16.3.2 例:C++ライブラリに対するインターフェース
16.4 C++のクラス
16.5 データ変換