【Google Colaboratory】WebブラウザでPythonを使う方法

無料のクラウドサービス「Google Colab」を用いて、Pythonの開発環境をWebブラウザだけで構築する方法についてまとめました。

Google Colaboratoryとは

Google Colaboratoryとは、WebブラウザだけでPythonを実行できるGoogleのクラウドサービスです。
また、無料でGPU環境が使え、「TensorFlow」「Keras」「PyTorch」「Chainer」「OpenCV」等の外部モジュールが使えるため、機械学習も行えます。
クラウドサービスなので、Windows、Mac、LinuxなどのOSに依存せず、Chromeやfirefox等のブラウザさえ入れれば、Pythonプログラミングができます。
また、グラフィックスボードを備えたハイスペックなPCが不要で、開発環境構築の手間も省けるため、かなり便利なサービスです。

ただし、Google Colaboratoryでは以下の制約条件があります。

  • 主な制約条件
    • ノートブックのサイズは最大20MB
    • ノートブックのセッションが切れてから90分経過すると、インスタンスの状態がすべてリセットされる【90分ルール】。
    • 新しいインスタンスを起動してから12時間経過すると、インスタンスの状態がすべてリセットされる【12時間ルール】。

また、Google Colaboratoryには無料版と有料版(Colab Pro、Colab Pro+)があります。
Pythonの練習をするなら無料版で十分ですが、それぞれの違いは以下表のとおりです。

項目 無料版 Colab Pro Colab Pro+
月額利用料金 無料 1179円 5767円
GPU 利用可能 高性能なGPUを利用可能 高性能なGPUを利用可能
メモリ 普通(通常利用では十分) 大容量(大量のデータを扱える) 大容量(大量のデータを扱える)
使用時間 最長 12 時間 最長 24 時間 最長 24 時間
バックグラウンド実行

ノートブックを作成してPythonを実行

  • セルにプログラムを記述します。 [▶]ボタンをクリックします。すると、セルの下に実行結果が表示されます。

ノートブックを保存、名前の変更

  • 上部メニューから[ファイル]→[保存]をクリックして、作成したノートブックを保存します。

  • 保存したノートブックの場所を開きたい場合、 上部メニューから[ファイル]→[ドライブを探す]をクリックします。

  • ファイル名(ノートブックの名前)を変更したい場合、上部メニューから[ファイル]→[名前の変更]をクリックします。

  • Googleドライブ上で直接ファイル名を編集したり、移動することもできます。

GPUの利用設定

  • ノートブック画面上部から[ランタイム] → [ランタイムのタイプを変更]をクリックします。

  • [ハードウェアアクセラレータ]の[GPU]で、使用したいGPUの種類を選択して保存します。

Googleドライブ上のファイルを読み込む

  • 左端のフォルダアイコンをクリックします。

  • 「Googleドライブに接続」をクリックします。Googleアカウントのログイン画面が出てきたらログインします。

  • Googleドライブがマウントされ、「Drive」→「MyDrive」を展開すると、Googleドライブにアクセスできるようになります。

ファイルのアップロード

  • セルに下記のコードを書いて実行します。
from google.colab import files
uploaded = files.upload()

出力画面上にアップロード用のボタン[ファイル選択]が表示されます。それをクリックすることでファイルをアップロードできます。

外部モジュールのインストール

Google Colaboratoryでも、外部モジュールをインストールするときはpipを使います。
ただし、ローカルマシンと少し異なり、pipの前に!を付けて実行します。

!pip install パッケージ名

なお、Pythonでよく利用されている機械学習ライブラリや計算ライブラリ、グラフ描画ライブラリは大体がインストール済なので、インストール作業は不要です。インストール済かどうかの確認方法は次の節で紹介します。

Google Colaboratoryに標準搭載されている外部モジュール

セルで「!pip freeze」を実行すると、Google Colaboratoryに標準搭載されている外部モジュールの一覧表が表示されます。2023年8月4日現在確認したところ、以下のとおりでした。これらは、特にインストール作業で利用できるモジュールです。主要な機械学習ライブラリや計算ライブラリ、グラフ描画ライブラリは揃っています。

absl-py==1.4.0
aiohttp==3.8.5
aiosignal==1.3.1
alabaster==0.7.13
albumentations==1.2.1
altair==4.2.2
anyio==3.7.1
appdirs==1.4.4
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
array-record==0.4.0
arviz==0.15.1
astropy==5.2.2
astunparse==1.6.3
async-timeout==4.0.2
attrs==23.1.0
audioread==3.0.0
autograd==1.6.2
Babel==2.12.1
backcall==0.2.0
beautifulsoup4==4.11.2
bleach==6.0.0
blinker==1.4
blis==0.7.10
blosc2==2.0.0
bokeh==3.1.1
branca==0.6.0
build==0.10.0
CacheControl==0.13.1
cachetools==5.3.1
catalogue==2.0.9
certifi==2023.7.22
cffi==1.15.1
chardet==4.0.0
charset-normalizer==2.0.12
chex==0.1.7
click==8.1.6
click-plugins==1.1.1
cligj==0.7.2
cloudpickle==2.2.1
cmake==3.25.2
cmdstanpy==1.1.0
colorcet==3.0.1
colorlover==0.3.0
community==1.0.0b1
confection==0.1.0
cons==0.4.6
contextlib2==21.6.0
contourpy==1.1.0
convertdate==2.4.0
cryptography==3.4.8
cufflinks==0.17.3
cvxopt==1.3.1
cvxpy==1.3.2
cycler==0.11.0
cymem==2.0.7
Cython==0.29.36
dask==2022.12.1
datascience==0.17.6
db-dtypes==1.1.1
dbus-python==1.2.18
debugpy==1.6.6
decorator==4.4.2
defusedxml==0.7.1
distributed==2022.12.1
distro==1.7.0
dlib==19.24.2
dm-tree==0.1.8
docutils==0.18.1
dopamine-rl==4.0.6
duckdb==0.8.1
earthengine-api==0.1.361
easydict==1.10
ecos==2.0.12
editdistance==0.6.2
en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.5.0/en_core_web_sm-3.5.0-py3-none-any.whl#sha256=0964370218b7e1672a30ac50d72cdc6b16f7c867496f1d60925691188f4d2510
entrypoints==0.4
ephem==4.1.4
et-xmlfile==1.1.0
etils==1.4.0
etuples==0.3.9
exceptiongroup==1.1.2
fastai==2.7.12
fastcore==1.5.29
fastdownload==0.0.7
fastjsonschema==2.18.0
fastprogress==1.0.3
fastrlock==0.8.1
filelock==3.12.2
Fiona==1.9.4.post1
firebase-admin==5.3.0
Flask==2.2.5
flatbuffers==23.5.26
flax==0.7.0
folium==0.14.0
fonttools==4.41.1
frozendict==2.3.8
frozenlist==1.4.0
fsspec==2023.6.0
future==0.18.3
gast==0.4.0
gcsfs==2023.6.0
GDAL==3.4.3
gdown==4.6.6
gensim==4.3.1
geographiclib==2.0
geopandas==0.13.2
geopy==2.3.0
gin-config==0.5.0
glob2==0.7
google==2.0.3
google-api-core==2.11.1
google-api-python-client==2.84.0
google-auth==2.17.3
google-auth-httplib2==0.1.0
google-auth-oauthlib==1.0.0
google-cloud-bigquery==3.10.0
google-cloud-bigquery-connection==1.12.1
google-cloud-bigquery-storage==2.22.0
google-cloud-core==2.3.3
google-cloud-datastore==2.15.2
google-cloud-firestore==2.11.1
google-cloud-functions==1.13.1
google-cloud-language==2.9.1
google-cloud-storage==2.8.0
google-cloud-translate==3.11.2
google-colab @ file:///colabtools/dist/google-colab-1.0.0.tar.gz#sha256=0885853d84f852df4da0d294de7c7d02c701dd982d3280a456c3b4a12dc5e859
google-crc32c==1.5.0
google-pasta==0.2.0
google-resumable-media==2.5.0
googleapis-common-protos==1.59.1
googledrivedownloader==0.4
graphviz==0.20.1
greenlet==2.0.2
grpc-google-iam-v1==0.12.6
grpcio==1.56.2
grpcio-status==1.48.2
gspread==3.4.2
gspread-dataframe==3.3.1
gym==0.25.2
gym-notices==0.0.8
h5netcdf==1.2.0
h5py==3.8.0
holidays==0.29
holoviews==1.15.4
html5lib==1.1
httpimport==1.3.1
httplib2==0.21.0
humanize==4.6.0
hyperopt==0.2.7
idna==3.4
imageio==2.25.1
imageio-ffmpeg==0.4.8
imagesize==1.4.1
imbalanced-learn==0.10.1
imgaug==0.4.0
importlib-metadata==4.6.4
importlib-resources==6.0.0
imutils==0.5.4
inflect==6.0.5
iniconfig==2.0.0
intel-openmp==2023.2.0
ipykernel==5.5.6
ipython==7.34.0
ipython-genutils==0.2.0
ipython-sql==0.4.1
ipywidgets==7.7.1
itsdangerous==2.1.2
jax==0.4.13
jaxlib @ https://storage.googleapis.com/jax-releases/cuda11/jaxlib-0.4.13+cuda11.cudnn86-cp310-cp310-manylinux2014_x86_64.whl#sha256=af30095a0adf342b837a0ed9607e13177ee66f4e654c031a383aa546cd21d815
jeepney==0.7.1
jieba==0.42.1
Jinja2==3.1.2
joblib==1.3.1
jsonpickle==3.0.1
jsonschema==4.3.3
jupyter-client==6.1.12
jupyter-console==6.1.0
jupyter-server==1.24.0
jupyter_core==5.3.1
jupyterlab-pygments==0.2.2
jupyterlab-widgets==3.0.8
kaggle==1.5.16
keras==2.12.0
keyring==23.5.0
kiwisolver==1.4.4
langcodes==3.3.0
launchpadlib==1.10.16
lazr.restfulclient==0.14.4
lazr.uri==1.0.6
lazy_loader==0.3
libclang==16.0.6
librosa==0.10.0.post2
lightgbm==3.3.5
linkify-it-py==2.0.2
lit==16.0.6
llvmlite==0.39.1
locket==1.0.0
logical-unification==0.4.6
LunarCalendar==0.0.9
lxml==4.9.3
Markdown==3.4.4
markdown-it-py==3.0.0
MarkupSafe==2.1.3
matplotlib==3.7.1
matplotlib-inline==0.1.6
matplotlib-venn==0.11.9
mdit-py-plugins==0.4.0
mdurl==0.1.2
miniKanren==1.0.3
missingno==0.5.2
mistune==0.8.4
mizani==0.8.1
mkl==2019.0
ml-dtypes==0.2.0
mlxtend==0.22.0
more-itertools==9.1.0
moviepy==1.0.3
mpmath==1.3.0
msgpack==1.0.5
multidict==6.0.4
multipledispatch==1.0.0
multitasking==0.0.11
murmurhash==1.0.9
music21==8.1.0
natsort==8.3.1
nbclient==0.8.0
nbconvert==6.5.4
nbformat==5.9.1
nest-asyncio==1.5.6
networkx==3.1
nibabel==4.0.2
nltk==3.8.1
notebook==6.4.8
numba==0.56.4
numexpr==2.8.4
numpy==1.22.4
oauth2client==4.1.3
oauthlib==3.2.2
opencv-contrib-python==4.7.0.72
opencv-python==4.7.0.72
opencv-python-headless==4.8.0.74
openpyxl==3.0.10
opt-einsum==3.3.0
optax==0.1.7
orbax-checkpoint==0.3.1
osqp==0.6.2.post8
packaging==23.1
palettable==3.3.3
pandas==1.5.3
pandas-datareader==0.10.0
pandas-gbq==0.17.9
pandocfilters==1.5.0
panel==1.2.1
param==1.13.0
parso==0.8.3
partd==1.4.0
pathlib==1.0.1
pathy==0.10.2
patsy==0.5.3
pexpect==4.8.0
pickleshare==0.7.5
Pillow==9.4.0
pip-tools==6.13.0
platformdirs==3.9.1
plotly==5.13.1
plotnine==0.10.1
pluggy==1.2.0
polars==0.17.3
pooch==1.6.0
portpicker==1.5.2
prefetch-generator==1.0.3
preshed==3.0.8
prettytable==0.7.2
proglog==0.1.10
progressbar2==4.2.0
prometheus-client==0.17.1
promise==2.3
prompt-toolkit==3.0.39
prophet==1.1.4
proto-plus==1.22.3
protobuf==3.20.3
psutil==5.9.5
psycopg2==2.9.6
ptyprocess==0.7.0
py-cpuinfo==9.0.0
py4j==0.10.9.7
pyarrow==9.0.0
pyasn1==0.5.0
pyasn1-modules==0.3.0
pycocotools==2.0.6
pycparser==2.21
pyct==0.5.0
pydantic==1.10.12
pydata-google-auth==1.8.1
pydot==1.4.2
pydot-ng==2.0.0
pydotplus==2.0.2
PyDrive==1.3.1
pyerfa==2.0.0.3
pygame==2.5.0
Pygments==2.14.0
PyGObject==3.42.1
PyJWT==2.3.0
pymc==5.1.2
PyMeeus==0.5.12
pymystem3==0.2.0
PyOpenGL==3.1.7
pyparsing==3.1.0
pyproj==3.6.0
pyproject_hooks==1.0.0
pyrsistent==0.19.3
PySocks==1.7.1
pytensor==2.10.1
pytest==7.2.2
python-apt==0.0.0
python-dateutil==2.8.2
python-louvain==0.16
python-slugify==8.0.1
python-utils==3.7.0
pytz==2022.7.1
pyviz-comms==2.3.2
PyWavelets==1.4.1
PyYAML==6.0.1
pyzmq==23.2.1
qdldl==0.1.7.post0
qudida==0.0.4
regex==2022.10.31
requests==2.27.1
requests-oauthlib==1.3.1
requirements-parser==0.5.0
rich==13.4.2
rpy2==3.4.2
rsa==4.9
scikit-image==0.19.3
scikit-learn==1.2.2
scipy==1.10.1
scs==3.2.3
seaborn==0.12.2
SecretStorage==3.3.1
Send2Trash==1.8.2
shapely==2.0.1
six==1.16.0
sklearn-pandas==2.2.0
smart-open==6.3.0
sniffio==1.3.0
snowballstemmer==2.2.0
sortedcontainers==2.4.0
soundfile==0.12.1
soupsieve==2.4.1
soxr==0.3.5
spacy==3.5.4
spacy-legacy==3.0.12
spacy-loggers==1.0.4
Sphinx==5.0.2
sphinxcontrib-applehelp==1.0.4
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
SQLAlchemy==2.0.19
sqlparse==0.4.4
srsly==2.4.7
statsmodels==0.13.5
sympy==1.11.1
tables==3.8.0
tabulate==0.9.0
tblib==2.0.0
tenacity==8.2.2
tensorboard==2.12.3
tensorboard-data-server==0.7.1
tensorflow==2.12.0
tensorflow-datasets==4.9.2
tensorflow-estimator==2.12.0
tensorflow-gcs-config==2.12.0
tensorflow-hub==0.14.0
tensorflow-io-gcs-filesystem==0.32.0
tensorflow-metadata==1.13.1
tensorflow-probability==0.20.1
tensorstore==0.1.40
termcolor==2.3.0
terminado==0.17.1
text-unidecode==1.3
textblob==0.17.1
tf-slim==1.1.0
thinc==8.1.10
threadpoolctl==3.2.0
tifffile==2023.7.18
tinycss2==1.2.1
toml==0.10.2
tomli==2.0.1
toolz==0.12.0
torch @ https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl#sha256=a7a49d459bf4862f64f7bc1a68beccf8881c2fa9f3e0569608e16ba6f85ebf7b
torchaudio @ https://download.pytorch.org/whl/cu118/torchaudio-2.0.2%2Bcu118-cp310-cp310-linux_x86_64.whl#sha256=26692645ea061a005c57ec581a2d0425210ac6ba9f923edf11cc9b0ef3a111e9
torchdata==0.6.1

関連ページ

【Python超入門】使い方とサンプル集
Pythonとは、統計処理や機械学習、ディープラーニングといった数値計算分野を中心に幅広い用途で利用されている人気なプログラミング言語です。 主な特徴として「効率のよい、短くて読みやすいコードを書きやすい」、「ライブラリが豊富なのでサクッと...

コメント