Pythonで作ったツールをGoogle Colaboratoryで共有・公開する方法
Pythonをゴリゴリ書いていると、ふと誰かに共有したくなる時がある。
ツールでも、分析結果でも共有するということが重要。
ただPythonの場合exeファイル化するのが非常に難しい。
できたとしても動作が遅かったり、問題点は多い。
それでもPythonが便利なのは周知の事実。
さてどうしたものかと考えていた時に見つけたのが「Google Colaboratory」
発音はコラボラトリィ?でいいのか。
どうやらオンラインで動くjupyter notebookということだった。
pipも動くし、なんとseleniumでブラウザ操作もできるらしい。
これならわざわざpython環境を他人のPCにセットアップしなくてもいいし、即座に共有が行える。
早速どうやって使うのか、何ができるかを調べてみた。
Google Colaboratoryの概要
Google Colaboratoryとはブラウザ上で動くjupyter notebook環境です。
Colaboratoryと書かれたりColabと書かれたりしていますが、どちらも同じものです。
jupyter notebook(ジュピターノートブック)とはなんぞやという話ですが、Anaconda環境をインストールすると付いてくるPythonの開発環境のようなものです。
プログラムを編集し、即座に実行することができ、主にデータ分析の分野で使われます。
グラフなどをファイルに出力しなくてもjupyter notebook上に表示ができ、コードの修正や追加が簡単にできるようになっています。要するに効率化ツールですね。
jupyter notebookの環境は、Pythonがインストールされている端末がなければ動きません。
なのでjupyter notebookのファイル(ipynb)は共有するのが困難です。
Google Colabはそれがブラウザ上で動かせるということでした。
マジ?と思われる方がいると思いますが、マジです。
開発用の高性能PCを貸してもらえるようなものです。そしてそれを複数人で共有可能・・・。
なんだただの神か・・・。
これがGoogleの力ですね。頭が上がりません。
ということで使い方を調べてみます。
Google Colabの使い方
Google Colabページ
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja
上記のURLにアクセスするだけでColabを使い始めることができます。
Googleアカウントを持っていない人は作ってログインしておきましょう。

ファイル > Python3の新しいノートブックをクリックします。
この時点で、自分のGoogle Driveにjupyter notebookのファイルが自動で保存されています。

いやいや、どんだけ簡単なんですか。
これだけでもうpythonを使う準備が整いました。
早速試しにサンプルコードを動かしてみます。
以下のコードを入力してCtrl+Enterを押して実行。
import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5, 6, 7, 8, 9] y1 = [1, 3, 5, 3, 1, 3, 5, 3, 1] y2 = [2, 4, 6, 4, 2, 4, 6, 4, 2] plt.plot(x, y1, label="line L") plt.plot(x, y2, label="line H") plt.plot() plt.xlabel("x axis") plt.ylabel("y axis") plt.title("Line Graph Example") plt.legend() plt.show()

出ました。ちゃんとpythonが動いています。
そのまんまjupyter notebookです。
ではこのファイルを共有してみます。
ノートブックを共有する方法
- 画面右上の共有ボタンを押す
- 「他のユーザーと共有」で、閲覧権限を選択して、官僚を押す
これもめちゃくちゃ簡単です。

画面右上の共有を押す。

出てきた小窓の右上の、「共有可能なリンクを取得」を押しましょう。
そうするとurlが発行されますので、それを共有したい相手に送って終わりです。
共有の種類があるようです。
- リンクを知っている全員が編集可
- リンクを知っている全員がコメント可
- リンクを知っている全員が閲覧可
3種類あります。この辺りは文字通りですね。
デフォルトでは「リンクを知っている全員が閲覧可」になっています。
スプレッドシートなどですでに共有をしている人には馴染みのある操作でしょう。
ツールなども共有可能
Pythonでツールを作って作業を効率化されている方は多いと思います。
例えばスクレイピングしてきたデータを加工し、データベースに保存。グラフを定期的に出力。なんていう作業です。
調べてみるとrequestも使えますし、pandasはもちろん、seleniumも使えるようでした。
requestなどはまぁ使えるだろうと思いました、まさかseleniumまで使えるとは・・・。
ColaboratoryでSeleniumが使えた:javascriptで生成されるページも簡単スクレイピング
JSを使ったサイトをスクレイピングしたいと思ったら、ブラウザでのレンダリング処理が必須です。
そこもできるとなると、もうローカルでPython環境を構築する必要もあまりないなと思いました。
(Djangoなどでウェブサービスを作りたいという場合は、もちろん別ですが)
一応制限もあるようで、長時間の運用はできないようになっているとのことでした。
90分だったり、12時間だったりで止められるようです。
Google Colabratoryで12時間連続稼働させるときの進捗ログ
Google Colaboratoryの90分セッション切れ対策【自動接続】
とにかくこれで端末を気にせずにPythonも書けますし、共有もできそうです。
Colabを使って色々試してみようと思いました。
以上です。
番外編:Colabで機械学習入門
このまま終わるとColabの本当の素晴らしさが伝わらないまま終わりそうなので、追記しておきます。
Colabratoryの素晴らしさはなんと言ってもGPUが使えることにあります。
そしてGPUは機械学習(ディープラーニング)に欠かせないものです。
【図解】なぜGPUはディープラーニング・AI開発に向いているの?選び方は?NVIDIAさんに聞いてきました
ちなみにGPUはそれなりに高いです。
数万円から数十万円とピンキリですが、やはり高いGPUは計算が速いというメリットがあります。
昨今流行りのディープラーニングですが、AIは大量のデータが用意できてやっと使えるようになります。
そして大量のデータを学習してやっと動かせるようになります。
なのでAI開発はスペックの高いコンピュータがあればあるほど有利になるんですね。
個人が良いGPUを購入するのはやはりハードルが高いです。
そこで役に立つのがColabです。
ColabはGPUをなんと使うことができます。
やはり神ですね。
GPUのスペックですが、コマンドを打ち込むことで確認することができるようです。
初期設定のままでは、GPUを使わない設定になっているので、使う設定にまずはします。


!cat /proc/driver/nvidia/gpus/0000:00:04.0/information
上記のコードを入力してGPUのスペックを確認すると。

「Tesla K80」これがcolabで使われているGPUのようです。
早速お値段を検索すると・・・。


27万!!
これを無料で使わせてくれるなんて・・・。
Googleは本当に偉大だなと思いました。