Google Colab ブラウザだけでPython実行

# オンライン開発環境 Google Colab
[Google Colaboratory（Google Colab）](https://colab.research.google.com/)はGoogle社の提供するオンラインのPython開発環境。
対話的にPythonを実行できる[Jupyter Notebook](http://jupyter.org/)のクラウド版となる。
使用にはGoogleアカウントが必要だが、完全無料でGPUも使える（機械学習の勉強に向く）。
更新が続いており、最近もセッションストレージ管理機能やGoogle Drive のマウントが進化していた。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/2f1c351f-c165-cdbf-29bb-38c238df69fb.png)

## ノートブック
Google Colabのファイルは**ノートブック**という単位で管理される。
ノートブックには複数の**セル**を追加でき、コードセル内にコードを入力して実行していく。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/dfbe9053-0d71-f1b7-efd1-9ebbe9df1d56.png)

書式付きテキストを入力できる**テキストセル**もあるので
注釈を追加して現実のノートのようにわかりやすくまとめるのもよいだろう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/70aa7ae7-0567-df80-ee21-f534d7a78b82.png)

### ノートブックの新規作成
左上のメニューの`ファイル`から`Python 3 の新しいノートブック`を選択。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/d78cf331-2c77-1618-f6ef-25c36009c975.png)

### ノートブックの保存
メニューの`ファイル`から`保存`を選択すると
オンラインストレージ（Google Drive）に保存される。`Ctlr+S`でもよい。

`ファイル`から`.ipynb をダウンロード`でJupyter Notebook形式でダウンロードもできる。

## セル
コードはセル単位で実行されるが、変数などはノートブック単位で保持される。
そのため下のようなセルは実行するたびに結果が変わる。
![39d3a7a9-ba17-4026-a77b-e15364e3adb3.gif](https://qiita-image-store.s3.amazonaws.com/0/191981/6abda80d-c7e0-cd72-f4c8-ecde0e67ae1f.gif)
リセットしたい場合はメニューの`ランタイム`から`すべてのランタイムのリセット`を選択する。

### セルの追加
左上のメニューから、コードセルの追加（`コード`）、テキストセルの追加（`テキスト`）、
セルを上に移動（`↑セル`）、セルを下に移動（`↓セル`）ができる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/27fa6cdc-1022-c6d4-1151-50ccdbd767ce.png)

### セルの実行
セル左上の実行ボタンをクリック。
あるいは`Ctlr+Enter`でも実行可能。
![6a5bf287-8c9e-4ac5-be8a-366e5e90b911.gif](https://qiita-image-store.s3.amazonaws.com/0/191981/8dbf86c6-034f-45c0-3d6b-6cf45d599c70.gif)

`Shift+Enter`で現在セルの実行と、次のセルへの移動（なければ追加）を一気に行うこともできる。

### すべてのセルの実行
メニューの`ランタイム`から`すべてのセルを実行`を選択。
`Ctrl+F9`でもよい。

## ファイル
### セッションストレージ
CSVデータを読み込みたい場合など、一時ファイルを管理したい場合は
左ペインの**ファイルブラウザ**を使うと便利である。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/9cee54a3-6bb8-f556-bf42-dd2d31b2b201.png)

アップロードしたファイルはそのセッションの間だけ有効。
ブラウザの再起動や`すべてのランタイムのリセット`で消える。

### Google Driveをマウント
以下の2行を実行すると、`authorization code`の入力を求められる。
URLから飛んだ先でGoogle Drive File Streamにアクセス許可を与え
表示された認証コードをColabの入力欄に貼り付けてエンターキーでマウント完了。

```bash
from google.colab import drive
drive.mount('/content/drive/My Drive/Google Colab')
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/3b9e4dcc-b295-78b4-e31c-ae390ec8068a.png)

下のように、セッションストレージと同じようにアクセスできる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/368f1a87-bf33-1c28-2900-c70c3be949b8.png)

#### Office ドキュメントのアップロードについて
Google DriveにExcelファイルなどをアップロードすると、自動的にGoogleドキュメントに変換される。
Googleアプリで編集するにはいいが、Google Colabからxlsxファイルとしてアクセスしたい場合は困る。

Google Driveの設定から`アップロードしたファイルを変換する`のチェックを外すとそのままアップロードできる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/c41f72c5-a243-ed68-eb6b-f97a6de81c93.png)

## その他
### グラフ出力
matplotlibパッケージを利用すれば、Google Colab上でグラフ出力もできる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/fadf4e57-cfa2-24cf-929d-0161ac04129b.png)

### Linuxコマンド
行頭に`!`をつけることでLinuxコマンドを実行できる。
たとえば、非標準のパッケージをインストールするときに`!pip install `が使える。
実行環境はLinuxなのでwgetしてmakeしてinstallなんてもことも普通にできる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/603a5231-ac77-c295-c747-e2253785f6ed.png)

### GPU/TPUの使用
メニューの`編集`から`ノートブックの設定`を選択する。
ハードウェアアクセラレーション（既定はNone）を変更することでGPUやTPUを使用可能。
なお[TPU](https://news.mynavi.jp/article/20180424-621091/)は機械学習専用のCPUで性能はGPUの30倍ともいわれる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/191981/7aeeae0f-657d-c59c-2e5f-72db1223222a.png)