Google Colaboratory とは
Google Colaboratory はクラウドで実行できる無料のJupyter環境です。ColaboratoryはPython2, Python3に対応していますが、カスタムでインストールすることでRubyも動かすことができたので紹介します。
Rubyを動かす準備
まず、Python2 または Python3 で下記をコピー&ペーストして、RubyやIRubyをインストールします。
!apt-get install ruby-dev
!sudo apt install libtool libffi-dev ruby ruby-dev make
!sudo apt install libzmq3-dev libczmq-dev
!gem install ffi-rzmq
!gem install specific_install
!gem specific_install https://github.com/SciRuby/iruby
!iruby register
!jupyter kernelspec install ~/.ipython/kernels/ruby
必要に応じて、使いたいGemをインストールすることができます
!gem install awesome_print
!gem install pry
!gem specific_install https://github.com/SciRuby/daru
!gem specific_install https://github.com/SciRuby/daru-view
!gem install numo-narray
!gem install rumale
インストールが終了するまで待ちます。
Ruby用のノートブックをアップロードする
ファイル
からノートブックをアップロード...
を選択して、下記のipynbファイルをアップロードします。kernelspecで、Rubyを使うように設定してあります。1
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "ruby.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": []
},
"kernelspec": {
"name": "ruby",
"display_name": "ruby 2.5.1"
}
},
"cells": [
{
"metadata": {
"id": "BpxZ_k6Qv84W",
"colab_type": "code",
"colab": {}
},
"cell_type": "code",
"source": [
"puts \"hello world\""
],
"execution_count": 0,
"outputs": []
}
]
}
これで、Rubyが動作する環境が構築できました。
実際に動かしてみた
require 'daru'
require 'daru/view'
require 'open-uri'
url = "https://vincentarelbundock.github.io/Rdatasets/csv/fpp2/arrivals.csv"
df = Daru::DataFrame.from_csv url
Daru::View.plotting_library = :googlecharts
Daru::View::Plot.new(df,
type: :area,
title: "International Arrivals to Australia",
hAxis: {title: "1981Q1 - 2012Q3"},
vAxis: {title: "千人"},
height: 450,
isStacked: true
).show_in_iruby
このようにして、一応Rubyが動くようになりますが、シンタックスハイライトや、インデントなどまだまだ不十分なところもあります。公式でRubyに対応してくれるともっと便利になりそうですね。
この記事は以上です。
いつもRubyを動かすには
今のところ、私はGoogle ColabをRubyで使うために次のようにしています。rubyinit.pynb などの名前で上記のスクリプトをGoogle Driveにノートブックを保存しておいて、これを実行します。そのあとRubyのノートブックを開きます。もっと適切な方法もあるかもしれません。コメントなどで教えてくださると幸いです。
参考資料
-
この方法でGoogle Colaboratory上でさまざまな言語を動かすことができるかもしれません。 ↩