Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
42
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@KanNishida

ハッピーバースデー、R 🎉🎉🎉 25歳おめでとう!ってことで、R誕生の歴史、今、そして。

R_logo.png

R Generation: 25 Years of R - リンク

実は今月、8月でちょうどRが生誕25年になります。🎉🎉🎉

こんなに年月の経った今でも、その進化はとどまることを知らず、そのスピードはさらに加速しています。Rはオープンソースのデータ分析ソフトウェアなので、典型的な商用ソフトのように大きなマーケティングや営業部隊がいるわけではないので、世の中への浸透度というものが一般の人にとってはつかみにくいものがあります。例えば、RのテレビCMなんてありえないでしょう。(笑)

しかし、直接的、間接的に世の中へ与えたインパクトという意味では、計り知れないほど大きいのではないでしょうか。かくいう私も、Rによって人生が変わってしまい、おかげでExploratoryという会社まで作ってしまいました。(笑)

そこで、そのRの25周年を記念した、「R Generation: 25 Years of R」という記事が最近出ていたので、こちらで紹介したいと思います。Rの歴史、コミュニティ、文化、将来に関する話です。

以下、要訳


Rの歴史

Rの誕生は、幸運なアクシデントでした。

1992年、カナダのウォータールー大学の教授であるRobert Gentlemanは、ニュージーランドのオークランド大学で3ヶ月ほど教えていました。その時、あるソフトウェアのコピーを探していたのですが、それを、たまたまそこで統計学を教えていた教授であるRoss Ihakaが持っていたことがきっかけで、後にRを作り出すことになる、この二人が出会うこととなりました。

お互いプログラミング言語に関して様々な質問を持ち、その答えを探している最中でした。二人ともSchemeという言語に詳しく、さらにそれは、役に立ちそうだが、使いにくく、必要な機能が欠けているという認識を共有していました。さらに二人は別の言語、Sのこともよく知っていました。Sは彼らが求めるシンタックスを提供していました。

そこで、この2つの言語を混ぜ合わせたようなものを自分たちで作ってしまおうということになったのです。

当時、ニュージーランドのオークランド大学は統計学の授業で使うための新しいソフトウェアを探していたのですが、ちょうどこの二人組が開発していたソフトウェアがちょうどいいのでは、ということになりました。というのも、オークランド大学にとっての必要条件であったMacの上でも走るということを、ちょうど満たしていて、さらに元々使われていたSというソフトウェアよりも良かったからです。こうして二人は、アルファベット順でSの一文字前の文字をとって、かれらが開発中のソフトウェアを、Rと呼び始めることになりました。

当初、IhakaとGentlemanはこのプロジェクトの存在を一般の人たちからは隠していましたが、1993年の8月にSのメーリングリストに一通のメールが送られたことで他の人達にもその存在を知られることとなりました。あるカナダの大学の教授がマックで動くSのようなソフトを必要としていたのです。そこで、Ihakaは他の一般の人達にも使わせることを決めました。ただ、まだ完全に準備ができているというわけではないので、文句を言わないように、という条件付きですが。

今となってはRはフリー(自由、無料)なソフトウェアとして知られていますが、IhakaとGentlemanはもともとは商用ソフトウェアとしてリリースすることを考えていました。しかし、ソフトウェアを売るということによるメリット以上にデメリットの方が大きいという結論に達します。Ihakaの言葉を借りると、

「知っている人たちに5つほど売ることはできるだろうけど、それで終わりでしょう。」

ということです。

そこで、世の中の全ての人がアクセスすることができるようにというビジョンのもと、1995年、フリー(自由、無料)のソフトウェアとしてオープンソースの形で公開することに決めました。つまりだれでも、自由に使い、自由に変更を加え、さらに自由に配布することができるということです。

Rのコミュニティ

Rが進化するに従い、より多くの人たちが開発に参加することとなります。1997年までには、頻繁にバグの修正や機能強化に貢献していた、Ihaka、Gentleman、Mächler、Peter Dalgaard、Kurt Hornik、Friedrich Leisch、Thomas Lumleyを含む11人のメンバーがRのコアのソースコードに直接変更を加えることができる、”Rコア”チームとなりました。

1997年の3月には、ウィーン大学のHornik and LeischがComprehensive R Archive Network (CRAN)を作ることになります。このCRANこそがRを特別なものにすると言っても言い過ぎではないでしょう。

Rを使うということは、いくつものRパッケージを使うということですが、CRANはそうしたパッケージをセントラルに管理し、ユーザーがそうしたパッケージを閲覧し、気に入ったものをダウンロードすることができる場所です。

CRAN自体は、セントラルに管理されていますが、最低限の必要条件さえ満たせば、だれでも自分の作ったパッケージを登録することができます。それまでの、SASやSPSSなどのように、彼らが自分たちの都合で開発したものしか付け足されることのないクローズド・ソース(オープンソースの反対)なソフトウェアに対して、Rではコミュニティが中心になってどんどんと様々なアップデートを付け加えていきます。

しかし、そもそもなぜパッケージを使うのでしょうか。追加のパッケージなしのRのコアだけでも、データをインポートして、加工して、確率分布や数学の関数が使えて、線形モデルを作って、可視化することができます。既存の関数で提供されていなくても、例えば、最適化のアルゴリズムを作る必要があったり、ウェブサイトからデータを引っ張ってきたいといった場合でも、コードを書くことでそうした事を行うことができます。

しかし、コードを書けば解決できるというのと、問題を解決するというのは違います。コードを書くために費やした時間は生産的であるとは言えません。

同じ問題を解決するために何百、何千行にもわたるコードをみんなが書くかわりに、そうした努力をすでに行った誰かが作ったパッケージをダウンロードして、簡単に解決することが出来ます。

ところで、2000年には、Rにとっての最初のプロダクションリリース、つまり一般の人達が安心して使えるバージョンである、v1.0がリリースされます。

その翌年に、影響力のある統計家たちがデータサイエンスに関する論文を発表しました。2003年にはこの分野を専門にする初の学術誌が発行されました。こうしたデータサイエンティストと名乗る人たちにとっては、R、CRAN、そしてRのコミュニティは様々な統計のツールや手法を発見し試してみる場を提供することになったのです。

このデータサイエンティストたちは、新しいパッケージをCRANに足していくことで、Rがさらに進化していくことに貢献しました。そして、Rの活躍する場は、生態学、言語学、バイオインフォマティクス、ネットワーク・サイエンスなどへと多様な分野へと広がっていくのでした。

そうして、少しづつRの知識を持っているということがデータサイエンスの仕事には欠かせないものとなっていったのです。データを使う人であれば誰でもユーザーとして取り込んでいくことで、Rのユーザーベースが拡大していくことになるのですが、こうした新しいタイプのユーザーたちは、もともとからいたユーザーたちとは少し違ったタイプのユーザーでした。

この新しいタイプのユーザーはRが内部でどう動くのかというよりも、Rを使って何ができるのかといったことに興味があり、またRのコードをどう書くかよりも、彼らの抱えているデータに関する問題をどう解決するかに時間を使いたいという人たちです。こうした新しいタイプのユーザーたちにとってのヒーローが、現在、RStudioでチーフ・サイエンティストとして活躍するHadley Wickhamです。

Tidyverse

この数年のRの進化は、やはりHadley Wickham抜きには語れません。彼のビジョンのもとに作られたパッケージの集まりであるTidyverseは、今やRの世界では標準になっています。どんな複雑な問題もシンプルに、さらに他の人が見てもプログラムを読むというよりは、文章を読むかのように理解することができるというところに力が入れられているのが特徴です。

今日、Rを使ってデータ分析している多くの人にとっては、dplyr、ggplot2を含めハドリーが関わっているパッケージなしで仕事をすることはもはや考えられないでしょう。

訳注:日本のRコミュニティでは、ハドリーとして慣れ親しまれているので、あえてファーストネームで呼びます。

ハドリーによると、tidyverseの一連のパッケージには、新しいユーザーがRのコミュニティに参加するのをより簡単にし、一度入ると長い間、居続けることができるようにしたい、との思いが込められているとのことです。

The “little frictions” inherent in any kind of data analysis “are real and it's worth trying to reduce them”

どんなデータ分析にでもある、ちょっとした面倒くさいことというのは誰にとっても面倒くさいことなのです。つまり、それは解決に値する問題ということです。

例えば、tidyverseの重要な一角を占めるdplyrというパッケージはデータ分析に必要なデータの加工と集計のための一連のシンプルなコマンドを用意しています。また別のたいへん有名なggplot2というパッケージは様々な角度からデータを可視化するための文法(grammar of graphics)を用意しています。

もちろんtidyverseで出来るほとんどのことは、tidyverseのパッケージを使わなくとも、Rの基本機能を使って行うこともできます。しかし、tidyverseのパッケージを使うことで、より簡単に、より直感的に、そうしたタスクをこなすことができ、さらにそこで書かれたコードは誰にも読みやすいものとなるのです。

tidyverseの原則に従ってテキスト分析を行うためのtidytextというパッケージの作者で、現在はStack Overflowでデータサイエンティストとして仕事をしているJulia Silgeは、

「もしdplyrとggplot2がなかったら、パイソンの開発者になっていたでしょうね。」

と言います。

tidyverseという新しい世界がRにできたからといって、それはもともとRにあったやり方や世界との決別を意味するものではありません。Rを作った人たちはもともと、専門家でなくともRを始めやすく、使いやすくすることを念頭に入れて、様々なパッケージを作りやすく、配布しやすくする仕組みを作ったのです。

Rはもともとコンピューターサイエンティストでない人にとって使いやすいプログラミング言語でした。そしてtidyverseが、Rを始めるときにぶつかるハードル(障害)を低くしたのです。Python、Java、Cと言った言語がコンピューター・サイエンティスト達の間では標準となっていますが、Rはそれとは違って、ライフ・サイエンスや社会科学の分野でのユーザーを増やすこととなりました。こうした新しいタイプのユーザーは全く違ったバックグラウンドを持っています。

Rの文化

Rの文化を語るのにR-Ladiesほどふさわしいものはないのではないでしょうか。R-Ladiesとは、Rのコミュニティへの女性の積極的な参加を促すために作られた世界中にあるサークルのようなものです。

しかし、そもそも現在Rのコミュニティに参加している女性の数が多いか少ないかの判断は難しいです。一つのデータとして、2016年に、CRANに公開されているパッケージの作者の名前をもとにした分析(リンク)が行われていましたが、その時は、女性の比率は11%から15%ということでした。

また、RのユーザーのためのグローバルなカンファレンスでUseR!というのがありますが、そこでも女性の参加をもっと促すための取り組みがなされています。2004年には女性による発表者がゼロであったのが、2016年には女性が発表者の34%を占めることとなっています。

この記事のためにインタビューした多くの人たちが、Rのコミュニティはここ最近特に、初心者に優しくなってきているということに同感していました。

こうした新しく始めようと思っている人たち、様々なバックグラウンドを持った人たちに優しいRのコミュニティは、「それまでならプログラミングやデータ分析に携わることもなかったかもしれない、多くの優秀な人たちの参加を促すことになっています。」とは、先ほどのハドリーの言葉です。

Rの将来

それでは最後に、Rはこれからどこへ向かっていくのでしょうか?

先ほども出てきた、Rのパッケージを管理するためのレポジトリであるCRANは、この後どうなっていくのだろうというのは、多くの人が思っていることです。CRANには現在12,000以上のパッケージがありその数は指数関数的にどんどんと増えていっています。今年の1月から5月までの間を見たところ、毎日21ほどのパッケージが追加されていっています。

もともとのRのコアチームが引退する年齢に近くなるに連れ、RとCRANのメンテナンスの仕組みには変化が必要です。もちろん、Githubのようなレポジトリからパッケージをダウンロードして使うこともできます。しかし、今日でもCRANから公式なパッケージをダウンロードして使うというのがRを使いやすくしている重要な点ですから、パッケージのレポジトリとしてのCRANは今後も残り続けるでしょう。パッケージをレビューする人の数は今後、増えていくでしょう。

他のトピックとしては、Rと他の言語の間のスムースなコミュニケーションを求める人達もいます。例えば、データをRからPython、Spark、Tensorflowへ動かしやすくするためのApache Arrowというテクノロジー等の例があります。Apache Arrowをベースにした言語間のデータサイエンス環境の構築を目指しているUrsa Labsというプロジェクトに、先ほどのハドリーが時間を費やし始めているのは、興味深いことです。

階層データを表形式で表現する方法は、現在Julia Silgeやハドリーによって探索されています。近い将来、構造的データも非構造的データもtidyverseのツールを使って、より簡単に加工し、分析することができるようになっていくでしょう。

最終的にはRの将来はコミュニティによって決められるでしょう。この25年の間に多くの人たちが彼らの多くの時間と努力をRの進化のために貢献してきました。こうした貢献が行われたのは、金銭的な見返りのためではなく、彼らが、Rのプログラミング言語としてのさらなる発展を願ったからです。彼らにとってRのコミュニティとは特別なものなのです。

Rは、楽しむために作られたフリー(自由、無料)で、オープンソースのソフトウェアです。少数のコアメンバーによって方向付けされてはいるものの、進化のための開発は多くの一般の人達に行われているのです。

Rが25年もの間生き残ることができ、さらに進化し続けることができたのは、Rのクオリティ、Rの創造者、そしてRのユーザーたちのおかげでしょう。

「こういったことはできないと、昔はよく言われたものですが、それができる、ということは今となっては明らかです。」

とは、RのコアメンバーであるLumleyによるコメントです。


以上、訳終わり。

途中で言われていた、オープンソースとクローズド・ソースの対比は私達も毎日のように実感しています。そもそも私がOracleを辞めて、Exploratoryを始めようと思った理由もここです。オープンソースの世界のスピードがあまりにも速すぎて、クローズド・ソースで開発されたものでは、まったくかなわないという事実があったからです。

さらに、データ分析していると、多種多様な問題にぶち当たります。データ加工、統計的な計算、データの取得の仕方など様々な問題が、世界中のExploratoryのユーザーから毎日持ち込まれてきます。

もちろんExploratoryの中の既存の機能を使って解決することのできるものもありますが、そうでないものもあります。こうした時、Exploratoryの次のリリースを待っているほどユーザーたちの抱えている仕事はのんきではありません。

そこで、私達はユーザーといっしょに、RのパッケージをCRANからインストールして、そこで提供されている関数を直接入力したり、Googleで検索して見つけてきた解決方法をRのスクリプトとして書いたり、さらにはRMarkdownという文章とRのコードを混ぜてレポートを作ることができるツールを使って、その中で自由自在にデータを可視化したりして、問題を解決していきます。

Exploratoryの開発のスピードが速いとはよく言われますが、それはRのコミュニティによる開発のスピードが速いからです。私達としても、そのスピードに追いつくのに毎日必死といった感じです。もちろん、それはすごく刺激的で、おもしろくてしょうがないんですが。

とにかく、この素晴らしいtidyverseやRの世界を、もっと多くの人達に知ってほしい、そして実感してほしいものです。そして、この興奮を一緒に共有できる仲間をこれからもどんどんと増やしていきたいですね。


データサイエンス・ブートキャンプ10月開催!

この10月の中旬に、Exploratory社がシリコンバレーで行っているトレーニングプログラムを日本向けにした、データサイエンス・ブートキャンプを東京で開催します。データサイエンスの手法を基礎から体系的に、プログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に参加を検討してみてください。詳しい情報はこちらのホームページにあります!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
42
Help us understand the problem. What are the problem?