• 検索結果がありません。

まえがき(pdf)

N/A
N/A
Protected

Academic year: 2021

シェア "まえがき(pdf)"

Copied!
5
0
0

読み込み中.... (全文を見る)

全文

(1)

まえがき

Rの役割は,単なるプログラミング言語やインタラクティブなデータ分析環境にはとど まらない.Rはそれらの両方を提供するが,私が思うに,Rの最も革新的な役割は,個人 やグループが自分自身の貢献を加えて,Rを拡張してきたことにある.そのような拡張に は数千個にも及ぶパッケージもあれば,その他の,データについての学習や結果の共有の 助けになるものも含まれる. 本書は,現在と将来の貢献者にアイディアやツールを提供し,その助けとなることを目 指している. Rの拡張には,控えめなものも野心的なものもありうる.よくあるタスクをこなすため に,ちょっとしたソフトウェアを追加するだけかもしれないし,Rを自分のワークフロー に統合するだけかもしれない.自分の研究成果を他人が利用できるようにするだけで済む かもしれない.他方,まったく逆に,挑戦的な目標を持つ野心的なプロジェクトの一部と してRが用いられることもありうる.どんな規模であれ,あなたが作成するソフトウェア には何らかの価値がある.ソフトウェアを効果的に構成し,適切な技法を用いることで, プログラミングのプロセスと成果物が改善される. 私が3つの基本原則と呼んでいる概念が,Rの拡張を設計し構成するためのガイドにな る.それはオブジェクト,関数,そしてインターフェースである.Rのもとになったオリ ジナルのS言語にまで遡る設計の要は,ユーザはシステムを拡張するはずだということで あった.これは統計学の研究コミュニティに由来しており,そこでは新しいアイディアと いうものが我々の主な関心事であった.オブジェクトベースで関数型の形式を持つRに よって,新しい計算や新しい型のデータを自然に扱うことができる.他のソフトウェアへ のインターフェースはRによるプログラミングには欠かせないものであり,これまでもつ ねにそうであった.Rの拡張におけるオブジェクト,関数,そしてインターフェースを理 解することが本書を通じて反復されるテーマとなる. 本書は4部に分けられる.上述のテーマはすべての部を貫くものであるが,各部は相当 異なっている.第I部はアイディアと歴史に関するものである.第II部ではRプログラミ ングに関わる重要なトピックを議論する.第III部ではオブジェクト指向プログラミング をある程度深く扱う.第IV部は主に,Rから他のソフトウェアへのインターフェースに ついての新しいアプローチを紹介する.平坦な景色のような内容ではないのは確かだが,

(2)

vi まえがき 鍵となるアイディアをそれなりの厚さの一巻本に収めるためには避けられないことであっ た.このまえがきと各部の導入ページでは,道案内や道標を提供するように努める. 後ろのほうから案内すると,後半の2つの部では本格的なプロジェクトにおいて特に重要 な2つの技法を扱う.オブジェクト指向プログラミング(object-oriented programming, OOP)によるRのデータ構造の拡張と,Rから他のソフトウェアへのインターフェース の利用である.OOP(第III部)は複雑さに対処するための鍵となる技法である.新たな データ構造の本質をクラス(class)とメソッド(method)で表現することで,ユーザが書 くRの式a)は単純で見慣れた形に保たれたまま,新しい構造のコンテキストにおいて解 釈されることになる. インターフェース(第IV部)はRの不可欠な構成要素である.OOPは重要で新しい計 算機能をユーザにとって単純な形で組み込むことを可能にするが,インターフェースを用 いたプログラミングもまた,ビッグデータや膨大な計算への要求にRを適応させるため の重要なツールである.第IV部には,様々な言語に対して適用可能なインターフェース のための新しい構造が含まれている.そこでの目標は,アプリケーションパッケージの実 装者に単純で首尾一貫したものの見方を提供すること,そして,Rパッケージのユーザに とって他のソフトウェアへのインターフェースが本質的に透過的になるようにすることで ある. 第II部では,上述したような拡張や,さらに別の拡張を行う助けになるツールを紹介す る.基本的な構成要素となるのは関数である.関数を書くのはRの初歩だが,Rの機能を 効果的に拡張する関数を設計するには,関数やオブジェクトがどのように動作しているの か理解する必要がある.これが第II部で強調されるトピックである.その次のステップと しては,拡張のスケールを上げてRのパッケージ開発に取り組む.パッケージはRで新 しいソフトウェアをやりとりするための最も重要な手段である. これらの部では,Rプログラミングへの完全なガイドを与えようとしているわけではな い.私は,読者がRを拡張したいと望んで本書を手に取っており,したがってある程度R を使ったことがあり,何か役に立つ計算のアイディアを持っているものと想定している. Rプログラミングの様々な側面についてのガイドとなるリソースは数多く存在しており, 書籍もあれば多様なオンラインの記事もある.特にいくつかのトピックについては,私の 前著[11]を参照することで補完できるだろう(もちろん,これが他書より優れているなど と言うつもりはないが). 第I部は,後ろの部で必要となる概念や背景を理解するためのものである.三原則や関 連するアイディアを紹介し,その文脈に沿って現在のRに至るまでの発展の道筋を眺め, Rがどのように動作しているのかの概略を見る. a)訳注:本書では“expression”を「式」と訳す.Rに関する文献では「表現式」とも訳されるが, 本書ではR以外の言語も扱うため,より一般的な訳語を選んだ.

(3)

小さな例

Rを拡張して役立てるにはいろいろなやり方がありうるが,最初は非常に控えめにス タートすることが多い. 私自身の関心事であるバードウォッチングから例をとりたい.これはRの拡張,特に第 II部と第IV部で強調されるテーマの意義を示すものになっている. 野鳥観察のあとには,経験を共有したり将来参照するために記録しておくのがよい.見 かけた種や興味深い行動,特に美しかった鳥を書き留めておくのだ.だが2時間も歩いて いれば,30か40,あるいはさらに多くの種を見ることになるかもしれない.それらをす べて覚えていられる人はほとんどいない.歩きながらノートをとるのは気が散るし,結局 はあとで整理する必要がある. 鳥に関するあらゆることについて私の先生であるJohn Debellが,もっとよいやり方を 教えてくれた.当該地域で目撃されたことのあるすべての種を,スプレッドシートの行に 用意しておくのだ.これは数百行になるが,認識記憶は想起記憶より強力なので,散策の あとでも,大抵は見つけた野鳥に印を付けることができる. しかしバードウォッチャーというのは変わり者の集まりなので,彼のスプレッドシート は私が欲しいものとは違っていた.また保存と共有のために,空行を削除して結果をきれ いなレポートにするには,私の貧弱な経験ではどうにもならないスプレッドシートプログ ラミングが必要であった. 当然,Rを使うというのが明らかな解決策だった.Rはスプレッドシート用プログラム ではないし,きれいなレポートを出力するために特別に作られているというわけでもな い.むしろ,Rの拡張の中に,私のタスクをより簡単で快適にするのに役立つ貢献が含ま れているのだ.出発点は種名と目撃頻度の指標(何を見たのか曖昧なときに判断の助けに なる)が書かれたExcelシートのフォームだった.私はその日の散策の内容をフォームの 写しに記入した. XLConnectパッケージがExcelへのインターフェースを提供している.ワークブックや シートがRのオブジェクトとして表現され,そこからデータをRのデータフレームとして 読み出すことができる.簡単なRのコードによって表が整形でき,そのあとはレポートか らウェブでの表示まで,様々なプレゼンテーション用ソフトウェアへのインターフェース がある.Excelインターフェースの例として,スプレッドシートからRオブジェクトを構 築する関数を12.7節に記載してある.こうしてほとんど苦労せずにタスクが達成できた. 以上の例ではRの拡張が鍵であった.第一のポイントは,関数による計算と,拡張を 可能にする XLConnectのようなパッケージによってソフトウェアを構成することだ(第 II部).第二のポイントは,オブジェクト指向プログラミングである.XLConnectでは, Excelワークブックのプロキシとなるオブジェクトを使っている(第III部).第三のポイ ントは,インターフェースそれ自体である(第IV部).XLConnectはそれ自体がインター フェースとなっているだけでなく,既存のJavaインターフェースの上に構築されている. 上の例は計画性を持って始めようとしたものではないが,Rプログラミングが予期せぬ

(4)

viii まえがき 形で将来の拡張を助けることになるという利益を示してもいる.地元で使うために始めた ものだったが,旅先や別の地域で野鳥観察をするならどうなるだろう? 種のリストを新 しい地域用のチェックリストで置き換える必要がある.そのようなリストは存在している が(たとえば,https://avibase.bsc-eoc.org),既存のフォームに挿入する必要がある. これはRとXLConnectによる拡張があれば簡単にできる. それにJohn Debellが過去の記録を大量に持っている.ひょっとすると,これは将来お もしろいデータ分析になるのではないだろうか?

表紙について

Rコミュニティでは貢献者や関心のあるユーザが集まってRユーザグループを形成し, セミナーや議論を行ったり,経験を共有したりしている.ユーザグループはRコミュニ ティの活気を支える要素のひとつであり,まさに本書の理念に沿うものであると思う. 表紙の地図b)に示したのは, Rの最初のリリースから10年後に知られていたユーザグ ループと,それからさらに5年後のユーザグループである.グループの数が約10倍に増 加して世界中に広がっていることが,Rコミュニティの成長を視覚的に示している.とり わけ,この期間にはRを拡張する数千ものパッケージや他のツールの貢献があった.

Rユーザグループのデータは,MicrosoftのJoseph Rickertが寛大にも提供してくれた ものである.リストの詳細と最新版については以下を見てほしいc) http://msdsug.microsoft.com/find-user-group/ また,http://r-users-group.meetup.com/では,meetup.comを使っているR関係のグ ループが報告されている.2016年1月時点で,200を超えるグループと約10万人のメン バーがいる.

パッケージ

本書で引用したインターフェース,ツール,パッケージ例はhttps://github.com/ johnmchambers から利用可能であり,すべてのXR インターフェース,XRtools,それか らPython,Julia,‌C++‌へのインターフェースとして提示した例を含んでいる.いくつか のパッケージはリポジトリからも利用可能かもしれないが,GitHubの個々のパッケージ のウェブページに最新の情報が書かれているだろう.

謝辞

長年にわたってアイディアや提案,意見を通じて私を助けてくれたすべての人々に対し て十分に感謝することは,端的にいって不可能である.不幸にも私の記憶力はそれほどよ b)訳注:本書扉ページの地図を参照. c)訳注:本書(邦訳)出版時点ではこのウェブサイトはアクセス不可能となっている.

(5)

くないが,仮に私が細部をよく覚えていられたとしても感謝しきれないだろう.

はじめに,草稿に対して詳細なコメントをくれたMichael Lawrence,Dirk Eddelbuetel,

Julie Josseと,出版社のレビュアの2人に特に感謝したい.

Balasubramanian Narasimhanには多くの有益な議論と,スタンフォードでの

Statis-tics 290コースのことで特別に感謝したい.コースでは長年にわたってアイディアを試 し,考えを詳しく説明する機会が得られた.質問やコメントをくれたコースの学生と ティーチングアシスタントにも感謝したい. Rもそれ以前のSも,つねにコミュニティのメンバーがそのコミュニティのために開発 するという,平等な関係の下でのプロジェクトであった.本書を通じて強調されるよう に,コミュニティとの関わりがこのプロジェクトの最大の強みである.それゆえ,私が最 も恩義を感じ,感謝したいのはコミュニティに対してである.直接的には,現在のR core の同僚たち,そして,Rとその拡張を世界中で利用できるようにするプロセスを支えてい るコミュニティの多くの人々に.さらに過去を振り返れば,Sのアイディアとソフトウェ アに貢献してくれた人々に.Sプロジェクトはそのはじめから,ベル研究所における刺激 的な共同プロジェクトであり,データ分析と研究のためのアイディアと実装を探求する ものであった.第2章ではその歴史を伝えようと試みている.Sはオープンソースソフト ウェアではなかったが,後にRコミュニティの隆盛へとつながるような,ユーザと貢献者 のコミュニティの成長はSから始まった. それから7冊の前著と同じく,編集者のJohn Kimmelと仕事をするのは喜びであった. 30年を超える楽しい旅路だったが,これからも続きますように.

参照

関連したドキュメント

近年、めざましい技術革新とサービス向上により、深刻なコモディティ化が起きている。例え

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

に関連する項目として、 「老いも若きも役割があって社会に溶けこめるまち(桶川市)」 「いくつ

国際仲裁に類似する制度を取り入れている点に特徴があるといえる(例えば、 SICC

黒い、太く示しているところが敷地の区域という形になります。区域としては、中央のほう に A、B 街区、そして北側のほうに C、D、E

以上の基準を仮に想定し得るが︑おそらくこの基準によっても︑小売市場事件は合憲と考えることができよう︒

遮音壁の色については工夫する余地 があると思うが、一般的な工業製品

○安井会長 ありがとうございました。.