見出し画像

Google Colaboratoryを使ってみた感じ

Google Colaboratory is 何?

 Google Colaboratoryとはgoogleが提供しているGPUが無料使えるPython用Jupyter Notebookのこと。Jupyter Notebookとは違うところが多々ありショートカットや見た目が変わっている。
 基本はGoogleが提供しているホスト型ランタイムに接続し自分の端末で計算を行わない形である。これがすごく嬉しくてiOSやAndroid、Windows、Mac、Linuxと全てのプラットフォームでChromeが動いていればホストのUbuntuを操ることができLinux + GPUの純粋な仮想環境を享受できる。

ファーストインプレッション

 めっちゃいい。すごくいい。とにかく私は軽いお出かけ等ではフルOSが乗った端末を持ち運ばないためプログラミング環境が制限されていた。iOSにはかろうじて有能なPythonistaがリリースされているためPython + Numpyの環境はあるが素晴らしいPythonのライブラリ群が使えないのは厳しいところがあった。
 また母艦機とのソースコードの連携もWorking Copyを用いてリモートリポジトリを使うことで共有はできるが至極めんどくさい。そこに颯爽と表れたインタラクティブシェルの強化版とも言えるJupyter Notebookのフォーク版(?)のGoogle製Jupyter Notebook(iOSのChromeからも十分に使えた)が表れたもので大変興味が惹かれた。

素晴らしいポイント

 一、Google Driveにリアルタイムで.ipynbが更新されたものが残りどこからアクセスしようとオンラインに繋がっていれば最新のファイルにアクセスできる。
 二、共有機能が素晴らしく他の人にPythonを教えることが捗る。リアルタイムでタイプされている様子が更新され実行されたセルは全共有者に表示される。
 三、Dockerか知らないが後ろで仮想環境が動き、Root権限が与えられているためapt-get、aptやpip、wgetなどの基本コマンドを使うことができ素のUbuntuをなんの支障もなくいじり倒せる。
 おま環、であるため数えなかったがMNISTやCIFAR等のデータセットは非常に大きな容量を持つため常識的に考えてテザリングしている環境ではダウンロードなどはしたくない。そうなると通信している容量を過剰に気にする必要がでて来てしまう。しかしこれはホスト型ランタイムでありサーバーはGoogleが所有しておりデータの消費はviewのところだけである。

特に威力を発揮する人、場面

 通信回線も間借りすることができると考えるとGoogleに与えられたColaboratoryという環境は母艦がない、テザリングが必要、端末のスペックに依存しないという点から外出先でも気軽に機械学習を学ぶ、ちょっとした計算を行う、非常に低スペックでatom系celeronしか積んでいない、Core2Duoでchromeが辛うじて動く、記憶領域がeMMCで64GBしか積んでない等の厳しい環境であっても機械学習やデータサイエンティストなどの勉強をすることに使いやすいと感じた。

微妙なところ

 今回のメインのお話に移ろう。上げてきたように素晴らしい開発環境ではあるが気になったところがいくつかあった。それを聞いてほしい。

SymPyの数式表示がTex記法で表示

 SymPyとは関数電卓代わりに、いやそれ以上に有能な素晴らしいライブラリである。私の書いた記事ではないがこのライブラリの魅力はQiitaのSympy+Jupyterで最強の電卓環境を作るを見てほしい。この記事では計算結果が美しく整形されている。まるでLaTeXの数式部分だけを抽出しプレビューしてくれているかのよう(中でどんな感じで整形しているのかは知らない)であるがこれがColaboratoryだとTeX用の数式のコマンドが無気力に表示されるだけである。これはやってみれば残念な感じが伝わるはずだ。普通に使えるだけに、本家Jupyter Notebookでは数式を美しく表示してくれるだけに惜しいと感じた。

matplotlibのアニメーションが生成できない、表示が煩雑

 matplotlibのアニメーションはpillowやffmpeg、imagemagickなどでgif化、mp4化できるのだが私はうまく動作させることができなかった。これは私の知識不足かもしれないのでできたらこっそり教えてほしい。
 また表示もアニメーションのrcからjshtmlで出力と指定する必要があり、gifを生成するほうが取り回しやすい点で微妙、ただjshtmlで描画してくれるためコントローラがついており別の点で見ればすごく優秀であるのでjshtmlがだめというわけではない。

出力結果の描画がもたつく、補完機能が一歩遅い

 実際に使ってみて自分の感想を持ってほしい。少なくとも私は全体的にもっさりしていて一歩遅いと感じた。Googleはいつも見た目が綺麗で素晴らしいと思うがこのもっさり感のせいでいつもの美しさが半減しているように感じてしまった。

おわりに

 個人的に思った感想を書いてみたがまだまだ思ったことはたくさんある。使いやすい、特定の状況下では無類の強さを発揮する場面もあるためこれからの経過を見守りアップデートに期待しましょう、というところだと思った。何にせよプログラミングの入門としてPythonが期待されている風潮が強くなってきているためここらで様々なプラットフォームで操れるColaboratoryというPython専用のNotebookの出現は業界全体にとって有益なことだ。
 がーっと書いたためおかしな文章になっているところがあるかもしれないがあとあとで推敲するので容赦してほしい。

富山在住高専生 テクノロジーに関わること全般的に手広くつぶやいていきます。