連載 :
  

統計解析向けのプログラミング言語「R言語」の魅力と汎用言語との違い

2014年3月13日(木)
山崎 明子

こんにちは。NECラーニングの山崎と申します。今回は、ビッグデータに興味がある技術者の方であれば一度は耳にしたことがあるR言語の概要とその魅力を、弊社の名物インストラクターである横垣と米倉にインタビューしながらご紹介していきます。

R言語は技術者の皆様がよく使われる、C言語やJava、PHP、などの汎用開発言語ではなく、統計解析言語です。よって、R言語の勉強を始めたときに汎用言語を習得してきた人は戸惑うことが多いと思います。R言語は統計解析言語ですので、技術的な背景以外にも基礎的な統計学の知識も必要となります。もしかしたら統計学と聞いて、専門外と考え毛嫌いしてしまう人もいらっしゃるかもしれませんが、あくまで基礎的な統計学の知識が必要なレベルであり、弊社がご提供しているビッグデータ概説(1日コース)を受講いただくだけでも十分習得できるレベルです。

また、昨今の市場の流れを見てくと、ビッグデータのような大型の解析システムを担当する技術者の方だけでなく、ある程度の大規模のWebシステムやPOSシステムなどを扱う技術者であれば知っておく必要があると思っています。統計解析用のツールはありますが、非常に高価です。R言語を知っていれば簡単なものは自前で作れます。またシステムインテグレーターに属している技術者であれば、R言語を取得することで統計解析系のシステムのカスタマイズやスクラッチ開発もできるようになりますので、統計解析ツールの販売店と比べ、ビジネスの差別化もできるようになります。

このようにR言語は汎用言語とは違う、統計解析専門言語ということで、感覚が違ったり、統計学の基礎が必要だったりしますが、知っておくと便利ですし、ビジネス上も差別化になるため、お勧めです。

早速ですが、弊社 テクノロジー研修事業部 マネージャー 横垣 裕史(以下、横垣)と、マネージャー 米倉 宏治(以下、米倉)にR言語の概要を説明してもらいます。

横垣:Wikipediaでは「R言語はオープンソース・フリーソフトウェアの統計解析向けのプログラミング言語及びその開発実行環境である」と説明されています。一般的なプログラミング言語が、その用途が汎用的なのに対して、ある分野向けのソフトウェア開発に特化しているという点が特徴的です。フリーソフトウェアであるため、入手や利用のハードルが低く、オープンソースであるため、現在も機能拡張が行われています。ちなみにR言語の名前の由来は統計解析言語であるS言語の独自実装であるので、S 言語の「一歩手前」の「R」という意味や、二人の創始者であるR. Ihaka, R. Gentlemanの共通の頭文字に由来しているといわれれいます。R言語はもともと大学の統計学実習用のシステムとして開発された1000行のCコードであるので、このような由来が定説になっているようです。

山崎:横垣さんありがとうございます。ちなみにR言語が普及した背景に、便利な言語であることや、ビッグデータ市場の隆盛などもあると思いますが、OSSであることもあると思います。実はR言語のOSS化の背景に創設者が首と減俸をかけて、OSS化したことをご存知でしょうか?当時、R言語の創設者は所属大学の方針に逆らいR言語をGPL ソフトウェアとして公開したため、所属大学から減給、免職の脅しを受けたそうです。減給や免職にも恐れず、R言語をOSS化した意志の強さと思いを尊重します。このようなR言語の魅力と技術的な面白さについてお聞かせいただけますでしょうか?

横垣:ご存知の方もいらっしゃると思いますが、統計解析の分野において、様々な分析手法が存在しています。それらの多くは、複雑な数学的処理を伴うもので、一般的なプログラミング言語で実装する場合には、大量のコードを記述する必要があります。R言語では、そのような分析処理を一つの関数で実現します。また、その結果を視覚的に表すための強力なグラフィック機能を備えています。コードをインタプリタとして実行できることから、トライ&エラーで、色々な処理を即座に試せる点も魅力です。例えば、以下のようなグラフを表示する場合の関数をご紹介します。

基本パッケージやインストールして組み込んだパッケージの中には、テストなどに利用できるデータが含まれています。これをデータセットと呼びます。基本パッケージである「base」に含まれているデータセット「cars」を使って、Rの描画機能を紹介します。
carsは、「車の速度と停止時間」の関係を示したものです。その内容の一部を確認してみましょう。

head(cars, n = 3)
  speed dist
  1     4    2
  2     4   10
  3     7    4

carsのデータを基に、速度をx座標、停止時間をy座標でプロットした散布図を描くには、次のコードを実行します。新しいウィンドウが開き、完全なグラフが表示されます。

plot(cars)

次に、関数のグラフを表示してみましょう。以下のような二次関数を例にします。

x ^ 2 + x + 1

変数xの変域が-10から10であるときの、関数の値を曲線グラフで描画するには、次のコードを実行します。

curve(x ^ 2 + x + 1, from = -10, to = 10)

このように、専用関数を利用することで、高度なグラフ描画が簡単に実現できます。

山崎:本当に簡単ですね。汎用言語で書いたらちょっと面倒ですよね。ちなみに、この関数を応用していくともっとすごいことができるようになります。興味がある方にはぜひきわめていってほしいです。では次に、汎用言語との違うというかR言語の独自性(クセ)についてご説明いただきます。

OSS / R / 解析
NECラーニング株式会社 テクノロジー研修事業部

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています