前回より、インストール不要でかつ無料で使えるPython環境Google Colaboratoryの活用方法を紹介している。Colaboratoryは、機械学習の教育や研究のために提供されているPythonの実行環境だが、自由度が高く様々な用途に使える。今回は、Colaboratory上で作成したデータを保存する方法などを中心に紹介する。

Colaboratoryの利用制限を理解して使えば最強

Colaboratoryを使うと、クラウド上にある、そこそこ性能の良い仮想マシンを無料で自由に利用することができる。しかし、残念なことに、それが無制限に使えるわけではない。最大利用時間が設定されており、定期的に、仮想マシンはまっさらな状態にリセットされてしまう。

もちろん、まっさらな状態と言っても、既にPythonや機械学習のライブラリがインストールされた状態であるのだが、作業中にアップロードしたデータファイルや、マシン内に保存したデータは消えてしまう。

ただし、作業中に作成した全ての成果物が消えてしまう訳ではない。Colaboratory上で作成したプログラム、および、その実行結果は、ノートブック形式(Jupyter Notebook形式、拡張子は「.ipynb」)として、ユーザーのGoogleドライブに保存される仕組みになっている。一般的な用途では、プログラムと実行結果が手元に残るのであれば、問題はないと言えるだろう。

プログラムと実行結果はGoogleドライブに保存される

例えば、2018年における年齢早見表をCSV形式で作ってみよう。ColaboratoryのURLにアクセスして、「新規PYTHON3ノートブック」を作成したら、次のプログラムを実行してみよう。

 basic_year = 2018
 csv = ""
 for age in range(100):
   year = basic_year - age
   csv = "{0},{1}".format(year, age) + "\n" + csv
 csv = "生年,年齢\n" + csv
 print(csv)

このプログラムを実行すると、年齢早見表のCSVデータが作成されて、以下のように画面にデータが表示される。

  • PythonでCSVデータを作成し画面に表示した

    PythonでCSVデータを作成し画面に表示した

この時点で、Webブラウザを終了させてみよう。すると、Colaboratoryがリセットされて、仮想マシンはリセットされる。その後、改めて、ColaboratoryをWebブラウザで開いたら、最近のノートブックから、先ほど作成したノートブックを選んでみよう。

この時点で、Colaboratoryのマシンはリセットされているが、プログラムと実行結果は、Googleドライブに保存されていたことが確認できる。つまり、マシンのメモリ上にあるデータ及び、一時的にマシン内に作成したファイルなどは、消えてしまうが、プログラムと実行結果は問題なく残る。そのため、実行結果を、print()関数を利用して、画面に出力しておくなら、確実にデータを残すことができるという訳だ。

消えてしまう前にファイルをダウンロードしよう

ただし、画面に表示できないようなバイナリデータや、表示が不可能な巨大なデータはどうしたら良いだろうか。その対処方法だが、Colaboratoryがリセットされる前に、ローカルPCなどにファイルをダウンロードしておくことができる。Colaboratoryには、自動的にファイルをローカルに保存する機能が備わっている。

例えば、先ほどの年齢早見表を「age.csv」という名前で保存したら、このファイルをダウンロードするようなプログラムを作ってみよう。

 # CSVファイルを作成してファイルに保存
 basic_year = 2018
 csv = ""
 for age in range(100):
   year = basic_year - age
   csv = "{0},{1}".format(year, age) + "\n" + csv
 csv = "生年,年齢\n" + csv
 open("age.csv", "wt").write(csv)

 # ファイルを保存
 from google.colab import files
 files.download("age.csv")

このプログラムを、Google Chromeで実行すると、自動的にファイル「age.csv」がダウンロードフォルダに保存されることだろう。(ただし、macOSのFirefox59.0.2で試したところ、ダウンロードがうまくできなかった。ファイルを保存したい時には、Chromeを使うと良いだろう。)

  • PythonでCSVデータを作成し画面に表示した

    ファイルをダウンロードしたところ

なお、プログラムを見れば分かる通り、ファイルをダウンロードするには、『files.download(ファイル名)』と書くだけだ。

また、今回は説明しないが、Linuxの便利ツール『google-drive-ocamlfuse』を使えば、ユーザーのGoogleドライブをColaboratoryの仮想マシンにマウントすることができる。この方法を使えば、Googleドライブ内のファイルを普通のファイルと同等に扱えるようになる。そこで、最初から、Googleドライブ内にファイルを保存するようにすれば、Colaboratoryのリセット時に、せっかく作成したファイルを失うことはなくなるのだ。

今回のまとめ

Colaboratoryは、無料で使える最強Python環境だが、定期的に作業データが消えてしまうのが最大のネックだ。しかし、ここで紹介したように、何が残り、何が消えてしまうのかを理解するなら、データが消えるというデメリットもそれほど大きな問題ではないことが分かる。

しかも、Colaboratoryがリセットされる前に、ファイルをダウンロードすることもできるので、必要なファイルを残しておくこともできる。このように、アイデア次第で、いろいろな用途に使えるColaboratoryを使わない手はない。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。