R言語【概要】

# R言語とは
R言語は統計解析向けのプログラミング言語。

- 機械学習
- 統計解析
- データ分析
- データマイニング
- グラフィックス

などのような用途で活用される。

1990年代初頭にオークランド大学の研究者によって開発が進められ、統計処理に特化したプログラミング言語として発展。
JAVAやPHPなど特定の用途に特化しない汎用言語とは対照的に、統計計算とグラフィックスの開発のために使われる。

また、 ***データの解析からグラフへの出力を行うことに優れ、人工知能（AI）領域*** においても再注目されている。

AIや機械学習に用いるプログラミング言語としてはPythonが有名ですが、R言語もまたAI領域に積極的に活用されている。
***データエンジニア、データサイエンティスト、データアナリストのような職種には欠かせない*** 言語の一つ。

# R言語の特徴
R言語には以下のような特徴がある。
- 統計解析に特化した言語
- 多種多様なグラフを作成できる
- 自然言語処理やテキストマイニングも可能
- バイナリデータから直接解析可能
- さまざまなパッケージや関数が用意されている

## 統計解析に特化した言語
R言語は統計解析の分野に特化する一方で、多種多様な統計解析の手法に対応する言語。対応する解析手法の一例は以下。

- 平均や中央値
- 最大値や最小値、範囲
- 分散や標準偏差
- Studentのt検定
- 分散分析
- クラスタリング
- ベイズ統計

長く複雑なプログラムを作らず、使いたい解析手法を実現できる関数が用意されている。短いコードを書くだけで、簡単にデータ解析を行なうことができる。

またR言語では四則演算はもちろん、ベクトルや行列の演算にも対応している。多種多様なデータを扱えることも、R言語の強みである。

## 多種多様なグラフを作成できる
R言語は、多種多様なグラフに対応している。グラフ作成専用の関数も用意されており、短いコーディングでグラフを作成できる点も魅力の一つ。

- 折れ線グラフ
- 棒グラフ
- 円グラフ
- ヒストグラム
- 散布図
- 樹状図

上記のようなグラフを簡単にコーディングできる。

## 自然言語処理やテキストマイニングも可能
R言語でできることは、数値処理だけではない。
RMecabパッケージを使うことで、日本語の文章を単語に分解し品詞を特定する「形態素解析」も行なえる。これにより、文意の理解や適切な検索を実現できる。

以下の項目は、実現できるものの一例。
- 単語の出現状況や、頻繁に出現する単語をチェックする
- ワードクラウド（出現頻度に応じて文字の大きさが変わる図）を作成する
- 単語どうしの関連性をグラフで示す

上記の活用により、自然言語処理やテキストマイニングも可能。これらはAIや機械学習に求められる、重要な機能。

## バイナリデータから直接解析可能
統計解析には、SPSSなどの専用プログラムも使われる。
もしバイナリデータの形式で保存されている場合は、専用ツールを使わないと人の目では見えない。しかしR言語ならばこれらのデータを読み込み、直接データ解析を行なえる。
人の目で見えるファイル形式に変換する手間を省けることは、R言語の魅力の一つ。

## さまざまなパッケージや関数が用意されている
R言語には、さまざまなパッケージや関数が用意されている。
上手く活用することでコーディングの量を削減でき、迅速・確実なシステム開発を実現できる。
代表的なものは以下。

- anova, aov（分散分析）
- t.test（Studentのt検定）
- plot（散布図の作成）
- dplyr（データの操作や抽出、加工）
- stringr（文字列の操作）
- ggplot2（グラフを作る）

業務に役立つパッケージや関数のなかには、R言語に標準搭載されていないものもあり、その場合でもCRANからダウンロードでき、便利な機能を使える。

# R言語とPythonの違い
PythonとR言語は比較されることが多いプログラミング言語だが、活用される分野の比重はそれぞれ異なる。

- ***Python*** ：ディープラーニングや機械学習に多用される
- ***R言語*** ：統計解析、グラフによるデータの可視化に多く利用される

また、以下のような違いもある。
|                 | R言語         | Python       |
|:----------------|--------------:|:------------:|
| **汎用性の高さ** | 相対的に低い  | 高い         |
| **習得難易度**   | 相対的に高い  | 低い         |
| **年収目安**     | 656万円       | 584万円      |

## R言語の汎用性
R言語はPythonよりも汎用性は低い。

例えばPythonはWebアプリケーションを作成できるが、R言語はあくまで統計計算用であるため、Webアプリケーションを構築することができない。
R言語が利用できるシーンは統計計算、データの視覚的提供に限定されている。

## R言語の習得難易度
習得の難易度においても、Pythonに軍配が上がる。

比較的シンプルな記述形式のPythonと比べ、R言語は若干複雑なプログラミングを要求される。加えて日本語でのリソースが少ないR言語は、時には英語で情報を得なければならないといったデメリットもある。

Pythonと比較すると、初心者には少々敷居が高いとされるR言語だが、これは逆にいえばエンジニア市場における希少性の高さに直結し、習得すれば仕事の幅が広がることは間違いない。

## R言語の年収目安
前述の通り、R言語エンジニアには高い希少性があり、そのため年収目安では高水準が期待される。

あくまでも目安だが、年収面においてはR言語に軍配が上がる。

# R言語に向くシステムや分野
R言語は特定の用途に特化した言語だが、活用できる分野や業務は幅広く、以下のような業務や開発に活かすことができる。
- データ分析業務
- 機械学習やAIの開発
- 大学など研究や教育の分野

## データ分析業務
近年では業績の向上に、データの活用が欠かせない。
新しい施策を打つ場合でも「長年の勘」ではなく、納得できる根拠が求められる時代となっており、データ自体は多種多様なものを取得できるが、ビジネスに活かすためには工夫が必要。

R言語はさまざまな角度でデータを分析し、グラフでわかりやすく表すことが可能。利益アップに結びつく施策の決定に役立つ。
R言語を使う職種には、 ***データサイエンティスト*** や ***データエンジニア*** が挙げられる。

## 機械学習やAIの開発
機械学習やAIの開発でも、データの活用が欠かせない。統計解析に特化した言語という特徴を活かし、データが持つ特徴を抽出しシステムの学習に活かす。これは機械学習やAIの開発にとって、重要なポイント。

またR言語は、ビッグデータの解析にも役立つ。今後大きな成長が期待される分野であるため、活用の場も広がることが期待される。

## 大学など研究や教育の分野
R言語は大学など、研究や教育の分野でも用いられている。そもそも科学論文では、しばしば統計的な有意差の有無を示す場面があることに留意しなければならない。
R言語にはt検定や分散分析など、さまざまな手法が用意されている。

またR言語を活かした解析手法に関する、さまざまな論文も公開されている。研究者に認められる結果を公表するうえでも、R言語は役立つ。

# まとめ
- R言語は統計解析向けのプログラミング言語
- データエンジニア、データサイエンティスト、データアナリストのような職種には欠かせない
- R言語には多種多様なグラフ作成ができるなどの特徴がある
- Pythonと比較すると汎用性が低く、習得難易度と年収目安が高い
- データ分析業務や機械学習で活用され、大学などの研究にも用いられている