1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google ColabとGoogle Driveを連携する方法

1
Posted at

Google Colabを使っていると、作成したファイルや加工したデータが、ランタイムの切断とともに消えてしまった、という経験をした人は多いのではないでしょうか。

Google Colabは便利な実行環境ですが、ローカルのストレージはあくまで一時的なものです。ランタイムがリセットされると、そこに保存したファイルはすべて失われます。

そんなときに便利なのが、Google Driveとの連携です。Google Driveをマウントすることで、Colab上からDrive内のファイルを直接読み書きできるようになり、ノートブックをまたいだデータの永続化や、他のメンバーとのファイル共有が簡単になります。

本記事では、Google ColabからGoogle Driveを利用する基本的な方法と、その活用例を紹介します。

対象読者

  • Google Driveは知っているが、Google Colabとの連携方法を知らない人
  • Colab上で作成したファイルや学習済みモデルを、ランタイムが切れても残しておきたい人
  • 大きなデータセットを、毎回ローカルからアップロードするのが面倒な人
  • 複数のNotebookで、同じデータやファイルを再利用したい人
  • ランタイムがリセットされるたびに、作業を一からやり直すのに困っている人
  • ローカル環境を構築せずに、ブラウザだけで開発や分析を進めたい人

すぐに使えるチートシートはこちら Google Colab版

すぐに実行して、試せるコードレシピはこちら。

Google DriveをColabにマウントする

Google Colabには、google.colabパッケージにdriveモジュールが標準で用意されており、これを使うことでGoogle Driveをファイルシステムの一部としてマウントできます。

まずは、以下のコードを実行してみます。

from google.colab import drive
drive.mount('/content/drive')

実行結果:

Mounted at /content/drive

実行すると、Googleアカウントへのアクセス許可を求めるポップアップ、もしくはリンクが表示されます。案内に従ってログイン中のGoogleアカウントを選択し、アクセスを許可すると、認証が完了しマウントが実行されます。

左側のペインの「ファイル」タブからも、driveというフォルダが追加され、その中にGoogle Driveの中身が展開されていることが確認できます。

マウント後のディレクトリ構成

マウント後は、自分のGoogle Driveのマイドライブが /content/drive/MyDrive/ 以下に展開されます。試しに中身を確認してみます。

!ls "/content/drive/MyDrive/public/qiita/sample_server"

実行結果:

sample.txt

パスさえ分かれば、あとは通常のColab上のファイル操作と同じ感覚で読み書きができます。

ファイルの作成・編集・削除を試す

Google Drive上でテキストファイルを操作する方法はいくつかありますが、ここでは代表的な3通りのやり方(マジックコマンド/Pythonのfileモジュール/osモジュール)で、それぞれ「作成 → 編集 → 削除」という一連の流れを試してみます。

マジックコマンドで操作する

Colabの!(シェルコマンド)や%%writefile(セルマジック)を使うと、コードをほとんど書かずに手早くファイル操作ができます。

%cd "/content/drive/MyDrive/public/qiita/sample_server"
!touch sample_magic.txt
!ls

実行結果:

/content/drive/MyDrive/public/qiita/sample_server
sample_magic.txt  sample.txt

touchで空のファイルを作成できました。中身は%%writefileで書き込みます。セルの1行目に書いたファイル名へ、2行目以降の内容がそのまま書き込まれます。

%%writefile sample_magic.txt
hello world (via magic command)

実行結果:

Overwriting sample_magic.txt

内容を確認してみます。

!cat sample_magic.txt

実行結果:

hello world (via magic command)

編集(上書き)したいときも、同じ%%writefileをもう一度実行するだけです。最後に、不要になったファイルを!rmで削除します。

!rm sample_magic.txt
!ls

Pythonのfileモジュールで操作する

組み込みのopen()関数を使う、最も基本的な方法です。モード('x', 'w', 'a', 'r'など)を使い分けることで、作成・上書き・追記・読み込みができます。

file_path = "sample_open.txt"

# 'x'モード: ファイルが存在しない場合のみ新規作成する
with open(file_path, "x") as f:
    f.write("hello world (via open)\n")

続けて、'a'モードで内容を追記(編集)してみます。

with open(file_path, "a") as f:
    f.write("追記した行です\n")

内容を確認します。

with open(file_path, "r") as f:
    print(f.read())

実行結果:

hello world (via open)
追記した行です

なお、open()が扱えるのはあくまでファイルの中身であり、ファイルそのものを削除することはできません。ファイルの削除には、次に紹介するosモジュールの機能を使います。

osモジュールで操作する

osモジュールを使うと、ファイルの存在確認や削除など、ファイルシステムそのものを操作できます。低レベルなos.open / os.write / os.closeを使えば、ファイルの作成から書き込みまでをosモジュールだけで完結させることもできます。

import os

file_path = "sample_os.txt"

# os.open + os.write でファイルを新規作成・書き込み
fd = os.open(file_path, os.O_CREAT | os.O_WRONLY | os.O_TRUNC)
os.write(fd, "hello world (via os module)\n".encode())
os.close(fd)

print("存在確認:", os.path.exists(file_path))

実行結果:

存在確認: True

編集(上書き)したい場合も、同じ流れでos.O_TRUNCを指定して書き込み直します。

fd = os.open(file_path, os.O_WRONLY | os.O_TRUNC)
os.write(fd, "内容を書き換えました\n".encode())
os.close(fd)

with open(file_path) as f:
    print(f.read())

実行結果:

内容を書き換えました

最後に、os.remove()で削除します。

os.remove(file_path)
print("存在確認:", os.path.exists(file_path))

実行結果:

存在確認: False

この一連の操作は、Colab上だけでなくGoogle Drive側にもそのまま反映されます。実際にDriveの画面を開いて確認すると、ファイルが作成・更新・削除されている様子を見ることができます。

手早く済ませたいときはマジックコマンド、コード内で完結させて処理を組み立てたいときは**open()(fileモジュール)、存在確認や削除など一段低いレベルの操作が必要なときはosモジュール**、といった形で使い分けるとよいでしょう。

作業フォルダを固定しておくと便利

Drive内の特定フォルダを作業ディレクトリとしてos.chdirで固定しておくと、以降のセルで相対パスが使えるようになり、コードがすっきりします。

import os

work_dir = "/content/drive/MyDrive/colab_projects/my_project"
os.makedirs(work_dir, exist_ok=True)
os.chdir(work_dir)

print("カレントディレクトリ:", os.getcwd())

まとめ

Google ColabとGoogle Driveを連携させることで、ランタイムのリセットに左右されずにファイルを永続化でき、Notebookをまたいだデータやコードの再利用もしやすくなります。

drive.mount()を実行するだけで使い始められる手軽さも大きな魅力です。日々のデータ分析や検証作業では、まずGoogle Driveをマウントする、という流れを習慣にしてみてください。

補足・注記事項

  • Google Colabのランタイムやディスク容量、利用制限などの詳細は、Googleの公式資料をご確認ください。

  • 本記事ではgoogle.colab.driveによるマウント方式を紹介しましたが、より柔軟な操作(自動化やサービスアカウントでのアクセスなど)が必要な場合は、Google Drive API(google-api-python-client)の利用も検討してください。
  • Google Drive上のデータも、GitHub同様、機密情報や認証情報の置き場所としては適していません。アクセス権限の設定と合わせて、保存するデータの取り扱いには注意してください。

弊社について

本記事を書いている 合同会社インクルーシブソリューションズ は、データ基盤構築・分析基盤設計・システム改善支援を中心に活動している小規模IT法人です。

主な領域は、

  • データマート設計・データパイプライン構築
  • SQL / Python を用いたデータ処理設計
  • BI導入支援・分析基盤の整備
  • 既存システムの運用改善・可視化支援

といった、「データを使える状態にする」ための活動です。

弊社の企業活動に興味がある方は、ぜひ公式サイトも覗いてみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?