2 Google ColaboratoryでR言語を使う

2.1 Google Colaboratory について

Google Colaboratory(以下Colabと略称)は Google が提供している、ブラウザ上で機械学習などのプログラミング(言語は Python)が行える環境です。numpy や Tensorflow など機械学習でよく使うライブラリがインストール済みであり、環境構築がほぼ不要で機械学習プログラミングが始められます。GPU を使うことも可能で、非力なパソコンでもディープラーニングができるので学習用の環境として非常に便利です。

Colab は基本的に Python 言語の環境ですが、R 言語を使うことも可能です。R 本体や RStudio などをインストールしなくても R のプログラミングが始められるので、Colab は R の学習環境としても魅力的であると言えます。このページでは Colab で R を使う方法について解説します。

Colab を使うには Google アカウントが必要です。
(Gmail のアカウントを持っていればそれでOK。無い場合はまず Google アカウントを作成しましょう)

2.2 Google Colaboratory で R を使えるようにする

Colab のページ にアクセスして、新しいノートブックを作成します。

ノートブックというのはプログラムを書き入れるファイルのことだと思っておいて下さい。

そうすると以下のような画面が表示されます。

Python を使う場合はこのまますぐにプログラムを書き始めることができるのですが、R を使うようにするにはちょっとした作業(ノートブックの書き換え)がまず必要です。

画面左上のメニューの中から「ファイル」を選び、「.ipynbをダウンロード」を選びます。
(現在画面に表示中のノートブックのファイルが保存されます)

ノートブックのファイルが保存されるので、これをメモ帳などのテキストエディタで開きます。

そして、“kernelspec” にある namedisplay_name を以下のように書き換えます。

"kernelspec": {
  "name": "ir",
  "display_name": "R"
}

書き換えができたら、このファイルをアップロードします。
画面左上のメニューの中から「ファイル」を選び、「ノートブックをアップロード」を選びます。
そして、書き換えを行ったノートブックファイルを選んでアップロードします。

アップロードをすると、画面が更新されて、再び最初のノートブックの画面が表示されます。

画面左上のメニューの中から「ランタイム」を選び、「ランタイムのタイプを変更」を選びます。

「ランタイムのタイプ」が「R」となっていれば書き換え成功です。
(書き換え前はここが Python になっていました)

これで R を使う準備ができました。

2.2.1 行番号表示の設定の変更

Colab ではデフォルトでは行番号が表示されません。
表示するように設定を変更するには、画面左上のメニュー内の「ツール」から「設定」を選び、エディタタブで「行番号を表示」にチェックを入れます。

2.3 R が動くことを確認する

画面に表示されているコードセルに何か適当な R のスクリプトを記入してみます。

このセル内の R スクリプトを実行するには、セルの左にある実行ボタンを押します。
または、Ctrl + Enter(⌘ + Return)のキーボードショートカットでも実行できます。

実行すると、実行結果がセルの下側に表示されます。

もう少し R っぽいものも書いてみましょう。

df = data.frame( x = 1:5, y = 6:10 )
df

まさに R ですね。

2.4 Colab の機能

2.4.1 コードセル

Colab ではセル単位でプログラムを実行できます。

画面左上の「+ コード」をクリックすると新しいコードセルが作成されます。
何か適当に R スクリプトを書いて実行してみます。

x = rnorm( 10000 )
hist( x, nclass = 40 )

セル内のスクリプトが実行されました。

このように Colab ではセルごとにスクリプトを書き、実行することができます。

セルの出力(実行結果)を消すには、セルの右上のボタンから「出力を消去」を選びます。

画面左上の「編集」の「出力をすべて消去」を押せば、全てのセルの出力を消去できます。

2.4.2 テキストセル

画面左上の「+ テキスト」をクリックするとテキストセルが作成されます。
テキストセルは、プログラムではなく普通の文章を書くためのセルです。

テキストセルの編集時はセルが左右に分割されて表示されます。左側がテキストを記入する場所で、右側にはテキストの表示結果が示されます。下図はテキストセルにいくらかの文章を書いた状態の例です。

Escキーを押すとテキストセルの編集状態を抜けます。再度Escキーを押してセルの選択状態を解除すると以下のような表示になります。

テキストセルの文章はマークダウン形式で書くことができます。
マークダウン形式を知らない人は、とりあえず次のルールを覚えておくと良いでしょう。

  • 文頭に#記号を付けるとその文は太字かつ大きいサイズで表示される
  • 改行には半角スペース2個を文末に入れる
  • 文と文の間に空の行を入れるとパラグラフで分割される

1つめのルールについて、これは文章の見出しを作るために使う機能です。ちなみに、#が1つだと文字のサイズがとても大きいですが、#記号を2つとか3つ並べることもでき、その場合は#記号の数が多くなるほど文字のサイズが小さくなります。例「###少しサイズ小さめの見出し」

2つめのルールについて、上の図では分かりにくいですが、セルの左側の編集中のテキストの例えば「テキストセルは文章を書くためのセルです。」という文の文末には、半角スペースが2つ入っています。なので、実際には「テキストセルは文章を書くためのセルです。  」と記入されています。
半角スペース2つを入れない場合、セル左側の編集画面では改行されているように見えても、結果的にセルに表示される時には改行が入らなくなります。

3つめのルールについて、上の図では見出しの下にある文章は全部で3つの段落に分かれています(段落の間に少しの隙間がある)。セル左側の編集画面で文と文の間に何も記入しない行を入れることで、その前後が段落に分割されます。何も記入しない行を2つや3つ入れたとしても、表示された時の段落の間の隙間の幅は変わりません。

2.4.3 セルの操作

セルをクリックして選択状態にすると、そのセルの右上にいくつかのアイコンが表示されます。上矢印↑や下矢印↓をクリックするとそのセルの位置を上下に移動させることができます。例えばテキストセルを選択してアイコンを表示させ、

上矢印アイコンをクリックすると、

そのセルがひとつ上に移動しました。

ところで、新しいセルを作成する際に先ほどは画面左上の「+ コード」「+ テキスト」ボタンを使いましたが、別の方法も可能です。

セルとセルの間で、かつ左右方向で中央付近にマウスカーソルを合わせると、そこに「コード」と「テキスト」のボタンが現れます。

そのボタンを押せば、その位置に新しいセルを作成することができます。
(下図は新しいコードセルを作成した場合の例)

2.4.4 ノートブックの保存

ノートブックを保存するには、画面左上の「ファイル」から「保存」を選びます。
すると、ノートブックは自分の Google アカウントの Google Drive に保存されます。
(.ipynb をダウンロードなどをする必要はありません)

Ctrl + S(⌘ + S)というキーボードショートカットでも保存できます。

なお、ノートブックの名前は画面上部のファイル名の箇所をクリックすると変更できます。

ファイル名の .ipynb の部分はノートブック形式を表す拡張子なので変更しないように。

2.4.5 Colab の接続時間制限について

Colab には連続して使用できる時間に制限があり、以下のどちらかの条件が満たされるとプログラムが実行中であっても動作が停止し、ノートブックのランタイムがリセットされてしまいます。

ノートブックに書いたプログラムはランタイムがリセットされても Google Drive に保存されていれば消えるわけではありません。しかし、プログラムが使用中だった変数はリセットされ、パッケージも再インストールもする必要があります。

  • 90分ルール:ノートブックの接続が切れてから90分経過
  • 12時間ルール:ノートブックを起動してから12時間が経過

90分ルールについては、ノートブックを操作しない状態が90分続くとリセットが起こります。プログラムを書く作業をしている間はこのルールに引っかかることはないでしょうが、完了までに長時間が必要なプログラムを実行させてしばらくパソコンから離れているとこのルールのためプログラムが途中で停止し作業内容が失われてしまいます。90分ルールは色々な方法で回避することが可能なので、必要に応じて調べて下さい。

12時間ルールは Colab のより本質的な制限で、回避はできません。実行完了までの時間が12時間を超えるプログラムを動かしたい場合はリセット前に途中経過を Google Drive に保存し、次の12時間でその続きから処理を行わせるなどの工夫をする必要があります。

2.4.6 パッケージについて

Colab 環境では dplyrggplot2 などの様々なパッケージが最初からインストール済みになっています。

p = installed.packages()
rownames( p )

とコードセルに記入して実行すれば、インストール済みパッケージ名を一覧することができます。

他のパッケージをインストールしたい際は install.packages() 関数が使えます。

install.packages( "moments" )
moments::kurtosis(1:50)
## [1] 1.79904

2.4.6.1 便利なパッケージ

Colab 環境には RStudio の Environment タブのような変数一覧の表示画面がありません。
lsr パッケージの who() 関数を使うと使用中の変数の情報が確認できて便利です。

install.packages( "lsr" )
lsr::who()

2.5 データのアップロード/ダウンロード

分析に使用するデータを Colab にアップロードしたり分析結果のデータを保存するには、

  1. ローカルファイルシステムを利用する方法と、
  2. Google Drive をマウントして使う方法

があります。

ローカルファイルシステムは90分ルールや12時間ルールでランタイムがリセットされるとデータが消えるので、必要なデータは消える前にダウンロードしておく必要があります。Google Drive をマウントしてそのドライブでファイルを読み書きする場合はそのような心配はありません。

以下ではローカルファイルシステムにファイルをアップロードする方法を解説します。

2.5.0.1 ローカルファイルシステムにファイルをアップロードする

例として下記の csv ファイルを使うことにします。
これをダウンロードして下さい。

次に、Colab の画面左上にある > マークのアイコンをクリックして、

「ファイル」タブの「アップロード」から先ほどの csv ファイルをアップロードします。
(sample_data フォルダは元から存在するフォルダです)

するとファイル一覧に marketing.csv が追加され、アップロードできたことが確認できます。

次の R スクリプトを実行すると csv ファイルの内容を R の変数に読み込むことができます。

dat = read.csv( file = "marketing.csv", header = T )
head( dat )

Colab では カレントディレクトリが “/content” にデフォルトでは設定されています。
getwd() コマンドを実行するとそのことが確認できます。
content フォルダに存在するデータを読み込む際の read.csv() 関数の file 引数は
file = “marketing.csv”
または
file = “/content/marketing.csv”
とします。

write.table() などを使ってデータフレームを保存することもできます。

write.table( dat, "/content/dat.csv", quote = F, sep = ",", row.names = F )

という R スクリプトを実行すれば左側のファイル一覧に dat.csv が追加されます。
表示されない場合は「更新」を押して下さい。

dat.csv を右クリックして「ダウンロード」を選べばこのファイルを手元に保存できます。