Rユーザーの生産性を高める

Google Colaboratory/Kaggle Notebookが生産性を高める ~ノートブックでRを使用する

自身のPC上に毎回Rを実行できる環境を作るのは、時に大変な作業です。少しだけ使ってみたい場合やコードと実行結果を簡単に共有したい場合もあります。今回はそんなときに便利な、オンラインでコードを実行できる「Google Colaboratory」「Kaggle Notebook」というサービスを紹介します。

どちらもコードと実行結果がまとめて表示できるノートブック形式で、かつオンライン上でコードを実行できるサービスです。この2つを使うと主に以下のようなメリットがあります。

  1. 環境構築が不要
  2. 実行結果とともにコードを共有できる
  3. GPUを使用できる

Jupyter Notebook[1]など、ノートブックと聞くとPythonが思い浮かぶと思います。しかし、今回紹介するGoogle ColaboratoryやKaggle Notebookでは、R言語も使用することができます。今回はさらなる業務効率化につながるよう、Rでノートブックを活用する方法について紹介していきます。

Google Colaboratory/Kaggle Notebookとは

この記事では2つのオンラインでノートブック環境を提供するサービスを紹介します。

Google Colaboratory

Google ColabratoryはGoogleが提供するブラウザ上でPythonコードを実行できるサービスです。公式サポートされているのはPythonですが、後述する方法によってRを使用できます。

Kaggle Notebook

Kaggleは数多くのデータ分析コンペティションが開催されているプラットフォームです。Jupyter Notebook環境を提供しており、使用時間の制限はありますがGPUも扱えます。Google Colabratoryと異なり、Rを正式にサポートしています。

Rを使用するには

ここから、それぞれの環境でRを使用する方法を説明していきます。

Google Colaboratory

Google Colabratoryで公式にサポートしているのはPythonですが、以下のURLにアクセスするとR言語が使用できる環境でノートブックが作成されます。

https://colab.research.google.com/notebook#create=true&language=r&hl=ja

ナビゲーションバーの「Runtime⁠⁠→⁠Change runtime type」から確認すると、Rが選択されていることがわかります。

図1 Google Colaboratoryのランタイムを確認する
図1

library()関数で確認すると、tidyverseパッケージやGoogleサービスに関連する基本的なパッケージがすでにインストールされていることが確認できます。また、Pythonの実行環境でもIPython magic integration[2]を使用することにより、Rで記述し実行することができます。

# Rを実行できるようにPythonモジュールをロードする
%load_ext rpy2.ipython

Pythonモジュールのロードが完了したら、以下のように初めに%%Rを記述することで、Rのコードを実行できるようになります。

%%R
library(ggplot2)
ggplot(iris, aes(x = Species, y = Sepal.Length)) + geom_boxplot()
図2 IPython magic integration
図2

Kaggle Notebook

通常はサインインしてからノートブックを作成しますが、ログアウト状態でも15分間はセッションが続くので、試しに使ってみたい方はKaggle Codeの画面からノートブックを作成してみてください。

図3 Kaggle Notebookの作成
図3

ノートブックを作成したら、右カラムのSettingsからR言語を選択します。Google Colabratoryに対してKaggle NotebookはRを正式にサポートしており、デフォルトでインストールされているパッケージも豊富です。

図4 Kaggle NotebookのランタイムにRを選択する
図4

既存のGitHubリポジトリへ保存する

Kaggleは作成したノートブックを簡単にGitHubへ保存できます。現在の分析結果がバージョン管理できると、後々の振り返りや他人との共同作業時にとても便利です。以下の手順でGitHubにノートブックを保存してみましょう。

  1. ナビゲーションバーの「File⁠⁠→⁠Link to GitHub」でノートブックとGitHubを連携させる
  2. 左上の「Save Version」ボタンからcommitコメントの記載、リポジトリやブランチの選択を行う
図5 ノートブックをGitHubに保存する
図5

データの手動アップロードと読み込み

分析をするにはデータが必要不可欠です。分析対象となるデータのアップロードや、アップロード後にRから読み込む方法を確認していきます。Google ColaboratoryとKaggleのいずれも、用意しているCSVファイルなどがあればアップロードして使用できます。

Google Colaboratory

ファイルのアップロード

左のファイルアイコンを選択し、アップロードアイコンを押下またはドラッグアンドドロップでファイルをアップロードします。

図6 Google Colabratoryにファイルをアップロードする
図6

アップロードしたファイルの読み込み

元から存在する「sample_data」フォルダと同じ階層にsample_iris.csvをアップロードしたと仮定します。その場合、read_csvでsample_iris.csvと指定するとファイルを読み込むことができます。

read_csv("sample_iris.csv")

Kaggle Notebook

ファイルのアップロード

右カラムの「+Add dataボタン⁠⁠→⁠Upload a Dataset」からファイルを選択しアップロードします。

図7 Kaggle Notebookにファイルをアップロードする
図7

また、Kaggle Notebookは別のKaggle Notebookの結果を参照することもできます。以下の手順で必要なデータを追加してみましょう。

  1. 右カラムの「+Add data」ボタンを押す2.「Notebook Output Files」タブを選択する
  2. 使用したいノートブックの「Add」ボタンを押してデータを追加する
図8 他のノートブックの結果を参照
図8

アップロードしたファイルの読み込み

「+Add data⁠⁠→⁠Upload a Dataset」「sample」というDataset Titleをつけてsample_iris.csvファイルをアップロードしたとします。その場合、read_csv関数の引数に../input/sample/sample_iris.csvと指定するとファイルを読み込むことができます。

read_csv("../input/sample/sample_iris.csv")

ノートブックからGoogle Dirveを使用する

ブラウザ上でdrive_auth関数を実行するため、use_oob引数にTRUEを与えて実行します。しかし現状以下のようにエラーが出てしまいます。

図9 drive_auth関数実行時のエラー
図9

このエラーに対する対応策として、httr::is_interactive関数を上書きし、rlang_interactiveオプションをTRUEにする必要があります[3]

install.packages("R.utils")
library(httr)

suppressMessages(library("R.utils"))
my_check <- function() { return(TRUE) }
reassignInPackage("is_interactive", pkgName = "httr", my_check) 
options(rlang_interactive=TRUE)

それでは再度drive_auth関数を実行してみましょう。

library(googledrive)

drive_auth(use_oob = TRUE, cache = FALSE)
Please point your browser to the following url: ... ①
Enter authorization code: ... ②

まずは①のURLにアクセスします。ファイルの表示、編集、作成、削除などの必要な権限にチェックを入れて続行すると認証コードが発行されるため、そのコードを②のテキストボックスに貼り付けます。
ここで試しにdrive_find関数を実行してみましょう。エラーが出ることなくドライブ内の一覧が表示されます。

drive_find(n_max = 5)

ノートブックからBig Queryに接続する

BigQueryの接続時もGoogleドライブと同様のエラーが出るため、関数の上書きとオプションの変更を行います。

library(httr)

suppressMessages(library("R.utils"))
my_check <- function() { return(TRUE) }
reassignInPackage("is_interactive", pkgName = "httr", my_check) 
options(rlang_interactive=TRUE)

そのうえでbq_auth関数で認証を行いましょう。こちらもブラウザ上での実行なのでuse_oob引数をTRUEにします。

library(bigrquery)

bq_auth(use_oob = TRUE, cache = FALSE)

Googleドライブの認証時と同様、URLとテキストボックスが表示されるので、URLにアクセスし必要な権限を選択した後表示された認証コードをテキストボックスに入力します。

認証が終わったら試しにGoogleが用意しているサンプルデータセットにアクセスしてみましょう。dbConnect関数でpublicdataプロジェクトのsamplesデータセットへ接続し、dbListTables関数でテーブルの一覧を表示します。

con <- dbConnect(
  bigquery(),
  project = "publicdata",
  dataset = "samples",
  billing = "プロジェクトID"
)

dbListTables(con)
'github_nested''github_timeline''gsod''natality''shakespeare''trigrams''wikipedia'

さいごに

簡単にではありますが、RでGoogle ColabratoryやKaggle Notebookを使う方法について説明をしてきました。自分のPCにRやRStudioをインストールすることなくRでプログラムを書くことができ、また相手のPCに環境が整ってなくてもコードと実行結果を簡単に共有することができます。

今回は接続周りの説明にとどめましたが、通称R登山本では、実際にGoogleドライブやBigQueryをRで操作する方法も多数紹介しています。ぜひこちらの記事と合わせて参考にしてみてください。

おすすめ記事

記事・ニュース一覧